More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 6,730 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20691327 | 62 days ago | IN | 0 ETH | 0.00025461 | ||||
Approve | 20617934 | 72 days ago | IN | 0 ETH | 0.00004788 | ||||
Approve | 20489218 | 90 days ago | IN | 0 ETH | 0.00009389 | ||||
Transfer | 20452800 | 95 days ago | IN | 0 ETH | 0.00033057 | ||||
Transfer | 20424167 | 99 days ago | IN | 0 ETH | 0.00006688 | ||||
Approve | 20424144 | 99 days ago | IN | 0 ETH | 0.00008085 | ||||
Approve | 20400739 | 102 days ago | IN | 0 ETH | 0.0007886 | ||||
Transfer | 20395670 | 103 days ago | IN | 0 ETH | 0.00014953 | ||||
Transfer | 20395670 | 103 days ago | IN | 0 ETH | 0.00033604 | ||||
Transfer | 20395670 | 103 days ago | IN | 0 ETH | 0.00031391 | ||||
Transfer | 20395670 | 103 days ago | IN | 0 ETH | 0.00017241 | ||||
Transfer | 20395670 | 103 days ago | IN | 0 ETH | 0.00033604 | ||||
Transfer | 20395670 | 103 days ago | IN | 0 ETH | 0.00031666 | ||||
Transfer | 20395670 | 103 days ago | IN | 0 ETH | 0.00033601 | ||||
Transfer | 20395670 | 103 days ago | IN | 0 ETH | 0.00017476 | ||||
Transfer | 20395639 | 103 days ago | IN | 0 ETH | 0.00035191 | ||||
Transfer | 20395620 | 103 days ago | IN | 0 ETH | 0.00038191 | ||||
Transfer | 20395620 | 103 days ago | IN | 0 ETH | 0.00016124 | ||||
Transfer | 20395602 | 103 days ago | IN | 0 ETH | 0.0003471 | ||||
Transfer | 20395602 | 103 days ago | IN | 0 ETH | 0.0003471 | ||||
Transfer | 20395602 | 103 days ago | IN | 0 ETH | 0.00032978 | ||||
Transfer | 20395602 | 103 days ago | IN | 0 ETH | 0.00032497 | ||||
Transfer | 20395602 | 103 days ago | IN | 0 ETH | 0.00031872 | ||||
Transfer | 20395602 | 103 days ago | IN | 0 ETH | 0.00032978 | ||||
Transfer | 20395602 | 103 days ago | IN | 0 ETH | 0.00014475 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | ||||
---|---|---|---|---|---|---|---|
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20983054 | 21 days ago | 0 ETH | |||||
20881182 | 35 days ago | 0 ETH | |||||
20881182 | 35 days ago | 0 ETH | |||||
20881182 | 35 days ago | 0 ETH | |||||
20881182 | 35 days ago | 0 ETH | |||||
20881182 | 35 days ago | 0 ETH |
Loading...
Loading
Contract Name:
ShuffleToken
Compiler Version
v0.5.10+commit.5a6ea5b1
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-08-11 */ pragma solidity ^0.5.10; // File: contracts/commons/Ownable.sol contract Ownable { address public owner; event TransferOwnership(address _from, address _to); constructor() public { owner = msg.sender; emit TransferOwnership(address(0), msg.sender); } modifier onlyOwner() { require(msg.sender == owner, "only owner"); _; } function setOwner(address _owner) external onlyOwner { emit TransferOwnership(owner, _owner); owner = _owner; } } // File: contracts/commons/StorageUnit.sol pragma solidity ^0.5.10; contract StorageUnit { address private owner; mapping(bytes32 => bytes32) private store; constructor() public { owner = msg.sender; } function write(bytes32 _key, bytes32 _value) external { /* solium-disable-next-line */ require(msg.sender == owner); store[_key] = _value; } function read(bytes32 _key) external view returns (bytes32) { return store[_key]; } } // File: contracts/utils/IsContract.sol pragma solidity ^0.5.10; library IsContract { function isContract(address _addr) internal view returns (bool) { bytes32 codehash; /* solium-disable-next-line */ assembly { codehash := extcodehash(_addr) } return codehash != bytes32(0) && codehash != bytes32(0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470); } } // File: contracts/utils/DistributedStorage.sol pragma solidity ^0.5.10; library DistributedStorage { function contractSlot(bytes32 _struct) private view returns (address) { return address( uint256( keccak256( abi.encodePacked( byte(0xff), address(this), _struct, keccak256(type(StorageUnit).creationCode) ) ) ) ); } function deploy(bytes32 _struct) private { bytes memory slotcode = type(StorageUnit).creationCode; /* solium-disable-next-line */ assembly{ pop(create2(0, add(slotcode, 0x20), mload(slotcode), _struct)) } } function write( bytes32 _struct, bytes32 _key, bytes32 _value ) internal { StorageUnit store = StorageUnit(contractSlot(_struct)); if (!IsContract.isContract(address(store))) { deploy(_struct); } /* solium-disable-next-line */ (bool success, ) = address(store).call( abi.encodeWithSelector( store.write.selector, _key, _value ) ); require(success, "error writing storage"); } function read( bytes32 _struct, bytes32 _key ) internal view returns (bytes32) { StorageUnit store = StorageUnit(contractSlot(_struct)); if (!IsContract.isContract(address(store))) { return bytes32(0); } /* solium-disable-next-line */ (bool success, bytes memory data) = address(store).staticcall( abi.encodeWithSelector( store.read.selector, _key ) ); require(success, "error reading storage"); return abi.decode(data, (bytes32)); } } // File: contracts/utils/SafeMath.sol pragma solidity ^0.5.10; library SafeMath { function add(uint256 x, uint256 y) internal pure returns (uint256) { uint256 z = x + y; require(z >= x, "Add overflow"); return z; } function sub(uint256 x, uint256 y) internal pure returns (uint256) { require(x >= y, "Sub underflow"); return x - y; } function mult(uint256 x, uint256 y) internal pure returns (uint256) { if (x == 0) { return 0; } uint256 z = x * y; require(z / x == y, "Mult overflow"); return z; } function div(uint256 x, uint256 y) internal pure returns (uint256) { require(y != 0, "Div by zero"); return x / y; } function divRound(uint256 x, uint256 y) internal pure returns (uint256) { require(y != 0, "Div by zero"); uint256 r = x / y; if (x % y != 0) { r = r + 1; } return r; } } // File: contracts/utils/Math.sol pragma solidity ^0.5.10; library Math { function orderOfMagnitude(uint256 input) internal pure returns (uint256){ uint256 counter = uint(-1); uint256 temp = input; do { temp /= 10; counter++; } while (temp != 0); return counter; } function min(uint256 _a, uint256 _b) internal pure returns (uint256) { if (_a < _b) { return _a; } else { return _b; } } function max(uint256 _a, uint256 _b) internal pure returns (uint256) { if (_a > _b) { return _a; } else { return _b; } } } // File: contracts/utils/GasPump.sol pragma solidity ^0.5.10; contract GasPump { bytes32 private stub; modifier requestGas(uint256 _factor) { if (tx.gasprice == 0 || gasleft() > block.gaslimit) { uint256 startgas = gasleft(); _; uint256 delta = startgas - gasleft(); uint256 target = (delta * _factor) / 100; startgas = gasleft(); while (startgas - gasleft() < target) { // Burn gas stub = keccak256(abi.encodePacked(stub)); } } else { _; } } } // File: contracts/interfaces/IERC20.sol pragma solidity ^0.5.10; interface IERC20 { event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); function transfer(address _to, uint _value) external returns (bool success); function transferFrom(address _from, address _to, uint256 _value) external returns (bool success); function allowance(address _owner, address _spender) external view returns (uint256 remaining); function approve(address _spender, uint256 _value) external returns (bool success); function balanceOf(address _owner) external view returns (uint256 balance); } // File: contracts/commons/AddressMinHeap.sol pragma solidity ^0.5.10; /* @author Agustin Aguilar <[email protected]> */ library AddressMinHeap { using AddressMinHeap for AddressMinHeap.Heap; struct Heap { uint256[] entries; mapping(address => uint256) index; } function initialize(Heap storage _heap) internal { require(_heap.entries.length == 0, "already initialized"); _heap.entries.push(0); } function encode(address _addr, uint256 _value) internal pure returns (uint256 _entry) { /* solium-disable-next-line */ assembly { _entry := not(or(and(0xffffffffffffffffffffffffffffffffffffffff, _addr), shl(160, _value))) } } function decode(uint256 _entry) internal pure returns (address _addr, uint256 _value) { /* solium-disable-next-line */ assembly { let entry := not(_entry) _addr := and(entry, 0xffffffffffffffffffffffffffffffffffffffff) _value := shr(160, entry) } } function decodeAddress(uint256 _entry) internal pure returns (address _addr) { /* solium-disable-next-line */ assembly { _addr := and(not(_entry), 0xffffffffffffffffffffffffffffffffffffffff) } } function top(Heap storage _heap) internal view returns(address, uint256) { if (_heap.entries.length < 2) { return (address(0), 0); } return decode(_heap.entries[1]); } function has(Heap storage _heap, address _addr) internal view returns (bool) { return _heap.index[_addr] != 0; } function size(Heap storage _heap) internal view returns (uint256) { return _heap.entries.length - 1; } function entry(Heap storage _heap, uint256 _i) internal view returns (address, uint256) { return decode(_heap.entries[_i + 1]); } // RemoveMax pops off the root element of the heap (the highest value here) and rebalances the heap function popTop(Heap storage _heap) internal returns(address _addr, uint256 _value) { // Ensure the heap exists uint256 heapLength = _heap.entries.length; require(heapLength > 1, "The heap does not exists"); // take the root value of the heap (_addr, _value) = decode(_heap.entries[1]); _heap.index[_addr] = 0; if (heapLength == 2) { _heap.entries.length = 1; } else { // Takes the last element of the array and put it at the root uint256 val = _heap.entries[heapLength - 1]; _heap.entries[1] = val; // Delete the last element from the array _heap.entries.length = heapLength - 1; // Start at the top uint256 ind = 1; // Bubble down ind = _heap.bubbleDown(ind, val); // Update index _heap.index[decodeAddress(val)] = ind; } } // Inserts adds in a value to our heap. function insert(Heap storage _heap, address _addr, uint256 _value) internal { require(_heap.index[_addr] == 0, "The entry already exists"); // Add the value to the end of our array uint256 encoded = encode(_addr, _value); _heap.entries.push(encoded); // Start at the end of the array uint256 currentIndex = _heap.entries.length - 1; // Bubble Up currentIndex = _heap.bubbleUp(currentIndex, encoded); // Update index _heap.index[_addr] = currentIndex; } function update(Heap storage _heap, address _addr, uint256 _value) internal { uint256 ind = _heap.index[_addr]; require(ind != 0, "The entry does not exists"); uint256 can = encode(_addr, _value); uint256 val = _heap.entries[ind]; uint256 newInd; if (can < val) { // Bubble down newInd = _heap.bubbleDown(ind, can); } else if (can > val) { // Bubble up newInd = _heap.bubbleUp(ind, can); } else { // no changes needed return; } // Update entry _heap.entries[newInd] = can; // Update index if (newInd != ind) { _heap.index[_addr] = newInd; } } function bubbleUp(Heap storage _heap, uint256 _ind, uint256 _val) internal returns (uint256 ind) { // Bubble up ind = _ind; if (ind != 1) { uint256 parent = _heap.entries[ind / 2]; while (parent < _val) { // If the parent value is lower than our current value, we swap them (_heap.entries[ind / 2], _heap.entries[ind]) = (_val, parent); // Update moved Index _heap.index[decodeAddress(parent)] = ind; // change our current Index to go up to the parent ind = ind / 2; if (ind == 1) { break; } // Update parent parent = _heap.entries[ind / 2]; } } } function bubbleDown(Heap storage _heap, uint256 _ind, uint256 _val) internal returns (uint256 ind) { // Bubble down ind = _ind; uint256 lenght = _heap.entries.length; uint256 target = lenght - 1; while (ind * 2 < lenght) { // get the current index of the children uint256 j = ind * 2; // left child value uint256 leftChild = _heap.entries[j]; // Store the value of the child uint256 childValue; if (target > j) { // The parent has two childs 👨👧👦 // Load right child value uint256 rightChild = _heap.entries[j + 1]; // Compare the left and right child. // if the rightChild is greater, then point j to it's index // and save the value if (leftChild < rightChild) { childValue = rightChild; j = j + 1; } else { // The left child is greater childValue = leftChild; } } else { // The parent has a single child 👨👦 childValue = leftChild; } // Check if the child has a lower value if (_val > childValue) { break; } // else swap the value (_heap.entries[ind], _heap.entries[j]) = (childValue, _val); // Update moved Index _heap.index[decodeAddress(childValue)] = ind; // and let's keep going down the heap ind = j; } } } // File: contracts/Heap.sol pragma solidity ^0.5.10; contract Heap is Ownable { using AddressMinHeap for AddressMinHeap.Heap; // heap AddressMinHeap.Heap private heap; // Heap events event JoinHeap(address indexed _address, uint256 _balance, uint256 _prevSize); event LeaveHeap(address indexed _address, uint256 _balance, uint256 _prevSize); uint256 public constant TOP_SIZE = 512; constructor() public { heap.initialize(); } function topSize() external pure returns (uint256) { return TOP_SIZE; } function addressAt(uint256 _i) external view returns (address addr) { (addr, ) = heap.entry(_i); } function indexOf(address _addr) external view returns (uint256) { return heap.index[_addr]; } function entry(uint256 _i) external view returns (address, uint256) { return heap.entry(_i); } function top() external view returns (address, uint256) { return heap.top(); } function size() external view returns (uint256) { return heap.size(); } function update(address _addr, uint256 _new) external onlyOwner { uint256 _size = heap.size(); // If the heap is empty // join the _addr if (_size == 0) { emit JoinHeap(_addr, _new, 0); heap.insert(_addr, _new); return; } // Load top value of the heap (, uint256 lastBal) = heap.top(); // If our target address already is in the heap if (heap.has(_addr)) { // Update the target address value heap.update(_addr, _new); // If the new value is 0 // always pop the heap // we updated the heap, so our address should be on top if (_new == 0) { heap.popTop(); emit LeaveHeap(_addr, 0, _size); } } else { // IF heap is full or new balance is higher than pop heap if (_new != 0 && (_size < TOP_SIZE || lastBal < _new)) { // If heap is full pop heap if (_size >= TOP_SIZE) { (address _poped, uint256 _balance) = heap.popTop(); emit LeaveHeap(_poped, _balance, _size); } // Insert new value heap.insert(_addr, _new); emit JoinHeap(_addr, _new, _size); } } } } // File: contracts/ShuffleToken.sol pragma solidity ^0.5.10; contract ShuffleToken is Ownable, GasPump, IERC20 { using DistributedStorage for bytes32; using SafeMath for uint256; // Shuffle events event Winner(address indexed _addr, uint256 _value); // Managment events event SetName(string _prev, string _new); event SetExtraGas(uint256 _prev, uint256 _new); event SetHeap(address _prev, address _new); event WhitelistFrom(address _addr, bool _whitelisted); event WhitelistTo(address _addr, bool _whitelisted); uint256 public totalSupply; bytes32 private constant BALANCE_KEY = keccak256("balance"); // game uint256 public constant FEE = 100; // metadata string public name = "Shuffle.Monster V3"; string public constant symbol = "SHUF"; uint8 public constant decimals = 18; // fee whitelist mapping(address => bool) public whitelistFrom; mapping(address => bool) public whitelistTo; // heap Heap public heap; // internal uint256 public extraGas; bool inited; function init( address _to, uint256 _amount ) external { // Only init once assert(!inited); inited = true; // Sanity checks assert(totalSupply == 0); assert(address(heap) == address(0)); // Create Heap heap = new Heap(); emit SetHeap(address(0), address(heap)); // Init contract variables and mint // entire token balance extraGas = 15; emit SetExtraGas(0, extraGas); emit Transfer(address(0), _to, _amount); _setBalance(_to, _amount); totalSupply = _amount; } /// // Storage access functions /// // Getters function _toKey(address a) internal pure returns (bytes32) { return bytes32(uint256(a)); } function _balanceOf(address _addr) internal view returns (uint256) { return uint256(_toKey(_addr).read(BALANCE_KEY)); } function _allowance(address _addr, address _spender) internal view returns (uint256) { return uint256(_toKey(_addr).read(keccak256(abi.encodePacked("allowance", _spender)))); } function _nonce(address _addr, uint256 _cat) internal view returns (uint256) { return uint256(_toKey(_addr).read(keccak256(abi.encodePacked("nonce", _cat)))); } // Setters function _setAllowance(address _addr, address _spender, uint256 _value) internal { _toKey(_addr).write(keccak256(abi.encodePacked("allowance", _spender)), bytes32(_value)); } function _setNonce(address _addr, uint256 _cat, uint256 _value) internal { _toKey(_addr).write(keccak256(abi.encodePacked("nonce", _cat)), bytes32(_value)); } function _setBalance(address _addr, uint256 _balance) internal { _toKey(_addr).write(BALANCE_KEY, bytes32(_balance)); heap.update(_addr, _balance); } /// // Internal methods /// function _isWhitelisted(address _from, address _to) internal view returns (bool) { return whitelistFrom[_from]||whitelistTo[_to]; } function _random(address _s1, uint256 _s2, uint256 _s3, uint256 _max) internal pure returns (uint256) { uint256 rand = uint256(keccak256(abi.encodePacked(_s1, _s2, _s3))); return rand % (_max + 1); } function _pickWinner(address _from, uint256 _value) internal returns (address winner) { // Get order of magnitude of the tx uint256 magnitude = Math.orderOfMagnitude(_value); // Pull nonce for a given order of magnitude uint256 nonce = _nonce(_from, magnitude); _setNonce(_from, magnitude, nonce + 1); // pick entry from heap winner = heap.addressAt(_random(_from, nonce, magnitude, heap.size() - 1)); } function _transferFrom(address _operator, address _from, address _to, uint256 _value, bool _payFee) internal { // If transfer amount is zero // emit event and stop execution if (_value == 0) { emit Transfer(_from, _to, 0); return; } // Load sender balance uint256 balanceFrom = _balanceOf(_from); require(balanceFrom >= _value, "balance not enough"); // Check if operator is sender if (_from != _operator) { // If not, validate allowance uint256 allowanceFrom = _allowance(_from, _operator); // If allowance is not 2 ** 256 - 1, consume allowance if (allowanceFrom != uint(-1)) { // Check allowance and save new one require(allowanceFrom >= _value, "allowance not enough"); _setAllowance(_from, _operator, allowanceFrom.sub(_value)); } } // Calculate receiver balance // initial receive is full value uint256 receive = _value; uint256 burn = 0; uint256 shuf = 0; // Change sender balance _setBalance(_from, balanceFrom.sub(_value)); // If the transaction is not whitelisted // or if sender requested to pay the fee // calculate fees if (_payFee || !_isWhitelisted(_from, _to)) { // Fee is the same for BURN and SHUF // If we are sending value one // give priority to BURN burn = _value.divRound(FEE); shuf = _value == 1 ? 0 : burn; // Subtract fees from receiver amount receive = receive.sub(burn.add(shuf)); // Burn tokens totalSupply = totalSupply.sub(burn); emit Transfer(_from, address(0), burn); // Shuffle tokens // Pick winner pseudo-randomly address winner = _pickWinner(_from, _value); // Transfer balance to winner _setBalance(winner, _balanceOf(winner).add(shuf)); emit Winner(winner, shuf); emit Transfer(_from, winner, shuf); } // Sanity checks // no tokens where created assert(burn.add(shuf).add(receive) == _value); // Add tokens to receiver _setBalance(_to, _balanceOf(_to).add(receive)); emit Transfer(_from, _to, receive); } /// // Managment /// function setWhitelistedTo(address _addr, bool _whitelisted) external onlyOwner { emit WhitelistTo(_addr, _whitelisted); whitelistTo[_addr] = _whitelisted; } function setWhitelistedFrom(address _addr, bool _whitelisted) external onlyOwner { emit WhitelistFrom(_addr, _whitelisted); whitelistFrom[_addr] = _whitelisted; } function setName(string calldata _name) external onlyOwner { emit SetName(name, _name); name = _name; } function setExtraGas(uint256 _gas) external onlyOwner { emit SetExtraGas(extraGas, _gas); extraGas = _gas; } function setHeap(Heap _heap) external onlyOwner { emit SetHeap(address(heap), address(_heap)); heap = _heap; } ///// // Heap methods ///// function topSize() external view returns (uint256) { return heap.topSize(); } function heapSize() external view returns (uint256) { return heap.size(); } function heapEntry(uint256 _i) external view returns (address, uint256) { return heap.entry(_i); } function heapTop() external view returns (address, uint256) { return heap.top(); } function heapIndex(address _addr) external view returns (uint256) { return heap.indexOf(_addr); } function getNonce(address _addr, uint256 _cat) external view returns (uint256) { return _nonce(_addr, _cat); } ///// // ERC20 ///// function balanceOf(address _addr) external view returns (uint256) { return _balanceOf(_addr); } function allowance(address _addr, address _spender) external view returns (uint256) { return _allowance(_addr, _spender); } function approve(address _spender, uint256 _value) external returns (bool) { emit Approval(msg.sender, _spender, _value); _setAllowance(msg.sender, _spender, _value); return true; } function transfer(address _to, uint256 _value) external requestGas(extraGas) returns (bool) { _transferFrom(msg.sender, msg.sender, _to, _value, false); return true; } function transferWithFee(address _to, uint256 _value) external requestGas(extraGas) returns (bool) { _transferFrom(msg.sender, msg.sender, _to, _value, true); return true; } function transferFrom(address _from, address _to, uint256 _value) external requestGas(extraGas) returns (bool) { _transferFrom(msg.sender, _from, _to, _value, false); return true; } function transferFromWithFee(address _from, address _to, uint256 _value) external requestGas(extraGas) returns (bool) { _transferFrom(msg.sender, _from, _to, _value, true); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferWithFee","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_i","type":"uint256"}],"name":"heapEntry","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistTo","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"extraGas","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"heapTop","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"topSize","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"},{"name":"_cat","type":"uint256"}],"name":"getNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFromWithFee","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_gas","type":"uint256"}],"name":"setExtraGas","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"heap","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setWhitelistedTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"heapIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_heap","type":"address"}],"name":"setHeap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"FEE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"heapSize","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setWhitelistedFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_addr","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Winner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_prev","type":"string"},{"indexed":false,"name":"_new","type":"string"}],"name":"SetName","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_prev","type":"uint256"},{"indexed":false,"name":"_new","type":"uint256"}],"name":"SetExtraGas","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_prev","type":"address"},{"indexed":false,"name":"_new","type":"address"}],"name":"SetHeap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_whitelisted","type":"bool"}],"name":"WhitelistFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"},{"indexed":false,"name":"_whitelisted","type":"bool"}],"name":"WhitelistTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_from","type":"address"},{"indexed":false,"name":"_to","type":"address"}],"name":"TransferOwnership","type":"event"}]
Contract Creation Code
60c0604052601260808190527f53687566666c652e4d6f6e73746572205633000000000000000000000000000060a090815262000040916003919062000096565b50600080546001600160a01b03191633908117825560408051928352602083019190915280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a16200013b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b6200013891905b8082111562000117576000815560010162000122565b90565b612e3c806200014b6000396000f3fe60806040523480156200001157600080fd5b5060043610620002085760003560e01c806389535803116200011d578063a9059cbb11620000b1578063c57981b5116200007b578063c57981b51462000696578063dd62ed3e14620006a0578063fa7e8dc714620006d1578063ff12bbf414620006db5762000208565b8063a9059cbb146200059f578063b00cf04914620005ce578063bbac119314620005f7578063c47f002714620006205762000208565b80638da5cb5b11620000f35780638da5cb5b146200053457806395d89b41146200055a578063a12ab7701462000564578063a486309d146200056e5762000208565b80638953580314620004ac57806389f3546814620004db5780638cec999314620005145762000208565b806323b872dd11620001a157806343684b21116200016b57806343684b2114620004465780634849f5c8146200046f57806370a0823114620004795780637c32cdd114620004a25762000208565b806323b872dd14620003b4578063313ce56714620003ed5780633767e339146200040d578063399ae72414620004175762000208565b8063095ea7b311620001e3578063095ea7b3146200031557806313af4035146200034457806316b627d1146200036f57806318160ddd14620003985762000208565b806306fdde03146200020d57806308acece2146200028f57806308eaae4d14620002d2575b600080fd5b620002176200070c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156200025357818101518382015260200162000239565b50505050905090810190601f168015620002815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b620002be60048036036040811015620002a757600080fd5b506001600160a01b0381351690602001356200079e565b604080519115158252519081900360200190f35b620002f260048036036020811015620002ea57600080fd5b50356200083f565b604080516001600160a01b03909316835260208301919091528051918290030190f35b620002be600480360360408110156200032d57600080fd5b506001600160a01b038135169060200135620008cb565b6200036d600480360360208110156200035c57600080fd5b50356001600160a01b031662000926565b005b620002be600480360360208110156200038757600080fd5b50356001600160a01b0316620009dd565b620003a2620009f2565b60408051918252519081900360200190f35b620002be60048036036060811015620003cc57600080fd5b506001600160a01b03813581169160208101359091169060400135620009f8565b620003f762000a9a565b6040805160ff9092168252519081900360200190f35b620003a262000a9f565b6200036d600480360360408110156200042f57600080fd5b506001600160a01b03813516906020013562000aa5565b620002be600480360360208110156200045e57600080fd5b50356001600160a01b031662000bec565b620002f262000c01565b620003a2600480360360208110156200049157600080fd5b50356001600160a01b031662000c85565b620003a262000c92565b620003a260048036036040811015620004c457600080fd5b506001600160a01b03813516906020013562000d0c565b620002be60048036036060811015620004f357600080fd5b506001600160a01b0381358116916020810135909116906040013562000d21565b6200036d600480360360208110156200052c57600080fd5b503562000d60565b6200053e62000def565b604080516001600160a01b039092168252519081900360200190f35b6200021762000dfe565b6200053e62000e1e565b6200036d600480360360408110156200058657600080fd5b506001600160a01b038135169060200135151562000e2d565b620002be60048036036040811015620005b757600080fd5b506001600160a01b03813516906020013562000eea565b620003a260048036036020811015620005e657600080fd5b50356001600160a01b031662000f29565b6200036d600480360360208110156200060f57600080fd5b50356001600160a01b031662000faf565b6200036d600480360360208110156200063857600080fd5b8101906020810181356401000000008111156200065457600080fd5b8201836020820111156200066757600080fd5b803590602001918460018302840111640100000000831117156200068a57600080fd5b50909250905062001066565b620003a2620011a8565b620003a260048036036040811015620006b857600080fd5b506001600160a01b0381358116916020013516620011ad565b620003a2620011bb565b6200036d60048036036040811015620006f357600080fd5b506001600160a01b038135169060200135151562001201565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015620007965780601f106200076a5761010080835404028352916020019162000796565b820191906000526020600020905b8154815290600101906020018083116200077857829003601f168201915b505050505081565b60006007543a60001480620007b25750455a115b15620008235760005a9050620007cd333387876001620012be565b6001925060005a820390506064838202045a92505b805a840310156200081a57600180546040805160208082019390935281518082038401815290820190915280519101209055620007e2565b50505062000838565b62000833333386866001620012be565b600191505b5092915050565b6006546040805163e2095c0760e01b815260048101849052815160009384936001600160a01b039091169263e2095c079260248083019392829003018186803b1580156200088c57600080fd5b505afa158015620008a1573d6000803e3d6000fd5b505050506040513d6040811015620008b857600080fd5b5080516020909101519092509050915091565b6040805182815290516000916001600160a01b0385169133917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925919081900360200190a36200091c338484620015fe565b5060015b92915050565b6000546001600160a01b0316331462000973576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b60056020526000908152604090205460ff1681565b60025481565b60006007543a6000148062000a0c5750455a115b1562000a7d5760005a905062000a27338787876000620012be565b6001925060005a820390506064838202045a92505b805a8403101562000a745760018054604080516020808201939093528151808203840181529082019091528051910120905562000a3c565b50505062000a92565b62000a8d338686866000620012be565b600191505b509392505050565b601281565b60075481565b60085460ff161562000ab357fe5b6008805460ff191660011790556002541562000acb57fe5b6006546001600160a01b03161562000adf57fe5b60405162000aed9062001f03565b604051809103906000f08015801562000b0a573d6000803e3d6000fd5b50600680546001600160a01b0319166001600160a01b039283161790819055604080516000815291909216602082015281517f4b388b1aa01b2653af632da9d80cca5cfe489300086d04070fca9dc860629d4f929181900390910190a1600f60078190556040805160008152602081019290925280517fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c99281900390910190a16040805182815290516001600160a01b0384169160009160008051602062002de88339815191529181900360200190a362000be6828262001662565b60025550565b60046020526000908152604090205460ff1681565b60065460408051637f36e6dd60e11b8152815160009384936001600160a01b039091169263fe6dcdba9260048083019392829003018186803b15801562000c4757600080fd5b505afa15801562000c5c573d6000803e3d6000fd5b505050506040513d604081101562000c7357600080fd5b50805160209091015190925090509091565b6000620009208262001702565b60065460408051637c32cdd160e01b815290516000926001600160a01b031691637c32cdd1916004808301926020929190829003018186803b15801562000cd857600080fd5b505afa15801562000ced573d6000803e3d6000fd5b505050506040513d602081101562000d0457600080fd5b505190505b90565b600062000d1a83836200173e565b9392505050565b60006007543a6000148062000d355750455a115b1562000d505760005a905062000a27338787876001620012be565b62000a8d338686866001620012be565b6000546001600160a01b0316331462000dad576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600754604080519182526020820183905280517fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c99281900390910190a1600755565b6000546001600160a01b031681565b6040518060400160405280600481526020016329a42aa360e11b81525081565b6006546001600160a01b031681565b6000546001600160a01b0316331462000e7a576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f11382929181900390910190a16001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b60006007543a6000148062000efe5750455a115b1562000f195760005a9050620007cd333387876000620012be565b62000833333386866000620012be565b6006546040805163fd6aad2560e01b81526001600160a01b0384811660048301529151600093929092169163fd6aad2591602480820192602092909190829003018186803b15801562000f7b57600080fd5b505afa15801562000f90573d6000803e3d6000fd5b505050506040513d602081101562000fa757600080fd5b505192915050565b6000546001600160a01b0316331462000ffc576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600654604080516001600160a01b039283168152918316602083015280517f4b388b1aa01b2653af632da9d80cca5cfe489300086d04070fca9dc860629d4f9281900390910190a1600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314620010b3576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6040805181815260038054600260001961010060018416150201909116049282018390527fbcfc2e8e6857ca26084ba5543a45251aaf7690f73043fff1d18c7d5f80e5cbb19290918591859190819060208201906060830190879080156200115f5780601f1062001133576101008083540402835291602001916200115f565b820191906000526020600020905b8154815290600101906020018083116200114157829003601f168201915b50508381038252848152602001858580828437600083820152604051601f909101601f191690920182900397509095505050505050a1620011a36003838362001f11565b505050565b606481565b600062000d1a838362001786565b6006546040805163949d225d60e01b815290516000926001600160a01b03169163949d225d916004808301926020929190829003018186803b15801562000cd857600080fd5b6000546001600160a01b031633146200124e576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a929181900390910190a16001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b816200130557826001600160a01b0316846001600160a01b031660008051602062002de883398151915260006040518082815260200191505060405180910390a3620015f7565b6000620013128562001702565b9050828110156200135f576040805162461bcd60e51b81526020600482015260126024820152710c4c2d8c2dcc6ca40dcdee840cadcdeeaced60731b604482015290519081900360640190fd5b856001600160a01b0316856001600160a01b0316146200140057600062001387868862001786565b90506000198114620013fe5783811015620013e0576040805162461bcd60e51b81526020600482015260146024820152730c2d8d8deeec2dcc6ca40dcdee840cadcdeeaced60631b604482015290519081900360640190fd5b620013fe8688620013f8848863ffffffff620017e716565b620015fe565b505b8260008062001421886200141b868663ffffffff620017e716565b62001662565b848062001437575062001435888862001835565b155b1562001583576200145086606463ffffffff6200187916565b91508560011462001462578162001465565b60005b90506200148b6200147d838363ffffffff620018e616565b849063ffffffff620017e716565b600254909350620014a3908363ffffffff620017e716565b6002556040805183815290516000916001600160a01b038b169160008051602062002de88339815191529181900360200190a36000620014e4898862001930565b905062001508816200141b84620014fb8562001702565b9063ffffffff620018e616565b6040805183815290516001600160a01b038316917f9c2270628a9b29d30ae96b6c4c14ed646ee134febdce38a5b77f2bde9cea2e20919081900360200190a2806001600160a01b0316896001600160a01b031660008051602062002de8833981519152846040518082815260200191505060405180910390a3505b856200159b84620014fb858563ffffffff620018e616565b14620015a357fe5b620015b8876200141b85620014fb8b62001702565b866001600160a01b0316886001600160a01b031660008051602062002de8833981519152856040518082815260200191505060405180910390a3505050505b5050505050565b6040805168616c6c6f77616e636560b81b6020808301919091526001600160601b0319606086901b1660298301528251601d818403018152603d9092019092528051910120620011a39082620016548662001a5c565b919063ffffffff62001a6816565b604080516662616c616e636560c81b815290519081900360070190206200168f9082620016548562001a5c565b6006546040805163516c1daf60e11b81526001600160a01b038581166004830152602482018590529151919092169163a2d83b5e91604480830192600092919082900301818387803b158015620016e557600080fd5b505af1158015620016fa573d6000803e3d6000fd5b505050505050565b604080516662616c616e636560c81b815290519081900360070190206000906200092090620017318462001a5c565b9063ffffffff62001bc416565b600062000d1a826040516020018080646e6f6e636560d81b81525060050182815260200191505060405160208183030381529060405280519060200120620017318562001a5c565b600062000d1a82604051602001808068616c6c6f77616e636560b81b815250600901826001600160a01b03166001600160a01b031660601b815260140191505060405160208183030381529060405280519060200120620017318562001a5c565b6000818310156200182f576040805162461bcd60e51b815260206004820152600d60248201526c53756220756e646572666c6f7760981b604482015290519081900360640190fd5b50900390565b6001600160a01b03821660009081526004602052604081205460ff168062000d1a5750506001600160a01b031660009081526005602052604090205460ff16919050565b600081620018bc576040805162461bcd60e51b815260206004820152600b60248201526a446976206279207a65726f60a81b604482015290519081900360640190fd5b6000828481620018c857fe5b049050828481620018d557fe5b061562000d1a576001019392505050565b60008282018381101562000d1a576040805162461bcd60e51b815260206004820152600c60248201526b416464206f766572666c6f7760a01b604482015290519081900360640190fd5b6000806200193e8362001d3f565b905060006200194e85836200173e565b90506200196085838360010162001d5e565b6006546040805163949d225d60e01b815290516001600160a01b0390921691630af2b3e591620019f091899186918891600191889163949d225d916004808301926020929190829003018186803b158015620019bb57600080fd5b505afa158015620019d0573d6000803e3d6000fd5b505050506040513d6020811015620019e757600080fd5b50510362001da8565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801562001a2557600080fd5b505afa15801562001a3a573d6000803e3d6000fd5b505050506040513d602081101562001a5157600080fd5b505195945050505050565b6001600160a01b031690565b600062001a758462001e05565b905062001a828162001e92565b62001a925762001a928462001eca565b6040805160248101859052604480820185905282518083039091018152606490910182526020810180516001600160e01b031663e2e52ec160e01b178152915181516000936001600160a01b0386169392918291908083835b6020831062001b0c5780518252601f19909201916020918201910162001aeb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811462001b70576040519150601f19603f3d011682016040523d82523d6000602084013e62001b75565b606091505b5050905080620015f7576040805162461bcd60e51b81526020600482015260156024820152746572726f722077726974696e672073746f7261676560581b604482015290519081900360640190fd5b60008062001bd28462001e05565b905062001bdf8162001e92565b62001bef57506000905062000920565b60408051602480820186905282518083039091018152604490910182526020810180516001600160e01b03166361da143960e01b178152915181516000936060936001600160a01b038716939092909182918083835b6020831062001c665780518252601f19909201916020918201910162001c45565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811462001cc8576040519150601f19603f3d011682016040523d82523d6000602084013e62001ccd565b606091505b50915091508162001d1d576040805162461bcd60e51b81526020600482015260156024820152746572726f722072656164696e672073746f7261676560581b604482015290519081900360640190fd5b80806020019051602081101562001d3357600080fd5b50519695505050505050565b6000600019825b60019190910190600a90048062001d46575092915050565b620011a3826040516020018080646e6f6e636560d81b815250600501828152602001915050604051602081830303815290604052805190602001208260001b620016548662001a5c565b604080516001600160601b0319606087901b16602080830191909152603482018690526054808301869052835180840390910181526074909201909252805191012060009060018301818162001dfa57fe5b069695505050505050565b600060ff60f81b30836040518060200162001e209062001f96565b818103601f199081018352601f90910116604081815282516020938401206001600160f81b0319969096168383015260609490941b6001600160601b03191660218201526035810192909252605580830194909452825180830390940184526075909101909152815191012092915050565b6000813f801580159062000d1a57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b60606040518060200162001ede9062001f96565b6020820181038252601f19601f820116604052509050818151602083016000f5505050565b610d018062001fc283390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062001f545782800160ff1982351617855562001f84565b8280016001018555821562001f84579182015b8281111562001f8457823582559160200191906001019062001f67565b5062001f9292915062001fa4565b5090565b6101258062002cc383390190565b62000d0991905b8082111562001f92576000815560010162001fab56fe608060405234801561001057600080fd5b50600080546001600160a01b03191633908117825560408051928352602083019190915280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1610074600161007960201b610b621760201c565b6100fc565b8054156100e757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f616c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b80546001810182556000918252602082200155565b610bf68061010b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063949d225d11610066578063949d225d1461012e578063a2d83b5e14610136578063e2095c0714610162578063fd6aad25146101a2578063fe6dcdba146101c85761009e565b80630af2b3e5146100a357806313af4035146100dc57806331fb7127146101045780637c32cdd11461011e5780638da5cb5b14610126575b600080fd5b6100c0600480360360208110156100b957600080fd5b50356101d0565b604080516001600160a01b039092168252519081900360200190f35b610102600480360360208110156100f257600080fd5b50356001600160a01b03166101ea565b005b61010c6102a0565b60408051918252519081900360200190f35b61010c6102a6565b6100c06102ad565b61010c6102bc565b6101026004803603604081101561014c57600080fd5b506001600160a01b0381351690602001356102cd565b61017f6004803603602081101561017857600080fd5b50356104fb565b604080516001600160a01b03909316835260208301919091528051918290030190f35b61010c600480360360208110156101b857600080fd5b50356001600160a01b0316610519565b61017f610534565b60006101e360018363ffffffff61054916565b5092915050565b6000546001600160a01b03163314610236576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b61020081565b6102005b90565b6000546001600160a01b031681565b60006102c8600161057c565b905090565b6000546001600160a01b03163314610319576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6000610325600161057c565b90508061038757604080518381526000602082015281516001600160a01b038616927fb7c8eb45e695579273671351c1ee88509af6ec27e061176b10f5f9fb145eff93928290030190a26103816001848463ffffffff61058416565b506104f7565b6000610393600161064f565b91506103a8905060018563ffffffff61067c16565b1561041a576103bf6001858563ffffffff61069d16565b82610415576103ce60016107c5565b505060408051600081526020810184905281516001600160a01b038716927f61072af1539e7159a567565ab0a7863c5ad61aa8daa91cf3843c3bb8bccb00e7928290030190a25b6104f4565b8215801590610433575061020082108061043357508281105b156104f457610200821061049e5760008061044e60016107c5565b91509150816001600160a01b03167f61072af1539e7159a567565ab0a7863c5ad61aa8daa91cf3843c3bb8bccb00e78286604051808381526020018281526020019250505060405180910390a250505b6104b06001858563ffffffff61058416565b604080518481526020810184905281516001600160a01b038716927fb7c8eb45e695579273671351c1ee88509af6ec27e061176b10f5f9fb145eff93928290030190a25b50505b5050565b60008061050f60018463ffffffff61054916565b915091505b915091565b6001600160a01b031660009081526002602052604090205490565b600080610541600161064f565b915091509091565b60008061057184600001846001018154811061056157fe5b9060005260206000200154610905565b915091509250929050565b546000190190565b6001600160a01b0382166000908152600184016020526040902054156105f1576040805162461bcd60e51b815260206004820152601860248201527f54686520656e74727920616c7265616479206578697374730000000000000000604482015290519081900360640190fd5b60006105fd838361091a565b84546001810186556000868152602090200181905584549091506000190161062c85828463ffffffff61092e16565b6001600160a01b0390941660009081526001909501602052505060409092205550565b805460009081906002111561066957506000905080610514565b61050f8360000160018154811061056157fe5b6001600160a01b031660009081526001919091016020526040902054151590565b6001600160a01b03821660009081526001840160205260409020548061070a576040805162461bcd60e51b815260206004820152601960248201527f54686520656e74727920646f6573206e6f742065786973747300000000000000604482015290519081900360640190fd5b6000610716848461091a565b9050600085600001838154811061072957fe5b906000526020600020015490506000818310156107585761075187858563ffffffff610a0516565b905061077a565b818311156107715761075187858563ffffffff61092e16565b505050506107c0565b8287600001828154811061078a57fe5b6000918252602090912001558084146107bb576001600160a01b038616600090815260018801602052604090208190555b505050505b505050565b8054600090819060018111610821576040805162461bcd60e51b815260206004820152601860248201527f546865206865617020646f6573206e6f74206578697374730000000000000000604482015290519081900360640190fd5b6108348460000160018154811061056157fe5b6001600160a01b03821660009081526001870160205260408120559093509150600281141561086f5760016108698582610b25565b506108ff565b600084600001600183038154811061088357fe5b9060005260206000200154905080856000016001815481106108a157fe5b60009182526020909120015560001982016108bc8682610b25565b5060016108d086828463ffffffff610a0516565b9050808660010160006108e285610b18565b6001600160a01b0316815260208101919091526040016000205550505b50915091565b196001600160a01b0381169160a09190911c90565b60a01b6001600160a01b0391909116171990565b81600181146109fe57600084600283048154811061094857fe5b906000526020600020015490505b828110156109fc57828186600285048154811061096f57fe5b90600052602060002001600088600001868154811061098a57fe5b60009182526020822001939093555091909155829060018701906109ad84610b18565b6001600160a01b0316815260208101919091526040016000205560028204915081600114156109db576109fc565b8460028304815481106109ea57fe5b90600052602060002001549050610956565b505b9392505050565b8254829060001981015b81836002021015610b0f5785546002840290600090889083908110610a3057fe5b90600052602060002001549050600082841115610a88576000896000018460010181548110610a5b57fe5b9060005260206000200154905080831015610a7e57809150836001019350610a82565b8291505b50610a8b565b50805b80871115610a9b57505050610b0f565b80878a6000018881548110610aac57fe5b9060005260206000200160008c6000018781548110610ac757fe5b60009182526020822001939093555091909155869060018b0190610aea84610b18565b6001600160a01b0316815260208101919091526040016000205550909350610a0f9050565b50509392505050565b196001600160a01b031690565b8154818355818111156107c0576000838152602090206107c09181019083016102aa91905b80821115610b5e5760008155600101610b4a565b5090565b805415610bac576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b8054600181018255600091825260208220015556fea265627a7a723058202bf26f45bb12b8ec6258f5039e299408732938409649721fca33bd765b3c5af864736f6c634300050a0032608060405234801561001057600080fd5b50600080546001600160a01b0319163317905560f4806100316000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806361da1439146037578063e2e52ec1146063575b600080fd5b605160048036036020811015604b57600080fd5b50356085565b60408051918252519081900360200190f35b608360048036036040811015607757600080fd5b50803590602001356097565b005b60009081526001602052604090205490565b6000546001600160a01b0316331460ad57600080fd5b6000918252600160205260409091205556fea265627a7a72305820c625ddfc087af75f04c79f6b8213103319a49a2179f22a018ec9df402f19994a64736f6c634300050a0032ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a72305820819b0f7a1fb90158588735b0c208ae7a4a02339f1c83345717350cfdfaffa31c64736f6c634300050a0032
Deployed Bytecode
0x60806040523480156200001157600080fd5b5060043610620002085760003560e01c806389535803116200011d578063a9059cbb11620000b1578063c57981b5116200007b578063c57981b51462000696578063dd62ed3e14620006a0578063fa7e8dc714620006d1578063ff12bbf414620006db5762000208565b8063a9059cbb146200059f578063b00cf04914620005ce578063bbac119314620005f7578063c47f002714620006205762000208565b80638da5cb5b11620000f35780638da5cb5b146200053457806395d89b41146200055a578063a12ab7701462000564578063a486309d146200056e5762000208565b80638953580314620004ac57806389f3546814620004db5780638cec999314620005145762000208565b806323b872dd11620001a157806343684b21116200016b57806343684b2114620004465780634849f5c8146200046f57806370a0823114620004795780637c32cdd114620004a25762000208565b806323b872dd14620003b4578063313ce56714620003ed5780633767e339146200040d578063399ae72414620004175762000208565b8063095ea7b311620001e3578063095ea7b3146200031557806313af4035146200034457806316b627d1146200036f57806318160ddd14620003985762000208565b806306fdde03146200020d57806308acece2146200028f57806308eaae4d14620002d2575b600080fd5b620002176200070c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156200025357818101518382015260200162000239565b50505050905090810190601f168015620002815780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b620002be60048036036040811015620002a757600080fd5b506001600160a01b0381351690602001356200079e565b604080519115158252519081900360200190f35b620002f260048036036020811015620002ea57600080fd5b50356200083f565b604080516001600160a01b03909316835260208301919091528051918290030190f35b620002be600480360360408110156200032d57600080fd5b506001600160a01b038135169060200135620008cb565b6200036d600480360360208110156200035c57600080fd5b50356001600160a01b031662000926565b005b620002be600480360360208110156200038757600080fd5b50356001600160a01b0316620009dd565b620003a2620009f2565b60408051918252519081900360200190f35b620002be60048036036060811015620003cc57600080fd5b506001600160a01b03813581169160208101359091169060400135620009f8565b620003f762000a9a565b6040805160ff9092168252519081900360200190f35b620003a262000a9f565b6200036d600480360360408110156200042f57600080fd5b506001600160a01b03813516906020013562000aa5565b620002be600480360360208110156200045e57600080fd5b50356001600160a01b031662000bec565b620002f262000c01565b620003a2600480360360208110156200049157600080fd5b50356001600160a01b031662000c85565b620003a262000c92565b620003a260048036036040811015620004c457600080fd5b506001600160a01b03813516906020013562000d0c565b620002be60048036036060811015620004f357600080fd5b506001600160a01b0381358116916020810135909116906040013562000d21565b6200036d600480360360208110156200052c57600080fd5b503562000d60565b6200053e62000def565b604080516001600160a01b039092168252519081900360200190f35b6200021762000dfe565b6200053e62000e1e565b6200036d600480360360408110156200058657600080fd5b506001600160a01b038135169060200135151562000e2d565b620002be60048036036040811015620005b757600080fd5b506001600160a01b03813516906020013562000eea565b620003a260048036036020811015620005e657600080fd5b50356001600160a01b031662000f29565b6200036d600480360360208110156200060f57600080fd5b50356001600160a01b031662000faf565b6200036d600480360360208110156200063857600080fd5b8101906020810181356401000000008111156200065457600080fd5b8201836020820111156200066757600080fd5b803590602001918460018302840111640100000000831117156200068a57600080fd5b50909250905062001066565b620003a2620011a8565b620003a260048036036040811015620006b857600080fd5b506001600160a01b0381358116916020013516620011ad565b620003a2620011bb565b6200036d60048036036040811015620006f357600080fd5b506001600160a01b038135169060200135151562001201565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015620007965780601f106200076a5761010080835404028352916020019162000796565b820191906000526020600020905b8154815290600101906020018083116200077857829003601f168201915b505050505081565b60006007543a60001480620007b25750455a115b15620008235760005a9050620007cd333387876001620012be565b6001925060005a820390506064838202045a92505b805a840310156200081a57600180546040805160208082019390935281518082038401815290820190915280519101209055620007e2565b50505062000838565b62000833333386866001620012be565b600191505b5092915050565b6006546040805163e2095c0760e01b815260048101849052815160009384936001600160a01b039091169263e2095c079260248083019392829003018186803b1580156200088c57600080fd5b505afa158015620008a1573d6000803e3d6000fd5b505050506040513d6040811015620008b857600080fd5b5080516020909101519092509050915091565b6040805182815290516000916001600160a01b0385169133917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925919081900360200190a36200091c338484620015fe565b5060015b92915050565b6000546001600160a01b0316331462000973576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b60056020526000908152604090205460ff1681565b60025481565b60006007543a6000148062000a0c5750455a115b1562000a7d5760005a905062000a27338787876000620012be565b6001925060005a820390506064838202045a92505b805a8403101562000a745760018054604080516020808201939093528151808203840181529082019091528051910120905562000a3c565b50505062000a92565b62000a8d338686866000620012be565b600191505b509392505050565b601281565b60075481565b60085460ff161562000ab357fe5b6008805460ff191660011790556002541562000acb57fe5b6006546001600160a01b03161562000adf57fe5b60405162000aed9062001f03565b604051809103906000f08015801562000b0a573d6000803e3d6000fd5b50600680546001600160a01b0319166001600160a01b039283161790819055604080516000815291909216602082015281517f4b388b1aa01b2653af632da9d80cca5cfe489300086d04070fca9dc860629d4f929181900390910190a1600f60078190556040805160008152602081019290925280517fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c99281900390910190a16040805182815290516001600160a01b0384169160009160008051602062002de88339815191529181900360200190a362000be6828262001662565b60025550565b60046020526000908152604090205460ff1681565b60065460408051637f36e6dd60e11b8152815160009384936001600160a01b039091169263fe6dcdba9260048083019392829003018186803b15801562000c4757600080fd5b505afa15801562000c5c573d6000803e3d6000fd5b505050506040513d604081101562000c7357600080fd5b50805160209091015190925090509091565b6000620009208262001702565b60065460408051637c32cdd160e01b815290516000926001600160a01b031691637c32cdd1916004808301926020929190829003018186803b15801562000cd857600080fd5b505afa15801562000ced573d6000803e3d6000fd5b505050506040513d602081101562000d0457600080fd5b505190505b90565b600062000d1a83836200173e565b9392505050565b60006007543a6000148062000d355750455a115b1562000d505760005a905062000a27338787876001620012be565b62000a8d338686866001620012be565b6000546001600160a01b0316331462000dad576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600754604080519182526020820183905280517fcc8f22bdbd4465d62f4861f9dcc3c020cbf6f3ede75c5d0eebf924f06f23b1c99281900390910190a1600755565b6000546001600160a01b031681565b6040518060400160405280600481526020016329a42aa360e11b81525081565b6006546001600160a01b031681565b6000546001600160a01b0316331462000e7a576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517f88cf9b943f64811022537ee9f0141770d85e612eae3a3a39241abe5ca9f11382929181900390910190a16001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b60006007543a6000148062000efe5750455a115b1562000f195760005a9050620007cd333387876000620012be565b62000833333386866000620012be565b6006546040805163fd6aad2560e01b81526001600160a01b0384811660048301529151600093929092169163fd6aad2591602480820192602092909190829003018186803b15801562000f7b57600080fd5b505afa15801562000f90573d6000803e3d6000fd5b505050506040513d602081101562000fa757600080fd5b505192915050565b6000546001600160a01b0316331462000ffc576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600654604080516001600160a01b039283168152918316602083015280517f4b388b1aa01b2653af632da9d80cca5cfe489300086d04070fca9dc860629d4f9281900390910190a1600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314620010b3576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6040805181815260038054600260001961010060018416150201909116049282018390527fbcfc2e8e6857ca26084ba5543a45251aaf7690f73043fff1d18c7d5f80e5cbb19290918591859190819060208201906060830190879080156200115f5780601f1062001133576101008083540402835291602001916200115f565b820191906000526020600020905b8154815290600101906020018083116200114157829003601f168201915b50508381038252848152602001858580828437600083820152604051601f909101601f191690920182900397509095505050505050a1620011a36003838362001f11565b505050565b606481565b600062000d1a838362001786565b6006546040805163949d225d60e01b815290516000926001600160a01b03169163949d225d916004808301926020929190829003018186803b15801562000cd857600080fd5b6000546001600160a01b031633146200124e576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b604080516001600160a01b0384168152821515602082015281517fc3d26c130d120a4bb874de56c8b5fb727ad2cfc3551ca49cd42ef248e893b69a929181900390910190a16001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b816200130557826001600160a01b0316846001600160a01b031660008051602062002de883398151915260006040518082815260200191505060405180910390a3620015f7565b6000620013128562001702565b9050828110156200135f576040805162461bcd60e51b81526020600482015260126024820152710c4c2d8c2dcc6ca40dcdee840cadcdeeaced60731b604482015290519081900360640190fd5b856001600160a01b0316856001600160a01b0316146200140057600062001387868862001786565b90506000198114620013fe5783811015620013e0576040805162461bcd60e51b81526020600482015260146024820152730c2d8d8deeec2dcc6ca40dcdee840cadcdeeaced60631b604482015290519081900360640190fd5b620013fe8688620013f8848863ffffffff620017e716565b620015fe565b505b8260008062001421886200141b868663ffffffff620017e716565b62001662565b848062001437575062001435888862001835565b155b1562001583576200145086606463ffffffff6200187916565b91508560011462001462578162001465565b60005b90506200148b6200147d838363ffffffff620018e616565b849063ffffffff620017e716565b600254909350620014a3908363ffffffff620017e716565b6002556040805183815290516000916001600160a01b038b169160008051602062002de88339815191529181900360200190a36000620014e4898862001930565b905062001508816200141b84620014fb8562001702565b9063ffffffff620018e616565b6040805183815290516001600160a01b038316917f9c2270628a9b29d30ae96b6c4c14ed646ee134febdce38a5b77f2bde9cea2e20919081900360200190a2806001600160a01b0316896001600160a01b031660008051602062002de8833981519152846040518082815260200191505060405180910390a3505b856200159b84620014fb858563ffffffff620018e616565b14620015a357fe5b620015b8876200141b85620014fb8b62001702565b866001600160a01b0316886001600160a01b031660008051602062002de8833981519152856040518082815260200191505060405180910390a3505050505b5050505050565b6040805168616c6c6f77616e636560b81b6020808301919091526001600160601b0319606086901b1660298301528251601d818403018152603d9092019092528051910120620011a39082620016548662001a5c565b919063ffffffff62001a6816565b604080516662616c616e636560c81b815290519081900360070190206200168f9082620016548562001a5c565b6006546040805163516c1daf60e11b81526001600160a01b038581166004830152602482018590529151919092169163a2d83b5e91604480830192600092919082900301818387803b158015620016e557600080fd5b505af1158015620016fa573d6000803e3d6000fd5b505050505050565b604080516662616c616e636560c81b815290519081900360070190206000906200092090620017318462001a5c565b9063ffffffff62001bc416565b600062000d1a826040516020018080646e6f6e636560d81b81525060050182815260200191505060405160208183030381529060405280519060200120620017318562001a5c565b600062000d1a82604051602001808068616c6c6f77616e636560b81b815250600901826001600160a01b03166001600160a01b031660601b815260140191505060405160208183030381529060405280519060200120620017318562001a5c565b6000818310156200182f576040805162461bcd60e51b815260206004820152600d60248201526c53756220756e646572666c6f7760981b604482015290519081900360640190fd5b50900390565b6001600160a01b03821660009081526004602052604081205460ff168062000d1a5750506001600160a01b031660009081526005602052604090205460ff16919050565b600081620018bc576040805162461bcd60e51b815260206004820152600b60248201526a446976206279207a65726f60a81b604482015290519081900360640190fd5b6000828481620018c857fe5b049050828481620018d557fe5b061562000d1a576001019392505050565b60008282018381101562000d1a576040805162461bcd60e51b815260206004820152600c60248201526b416464206f766572666c6f7760a01b604482015290519081900360640190fd5b6000806200193e8362001d3f565b905060006200194e85836200173e565b90506200196085838360010162001d5e565b6006546040805163949d225d60e01b815290516001600160a01b0390921691630af2b3e591620019f091899186918891600191889163949d225d916004808301926020929190829003018186803b158015620019bb57600080fd5b505afa158015620019d0573d6000803e3d6000fd5b505050506040513d6020811015620019e757600080fd5b50510362001da8565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801562001a2557600080fd5b505afa15801562001a3a573d6000803e3d6000fd5b505050506040513d602081101562001a5157600080fd5b505195945050505050565b6001600160a01b031690565b600062001a758462001e05565b905062001a828162001e92565b62001a925762001a928462001eca565b6040805160248101859052604480820185905282518083039091018152606490910182526020810180516001600160e01b031663e2e52ec160e01b178152915181516000936001600160a01b0386169392918291908083835b6020831062001b0c5780518252601f19909201916020918201910162001aeb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811462001b70576040519150601f19603f3d011682016040523d82523d6000602084013e62001b75565b606091505b5050905080620015f7576040805162461bcd60e51b81526020600482015260156024820152746572726f722077726974696e672073746f7261676560581b604482015290519081900360640190fd5b60008062001bd28462001e05565b905062001bdf8162001e92565b62001bef57506000905062000920565b60408051602480820186905282518083039091018152604490910182526020810180516001600160e01b03166361da143960e01b178152915181516000936060936001600160a01b038716939092909182918083835b6020831062001c665780518252601f19909201916020918201910162001c45565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811462001cc8576040519150601f19603f3d011682016040523d82523d6000602084013e62001ccd565b606091505b50915091508162001d1d576040805162461bcd60e51b81526020600482015260156024820152746572726f722072656164696e672073746f7261676560581b604482015290519081900360640190fd5b80806020019051602081101562001d3357600080fd5b50519695505050505050565b6000600019825b60019190910190600a90048062001d46575092915050565b620011a3826040516020018080646e6f6e636560d81b815250600501828152602001915050604051602081830303815290604052805190602001208260001b620016548662001a5c565b604080516001600160601b0319606087901b16602080830191909152603482018690526054808301869052835180840390910181526074909201909252805191012060009060018301818162001dfa57fe5b069695505050505050565b600060ff60f81b30836040518060200162001e209062001f96565b818103601f199081018352601f90910116604081815282516020938401206001600160f81b0319969096168383015260609490941b6001600160601b03191660218201526035810192909252605580830194909452825180830390940184526075909101909152815191012092915050565b6000813f801580159062000d1a57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b60606040518060200162001ede9062001f96565b6020820181038252601f19601f820116604052509050818151602083016000f5505050565b610d018062001fc283390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062001f545782800160ff1982351617855562001f84565b8280016001018555821562001f84579182015b8281111562001f8457823582559160200191906001019062001f67565b5062001f9292915062001fa4565b5090565b6101258062002cc383390190565b62000d0991905b8082111562001f92576000815560010162001fab56fe608060405234801561001057600080fd5b50600080546001600160a01b03191633908117825560408051928352602083019190915280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1610074600161007960201b610b621760201c565b6100fc565b8054156100e757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f616c726561647920696e697469616c697a656400000000000000000000000000604482015290519081900360640190fd5b80546001810182556000918252602082200155565b610bf68061010b6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063949d225d11610066578063949d225d1461012e578063a2d83b5e14610136578063e2095c0714610162578063fd6aad25146101a2578063fe6dcdba146101c85761009e565b80630af2b3e5146100a357806313af4035146100dc57806331fb7127146101045780637c32cdd11461011e5780638da5cb5b14610126575b600080fd5b6100c0600480360360208110156100b957600080fd5b50356101d0565b604080516001600160a01b039092168252519081900360200190f35b610102600480360360208110156100f257600080fd5b50356001600160a01b03166101ea565b005b61010c6102a0565b60408051918252519081900360200190f35b61010c6102a6565b6100c06102ad565b61010c6102bc565b6101026004803603604081101561014c57600080fd5b506001600160a01b0381351690602001356102cd565b61017f6004803603602081101561017857600080fd5b50356104fb565b604080516001600160a01b03909316835260208301919091528051918290030190f35b61010c600480360360208110156101b857600080fd5b50356001600160a01b0316610519565b61017f610534565b60006101e360018363ffffffff61054916565b5092915050565b6000546001600160a01b03163314610236576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b61020081565b6102005b90565b6000546001600160a01b031681565b60006102c8600161057c565b905090565b6000546001600160a01b03163314610319576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6000610325600161057c565b90508061038757604080518381526000602082015281516001600160a01b038616927fb7c8eb45e695579273671351c1ee88509af6ec27e061176b10f5f9fb145eff93928290030190a26103816001848463ffffffff61058416565b506104f7565b6000610393600161064f565b91506103a8905060018563ffffffff61067c16565b1561041a576103bf6001858563ffffffff61069d16565b82610415576103ce60016107c5565b505060408051600081526020810184905281516001600160a01b038716927f61072af1539e7159a567565ab0a7863c5ad61aa8daa91cf3843c3bb8bccb00e7928290030190a25b6104f4565b8215801590610433575061020082108061043357508281105b156104f457610200821061049e5760008061044e60016107c5565b91509150816001600160a01b03167f61072af1539e7159a567565ab0a7863c5ad61aa8daa91cf3843c3bb8bccb00e78286604051808381526020018281526020019250505060405180910390a250505b6104b06001858563ffffffff61058416565b604080518481526020810184905281516001600160a01b038716927fb7c8eb45e695579273671351c1ee88509af6ec27e061176b10f5f9fb145eff93928290030190a25b50505b5050565b60008061050f60018463ffffffff61054916565b915091505b915091565b6001600160a01b031660009081526002602052604090205490565b600080610541600161064f565b915091509091565b60008061057184600001846001018154811061056157fe5b9060005260206000200154610905565b915091509250929050565b546000190190565b6001600160a01b0382166000908152600184016020526040902054156105f1576040805162461bcd60e51b815260206004820152601860248201527f54686520656e74727920616c7265616479206578697374730000000000000000604482015290519081900360640190fd5b60006105fd838361091a565b84546001810186556000868152602090200181905584549091506000190161062c85828463ffffffff61092e16565b6001600160a01b0390941660009081526001909501602052505060409092205550565b805460009081906002111561066957506000905080610514565b61050f8360000160018154811061056157fe5b6001600160a01b031660009081526001919091016020526040902054151590565b6001600160a01b03821660009081526001840160205260409020548061070a576040805162461bcd60e51b815260206004820152601960248201527f54686520656e74727920646f6573206e6f742065786973747300000000000000604482015290519081900360640190fd5b6000610716848461091a565b9050600085600001838154811061072957fe5b906000526020600020015490506000818310156107585761075187858563ffffffff610a0516565b905061077a565b818311156107715761075187858563ffffffff61092e16565b505050506107c0565b8287600001828154811061078a57fe5b6000918252602090912001558084146107bb576001600160a01b038616600090815260018801602052604090208190555b505050505b505050565b8054600090819060018111610821576040805162461bcd60e51b815260206004820152601860248201527f546865206865617020646f6573206e6f74206578697374730000000000000000604482015290519081900360640190fd5b6108348460000160018154811061056157fe5b6001600160a01b03821660009081526001870160205260408120559093509150600281141561086f5760016108698582610b25565b506108ff565b600084600001600183038154811061088357fe5b9060005260206000200154905080856000016001815481106108a157fe5b60009182526020909120015560001982016108bc8682610b25565b5060016108d086828463ffffffff610a0516565b9050808660010160006108e285610b18565b6001600160a01b0316815260208101919091526040016000205550505b50915091565b196001600160a01b0381169160a09190911c90565b60a01b6001600160a01b0391909116171990565b81600181146109fe57600084600283048154811061094857fe5b906000526020600020015490505b828110156109fc57828186600285048154811061096f57fe5b90600052602060002001600088600001868154811061098a57fe5b60009182526020822001939093555091909155829060018701906109ad84610b18565b6001600160a01b0316815260208101919091526040016000205560028204915081600114156109db576109fc565b8460028304815481106109ea57fe5b90600052602060002001549050610956565b505b9392505050565b8254829060001981015b81836002021015610b0f5785546002840290600090889083908110610a3057fe5b90600052602060002001549050600082841115610a88576000896000018460010181548110610a5b57fe5b9060005260206000200154905080831015610a7e57809150836001019350610a82565b8291505b50610a8b565b50805b80871115610a9b57505050610b0f565b80878a6000018881548110610aac57fe5b9060005260206000200160008c6000018781548110610ac757fe5b60009182526020822001939093555091909155869060018b0190610aea84610b18565b6001600160a01b0316815260208101919091526040016000205550909350610a0f9050565b50509392505050565b196001600160a01b031690565b8154818355818111156107c0576000838152602090206107c09181019083016102aa91905b80821115610b5e5760008155600101610b4a565b5090565b805415610bac576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b8054600181018255600091825260208220015556fea265627a7a723058202bf26f45bb12b8ec6258f5039e299408732938409649721fca33bd765b3c5af864736f6c634300050a0032608060405234801561001057600080fd5b50600080546001600160a01b0319163317905560f4806100316000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806361da1439146037578063e2e52ec1146063575b600080fd5b605160048036036020811015604b57600080fd5b50356085565b60408051918252519081900360200190f35b608360048036036040811015607757600080fd5b50803590602001356097565b005b60009081526001602052604090205490565b6000546001600160a01b0316331460ad57600080fd5b6000918252600160205260409091205556fea265627a7a72305820c625ddfc087af75f04c79f6b8213103319a49a2179f22a018ec9df402f19994a64736f6c634300050a0032ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a72305820819b0f7a1fb90158588735b0c208ae7a4a02339f1c83345717350cfdfaffa31c64736f6c634300050a0032
Deployed Bytecode Sourcemap
16319:9273:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16319:9273:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17006:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17006:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24963:196;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24963:196:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;23769:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23769:112:0;;:::i;:::-;;;;-1:-1:-1;;;;;23769:112:0;;;;;;;;;;;;;;;;;;;;;24544:213;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24544:213:0;;;;;;;;:::i;410:134::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;410:134:0;-1:-1:-1;;;;;410:134:0;;:::i;:::-;;17217:43;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17217:43:0;-1:-1:-1;;;;;17217:43:0;;:::i;16831:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;25167:204;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;25167:204:0;;;;;;;;;;;;;;;;;:::i;17099:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17324:23;;;:::i;17374:638::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17374:638:0;;;;;;;;:::i;17165:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17165:45:0;-1:-1:-1;;;;;17165:45:0;;:::i;23889:96::-;;;:::i;24282:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24282:109:0;-1:-1:-1;;;;;24282:109:0;;:::i;23573:91::-;;;:::i;24112:124::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24112:124:0;;;;;;;;:::i;25379:210::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;25379:210:0;;;;;;;;;;;;;;;;;:::i;23248:131::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23248:131:0;;:::i;96:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;96:20:0;;;;;;;;;;;;;;17054:38;;;:::i;17282:16::-;;;:::i;22734:179::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22734:179:0;;;;;;;;;;:::i;24765:190::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24765:190:0;;;;;;;;:::i;23993:111::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23993:111:0;-1:-1:-1;;;;;23993:111:0;;:::i;23387:133::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23387:133:0;-1:-1:-1;;;;;23387:133:0;;:::i;23114:126::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23114:126:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;23114:126:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;23114:126:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;23114:126:0;;-1:-1:-1;23114:126:0;-1:-1:-1;23114:126:0;:::i;16947:33::-;;;:::i;24399:137::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24399:137:0;;;;;;;;;;:::i;23672:89::-;;;:::i;22921:185::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22921:185:0;;;;;;;;;;:::i;17006:41::-;;;;;;;;;;;;;;;-1:-1:-1;;17006:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24963:196::-;25056:4;25037:8;;5468:11;5483:1;5468:16;:46;;;;5500:14;5488:9;:26;5468:46;5464:454;;;5531:16;5550:9;5531:28;;25073:56;25087:10;25099;25111:3;25116:6;25124:4;25073:13;:56::i;:::-;25147:4;25140:11;;5590:13;5617:9;5606:20;;;-1:-1:-1;5678:3:0;5659:15;;;5658:23;5707:9;5696:20;;5731:142;5761:6;5749:9;5738:8;:20;:29;5731:142;;;5851:4;;;5834:22;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;5834:22:0;;;;;;5824:33;;;;;5817:40;;5731:142;;;5464:454;;;;;;25073:56;25087:10;25099;25111:3;25116:6;25124:4;25073:13;:56::i;:::-;25147:4;25140:11;;5905:1;24963:196;;;;;:::o;23769:112::-;23859:4;;:14;;;-1:-1:-1;;;23859:14:0;;;;;;;;;;23823:7;;;;-1:-1:-1;;;;;23859:4:0;;;;:10;;:14;;;;;;;;;;;:4;:14;;;5:2:-1;;;;30:1;27;20:12;5:2;23859:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23859:14:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23859:14:0;;;;;;;;;-1:-1:-1;23859:14:0;-1:-1:-1;23769:112:0;;;:::o;24544:213::-;24635:38;;;;;;;;24613:4;;-1:-1:-1;;;;;24635:38:0;;;24644:10;;24635:38;;;;;;;;;;24684:43;24698:10;24710:8;24720:6;24684:13;:43::i;:::-;-1:-1:-1;24745:4:0;24544:213;;;;;:::o;410:134::-;362:5;;-1:-1:-1;;;;;362:5:0;348:10;:19;340:42;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;;;;497:5;;479:32;;;-1:-1:-1;;;;;497:5:0;;;479:32;;;;;;;;;;;;;;;;;;;;;522:5;:14;;-1:-1:-1;;;;;;522:14:0;-1:-1:-1;;;;;522:14:0;;;;;;;;;;410:134::o;17217:43::-;;;;;;;;;;;;;;;:::o;16831:26::-;;;;:::o;25167:204::-;25272:4;25253:8;;5468:11;5483:1;5468:16;:46;;;;5500:14;5488:9;:26;5468:46;5464:454;;;5531:16;5550:9;5531:28;;25289:52;25303:10;25315:5;25322:3;25327:6;25335:5;25289:13;:52::i;:::-;25359:4;25352:11;;5590:13;5617:9;5606:20;;;-1:-1:-1;5678:3:0;5659:15;;;5658:23;5707:9;5696:20;;5731:142;5761:6;5749:9;5738:8;:20;:29;5731:142;;;5851:4;;;5834:22;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;5834:22:0;;;;;;5824:33;;;;;5817:40;;5731:142;;;5464:454;;;;;;25289:52;25303:10;25315:5;25322:3;25327:6;25335:5;25289:13;:52::i;:::-;25359:4;25352:11;;5905:1;25167:204;;;;;;:::o;17099:35::-;17132:2;17099:35;:::o;17324:23::-;;;;:::o;17374:638::-;17498:6;;;;17497:7;17490:15;;;;17516:6;:13;;-1:-1:-1;;17516:13:0;17525:4;17516:13;;;17575:11;;:16;17568:24;;;;17618:4;;-1:-1:-1;;;;;17618:4:0;17610:27;17603:35;;;;17682:10;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;17675:4:0;:17;;-1:-1:-1;;;;;;17675:17:0;-1:-1:-1;;;;;17675:17:0;;;;;;;;17708:34;;;-1:-1:-1;17708:34:0;;17736:4;;;;17708:34;;;;;;;;;;;;;;;;;17844:2;17833:8;:13;;;17862:24;;;17874:1;17862:24;;;;;;;;;;;;;;;;;;;;;17902:34;;;;;;;;-1:-1:-1;;;;;17902:34:0;;;17919:1;;-1:-1:-1;;;;;;;;;;;17902:34:0;;;;;;;;17947:25;17959:3;17964:7;17947:11;:25::i;:::-;17983:11;:21;-1:-1:-1;17374:638:0:o;17165:45::-;;;;;;;;;;;;;;;:::o;23889:96::-;23967:4;;:10;;;-1:-1:-1;;;23967:10:0;;;;23931:7;;;;-1:-1:-1;;;;;23967:4:0;;;;:8;;:10;;;;;;;;;;;:4;:10;;;5:2:-1;;;;30:1;27;20:12;5:2;23967:10:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23967:10:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23967:10:0;;;;;;;;;-1:-1:-1;23967:10:0;-1:-1:-1;23889:96:0;;:::o;24282:109::-;24339:7;24366:17;24377:5;24366:10;:17::i;23573:91::-;23642:4;;:14;;;-1:-1:-1;;;23642:14:0;;;;23615:7;;-1:-1:-1;;;;;23642:4:0;;:12;;:14;;;;;;;;;;;;;;:4;:14;;;5:2:-1;;;;30:1;27;20:12;5:2;23642:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23642:14:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23642:14:0;;-1:-1:-1;23573:91:0;;:::o;24112:124::-;24182:7;24209:19;24216:5;24223:4;24209:6;:19::i;:::-;24202:26;24112:124;-1:-1:-1;;;24112:124:0:o;25379:210::-;25491:4;25472:8;;5468:11;5483:1;5468:16;:46;;;;5500:14;5488:9;:26;5468:46;5464:454;;;5531:16;5550:9;5531:28;;25508:51;25522:10;25534:5;25541:3;25546:6;25554:4;25508:13;:51::i;5464:454::-;25508:51;25522:10;25534:5;25541:3;25546:6;25554:4;25508:13;:51::i;23248:131::-;362:5;;-1:-1:-1;;;;;362:5:0;348:10;:19;340:42;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;;;;23330:8;;23318:27;;;;;;;;;;;;;;;;;;;;;;;;23356:8;:15;23248:131::o;96:20::-;;;-1:-1:-1;;;;;96:20:0;;:::o;17054:38::-;;;;;;;;;;;;;;-1:-1:-1;;;17054:38:0;;;;:::o;17282:16::-;;;-1:-1:-1;;;;;17282:16:0;;:::o;22734:179::-;362:5;;-1:-1:-1;;;;;362:5:0;348:10;:19;340:42;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;;;;22829:32;;;-1:-1:-1;;;;;22829:32:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22872:18:0;;;;;;;;:11;:18;;;;;:33;;-1:-1:-1;;22872:33:0;;;;;;;;;;22734:179::o;24765:190::-;24851:4;24832:8;;5468:11;5483:1;5468:16;:46;;;;5500:14;5488:9;:26;5468:46;5464:454;;;5531:16;5550:9;5531:28;;24868:57;24882:10;24894;24906:3;24911:6;24919:5;24868:13;:57::i;5464:454::-;24868:57;24882:10;24894;24906:3;24911:6;24919:5;24868:13;:57::i;23993:111::-;24077:4;;:19;;;-1:-1:-1;;;24077:19:0;;-1:-1:-1;;;;;24077:19:0;;;;;;;;;24050:7;;24077:4;;;;;:12;;:19;;;;;;;;;;;;;;;:4;:19;;;5:2:-1;;;;30:1;27;20:12;5:2;24077:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24077:19:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24077:19:0;;23993:111;-1:-1:-1;;23993:111:0:o;23387:133::-;362:5;;-1:-1:-1;;;;;362:5:0;348:10;:19;340:42;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;;;;23467:4;;23451:38;;;-1:-1:-1;;;;;23467:4:0;;;23451:38;;;;;;;;;;;;;;;;;;;;;23500:4;:12;;-1:-1:-1;;;;;;23500:12:0;-1:-1:-1;;;;;23500:12:0;;;;;;;;;;23387:133::o;23114:126::-;362:5;;-1:-1:-1;;;;;362:5:0;348:10;:19;340:42;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;;;;23189:20;;;;;;23197:4;23189:20;;;-1:-1:-1;;23189:20:0;;;;;;;;;;;;;;;;;;;23197:4;;23203:5;;;;23189:20;;;;;;;;;;;23197:4;;23189:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23189:20:0;;;;;;;;;;;;;;;1:33:-1;99:1;81:16;;;74:27;23189:20:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;23189:20:0;;;;-1:-1:-1;23189:20:0;;-1:-1:-1;;;;;;23189:20:0;23220:12;:4;23227:5;;23220:12;:::i;:::-;;23114:126;;:::o;16947:33::-;16977:3;16947:33;:::o;24399:137::-;24474:7;24501:27;24512:5;24519:8;24501:10;:27::i;23672:89::-;23742:4;;:11;;;-1:-1:-1;;;23742:11:0;;;;23715:7;;-1:-1:-1;;;;;23742:4:0;;:9;;:11;;;;;;;;;;;;;;:4;:11;;;5:2:-1;;;;30:1;27;20:12;22921:185:0;362:5;;-1:-1:-1;;;;;362:5:0;348:10;:19;340:42;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;-1:-1:-1;;;340:42:0;;;;;;;;;;;;;;;23018:34;;;-1:-1:-1;;;;;23018:34:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23063:20:0;;;;;;;;:13;:20;;;;;:35;;-1:-1:-1;;23063:35:0;;;;;;;;;;22921:185::o;20205:2483::-;20410:11;20406:93;;20459:3;-1:-1:-1;;;;;20443:23:0;20452:5;-1:-1:-1;;;;;20443:23:0;-1:-1:-1;;;;;;;;;;;20464:1:0;20443:23;;;;;;;;;;;;;;;;;;20481:7;;20406:93;20543:19;20565:17;20576:5;20565:10;:17::i;:::-;20543:39;;20616:6;20601:11;:21;;20593:52;;;;;-1:-1:-1;;;20593:52:0;;;;;;;;;;;;-1:-1:-1;;;20593:52:0;;;;;;;;;;;;;;;20711:9;-1:-1:-1;;;;;20702:18:0;:5;-1:-1:-1;;;;;20702:18:0;;20698:480;;20780:21;20804:28;20815:5;20822:9;20804:10;:28::i;:::-;20780:52;;-1:-1:-1;;20919:13:0;:25;20915:252;;21043:6;21026:13;:23;;21018:56;;;;;-1:-1:-1;;;21018:56:0;;;;;;;;;;;;-1:-1:-1;;;21018:56:0;;;;;;;;;;;;;;;21093:58;21107:5;21114:9;21125:25;:13;21143:6;21125:25;:17;:25;:::i;:::-;21093:13;:58::i;:::-;20698:480;;21289:6;21271:15;;21396:43;21408:5;21415:23;:11;21289:6;21415:23;:15;:23;:::i;:::-;21396:11;:43::i;:::-;21583:7;:38;;;;21595:26;21610:5;21617:3;21595:14;:26::i;:::-;21594:27;21583:38;21579:843;;;21777:20;:6;16977:3;21777:20;:15;:20;:::i;:::-;21770:27;;21819:6;21829:1;21819:11;:22;;21837:4;21819:22;;;21833:1;21819:22;21812:29;-1:-1:-1;21919:27:0;21931:14;:4;21812:29;21931:14;:8;:14;:::i;:::-;21919:7;;:27;:11;:27;:::i;:::-;22005:11;;21909:37;;-1:-1:-1;22005:21:0;;22021:4;22005:21;:15;:21;:::i;:::-;21991:11;:35;22046:33;;;;;;;;22070:1;;-1:-1:-1;;;;;22046:33:0;;;-1:-1:-1;;;;;;;;;;;22046:33:0;;;;;;;;22171:14;22188:26;22200:5;22207:6;22188:11;:26::i;:::-;22171:43;;22272:49;22284:6;22292:28;22315:4;22292:18;22303:6;22292:10;:18::i;:::-;:22;:28;:22;:28;:::i;22272:49::-;22341:20;;;;;;;;-1:-1:-1;;;;;22341:20:0;;;;;;;;;;;;;22397:6;-1:-1:-1;;;;;22381:29:0;22390:5;-1:-1:-1;;;;;22381:29:0;-1:-1:-1;;;;;;;;;;;22405:4:0;22381:29;;;;;;;;;;;;;;;;;;21579:843;;22534:6;22503:27;22522:7;22503:14;:4;22512;22503:14;:8;:14;:::i;:27::-;:37;22496:45;;;;22589:46;22601:3;22606:28;22626:7;22606:15;22617:3;22606:10;:15::i;22589:46::-;22667:3;-1:-1:-1;;;;;22651:29:0;22660:5;-1:-1:-1;;;;;22651:29:0;-1:-1:-1;;;;;;;;;;;22672:7:0;22651:29;;;;;;;;;;;;;;;;;;20205:2483;;;;;;;;;;:::o;18742:188::-;18864:39;;;-1:-1:-1;;;18864:39:0;;;;;;;;-1:-1:-1;;;;;;18864:39:0;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;18864:39:0;;;;;;;18854:50;;;;;18834:88;;18914:6;18834:13;18841:5;18834:6;:13::i;:::-;:19;:88;;:19;:88;:::i;19118:172::-;16905:20;;;-1:-1:-1;;;16905:20:0;;;;;;;;;;;;19192:51;;19233:8;19192:13;19199:5;19192:6;:13::i;:51::-;19254:4;;:28;;;-1:-1:-1;;;19254:28:0;;-1:-1:-1;;;;;19254:28:0;;;;;;;;;;;;;;;:4;;;;;:11;;:28;;;;;:4;;:28;;;;;;;:4;;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;19254:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19254:28:0;;;;19118:172;;:::o;18203:133::-;16905:20;;;-1:-1:-1;;;16905:20:0;;;;;;;;;;;;18261:7;;18296:31;;:13;18303:5;18296:6;:13::i;:::-;:18;:31;:18;:31;:::i;18542:174::-;18610:7;18645:62;18700:4;18674:31;;;;;;-1:-1:-1;;;18674:31:0;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18674:31:0;;;18664:42;;;;;;18645:13;18652:5;18645:6;:13::i;18344:190::-;18420:7;18455:70;18514:8;18484:39;;;;;;-1:-1:-1;;;18484:39:0;;;;;;-1:-1:-1;;;;;18484:39:0;-1:-1:-1;;;;;18484:39:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18484:39:0;;;18474:50;;;;;;18455:13;18462:5;18455:6;:13::i;3785:141::-;3843:7;3876:1;3871;:6;;3863:32;;;;;-1:-1:-1;;;3863:32:0;;;;;;;;;;;;-1:-1:-1;;;3863:32:0;;;;;;;;;;;;;;;-1:-1:-1;3913:5:0;;;3785:141::o;19343:145::-;-1:-1:-1;;;;;19442:20:0;;19418:4;19442:20;;;:13;:20;;;;;;;;;:38;;-1:-1:-1;;;;;;;19464:16:0;;;;;:11;:16;;;;;;;;;19343:145;-1:-1:-1;19343:145:0:o;4318:232::-;4381:7;4409:6;4401:30;;;;;-1:-1:-1;;;4401:30:0;;;;;;;;;;;;-1:-1:-1;;;4401:30:0;;;;;;;;;;;;;;;4442:9;4458:1;4454;:5;;;;;;4442:17;;4478:1;4474;:5;;;;;;:10;4470:52;;4509:1;4505:5;4541:1;4318:232;-1:-1:-1;;;4318:232:0:o;3613:164::-;3671:7;3703:5;;;3727:6;;;;3719:31;;;;;-1:-1:-1;;;3719:31:0;;;;;;;;;;;;-1:-1:-1;;;3719:31:0;;;;;;;;;;;;;;19726:471;19796:14;19868:17;19888:29;19910:6;19888:21;:29::i;:::-;19868:49;;19982:13;19998:24;20005:5;20012:9;19998:6;:24::i;:::-;19982:40;;20033:38;20043:5;20050:9;20061:5;20069:1;20061:9;20033;:38::i;:::-;20124:4;;20172:11;;;-1:-1:-1;;;20172:11:0;;;;-1:-1:-1;;;;;20124:4:0;;;;:14;;20139:49;;20147:5;;20154;;20161:9;;20124:4;;;;20172:9;;:11;;;;;;;;;;;;;;20124:4;20172:11;;;5:2:-1;;;;30:1;27;20:12;5:2;20172:11:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20172:11:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20172:11:0;:15;20139:7;:49::i;:::-;20124:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20124:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20124:65:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20124:65:0;;19726:471;-1:-1:-1;;;;;19726:471:0:o;18091:104::-;-1:-1:-1;;;;;18176:10:0;;18091:104::o;2324:569::-;2440:17;2472:21;2485:7;2472:12;:21::i;:::-;2440:54;;2510:37;2540:5;2510:21;:37::i;:::-;2505:86;;2564:15;2571:7;2564:6;:15::i;:::-;2696:124;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2696:124:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2662:169:0;;;;2644:12;;-1:-1:-1;;;;;2662:19:0;;;2696:124;2662:169;;;25:18:-1;2662:169:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;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;;;2662:169: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;;2643:188:0;;;2852:7;2844:41;;;;;-1:-1:-1;;;2844:41:0;;;;;;;;;;;;-1:-1:-1;;;2844:41:0;;;;;;;;;;;;;;2901:610;2994:7;3014:17;3046:21;3059:7;3046:12;:21::i;:::-;3014:54;;3084:37;3114:5;3084:21;:37::i;:::-;3079:88;;-1:-1:-1;3153:1:0;;-1:-1:-1;3138:17:0;;3079:88;3295:98;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3295:98:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;3255:149:0;;;;3220:12;;3234:17;;-1:-1:-1;;;;;3255:25:0;;;3295:98;;3255:149;;;;;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;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;;;3255:149: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;;3219:185:0;;;;3425:7;3417:41;;;;;-1:-1:-1;;;3417:41:0;;;;;;;;;;;;-1:-1:-1;;;3417:41:0;;;;;;;;;;;;;;;3487:4;3476:27;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3476:27:0;;2901:610;-1:-1:-1;;;;;;2901:610:0:o;4644:270::-;4708:7;-1:-1:-1;;4779:5:0;4797:83;4840:9;;;;;;4823:2;4815:10;;;4797:83;;-1:-1:-1;4899:7:0;4644:270;-1:-1:-1;;4644:270:0:o;18938:172::-;19022:80;19078:4;19052:31;;;;;;-1:-1:-1;;;19052:31:0;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19052:31:0;;;19042:42;;;;;;19094:6;19086:15;;19022:13;19029:5;19022:6;:13::i;19496:222::-;19642:31;;;-1:-1:-1;;;;;;19642:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;19642:31:0;;;;;;;19632:42;;;;;19589:7;;19708:1;19701:8;;19632:42;19701:8;19693:17;;;;;;19496:222;-1:-1:-1;;;;;;19496:222:0:o;1631:439::-;1692:7;1847:4;1842:10;;1887:4;1919:7;1963:30;;;;;;;;:::i;:::-;21:26:-1;;;-1:-1;;21:26;;;7:41;;87:2;69:12;;;65:26;61:2;54:38;;;1953:41:0;;41:4:-1;30:16;;;1953:41:0;-1:-1:-1;;;;;;1799:218:0;;;;;;;;;;;;;-1:-1:-1;;;;;;1799:218:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1799:218:0;;;;;;;1767:269;;;;;;1631:439;-1:-1:-1;;1631:439:0:o;1182:323::-;1240:4;1347:18;;1384:22;;;;;:113;;-1:-1:-1;1430:66:0;1410:87;;;1377:120;-1:-1:-1;;1182:323:0:o;2078:238::-;2130:21;2154:30;;;;;;;;:::i;:::-;41:4:-1;34:5;30:16;25:3;21:26;14:5;7:41;87:2;83:7;78:2;73:3;69:12;65:26;61:2;54:38;2154:30:0;2130:54;;2298:7;2287:8;2281:15;2274:4;2264:8;2260:19;2257:1;2249:57;2245:62;2243:66;;:::o;16319:9273::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16319:9273:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16319:9273:0;;;-1:-1:-1;16319:9273:0;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://819b0f7a1fb90158588735b0c208ae7a4a02339f1c83345717350cfdfaffa31c
Loading...
Loading
Loading...
Loading
OVERVIEW
The Shuffle Monster token is an experimental ERC20 token that shuffles 1% of each token transfer, and burns another 1%.Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.