Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- WTE
- Optimization enabled
- false
- Compiler version
- v0.4.18+commit.9cf6e910
- Verified at
- 2026-02-09T10:36:33.593976Z
WTE.sol
pragma solidity ^0.4.13;
contract ERC20Basic {
uint256 public totalSupply;
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) public view returns (uint256);
function transferFrom(address from, address to, uint256 value) public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
function Ownable() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
contract WTE is ERC20,Ownable{
using SafeMath for uint256;
//the base info of the token
string public constant name="WITEE";
string public constant symbol="WTE";
string public constant version = "1.0";
uint256 public constant decimals = 18;
uint256 public constant MAX_PRIVATE_FUNDING_SUPPLY=648000000*10**decimals;
uint256 public constant COOPERATE_REWARD=270000000*10**decimals;
uint256 public constant ADVISOR_REWARD=90000000*10**decimals;
uint256 public constant COMMON_WITHDRAW_SUPPLY=MAX_PRIVATE_FUNDING_SUPPLY+COOPERATE_REWARD+ADVISOR_REWARD;
uint256 public constant PARTNER_SUPPLY=270000000*10**decimals;
uint256 public constant MAX_PUBLIC_FUNDING_SUPPLY=180000000*10**decimals;
uint256 public constant TEAM_KEEPING=342000000*10**decimals;
uint256 public constant MAX_SUPPLY=COMMON_WITHDRAW_SUPPLY+PARTNER_SUPPLY+MAX_PUBLIC_FUNDING_SUPPLY+TEAM_KEEPING;
uint256 public rate;
mapping(address=>uint256) public publicFundingWhiteList;
mapping(address=>uint256) public userPublicFundingEthCountMap;
uint256 public publicFundingPersonalEthLimit;
uint256 public totalCommonWithdrawSupply;
uint256 public totalPartnerWithdrawSupply;
uint256 public totalPublicFundingSupply;
bool public hasTeamKeepingWithdraw;
uint256 public startTime;
uint256 public endTime;
struct epoch {
uint256 lockEndTime;
uint256 lockAmount;
}
mapping(address=>epoch[]) public lockEpochsMap;
mapping(address => uint256) balances;
mapping (address => mapping (address => uint256)) allowed;
function WTE(){
totalSupply = 0 ;
totalCommonWithdrawSupply=0;
totalPartnerWithdrawSupply=0;
totalPublicFundingSupply = 0;
hasTeamKeepingWithdraw=false;
startTime = 1525104000;
endTime = 1525104000;
rate=18300;
publicFundingPersonalEthLimit = 10000000000000000000;
}
event CreateWTE(address indexed _to, uint256 _value);
modifier notReachTotalSupply(uint256 _value,uint256 _rate){
assert(MAX_SUPPLY>=totalSupply.add(_value.mul(_rate)));
_;
}
modifier notReachPublicFundingSupply(uint256 _value,uint256 _rate){
assert(MAX_PUBLIC_FUNDING_SUPPLY>=totalPublicFundingSupply.add(_value.mul(_rate)));
_;
}
modifier notReachCommonWithdrawSupply(uint256 _value,uint256 _rate){
assert(COMMON_WITHDRAW_SUPPLY>=totalCommonWithdrawSupply.add(_value.mul(_rate)));
_;
}
modifier notReachPartnerWithdrawSupply(uint256 _value,uint256 _rate){
assert(PARTNER_SUPPLY>=totalPartnerWithdrawSupply.add(_value.mul(_rate)));
_;
}
modifier assertFalse(bool withdrawStatus){
assert(!withdrawStatus);
_;
}
modifier notBeforeTime(uint256 targetTime){
assert(now>targetTime);
_;
}
modifier notAfterTime(uint256 targetTime){
assert(now<=targetTime);
_;
}
function etherProceeds() external
onlyOwner
{
if(!msg.sender.send(this.balance)) revert();
}
function processFunding(address receiver,uint256 _value,uint256 _rate) internal
notReachTotalSupply(_value,_rate)
{
uint256 amount=_value.mul(_rate);
totalSupply=totalSupply.add(amount);
balances[receiver] +=amount;
CreateWTE(receiver,amount);
Transfer(0x0, receiver, amount);
}
function commonWithdraw(uint256 _value) external
onlyOwner
notReachCommonWithdrawSupply(_value,1)
{
processFunding(msg.sender,_value,1);
totalCommonWithdrawSupply=totalCommonWithdrawSupply.add(_value);
}
function withdrawToTeam() external
onlyOwner
assertFalse(hasTeamKeepingWithdraw)
notBeforeTime(1545753600)
{
processFunding(msg.sender,TEAM_KEEPING,1);
hasTeamKeepingWithdraw = true;
}
function withdrawToPartner(address _to,uint256 _value) external
onlyOwner
notReachPartnerWithdrawSupply(_value,1)
{
processFunding(_to,_value,1);
totalPartnerWithdrawSupply=totalPartnerWithdrawSupply.add(_value);
lockBalance(_to,_value,1528473600);
}
function () payable external
notBeforeTime(startTime)
notAfterTime(endTime)
notReachPublicFundingSupply(msg.value,rate)
{
require(publicFundingWhiteList[msg.sender]==1);
require(userPublicFundingEthCountMap[msg.sender].add(msg.value)<=publicFundingPersonalEthLimit);
processFunding(msg.sender,msg.value,rate);
uint256 amount=msg.value.mul(rate);
totalPublicFundingSupply = totalPublicFundingSupply.add(amount);
userPublicFundingEthCountMap[msg.sender] = userPublicFundingEthCountMap[msg.sender].add(msg.value);
}
function transfer(address _to, uint256 _value) public returns (bool)
{
require(_to != address(0));
epoch[] epochs = lockEpochsMap[msg.sender];
uint256 needLockBalance = 0;
for(uint256 i = 0;i<epochs.length;i++)
{
if( now < epochs[i].lockEndTime )
{
needLockBalance=needLockBalance.add(epochs[i].lockAmount);
}
}
require(balances[msg.sender].sub(_value)>=needLockBalance);
// SafeMath.sub will throw if there is not enough balance.
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
Transfer(msg.sender, _to, _value);
return true;
}
function balanceOf(address _owner) public constant returns (uint256 balance)
{
return balances[_owner];
}
function transferFrom(address _from, address _to, uint256 _value) public returns (bool)
{
require(_to != address(0));
epoch[] epochs = lockEpochsMap[_from];
uint256 needLockBalance = 0;
for(uint256 i = 0;i<epochs.length;i++)
{
if( now < epochs[i].lockEndTime )
{
needLockBalance = needLockBalance.add(epochs[i].lockAmount);
}
}
require(balances[_from].sub(_value)>=needLockBalance);
uint256 _allowance = allowed[_from][msg.sender];
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
allowed[_from][msg.sender] = _allowance.sub(_value);
Transfer(_from, _to, _value);
return true;
}
function approve(address _spender, uint256 _value) public returns (bool)
{
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
function allowance(address _owner, address _spender) public constant returns (uint256 remaining)
{
return allowed[_owner][_spender];
}
function lockBalance(address user, uint256 lockAmount,uint256 lockEndTime) internal
{
epoch[] storage epochs = lockEpochsMap[user];
epochs.push(epoch(lockEndTime,lockAmount));
}
function addPublicFundingWhiteList(address[] _list) external
onlyOwner
{
uint256 count = _list.length;
for (uint256 i = 0; i < count; i++) {
publicFundingWhiteList[_list [i]] = 1;
}
}
function refreshRate(uint256 _rate) external
onlyOwner
{
rate=_rate;
}
function refreshPublicFundingTime(uint256 _startTime,uint256 _endTime) external
onlyOwner
{
startTime=_startTime;
endTime=_endTime;
}
function refreshPublicFundingPersonalEthLimit (uint256 _publicFundingPersonalEthLimit) external
onlyOwner
{
publicFundingPersonalEthLimit=_publicFundingPersonalEthLimit;
}
}
Compiler Settings
{"remappings":[],"optimizer":{"runs":0,"enabled":false},"libraries":{},"compilationTarget":{"WTE.sol":"WTE"}}
Contract ABI
[{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"userPublicFundingEthCountMap","inputs":[{"type":"address","name":""}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":""}],"name":"name","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"approve","inputs":[{"type":"address","name":"_spender"},{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"refreshRate","inputs":[{"type":"uint256","name":"_rate"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"publicFundingPersonalEthLimit","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"totalSupply","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"TEAM_KEEPING","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"transferFrom","inputs":[{"type":"address","name":"_from"},{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"rate","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"hasTeamKeepingWithdraw","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"decimals","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"endTime","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"MAX_SUPPLY","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"totalPublicFundingSupply","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"refreshPublicFundingTime","inputs":[{"type":"uint256","name":"_startTime"},{"type":"uint256","name":"_endTime"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"MAX_PRIVATE_FUNDING_SUPPLY","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":""}],"name":"version","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"refreshPublicFundingPersonalEthLimit","inputs":[{"type":"uint256","name":"_publicFundingPersonalEthLimit"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"COOPERATE_REWARD","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"lockEndTime"},{"type":"uint256","name":"lockAmount"}],"name":"lockEpochsMap","inputs":[{"type":"address","name":""},{"type":"uint256","name":""}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"withdrawToPartner","inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"balance"}],"name":"balanceOf","inputs":[{"type":"address","name":"_owner"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"startTime","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"etherProceeds","inputs":[],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"owner","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":""}],"name":"symbol","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"commonWithdraw","inputs":[{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[{"type":"bool","name":""}],"name":"transfer","inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"MAX_PUBLIC_FUNDING_SUPPLY","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"addPublicFundingWhiteList","inputs":[{"type":"address[]","name":"_list"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"ADVISOR_REWARD","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"COMMON_WITHDRAW_SUPPLY","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"PARTNER_SUPPLY","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"publicFundingWhiteList","inputs":[{"type":"address","name":""}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"remaining"}],"name":"allowance","inputs":[{"type":"address","name":"_owner"},{"type":"address","name":"_spender"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"totalPartnerWithdrawSupply","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"totalCommonWithdrawSupply","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"withdrawToTeam","inputs":[],"constant":false},{"type":"constructor","stateMutability":"nonpayable","payable":false,"inputs":[]},{"type":"fallback","stateMutability":"payable","payable":true},{"type":"event","name":"CreateWTE","inputs":[{"type":"address","name":"_to","indexed":true},{"type":"uint256","name":"_value","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"anonymous":false},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false}]
Contract Creation Code
0x6060604052341561000f57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600080819055506000600681905550600060078190555060006008819055506000600960006101000a81548160ff021916908315150217905550635ae73d80600a81905550635ae73d80600b8190555061477c600281905550678ac7230489e800006005819055506121fc806100c76000396000f3006060604052600436106101e3576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305ae6bcc146103cd57806306fdde031461041a578063095ea7b3146104a85780630cf1dafc1461050257806315bf7ed21461052557806318160ddd1461054e57806322dd0d2c1461057757806323b872dd146105a05780632c4e722e146106195780632d93676314610642578063313ce5671461066f5780633197cbb61461069857806332cb6b0c146106c15780633fe9f2b2146106ea5780634dd83cb1146107135780635009432d1461073f57806354fd4d50146107685780635539a9c2146107f657806356fb46d7146108195780635b89a48a146108425780636c055ce21461089f57806370a08231146108e157806378e979251461092e578063801aba56146109575780638da5cb5b1461096c57806395d89b41146109c15780639bb1dbea14610a4f578063a9059cbb14610a72578063aa727e4614610acc578063ab96d49814610af5578063b3070c1214610b23578063b8fbb72d14610b4c578063c48590e914610b75578063cae3c25414610b9e578063dd62ed3e14610beb578063e07ccdeb14610c57578063f2fde38b14610c80578063f77404e514610cb9578063fcc21e5614610ce2575b6000600a5480421115156101f357fe5b600b5480421115151561020257fe5b3460025461022d61021c8284610cf790919063ffffffff16565b600854610d3290919063ffffffff16565b6012600a0a630aba9500021015151561024257fe5b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561029057600080fd5b6005546102e534600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d3290919063ffffffff16565b111515156102f257600080fd5b6102ff3334600254610d50565b61031460025434610cf790919063ffffffff16565b945061032b85600854610d3290919063ffffffff16565b60088190555061038334600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d3290919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050005b34156103d857600080fd5b610404600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610eef565b6040518082815260200191505060405180910390f35b341561042557600080fd5b61042d610f07565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561046d578082015181840152602081019050610452565b50505050905090810190601f16801561049a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104b357600080fd5b6104e8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610f40565b604051808215151515815260200191505060405180910390f35b341561050d57600080fd5b6105236004808035906020019091905050611032565b005b341561053057600080fd5b610538611098565b6040518082815260200191505060405180910390f35b341561055957600080fd5b61056161109e565b6040518082815260200191505060405180910390f35b341561058257600080fd5b61058a6110a4565b6040518082815260200191505060405180910390f35b34156105ab57600080fd5b6105ff600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506110b2565b604051808215151515815260200191505060405180910390f35b341561062457600080fd5b61062c6114c4565b6040518082815260200191505060405180910390f35b341561064d57600080fd5b6106556114ca565b604051808215151515815260200191505060405180910390f35b341561067a57600080fd5b6106826114dd565b6040518082815260200191505060405180910390f35b34156106a357600080fd5b6106ab6114e2565b6040518082815260200191505060405180910390f35b34156106cc57600080fd5b6106d46114e8565b6040518082815260200191505060405180910390f35b34156106f557600080fd5b6106fd611532565b6040518082815260200191505060405180910390f35b341561071e57600080fd5b61073d6004808035906020019091908035906020019091905050611538565b005b341561074a57600080fd5b6107526115a6565b6040518082815260200191505060405180910390f35b341561077357600080fd5b61077b6115b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107bb5780820151818401526020810190506107a0565b50505050905090810190601f1680156107e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561080157600080fd5b61081760048080359060200190919050506115ed565b005b341561082457600080fd5b61082c611653565b6040518082815260200191505060405180910390f35b341561084d57600080fd5b610882600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611661565b604051808381526020018281526020019250505060405180910390f35b34156108aa57600080fd5b6108df600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506116a1565b005b34156108ec57600080fd5b610918600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611778565b6040518082815260200191505060405180910390f35b341561093957600080fd5b6109416117c1565b6040518082815260200191505060405180910390f35b341561096257600080fd5b61096a6117c7565b005b341561097757600080fd5b61097f61187c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109cc57600080fd5b6109d46118a2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a145780820151818401526020810190506109f9565b50505050905090810190601f168015610a415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610a5a57600080fd5b610a7060048080359060200190919050506118db565b005b3415610a7d57600080fd5b610ab2600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506119ba565b604051808215151515815260200191505060405180910390f35b3415610ad757600080fd5b610adf611cb7565b6040518082815260200191505060405180910390f35b3415610b0057600080fd5b610b2160048080359060200190820180359060200191909192905050611cc5565b005b3415610b2e57600080fd5b610b36611db9565b6040518082815260200191505060405180910390f35b3415610b5757600080fd5b610b5f611dc7565b6040518082815260200191505060405180910390f35b3415610b8057600080fd5b610b88611ded565b6040518082815260200191505060405180910390f35b3415610ba957600080fd5b610bd5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611dfb565b6040518082815260200191505060405180910390f35b3415610bf657600080fd5b610c41600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e13565b6040518082815260200191505060405180910390f35b3415610c6257600080fd5b610c6a611e9a565b6040518082815260200191505060405180910390f35b3415610c8b57600080fd5b610cb7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611ea0565b005b3415610cc457600080fd5b610ccc611ff8565b6040518082815260200191505060405180910390f35b3415610ced57600080fd5b610cf5611ffe565b005b6000806000841415610d0c5760009150610d2b565b8284029050828482811515610d1d57fe5b04141515610d2757fe5b8091505b5092915050565b6000808284019050838110151515610d4657fe5b8091505092915050565b60008282610d7b610d6a8284610cf790919063ffffffff16565b600054610d3290919063ffffffff16565b6012600a0a6314628180026012600a0a630aba9500026012600a0a631017df80026012600a0a63055d4a80026012600a0a631017df80026012600a0a63269fb20002010101010110151515610dcc57fe5b610ddf8486610cf790919063ffffffff16565b9250610df683600054610d3290919063ffffffff16565b60008190555082600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508573ffffffffffffffffffffffffffffffffffffffff167f83944a4b31a89fb4277637142b222b0286a2d7bd2621832af3d0ecd2923f8164846040518082815260200191505060405180910390a28573ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b60046020528060005260406000206000915090505481565b6040805190810160405280600581526020017f574954454500000000000000000000000000000000000000000000000000000081525081565b600081600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561108e57600080fd5b8060028190555050565b60055481565b60005481565b6012600a0a63146281800281565b60008060008060008073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515156110f557600080fd5b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020935060009250600091505b83805490508210156111b457838281548110151561115957fe5b9060005260206000209060020201600001544210156111a7576111a4848381548110151561118357fe5b90600052602060002090600202016001015484610d3290919063ffffffff16565b92505b818060010192505061113f565b8261120787600d60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b1015151561121457600080fd5b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506112e586600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061137a86600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d3290919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113d086826120b990919063ffffffff16565b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a360019450505050509392505050565b60025481565b600960009054906101000a900460ff1681565b601281565b600b5481565b6012600a0a6314628180026012600a0a630aba9500026012600a0a631017df80026012600a0a63055d4a80026012600a0a631017df80026012600a0a63269fb20002010101010181565b60085481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561159457600080fd5b81600a8190555080600b819055505050565b6012600a0a63269fb2000281565b6040805190810160405280600381526020017f312e30000000000000000000000000000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561164957600080fd5b8060058190555050565b6012600a0a631017df800281565b600c6020528160005260406000208181548110151561167c57fe5b9060005260206000209060020201600091509150508060000154908060010154905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116fd57600080fd5b8060016117276117168284610cf790919063ffffffff16565b600754610d3290919063ffffffff16565b6012600a0a631017df80021015151561173c57fe5b61174884846001610d50565b61175d83600754610d3290919063ffffffff16565b6007819055506117728484635b1aa8006120d2565b50505050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561182357600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561187a57600080fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600381526020017f575445000000000000000000000000000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561193757600080fd5b8060016119616119508284610cf790919063ffffffff16565b600654610d3290919063ffffffff16565b6012600a0a63055d4a80026012600a0a631017df80026012600a0a63269fb2000201011015151561198e57fe5b61199a33846001610d50565b6119af83600654610d3290919063ffffffff16565b600681905550505050565b600080600080600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141515156119fc57600080fd5b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020925060009150600090505b8280549050811015611abb578281815481101515611a6057fe5b906000526020600020906002020160000154421015611aae57611aab8382815481101515611a8a57fe5b90600052602060002090600202016001015483610d3290919063ffffffff16565b91505b8080600101915050611a46565b81611b0e86600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b10151515611b1b57600080fd5b611b6d85600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c0285600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d3290919063ffffffff16565b600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a36001935050505092915050565b6012600a0a630aba95000281565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d2457600080fd5b838390509150600090505b81811015611db3576001600360008686858181101515611d4b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050611d2f565b50505050565b6012600a0a63055d4a800281565b6012600a0a63055d4a80026012600a0a631017df80026012600a0a63269fb20002010181565b6012600a0a631017df800281565b60036020528060005260406000206000915090505481565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611efc57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611f3857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561205a57600080fd5b600960009054906101000a900460ff168015151561207457fe5b635c225400804211151561208457fe5b61209a336012600a0a6314628180026001610d50565b6001600960006101000a81548160ff0219169083151502179055505050565b60008282111515156120c757fe5b818303905092915050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050808054806001018281612128919061216f565b916000526020600020906002020160006040805190810160405280868152602001878152509091909150600082015181600001556020820151816001015550505050505050565b81548183558181151161219c5760020281600202836000526020600020918201910161219b91906121a1565b5b505050565b6121cd91905b808211156121c9576000808201600090556001820160009055506002016121a7565b5090565b905600a165627a7a723058209c9386664a694ea485fc7fcfc2d7805ae4af9d2548852389164484a8e60c27380029
Deployed ByteCode
0x6060604052600436106101e3576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305ae6bcc146103cd57806306fdde031461041a578063095ea7b3146104a85780630cf1dafc1461050257806315bf7ed21461052557806318160ddd1461054e57806322dd0d2c1461057757806323b872dd146105a05780632c4e722e146106195780632d93676314610642578063313ce5671461066f5780633197cbb61461069857806332cb6b0c146106c15780633fe9f2b2146106ea5780634dd83cb1146107135780635009432d1461073f57806354fd4d50146107685780635539a9c2146107f657806356fb46d7146108195780635b89a48a146108425780636c055ce21461089f57806370a08231146108e157806378e979251461092e578063801aba56146109575780638da5cb5b1461096c57806395d89b41146109c15780639bb1dbea14610a4f578063a9059cbb14610a72578063aa727e4614610acc578063ab96d49814610af5578063b3070c1214610b23578063b8fbb72d14610b4c578063c48590e914610b75578063cae3c25414610b9e578063dd62ed3e14610beb578063e07ccdeb14610c57578063f2fde38b14610c80578063f77404e514610cb9578063fcc21e5614610ce2575b6000600a5480421115156101f357fe5b600b5480421115151561020257fe5b3460025461022d61021c8284610cf790919063ffffffff16565b600854610d3290919063ffffffff16565b6012600a0a630aba9500021015151561024257fe5b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414151561029057600080fd5b6005546102e534600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d3290919063ffffffff16565b111515156102f257600080fd5b6102ff3334600254610d50565b61031460025434610cf790919063ffffffff16565b945061032b85600854610d3290919063ffffffff16565b60088190555061038334600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d3290919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050005b34156103d857600080fd5b610404600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610eef565b6040518082815260200191505060405180910390f35b341561042557600080fd5b61042d610f07565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561046d578082015181840152602081019050610452565b50505050905090810190601f16801561049a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104b357600080fd5b6104e8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610f40565b604051808215151515815260200191505060405180910390f35b341561050d57600080fd5b6105236004808035906020019091905050611032565b005b341561053057600080fd5b610538611098565b6040518082815260200191505060405180910390f35b341561055957600080fd5b61056161109e565b6040518082815260200191505060405180910390f35b341561058257600080fd5b61058a6110a4565b6040518082815260200191505060405180910390f35b34156105ab57600080fd5b6105ff600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506110b2565b604051808215151515815260200191505060405180910390f35b341561062457600080fd5b61062c6114c4565b6040518082815260200191505060405180910390f35b341561064d57600080fd5b6106556114ca565b604051808215151515815260200191505060405180910390f35b341561067a57600080fd5b6106826114dd565b6040518082815260200191505060405180910390f35b34156106a357600080fd5b6106ab6114e2565b6040518082815260200191505060405180910390f35b34156106cc57600080fd5b6106d46114e8565b6040518082815260200191505060405180910390f35b34156106f557600080fd5b6106fd611532565b6040518082815260200191505060405180910390f35b341561071e57600080fd5b61073d6004808035906020019091908035906020019091905050611538565b005b341561074a57600080fd5b6107526115a6565b6040518082815260200191505060405180910390f35b341561077357600080fd5b61077b6115b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107bb5780820151818401526020810190506107a0565b50505050905090810190601f1680156107e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561080157600080fd5b61081760048080359060200190919050506115ed565b005b341561082457600080fd5b61082c611653565b6040518082815260200191505060405180910390f35b341561084d57600080fd5b610882600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611661565b604051808381526020018281526020019250505060405180910390f35b34156108aa57600080fd5b6108df600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506116a1565b005b34156108ec57600080fd5b610918600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611778565b6040518082815260200191505060405180910390f35b341561093957600080fd5b6109416117c1565b6040518082815260200191505060405180910390f35b341561096257600080fd5b61096a6117c7565b005b341561097757600080fd5b61097f61187c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109cc57600080fd5b6109d46118a2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a145780820151818401526020810190506109f9565b50505050905090810190601f168015610a415780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610a5a57600080fd5b610a7060048080359060200190919050506118db565b005b3415610a7d57600080fd5b610ab2600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506119ba565b604051808215151515815260200191505060405180910390f35b3415610ad757600080fd5b610adf611cb7565b6040518082815260200191505060405180910390f35b3415610b0057600080fd5b610b2160048080359060200190820180359060200191909192905050611cc5565b005b3415610b2e57600080fd5b610b36611db9565b6040518082815260200191505060405180910390f35b3415610b5757600080fd5b610b5f611dc7565b6040518082815260200191505060405180910390f35b3415610b8057600080fd5b610b88611ded565b6040518082815260200191505060405180910390f35b3415610ba957600080fd5b610bd5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611dfb565b6040518082815260200191505060405180910390f35b3415610bf657600080fd5b610c41600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611e13565b6040518082815260200191505060405180910390f35b3415610c6257600080fd5b610c6a611e9a565b6040518082815260200191505060405180910390f35b3415610c8b57600080fd5b610cb7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611ea0565b005b3415610cc457600080fd5b610ccc611ff8565b6040518082815260200191505060405180910390f35b3415610ced57600080fd5b610cf5611ffe565b005b6000806000841415610d0c5760009150610d2b565b8284029050828482811515610d1d57fe5b04141515610d2757fe5b8091505b5092915050565b6000808284019050838110151515610d4657fe5b8091505092915050565b60008282610d7b610d6a8284610cf790919063ffffffff16565b600054610d3290919063ffffffff16565b6012600a0a6314628180026012600a0a630aba9500026012600a0a631017df80026012600a0a63055d4a80026012600a0a631017df80026012600a0a63269fb20002010101010110151515610dcc57fe5b610ddf8486610cf790919063ffffffff16565b9250610df683600054610d3290919063ffffffff16565b60008190555082600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508573ffffffffffffffffffffffffffffffffffffffff167f83944a4b31a89fb4277637142b222b0286a2d7bd2621832af3d0ecd2923f8164846040518082815260200191505060405180910390a28573ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b60046020528060005260406000206000915090505481565b6040805190810160405280600581526020017f574954454500000000000000000000000000000000000000000000000000000081525081565b600081600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561108e57600080fd5b8060028190555050565b60055481565b60005481565b6012600a0a63146281800281565b60008060008060008073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515156110f557600080fd5b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020935060009250600091505b83805490508210156111b457838281548110151561115957fe5b9060005260206000209060020201600001544210156111a7576111a4848381548110151561118357fe5b90600052602060002090600202016001015484610d3290919063ffffffff16565b92505b818060010192505061113f565b8261120787600d60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b1015151561121457600080fd5b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506112e586600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061137a86600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d3290919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113d086826120b990919063ffffffff16565b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040518082815260200191505060405180910390a360019450505050509392505050565b60025481565b600960009054906101000a900460ff1681565b601281565b600b5481565b6012600a0a6314628180026012600a0a630aba9500026012600a0a631017df80026012600a0a63055d4a80026012600a0a631017df80026012600a0a63269fb20002010101010181565b60085481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561159457600080fd5b81600a8190555080600b819055505050565b6012600a0a63269fb2000281565b6040805190810160405280600381526020017f312e30000000000000000000000000000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561164957600080fd5b8060058190555050565b6012600a0a631017df800281565b600c6020528160005260406000208181548110151561167c57fe5b9060005260206000209060020201600091509150508060000154908060010154905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116fd57600080fd5b8060016117276117168284610cf790919063ffffffff16565b600754610d3290919063ffffffff16565b6012600a0a631017df80021015151561173c57fe5b61174884846001610d50565b61175d83600754610d3290919063ffffffff16565b6007819055506117728484635b1aa8006120d2565b50505050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561182357600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561187a57600080fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600381526020017f575445000000000000000000000000000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561193757600080fd5b8060016119616119508284610cf790919063ffffffff16565b600654610d3290919063ffffffff16565b6012600a0a63055d4a80026012600a0a631017df80026012600a0a63269fb2000201011015151561198e57fe5b61199a33846001610d50565b6119af83600654610d3290919063ffffffff16565b600681905550505050565b600080600080600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141515156119fc57600080fd5b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020925060009150600090505b8280549050811015611abb578281815481101515611a6057fe5b906000526020600020906002020160000154421015611aae57611aab8382815481101515611a8a57fe5b90600052602060002090600202016001015483610d3290919063ffffffff16565b91505b8080600101915050611a46565b81611b0e86600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b10151515611b1b57600080fd5b611b6d85600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b990919063ffffffff16565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c0285600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d3290919063ffffffff16565b600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a36001935050505092915050565b6012600a0a630aba95000281565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d2457600080fd5b838390509150600090505b81811015611db3576001600360008686858181101515611d4b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050611d2f565b50505050565b6012600a0a63055d4a800281565b6012600a0a63055d4a80026012600a0a631017df80026012600a0a63269fb20002010181565b6012600a0a631017df800281565b60036020528060005260406000206000915090505481565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611efc57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611f3857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561205a57600080fd5b600960009054906101000a900460ff168015151561207457fe5b635c225400804211151561208457fe5b61209a336012600a0a6314628180026001610d50565b6001600960006101000a81548160ff0219169083151502179055505050565b60008282111515156120c757fe5b818303905092915050565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050808054806001018281612128919061216f565b916000526020600020906002020160006040805190810160405280868152602001878152509091909150600082015181600001556020820151816001015550505050505050565b81548183558181151161219c5760020281600202836000526020600020918201910161219b91906121a1565b5b505050565b6121cd91905b808211156121c9576000808201600090556001820160009055506002016121a7565b5090565b905600a165627a7a723058209c9386664a694ea485fc7fcfc2d7805ae4af9d2548852389164484a8e60c27380029