ERC-721
Overview
Max Total Supply
2 SETTLEMENT
Holders
3
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
0 SETTLEMENTLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DoomsdaySettlers
Compiler Version
v0.8.18+commit.87f61d96
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.18; import "./interfaces/IERC721TokenReceiver.sol"; import "./interfaces/IDoomsdaySettlersDarkAge.sol"; import "./interfaces/IDoomsdaySettlersMetadata.sol"; contract DoomsdaySettlers { struct Settlement{ uint32 settleBlock; uint24 supplyAtMint; uint16 age; uint8 settlementType; uint80 relics; uint80 supplies; } uint80 constant CREATOR_PERCENT = 15; uint80 constant DESTRUCTION_FEE = 0.01 ether; uint80 constant REINFORCE_PERCENT_WINNER = 85; uint80 constant REINFORCE_PERCENT_CREATOR = 15; uint256 constant BLOCK_TIME = 12 seconds; uint256 immutable BASE_DIFFICULTY; uint256 immutable DIFFICULTY_RAMP; uint256 immutable DIFFICULTY_COOLDOWN; uint256 immutable DIFFICULTY_COOLDOWN_SLOPE; address immutable DARK_AGE; uint256 immutable COLLAPSE_INITIAL; uint256 immutable COLLAPSE_RAMP; uint256 immutable COLLAPSE_MIN; uint16 age = 1; uint32 firstSettlement; uint32 abandoned; bool itIsTheDawnOfANewAge; address public owner; address public creator; uint80 supplies; uint80 relics; uint80 public mintFee; uint80 creatorEarnings; uint256 creatorRoyaltiesBasisPoints; bytes32[] hashes; mapping( uint32 => Settlement) public settlements; event Settle(uint32 _tokenId, bytes32 _hash, address _settler, uint24 _newSupply, uint80 _newMintFee, uint32 _collapseBlock, uint8 _settlementType, uint32 _blockNumber); event Abandon(uint32 _tokenId, bytes32 _hash, uint80 _growth, uint24 _supplyAtMint, uint32 _newAbandoned, uint80 _newMintFee, uint80 _eth, uint32 _settled, bool _itIsTheDawnOfANewAge, uint32 _blockNumber); event Reinforce(uint32 indexed _tokenId, uint8 _type); event Disaster(uint32 indexed _tokenId, uint8 _type, bool _destroyed, bool _darkAgeOver); constructor( address _darkAge, uint256 _BASE_DIFFICULTY, uint256 _DIFFICULTY_RAMP, uint256 _DIFFICULTY_COOLDOWN, uint256 _DIFFICULTY_COOLDOWN_SLOPE, uint256 _COLLAPSE_INITIAL, uint256 _COLLAPSE_RAMP, uint256 _COLLAPSE_MIN ) payable { BASE_DIFFICULTY = _BASE_DIFFICULTY; DIFFICULTY_RAMP = _DIFFICULTY_RAMP; DIFFICULTY_COOLDOWN = _DIFFICULTY_COOLDOWN; DIFFICULTY_COOLDOWN_SLOPE = _DIFFICULTY_COOLDOWN_SLOPE; COLLAPSE_INITIAL = _COLLAPSE_INITIAL; COLLAPSE_RAMP = _COLLAPSE_RAMP; COLLAPSE_MIN = _COLLAPSE_MIN; DARK_AGE = _darkAge; require(msg.value == DESTRUCTION_FEE,"destruction"); // ERC165 stuff supportsInterface[0x80ac58cd] = true; //ERC721 supportsInterface[0x5b5e139f] = true; //ERC721Metadata supportsInterface[0x01ffc9a7] = true; //ERC165 supportsInterface[0x2a55205a] = true; //ERC2981 owner = msg.sender; creator = msg.sender; bytes32 _hash = blockhash(block.number - 1); uint256 _settlementType = settlementType(_hash,0); _mint(1,msg.sender,_hash); settlements[1] = Settlement(uint32(block.number),0,age,uint8(_settlementType), 0,0); mintFee += uint80((uint88(2363029719748390562045450) >> _settlementType * 9)%uint88(512)) * uint80(0.000001 ether); firstSettlement = 1; } function settle(uint256 location) external payable { require(!isDarkAge(),"dark age"); unchecked{ require(address(this).balance < type(uint80).max,"balance overflow failsafe"); uint32 tokenId = uint32(hashes.length + 1); if(itIsTheDawnOfANewAge){ ++age; firstSettlement = tokenId; itIsTheDawnOfANewAge = false; } uint256 supply = uint256(hashes.length - abandoned); uint256 difficulty = BASE_DIFFICULTY - (DIFFICULTY_RAMP * supply); uint256 lastSettleBlock = settlements[uint32(hashes.length )].settleBlock; require(block.number > lastSettleBlock,"lastSettleBlock"); uint256 blockDif = (block.number - lastSettleBlock); if(blockDif < DIFFICULTY_COOLDOWN){ difficulty /= DIFFICULTY_COOLDOWN_SLOPE * (DIFFICULTY_COOLDOWN - blockDif); } uint256 cost = uint256(mintFee) + DESTRUCTION_FEE; uint80 creatorFee = uint80(cost * CREATOR_PERCENT / 100); creatorEarnings += creatorFee; cost += creatorFee; bytes32 hash = keccak256(abi.encodePacked( msg.sender, hashes[hashes.length - 1], location )); require(uint256(hash) < difficulty,"difficulty"); require(msg.value >= cost,"cost"); uint8 _settlementType = uint8(settlementType(hash,supply)); hash = keccak256(abi.encodePacked(hash,block.prevrandao)); settlements[tokenId] = Settlement( uint32(block.number), uint24(supply), age, _settlementType, 0, 0); relics += mintFee/2; mintFee += uint80((uint88(2363029719748390562045450) >> _settlementType * 9)%uint88(512)) * uint80(0.000001 ether); ++supply; uint256 collapse; if(supply * COLLAPSE_RAMP < COLLAPSE_INITIAL - COLLAPSE_MIN){ collapse = COLLAPSE_INITIAL - supply * COLLAPSE_RAMP; } else{ collapse = COLLAPSE_MIN; } _mint(tokenId,msg.sender,hash); emit Settle(tokenId, hash, msg.sender, uint24(supply), mintFee, uint32(block.number + collapse / BLOCK_TIME), _settlementType, uint32(block.number)); require(gasleft() > 10000,"gas failsafe"); if(msg.value > cost){ payable(msg.sender).transfer(msg.value - cost); } } } function abandon(uint32 _tokenId, uint32 _data) external { payable(msg.sender).transfer(_abandon(_tokenId,_data)); } function abandonMultiple(uint32[] calldata _tokenIds, uint32 _data) external { unchecked{ require(_tokenIds.length > 0,"tokenIds"); uint256 total; for(uint256 i = 0; i < _tokenIds.length; ++i){ total += _abandon(_tokenIds[i],_data); } payable(msg.sender).transfer(total); } } function confirmDisaster(uint32 _tokenId, uint32 _data) external { require(isDarkAge(),"dark age"); require(_isValidToken(_tokenId),"invalid"); uint8 _type; bool destroyed; unchecked{ (_type, destroyed) = IDoomsdaySettlersDarkAge(DARK_AGE).disaster(_tokenId, hashes.length - abandoned); } bool darkAgeOver = false; if(destroyed){ unchecked{ uint80 tokenFee = uint80((uint88(2363029719748390562045450) >> settlements[_tokenId].settlementType * 9)%uint88(512)) * uint80(0.000001 ether); uint80 growth; if(_tokenId >= firstSettlement){ growth = uint80(hashes.length - _tokenId); }else{ growth = uint80(hashes.length - firstSettlement) + 1; } uint80 _relics = growth * tokenFee; relics += _relics/2 + settlements[_tokenId].relics + settlements[_tokenId].supplies + IDoomsdaySettlersDarkAge(DARK_AGE).getUnusedFees(_tokenId) * DESTRUCTION_FEE; ++abandoned; _burn(_tokenId); if(hashes.length - abandoned == 1){ _processWinner(_data); darkAgeOver = true; } } } emit Disaster(_tokenId,_type,destroyed, darkAgeOver); payable(msg.sender).transfer(DESTRUCTION_FEE); } function reinforce(uint32 _tokenId, bool[4] memory _resources) external payable{ require(msg.sender == ownerOf(_tokenId),"ownerOf"); unchecked{ require(address(this).balance < type(uint80).max,"balance overflow failsafe"); uint80 cost = IDoomsdaySettlersDarkAge(DARK_AGE).reinforce( _tokenId, hashOf(_tokenId), _resources, isDarkAge() ); uint80 total; for(uint256 i = 0; i < 4; ++i){ if(_resources[i]){ total += DESTRUCTION_FEE; emit Reinforce(_tokenId,uint8(i)); } } require(total > 0,"empty"); cost *= mintFee / uint80(4); total += cost; require(total <= msg.value,"msg.value"); creatorEarnings += cost * REINFORCE_PERCENT_CREATOR / 100; supplies += cost * REINFORCE_PERCENT_WINNER / 100; require(gasleft() > 10000,"gas failsafe"); if(msg.value > total){ payable(msg.sender).transfer(msg.value - total); } } } function getGrowth(uint32 _tokenId) external view returns(uint80){ uint80 growth; if(_tokenId >= firstSettlement){ growth = uint80(hashes.length - _tokenId); }else{ growth = uint80(hashes.length - firstSettlement) + 1; } return growth * uint80((uint88(2363029719748390562045450) >> settlements[_tokenId].settlementType * 9)%uint88(512)) * uint80(0.000001 ether); } function miningState() external view returns( bytes32 _lastHash, uint32 _settled, uint32 _abandoned, uint32 _lastSettleBlock, uint32 _collapseBlock, uint80 _mintFee, uint256 _blockNumber ){ uint256 collapseBlock = settlements[uint32(hashes.length )].settleBlock; uint32 collapseSupply = settlements[uint32(hashes.length)].supplyAtMint + 1; if(collapseSupply * COLLAPSE_RAMP < COLLAPSE_INITIAL - COLLAPSE_MIN){ collapseBlock += ( COLLAPSE_INITIAL - collapseSupply * COLLAPSE_RAMP ) / BLOCK_TIME; } else{ collapseBlock += COLLAPSE_MIN / BLOCK_TIME; } return ( hashes[hashes.length - 1], uint32(hashes.length), abandoned, settlements[uint32(hashes.length)].settleBlock, uint32(collapseBlock), mintFee, block.number ); } function currentState() external view returns( bool _itIsTheDawnOfANewAge, uint32 _firstSettlement, uint16 _age, uint80 _creatorEarnings, uint80 _relics, uint80 _supplies, uint256 _blockNumber ){ return ( itIsTheDawnOfANewAge, firstSettlement, age, creatorEarnings, relics, supplies, block.number ); } function settlementType(bytes32 hash, uint256 _supplyAtMint) public pure returns(uint256){ unchecked{ uint256 settlementTypeMax = _supplyAtMint / 1000 + 2 ; if(settlementTypeMax > 8) settlementTypeMax = 8; return (uint256(hash)%100)**2 * ( settlementTypeMax + 1 ) / 1_00_00; } } function isDarkAge() public view returns(bool){ unchecked{ uint256 supply = (hashes.length - abandoned); uint256 collapseBlock = settlements[uint32(hashes.length)].settleBlock; uint32 collapseSupply = settlements[uint32(hashes.length)].supplyAtMint + 1; if(collapseSupply * COLLAPSE_RAMP < COLLAPSE_INITIAL - COLLAPSE_MIN){ collapseBlock += ( COLLAPSE_INITIAL - collapseSupply * COLLAPSE_RAMP ) / BLOCK_TIME; } else{ collapseBlock += COLLAPSE_MIN / BLOCK_TIME; } return supply > 1 && (block.number > collapseBlock ); } } function hashOf(uint32 _tokenId) public view returns(bytes32){ require(_isValidToken(_tokenId),"invalid"); unchecked{ return hashes[_tokenId - 1]; } } function getLastHash() external view returns(bytes32){ return hashes[hashes.length - 1]; } function getCost() external view returns(uint256){ uint256 cost = uint256(mintFee) + DESTRUCTION_FEE; uint256 creatorFee = cost * CREATOR_PERCENT / 100; cost += creatorFee; return cost; } function _processWinner(uint32 _winner) private{ require(_isValidToken(_winner),"invalid"); unchecked{ settlements[_winner].relics += relics; settlements[_winner].supplies += supplies; uint80 tokenFee = uint80((uint88(2363029719748390562045450) >> settlements[_winner].settlementType * 9)%uint88(512)) * uint80(0.000001 ether); uint80 growth; if(_winner > firstSettlement){ growth = uint80(hashes.length) - uint80(_winner); }else{ growth = (uint80(hashes.length) - uint80(firstSettlement)) + 1; } uint80 _relics = growth * tokenFee; settlements[_winner].relics += _relics / 2; relics = 0; supplies = 0; mintFee = tokenFee; itIsTheDawnOfANewAge = true; } } function _abandon(uint32 _tokenId, uint32 _data) private returns(uint256){ unchecked{ require(msg.sender == ownerOf(_tokenId),"ownerOf"); bytes32 hash = hashes[_tokenId - 1]; uint80 growth; if(_tokenId >= firstSettlement){ growth = uint80(hashes.length - _tokenId); }else{ growth = uint80(hashes.length) - uint80(firstSettlement) + 1; } uint80 _relics; if(!itIsTheDawnOfANewAge){ _relics = growth * uint80((uint88(2363029719748390562045450) >> settlements[_tokenId].settlementType * 9)%uint88(512)) * uint80(0.000001 ether); } bool _isDarkAge = isDarkAge(); if(_isDarkAge){ require(!IDoomsdaySettlersDarkAge(DARK_AGE).checkVulnerable(_tokenId),"vulnerable"); _relics /= 2; uint80 spoils = uint80(relics) / uint80(hashes.length - abandoned) / 2; _relics += spoils; relics -= spoils; }else if(!itIsTheDawnOfANewAge){ relics -= _relics / 2; mintFee -= uint80((uint88(2363029719748390562045450) >> settlements[_tokenId].settlementType * 9)%uint88(512)) * uint80(0.000001 ether); } ++abandoned; _relics += (uint80(1) + IDoomsdaySettlersDarkAge(DARK_AGE).getUnusedFees(_tokenId)) * DESTRUCTION_FEE + settlements[_tokenId].relics + settlements[_tokenId].supplies; _burn(_tokenId); if(_isDarkAge){ if(hashes.length - abandoned == 1){ _processWinner(_data); } } emit Abandon( _tokenId, hash, growth, settlements[_tokenId].supplyAtMint, abandoned, mintFee, _relics, uint32(hashes.length), itIsTheDawnOfANewAge, uint32(block.number) ); return _relics; } } //////===721 Standard event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); //////===721 Implementation mapping(address => uint256) public balanceOf; mapping (uint256 => address) internal allowance; mapping (address => mapping (address => bool)) public isApprovedForAll; mapping(uint256 => address) owners; // METADATA VARS string constant public name = "Doomsday: Settlers of the Wasteland"; string constant public symbol = "SETTLEMENT"; address private __metadata; function _mint(uint256 _tokenId,address _to, bytes32 _hash) private{ unchecked{ owners[_tokenId] = msg.sender; ++balanceOf[_to]; hashes.push(_hash); emit Transfer(address(0),_to,_tokenId); } } function _burn(uint256 _tokenId) private{ unchecked{ address _owner = owners[_tokenId]; --balanceOf[ _owner ]; delete owners[_tokenId]; emit Transfer(_owner,address(0),_tokenId); } } function _isValidToken(uint256 _tokenId) internal view returns(bool){ return owners[_tokenId] != address(0); } function ownerOf(uint256 _tokenId) public view returns(address){ require(_isValidToken(_tokenId),"invalid"); return owners[_tokenId]; } function approve(address _approved, uint256 _tokenId) external{ address _owner = ownerOf(_tokenId); require( _owner == msg.sender || isApprovedForAll[_owner][msg.sender] ,"permission"); emit Approval(_owner, _approved, _tokenId); allowance[_tokenId] = _approved; } function getApproved(uint256 _tokenId) external view returns (address) { require(_isValidToken(_tokenId),"invalid"); return allowance[_tokenId]; } function setApprovalForAll(address _operator, bool _approved) external { emit ApprovalForAll(msg.sender,_operator, _approved); isApprovedForAll[msg.sender][_operator] = _approved; } function transferFrom(address _from, address _to, uint256 _tokenId) public { address _owner = ownerOf(_tokenId); if(isDarkAge()){ require(!IDoomsdaySettlersDarkAge(DARK_AGE).checkVulnerable(uint32(_tokenId)),"vulnerable"); } require ( _owner == msg.sender || allowance[_tokenId] == msg.sender || isApprovedForAll[_owner][msg.sender] ,"permission"); require(_owner == _from,"owner"); require(_to != address(0),"zero"); emit Transfer(_from, _to, _tokenId); owners[_tokenId] =_to; --balanceOf[_from]; ++balanceOf[_to]; if(allowance[_tokenId] != address(0)){ delete allowance[_tokenId]; } } function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) public { transferFrom(_from, _to, _tokenId); uint32 size; assembly { size := extcodesize(_to) } if(size > 0){ IERC721TokenReceiver receiver = IERC721TokenReceiver(_to); require(receiver.onERC721Received(msg.sender,_from,_tokenId,data) == bytes4(0x150b7a02),"receiver"); } } function safeTransferFrom(address _from, address _to, uint256 _tokenId) external { safeTransferFrom(_from,_to,_tokenId,""); } function tokenURI(uint256 _tokenId) external view returns (string memory){ require(_isValidToken(_tokenId),'tokenId'); return IDoomsdaySettlersMetadata(__metadata).tokenURI( _tokenId ); } function totalSupply() external view returns (uint256){ unchecked{ return hashes.length - uint256(abandoned); } } ///==End 721 ///////===165 Implementation mapping (bytes4 => bool) public supportsInterface; ///==End 165 ////////===2981 function royaltyInfo( uint256 _tokenId, uint256 _salePrice ) external view returns ( address receiver, uint256 royaltyAmount ){ _tokenId; return (creator, creatorRoyaltiesBasisPoints * _salePrice / 10000 ); } ///==End 2981 //// ==== Admin function _onlyOwner() private view{ require(msg.sender == owner,"owner"); } function _onlyCreator() private view{ require(msg.sender == creator,"creator"); } function setOwner(address newOwner) external { _onlyOwner(); owner = newOwner; } function setMetadata(address _metadata) external { _onlyOwner(); __metadata = _metadata; } function creatorWithdraw() external { _onlyCreator(); uint256 toWithdraw = creatorEarnings; delete creatorEarnings; payable(msg.sender).transfer(toWithdraw); } function setCreator(address newCreator) external { _onlyCreator(); creator = newCreator; } function setCreatorRoyalties(uint256 _basisPoints) external{ _onlyOwner(); require(_basisPoints <= 10000,"max"); creatorRoyaltiesBasisPoints = _basisPoints; } }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.18; interface IDoomsdaySettlersDarkAge { function checkVulnerable(uint32 _tokenId) external view returns (bool); function getUnusedFees(uint32 _tokenId) external view returns (uint80); function disaster(uint32 _tokenId, uint256 _totalSupply) external returns(uint8 _type, bool destroyed); function reinforce( uint32 _tokenId, bytes32 _tokenHash, bool[4] memory _resources, bool _isDarkAge ) external returns (uint80 _cost); }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.18; interface IDoomsdaySettlersMetadata { function tokenURI(uint256 _tokenId) external view returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /// @dev Note: the ERC-165 identifier for this interface is 0x150b7a02. interface IERC721TokenReceiver { /// @notice Handle the receipt of an NFT /// @dev The ERC721 smart contract calls this function on the recipient /// after a `transfer`. This function MAY throw to revert and reject the /// transfer. Return of other than the magic value MUST result in the /// transaction being reverted. /// Note: the contract address is always the message sender. /// @param _operator The address which called `safeTransferFrom` function /// @param _from The address which previously owned the token /// @param _tokenId The NFT identifier which is being transferred /// @param _data Additional data with no specified format /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))` /// unless throwing function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) external returns(bytes4); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_darkAge","type":"address"},{"internalType":"uint256","name":"_BASE_DIFFICULTY","type":"uint256"},{"internalType":"uint256","name":"_DIFFICULTY_RAMP","type":"uint256"},{"internalType":"uint256","name":"_DIFFICULTY_COOLDOWN","type":"uint256"},{"internalType":"uint256","name":"_DIFFICULTY_COOLDOWN_SLOPE","type":"uint256"},{"internalType":"uint256","name":"_COLLAPSE_INITIAL","type":"uint256"},{"internalType":"uint256","name":"_COLLAPSE_RAMP","type":"uint256"},{"internalType":"uint256","name":"_COLLAPSE_MIN","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"_tokenId","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"_hash","type":"bytes32"},{"indexed":false,"internalType":"uint80","name":"_growth","type":"uint80"},{"indexed":false,"internalType":"uint24","name":"_supplyAtMint","type":"uint24"},{"indexed":false,"internalType":"uint32","name":"_newAbandoned","type":"uint32"},{"indexed":false,"internalType":"uint80","name":"_newMintFee","type":"uint80"},{"indexed":false,"internalType":"uint80","name":"_eth","type":"uint80"},{"indexed":false,"internalType":"uint32","name":"_settled","type":"uint32"},{"indexed":false,"internalType":"bool","name":"_itIsTheDawnOfANewAge","type":"bool"},{"indexed":false,"internalType":"uint32","name":"_blockNumber","type":"uint32"}],"name":"Abandon","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"_tokenId","type":"uint32"},{"indexed":false,"internalType":"uint8","name":"_type","type":"uint8"},{"indexed":false,"internalType":"bool","name":"_destroyed","type":"bool"},{"indexed":false,"internalType":"bool","name":"_darkAgeOver","type":"bool"}],"name":"Disaster","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint32","name":"_tokenId","type":"uint32"},{"indexed":false,"internalType":"uint8","name":"_type","type":"uint8"}],"name":"Reinforce","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"_tokenId","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"_hash","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_settler","type":"address"},{"indexed":false,"internalType":"uint24","name":"_newSupply","type":"uint24"},{"indexed":false,"internalType":"uint80","name":"_newMintFee","type":"uint80"},{"indexed":false,"internalType":"uint32","name":"_collapseBlock","type":"uint32"},{"indexed":false,"internalType":"uint8","name":"_settlementType","type":"uint8"},{"indexed":false,"internalType":"uint32","name":"_blockNumber","type":"uint32"}],"name":"Settle","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint32","name":"_tokenId","type":"uint32"},{"internalType":"uint32","name":"_data","type":"uint32"}],"name":"abandon","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"_tokenIds","type":"uint32[]"},{"internalType":"uint32","name":"_data","type":"uint32"}],"name":"abandonMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_tokenId","type":"uint32"},{"internalType":"uint32","name":"_data","type":"uint32"}],"name":"confirmDisaster","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"creator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creatorWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentState","outputs":[{"internalType":"bool","name":"_itIsTheDawnOfANewAge","type":"bool"},{"internalType":"uint32","name":"_firstSettlement","type":"uint32"},{"internalType":"uint16","name":"_age","type":"uint16"},{"internalType":"uint80","name":"_creatorEarnings","type":"uint80"},{"internalType":"uint80","name":"_relics","type":"uint80"},{"internalType":"uint80","name":"_supplies","type":"uint80"},{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_tokenId","type":"uint32"}],"name":"getGrowth","outputs":[{"internalType":"uint80","name":"","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_tokenId","type":"uint32"}],"name":"hashOf","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDarkAge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"miningState","outputs":[{"internalType":"bytes32","name":"_lastHash","type":"bytes32"},{"internalType":"uint32","name":"_settled","type":"uint32"},{"internalType":"uint32","name":"_abandoned","type":"uint32"},{"internalType":"uint32","name":"_lastSettleBlock","type":"uint32"},{"internalType":"uint32","name":"_collapseBlock","type":"uint32"},{"internalType":"uint80","name":"_mintFee","type":"uint80"},{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintFee","outputs":[{"internalType":"uint80","name":"","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_tokenId","type":"uint32"},{"internalType":"bool[4]","name":"_resources","type":"bool[4]"}],"name":"reinforce","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newCreator","type":"address"}],"name":"setCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_basisPoints","type":"uint256"}],"name":"setCreatorRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_metadata","type":"address"}],"name":"setMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"location","type":"uint256"}],"name":"settle","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint256","name":"_supplyAtMint","type":"uint256"}],"name":"settlementType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"}],"name":"settlements","outputs":[{"internalType":"uint32","name":"settleBlock","type":"uint32"},{"internalType":"uint24","name":"supplyAtMint","type":"uint24"},{"internalType":"uint16","name":"age","type":"uint16"},{"internalType":"uint8","name":"settlementType","type":"uint8"},{"internalType":"uint80","name":"relics","type":"uint80"},{"internalType":"uint80","name":"supplies","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
61018060405260016000806101000a81548161ffff021916908361ffff16021790555060405162006a7738038062006a7783398181016040528101906200004791906200079b565b86608081815250508560a081815250508460c081815250508360e081815250508261012081815250508161014081815250508061016081815250508773ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1681525050662386f26fc1000069ffffffffffffffffffff1634146200010f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200010690620008c5565b60405180910390fd5b6001600b60006380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000632a55205a60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff021916908315150217905550336000600b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600143620002ea919062000916565b4090506000620003028260006200056260201b60201c565b90506200031860013384620005cd60201b60201c565b6040518060c001604052804363ffffffff168152602001600062ffffff16815260200160008054906101000a900461ffff1661ffff1681526020018260ff168152602001600069ffffffffffffffffffff168152602001600069ffffffffffffffffffff1681525060056000600163ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548162ffffff021916908362ffffff16021790555060408201518160000160076101000a81548161ffff021916908361ffff16021790555060608201518160000160096101000a81548160ff021916908360ff160217905550608082015181600001600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060a08201518160000160146101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555090505064e8d4a51000610200600983620004ab919062000951565b6a01f4641908c320f0501e0a6affffffffffffffffffffff16901c620004d29190620009e2565b620004de919062000a30565b6002600a8282829054906101000a900469ffffffffffffffffffff1662000506919062000a76565b92506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506001600060026101000a81548163ffffffff021916908363ffffffff1602179055505050505050505050505062000abb565b60008060026103e884816200057c576200057b620009b3565b5b0401905060088111156200058f57600890505b61271060018201600260648760001c81620005af57620005ae620009b3565b5b060a0281620005c357620005c2620009b3565b5b0491505092915050565b336009600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154600101919050819055506004819080600181540180825580915050600190039060005260206000200160009091909190915055828273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200072882620006fb565b9050919050565b6200073a816200071b565b81146200074657600080fd5b50565b6000815190506200075a816200072f565b92915050565b6000819050919050565b620007758162000760565b81146200078157600080fd5b50565b60008151905062000795816200076a565b92915050565b600080600080600080600080610100898b031215620007bf57620007be620006f6565b5b6000620007cf8b828c0162000749565b9850506020620007e28b828c0162000784565b9750506040620007f58b828c0162000784565b9650506060620008088b828c0162000784565b95505060806200081b8b828c0162000784565b94505060a06200082e8b828c0162000784565b93505060c0620008418b828c0162000784565b92505060e0620008548b828c0162000784565b9150509295985092959890939650565b600082825260208201905092915050565b7f6465737472756374696f6e000000000000000000000000000000000000000000600082015250565b6000620008ad600b8362000864565b9150620008ba8262000875565b602082019050919050565b60006020820190508181036000830152620008e0816200089e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009238262000760565b9150620009308362000760565b92508282039050818111156200094b576200094a620008e7565b5b92915050565b60006200095e8262000760565b91506200096b8362000760565b92508282026200097b8162000760565b91508282048414831517620009955762000994620008e7565b5b5092915050565b60006affffffffffffffffffffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009ef826200099c565b9150620009fc836200099c565b92508262000a0f5762000a0e620009b3565b5b828206905092915050565b600069ffffffffffffffffffff82169050919050565b600062000a3d8262000a1a565b915062000a4a8362000a1a565b925082820262000a5a8162000a1a565b915080821462000a6f5762000a6e620008e7565b5b5092915050565b600062000a838262000a1a565b915062000a908362000a1a565b9250828201905069ffffffffffffffffffff81111562000ab55762000ab4620008e7565b5b92915050565b60805160a05160c05160e05161010051610120516101405161016051615ec362000bb460003960008181610d5301528181610e2c01528181611e8301528181611f3b015281816131360152613237015260008181610d9601528181610dc701528181611ec601528181611eef0152818161318201526131bc015260008181610d7401528181610df001528181611ea401528181611f120152818161315701526131ee015260008181610f20015281816124620152818161262601528181612a7a015281816137e50152613ba9015260006119dd01526000818161199201526119bb015260006118c1015260006118e30152615ec36000f3fe60806040526004361061021a5760003560e01c80636c2b836a11610123578063c1e22d4a116100ab578063e00d79ef1161006f578063e00d79ef146107d3578063e09f8bb114610810578063e985e9c51461084d578063f06d67bb1461088a578063f3cb8385146108bb5761021a565b8063c1e22d4a146106ff578063c259e1cc14610728578063c87b56dd14610751578063cfa534401461078e578063dabc6c76146107aa5761021a565b80638df82800116100f25780638df828001461063b57806395d89b4114610657578063a22cb46514610682578063b88d4fde146106ab578063bd3e19d4146106d45761021a565b80636c2b836a1461056857806370a08231146105aa57806381b0eb01146105e75780638da5cb5b146106105761021a565b806313af4035116101a65780633f516018116101755780633f5160181461049757806342842e0e146104c05780634a910046146104e95780636352211e1461051457806364ec8bdb146105515761021a565b806313af4035146103dc57806318160ddd1461040557806323b872dd146104305780632a55205a146104595761021a565b8063081812fc116101ed578063081812fc146102ef578063095ea7b31461032c5780630c3f6acf1461035557806311f6dcbd1461038657806313966db5146103b15761021a565b806301ffc9a71461021f57806302d05d3f1461025c5780630357f5aa1461028757806306fdde03146102c4575b600080fd5b34801561022b57600080fd5b5061024660048036038101906102419190614259565b6108e4565b60405161025391906142a1565b60405180910390f35b34801561026857600080fd5b50610271610904565b60405161027e91906142fd565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190614354565b61092a565b6040516102bb919061439a565b60405180910390f35b3480156102d057600080fd5b506102d96109a9565b6040516102e69190614445565b60405180910390f35b3480156102fb57600080fd5b506103166004803603810190610311919061449d565b6109c5565b60405161032391906142fd565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e91906144f6565b610a4a565b005b34801561036157600080fd5b5061036a610c08565b60405161037d9796959493929190614596565b60405180910390f35b34801561039257600080fd5b5061039b610ca7565b6040516103a891906142a1565b60405180910390f35b3480156103bd57600080fd5b506103c6610e76565b6040516103d39190614605565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe9190614620565b610e92565b005b34801561041157600080fd5b5061041a610ede565b604051610427919061464d565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190614668565b610f04565b005b34801561046557600080fd5b50610480600480360381019061047b91906146bb565b611435565b60405161048e9291906146fb565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b99190614620565b611481565b005b3480156104cc57600080fd5b506104e760048036038101906104e29190614668565b6114cd565b005b3480156104f557600080fd5b506104fe6114ed565b60405161050b919061439a565b60405180910390f35b34801561052057600080fd5b5061053b6004803603810190610536919061449d565b611524565b60405161054891906142fd565b60405180910390f35b34801561055d57600080fd5b506105666115a9565b005b34801561057457600080fd5b5061058f600480360381019061058a9190614354565b61163f565b6040516105a19695949392919061475e565b60405180910390f35b3480156105b657600080fd5b506105d160048036038101906105cc9190614620565b6116e1565b6040516105de919061464d565b60405180910390f35b3480156105f357600080fd5b5061060e6004803603810190610609919061449d565b6116f9565b005b34801561061c57600080fd5b50610625611750565b60405161063291906142fd565b60405180910390f35b6106556004803603810190610650919061449d565b611776565b005b34801561066357600080fd5b5061066c612081565b6040516106799190614445565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a491906147eb565b6120ba565b005b3480156106b757600080fd5b506106d260048036038101906106cd9190614960565b6121b7565b005b3480156106e057600080fd5b506106e96122ed565b6040516106f6919061464d565b60405180910390f35b34801561070b57600080fd5b50610726600480360381019061072191906149e3565b612374565b005b34801561073457600080fd5b5061074f600480360381019061074a91906149e3565b6123c8565b005b34801561075d57600080fd5b506107786004803603810190610773919061449d565b6128ba565b6040516107859190614445565b60405180910390f35b6107a860048036038101906107a39190614ad9565b6129ac565b005b3480156107b657600080fd5b506107d160048036038101906107cc9190614b74565b612e1d565b005b3480156107df57600080fd5b506107fa60048036038101906107f59190614c00565b612f04565b604051610807919061464d565b60405180910390f35b34801561081c57600080fd5b5061083760048036038101906108329190614354565b612f65565b6040516108449190614605565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f9190614c40565b61306d565b60405161088191906142a1565b60405180910390f35b34801561089657600080fd5b5061089f61309c565b6040516108b29796959493929190614c80565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd9190614620565b613323565b005b600b6020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061093b8263ffffffff1661336f565b61097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097190614d3b565b60405180910390fd5b60046001830363ffffffff168154811061099757610996614d5b565b5b90600052602060002001549050919050565b604051806060016040528060238152602001615e6b6023913981565b60006109d08261336f565b610a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0690614d3b565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a5582611524565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610b175750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d90614dd6565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4826007600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600080600080600080600080600a9054906101000a900460ff16600060029054906101000a900463ffffffff1660008054906101000a900461ffff16600260149054906101000a900469ffffffffffffffffffff16600260009054906101000a900469ffffffffffffffffffff16600160149054906101000a900469ffffffffffffffffffff1643965096509650965096509650965090919293949596565b600080600060069054906101000a900463ffffffff1663ffffffff1660048054905003905060006005600060048054905063ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff169050600060016005600060048054905063ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a900462ffffff160162ffffff1690507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000037f00000000000000000000000000000000000000000000000000000000000000008263ffffffff16021015610e2857600c7f00000000000000000000000000000000000000000000000000000000000000008263ffffffff16027f00000000000000000000000000000000000000000000000000000000000000000381610e1e57610e1d614df6565b5b0482019150610e5f565b600c7f000000000000000000000000000000000000000000000000000000000000000081610e5957610e58614df6565b5b04820191505b600183118015610e6e57508143115b935050505090565b6002600a9054906101000a900469ffffffffffffffffffff1681565b610e9a6133db565b806000600b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060069054906101000a900463ffffffff1663ffffffff1660048054905003905090565b6000610f0f82611524565b9050610f19610ca7565b15610ff9577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166382657a85836040518263ffffffff1660e01b8152600401610f779190614e25565b602060405180830381865afa158015610f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb89190614e55565b15610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef90614ece565b60405180910390fd5b5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061109157503373ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806111225750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115890614dd6565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690614f3a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590614fa6565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4826009600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815461133790614ff5565b91905081905550600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815461138a9061501e565b91905081905550600073ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142f576007600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b50505050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166127108460035461146c9190615066565b61147691906150a8565b915091509250929050565b61148961346d565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114e8838383604051806020016040528060008152506121b7565b505050565b60006004600160048054905061150391906150d9565b8154811061151457611513614d5b565b5b9060005260206000200154905090565b600061152f8261336f565b61156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590614d3b565b60405180910390fd5b6009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6115b161346d565b6000600260149054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff169050600260146101000a81549069ffffffffffffffffffff02191690553373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561163b573d6000803e3d6000fd5b5050565b60056020528060005260406000206000915090508060000160009054906101000a900463ffffffff16908060000160049054906101000a900462ffffff16908060000160079054906101000a900461ffff16908060000160099054906101000a900460ff169080600001600a9054906101000a900469ffffffffffffffffffff16908060000160149054906101000a900469ffffffffffffffffffff16905086565b60066020528060005260406000206000915090505481565b6117016133db565b612710811115611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d90615159565b60405180910390fd5b8060038190555050565b6000600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61177e610ca7565b156117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b5906151c5565b60405180910390fd5b69ffffffffffffffffffff8016471061180c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180390615231565b60405180910390fd5b600060016004805490500190506000600a9054906101000a900460ff16156118995760008081819054906101000a900461ffff1660010191906101000a81548161ffff021916908361ffff16021790555080600060026101000a81548163ffffffff021916908363ffffffff160217905550600080600a6101000a81548160ff0219169083151502179055505b60008060069054906101000a900463ffffffff1663ffffffff166004805490500390506000817f0000000000000000000000000000000000000000000000000000000000000000027f000000000000000000000000000000000000000000000000000000000000000003905060006005600060048054905063ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff169050804311611989576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119809061529d565b60405180910390fd5b600081430390507f0000000000000000000000000000000000000000000000000000000000000000811015611a1057807f0000000000000000000000000000000000000000000000000000000000000000037f0000000000000000000000000000000000000000000000000000000000000000028381611a0c57611a0b614df6565b5b0492505b6000662386f26fc1000069ffffffffffffffffffff166002600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1601905060006064600f69ffffffffffffffffffff16830281611a7057611a6f614df6565b5b04905080600260148282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055508069ffffffffffffffffffff1682019150600033600460016004805490500381548110611aeb57611aea614d5b565b5b90600052602060002001548a604051602001611b0993929190615347565b604051602081830303815290604052805190602001209050858160001c10611b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5d906153d0565b60405180910390fd5b82341015611ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba09061543c565b60405180910390fd5b6000611bb58289612f04565b90508144604051602001611bca92919061545c565b6040516020818303038152906040528051906020012091506040518060c001604052804363ffffffff1681526020018962ffffff16815260200160008054906101000a900461ffff1661ffff1681526020018260ff168152602001600069ffffffffffffffffffff168152602001600069ffffffffffffffffffff16815250600560008b63ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548162ffffff021916908362ffffff16021790555060408201518160000160076101000a81548161ffff021916908361ffff16021790555060608201518160000160096101000a81548160ff021916908360ff160217905550608082015181600001600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060a08201518160000160146101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550905050600280600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1681611d9557611d94614df6565b5b04600260008282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555064e8d4a510006102006affffffffffffffffffffff166009830260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff1681611e3057611e2f614df6565b5b06026002600a8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555087600101975060007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000037f00000000000000000000000000000000000000000000000000000000000000008a021015611f39577f000000000000000000000000000000000000000000000000000000000000000089027f0000000000000000000000000000000000000000000000000000000000000000039050611f5d565b7f000000000000000000000000000000000000000000000000000000000000000090505b611f6e8a63ffffffff1633856134ff565b7fbf6a0a18cb8b34e66dceac63a664d56b954595faa49f2a9c2c1f94d878fb6ce18a84338c6002600a9054906101000a900469ffffffffffffffffffff16600c8781611fbd57611fbc614df6565b5b0443018843604051611fd6989796959493929190615488565b60405180910390a16127105a11612022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201990615552565b60405180910390fd5b84341115612074573373ffffffffffffffffffffffffffffffffffffffff166108fc8634039081150290604051600060405180830381858888f19350505050158015612072573d6000803e3d6000fd5b505b5050505050505050505050565b6040518060400160405280600a81526020017f534554544c454d454e540000000000000000000000000000000000000000000081525081565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161211791906142a1565b60405180910390a380600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6121c2848484610f04565b6000833b905060008163ffffffff1611156122e657600084905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff1663150b7a02338988886040518563ffffffff1660e01b815260040161224294939291906155c7565b6020604051808303816000875af1158015612261573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122859190615628565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146122e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122db906156a1565b60405180910390fd5b505b5050505050565b600080662386f26fc1000069ffffffffffffffffffff166002600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1661233391906156c1565b905060006064600f69ffffffffffffffffffff16836123529190615066565b61235c91906150a8565b9050808261236a91906156c1565b9150819250505090565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6123988484613628565b9081150290604051600060405180830381858888f193505050501580156123c3573d6000803e3d6000fd5b505050565b6123d0610ca7565b61240f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612406906151c5565b60405180910390fd5b61241e8263ffffffff1661336f565b61245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245490614d3b565b60405180910390fd5b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a54f604585600060069054906101000a900463ffffffff1663ffffffff16600480549050036040518363ffffffff1660e01b81526004016124da9291906156f5565b60408051808303816000875af11580156124f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251c919061574a565b80925081935050506000811561281757600064e8d4a510006102006affffffffffffffffffffff166009600560008a63ffffffff1663ffffffff16815260200190815260200160002060000160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff16816125b0576125af614df6565b5b0602905060008060029054906101000a900463ffffffff1663ffffffff168763ffffffff16106125ef578663ffffffff16600480549050039050612615565b6001600060029054906101000a900463ffffffff1663ffffffff16600480549050030190505b60008282029050662386f26fc100007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633d7606d28a6040518263ffffffff1660e01b815260040161267d9190614e25565b602060405180830381865afa15801561269a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126be91906157b6565b02600560008a63ffffffff1663ffffffff16815260200190815260200160002060000160149054906101000a900469ffffffffffffffffffff16600560008b63ffffffff1663ffffffff168152602001908152602001600020600001600a9054906101000a900469ffffffffffffffffffff1660028469ffffffffffffffffffff168161274e5761274d614df6565b5b04010101600260008282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506000600681819054906101000a900463ffffffff1660010191906101000a81548163ffffffff021916908363ffffffff1602179055506127de8863ffffffff16613d63565b6001600060069054906101000a900463ffffffff1663ffffffff1660048054905003036128135761280e87613e7f565b600193505b5050505b8463ffffffff167fb42dc0fdbad9c34e94c321dcafde1913063d2654671596956fcf873387ee0d37848484604051612851939291906157e3565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff166108fc662386f26fc1000069ffffffffffffffffffff169081150290604051600060405180830381858888f193505050501580156128b2573d6000803e3d6000fd5b505050505050565b60606128c58261336f565b612904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fb90615866565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd836040518263ffffffff1660e01b815260040161295f919061464d565b600060405180830381865afa15801561297c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906129a59190615927565b9050919050565b6129bb8263ffffffff16611524565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1f906159bc565b60405180910390fd5b69ffffffffffffffffffff80164710612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d90615231565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632a56946b84612abe8661092a565b85612ac7610ca7565b6040518563ffffffff1660e01b8152600401612ae69493929190615a87565b6020604051808303816000875af1158015612b05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2991906157b6565b9050600080600090505b6004811015612baf57838160048110612b4f57612b4e614d5b565b5b602002015115612ba457662386f26fc10000820191508463ffffffff167f2f3508f35cf9b0ed68f9abba5458799a360ddf42fcd12c6f41fd4860ba71631f82604051612b9b9190615acc565b60405180910390a25b806001019050612b33565b5060008169ffffffffffffffffffff1611612bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf690615b33565b60405180910390fd5b600469ffffffffffffffffffff166002600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1681612c4057612c3f614df6565b5b04820291508181019050348169ffffffffffffffffffff161115612c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9090615b9f565b60405180910390fd5b6064600f830269ffffffffffffffffffff1681612cb957612cb8614df6565b5b04600260148282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060646055830269ffffffffffffffffffff1681612d2157612d20614df6565b5b04600160148282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506127105a11612dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da490615552565b60405180910390fd5b8069ffffffffffffffffffff16341115612e17573373ffffffffffffffffffffffffffffffffffffffff166108fc8269ffffffffffffffffffff1634039081150290604051600060405180830381858888f19350505050158015612e15573d6000803e3d6000fd5b505b50505050565b60008383905011612e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5a90615c0b565b60405180910390fd5b600080600090505b84849050811015612eb657612ea7858583818110612e8c57612e8b614d5b565b5b9050602002016020810190612ea19190614354565b84613628565b82019150806001019050612e6b565b503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612efd573d6000803e3d6000fd5b5050505050565b60008060026103e88481612f1b57612f1a614df6565b5b040190506008811115612f2d57600890505b61271060018201600260648760001c81612f4a57612f49614df6565b5b060a0281612f5b57612f5a614df6565b5b0491505092915050565b600080600060029054906101000a900463ffffffff1663ffffffff168363ffffffff1610612fab578263ffffffff16600480549050612fa491906150d9565b9050612fe3565b6001600060029054906101000a900463ffffffff1663ffffffff16600480549050612fd691906150d9565b612fe09190615c2b565b90505b64e8d4a510006102006009600560008763ffffffff1663ffffffff16815260200190815260200160002060000160099054906101000a900460ff166130289190615c69565b60ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6130509190615cbd565b8261305b9190615cee565b6130659190615cee565b915050919050565b60086020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000806000806000806000806005600060048054905063ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff169050600060016005600060048054905063ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a900462ffffff1661312d9190615d2b565b62ffffff1690507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061318091906150d9565b7f00000000000000000000000000000000000000000000000000000000000000008263ffffffff166131b29190615066565b101561323357600c7f00000000000000000000000000000000000000000000000000000000000000008263ffffffff166131ec9190615066565b7f000000000000000000000000000000000000000000000000000000000000000061321791906150d9565b61322191906150a8565b8261322c91906156c1565b915061326e565b600c7f000000000000000000000000000000000000000000000000000000000000000061326091906150a8565b8261326b91906156c1565b91505b6004600160048054905061328291906150d9565b8154811061329357613292614d5b565b5b9060005260206000200154600480549050600060069054906101000a900463ffffffff166005600060048054905063ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff16856002600a9054906101000a900469ffffffffffffffffffff16439850985098509850985098509850505090919293949596565b61332b6133db565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff166009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461346b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346290614f3a565b60405180910390fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146134fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f490615dae565b60405180910390fd5b565b336009600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154600101919050819055506004819080600181540180825580915050600190039060005260206000200160009091909190915055828273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006136398363ffffffff16611524565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146136a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369d906159bc565b60405180910390fd5b600060046001850363ffffffff16815481106136c5576136c4614d5b565b5b9060005260206000200154905060008060029054906101000a900463ffffffff1663ffffffff168563ffffffff161061370d578463ffffffff16600480549050039050613733565b6001600060029054906101000a900463ffffffff1663ffffffff16600480549050030190505b600080600a9054906101000a900460ff166137d15764e8d4a510006102006affffffffffffffffffffff166009600560008a63ffffffff1663ffffffff16815260200190815260200160002060000160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff16816137ca576137c9614df6565b5b0683020290505b60006137db610ca7565b905080156139b1577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166382657a85886040518263ffffffff1660e01b815260040161383c9190614e25565b602060405180830381865afa158015613859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061387d9190614e55565b156138bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b490614ece565b60405180910390fd5b60028269ffffffffffffffffffff16816138da576138d9614df6565b5b04915060006002600060069054906101000a900463ffffffff1663ffffffff166004805490500369ffffffffffffffffffff16600260009054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff16816139405761393f614df6565b5b0469ffffffffffffffffffff168161395b5761395a614df6565b5b049050808301925080600260008282829054906101000a900469ffffffffffffffffffff160392506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555050613af7565b6000600a9054906101000a900460ff16613af65760028269ffffffffffffffffffff16816139e2576139e1614df6565b5b04600260008282829054906101000a900469ffffffffffffffffffff160392506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555064e8d4a510006102006affffffffffffffffffffff166009600560008b63ffffffff1663ffffffff16815260200190815260200160002060000160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff1681613aac57613aab614df6565b5b06026002600a8282829054906101000a900469ffffffffffffffffffff160392506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505b5b6000600681819054906101000a900463ffffffff1660010191906101000a81548163ffffffff021916908363ffffffff160217905550600560008863ffffffff1663ffffffff16815260200190815260200160002060000160149054906101000a900469ffffffffffffffffffff16600560008963ffffffff1663ffffffff168152602001908152602001600020600001600a9054906101000a900469ffffffffffffffffffff16662386f26fc100007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633d7606d28b6040518263ffffffff1660e01b8152600401613c009190614e25565b602060405180830381865afa158015613c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c4191906157b6565b60010102010182019150613c5a8763ffffffff16613d63565b8015613c92576001600060069054906101000a900463ffffffff1663ffffffff166004805490500303613c9157613c9086613e7f565b5b5b7f043a95ff614f8dc4d9248f78dc6c860496987da7edc830f8189494f7eff4f6b0878585600560008c63ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a900462ffffff16600060069054906101000a900463ffffffff166002600a9054906101000a900469ffffffffffffffffffff16886004805490506000600a9054906101000a900460ff1643604051613d429a99989796959493929190615dce565b60405180910390a18169ffffffffffffffffffff1694505050505092915050565b60006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460019003919050819055506009600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b613e8e8163ffffffff1661336f565b613ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ec490614d3b565b60405180910390fd5b600260009054906101000a900469ffffffffffffffffffff16600560008363ffffffff1663ffffffff168152602001908152602001600020600001600a8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550600160149054906101000a900469ffffffffffffffffffff16600560008363ffffffff1663ffffffff16815260200190815260200160002060000160148282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550600064e8d4a510006102006affffffffffffffffffffff166009600560008663ffffffff1663ffffffff16815260200190815260200160002060000160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff168161405157614050614df6565b5b0602905060008060029054906101000a900463ffffffff1663ffffffff168363ffffffff161115614091578263ffffffff166004805490500390506140b7565b6001600060029054906101000a900463ffffffff1663ffffffff16600480549050030190505b6000828202905060028169ffffffffffffffffffff16816140db576140da614df6565b5b04600560008663ffffffff1663ffffffff168152602001908152602001600020600001600a8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506000600260006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506000600160146101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550826002600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060016000600a6101000a81548160ff02191690831515021790555050505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61423681614201565b811461424157600080fd5b50565b6000813590506142538161422d565b92915050565b60006020828403121561426f5761426e6141f7565b5b600061427d84828501614244565b91505092915050565b60008115159050919050565b61429b81614286565b82525050565b60006020820190506142b66000830184614292565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142e7826142bc565b9050919050565b6142f7816142dc565b82525050565b600060208201905061431260008301846142ee565b92915050565b600063ffffffff82169050919050565b61433181614318565b811461433c57600080fd5b50565b60008135905061434e81614328565b92915050565b60006020828403121561436a576143696141f7565b5b60006143788482850161433f565b91505092915050565b6000819050919050565b61439481614381565b82525050565b60006020820190506143af600083018461438b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143ef5780820151818401526020810190506143d4565b60008484015250505050565b6000601f19601f8301169050919050565b6000614417826143b5565b61442181856143c0565b93506144318185602086016143d1565b61443a816143fb565b840191505092915050565b6000602082019050818103600083015261445f818461440c565b905092915050565b6000819050919050565b61447a81614467565b811461448557600080fd5b50565b60008135905061449781614471565b92915050565b6000602082840312156144b3576144b26141f7565b5b60006144c184828501614488565b91505092915050565b6144d3816142dc565b81146144de57600080fd5b50565b6000813590506144f0816144ca565b92915050565b6000806040838503121561450d5761450c6141f7565b5b600061451b858286016144e1565b925050602061452c85828601614488565b9150509250929050565b61453f81614318565b82525050565b600061ffff82169050919050565b61455c81614545565b82525050565b600069ffffffffffffffffffff82169050919050565b61458181614562565b82525050565b61459081614467565b82525050565b600060e0820190506145ab600083018a614292565b6145b86020830189614536565b6145c56040830188614553565b6145d26060830187614578565b6145df6080830186614578565b6145ec60a0830185614578565b6145f960c0830184614587565b98975050505050505050565b600060208201905061461a6000830184614578565b92915050565b600060208284031215614636576146356141f7565b5b6000614644848285016144e1565b91505092915050565b60006020820190506146626000830184614587565b92915050565b600080600060608486031215614681576146806141f7565b5b600061468f868287016144e1565b93505060206146a0868287016144e1565b92505060406146b186828701614488565b9150509250925092565b600080604083850312156146d2576146d16141f7565b5b60006146e085828601614488565b92505060206146f185828601614488565b9150509250929050565b600060408201905061471060008301856142ee565b61471d6020830184614587565b9392505050565b600062ffffff82169050919050565b61473c81614724565b82525050565b600060ff82169050919050565b61475881614742565b82525050565b600060c0820190506147736000830189614536565b6147806020830188614733565b61478d6040830187614553565b61479a606083018661474f565b6147a76080830185614578565b6147b460a0830184614578565b979650505050505050565b6147c881614286565b81146147d357600080fd5b50565b6000813590506147e5816147bf565b92915050565b60008060408385031215614802576148016141f7565b5b6000614810858286016144e1565b9250506020614821858286016147d6565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61486d826143fb565b810181811067ffffffffffffffff8211171561488c5761488b614835565b5b80604052505050565b600061489f6141ed565b90506148ab8282614864565b919050565b600067ffffffffffffffff8211156148cb576148ca614835565b5b6148d4826143fb565b9050602081019050919050565b82818337600083830152505050565b60006149036148fe846148b0565b614895565b90508281526020810184848401111561491f5761491e614830565b5b61492a8482856148e1565b509392505050565b600082601f8301126149475761494661482b565b5b81356149578482602086016148f0565b91505092915050565b6000806000806080858703121561497a576149796141f7565b5b6000614988878288016144e1565b9450506020614999878288016144e1565b93505060406149aa87828801614488565b925050606085013567ffffffffffffffff8111156149cb576149ca6141fc565b5b6149d787828801614932565b91505092959194509250565b600080604083850312156149fa576149f96141f7565b5b6000614a088582860161433f565b9250506020614a198582860161433f565b9150509250929050565b600067ffffffffffffffff821115614a3e57614a3d614835565b5b602082029050919050565b600080fd5b6000614a61614a5c84614a23565b614895565b90508060208402830185811115614a7b57614a7a614a49565b5b835b81811015614aa45780614a9088826147d6565b845260208401935050602081019050614a7d565b5050509392505050565b600082601f830112614ac357614ac261482b565b5b6004614ad0848285614a4e565b91505092915050565b60008060a08385031215614af057614aef6141f7565b5b6000614afe8582860161433f565b9250506020614b0f85828601614aae565b9150509250929050565b600080fd5b60008083601f840112614b3457614b3361482b565b5b8235905067ffffffffffffffff811115614b5157614b50614b19565b5b602083019150836020820283011115614b6d57614b6c614a49565b5b9250929050565b600080600060408486031215614b8d57614b8c6141f7565b5b600084013567ffffffffffffffff811115614bab57614baa6141fc565b5b614bb786828701614b1e565b93509350506020614bca8682870161433f565b9150509250925092565b614bdd81614381565b8114614be857600080fd5b50565b600081359050614bfa81614bd4565b92915050565b60008060408385031215614c1757614c166141f7565b5b6000614c2585828601614beb565b9250506020614c3685828601614488565b9150509250929050565b60008060408385031215614c5757614c566141f7565b5b6000614c65858286016144e1565b9250506020614c76858286016144e1565b9150509250929050565b600060e082019050614c95600083018a61438b565b614ca26020830189614536565b614caf6040830188614536565b614cbc6060830187614536565b614cc96080830186614536565b614cd660a0830185614578565b614ce360c0830184614587565b98975050505050505050565b7f696e76616c696400000000000000000000000000000000000000000000000000600082015250565b6000614d256007836143c0565b9150614d3082614cef565b602082019050919050565b60006020820190508181036000830152614d5481614d18565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f7065726d697373696f6e00000000000000000000000000000000000000000000600082015250565b6000614dc0600a836143c0565b9150614dcb82614d8a565b602082019050919050565b60006020820190508181036000830152614def81614db3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000602082019050614e3a6000830184614536565b92915050565b600081519050614e4f816147bf565b92915050565b600060208284031215614e6b57614e6a6141f7565b5b6000614e7984828501614e40565b91505092915050565b7f76756c6e657261626c6500000000000000000000000000000000000000000000600082015250565b6000614eb8600a836143c0565b9150614ec382614e82565b602082019050919050565b60006020820190508181036000830152614ee781614eab565b9050919050565b7f6f776e6572000000000000000000000000000000000000000000000000000000600082015250565b6000614f246005836143c0565b9150614f2f82614eee565b602082019050919050565b60006020820190508181036000830152614f5381614f17565b9050919050565b7f7a65726f00000000000000000000000000000000000000000000000000000000600082015250565b6000614f906004836143c0565b9150614f9b82614f5a565b602082019050919050565b60006020820190508181036000830152614fbf81614f83565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061500082614467565b91506000820361501357615012614fc6565b5b600182039050919050565b600061502982614467565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361505b5761505a614fc6565b5b600182019050919050565b600061507182614467565b915061507c83614467565b925082820261508a81614467565b915082820484148315176150a1576150a0614fc6565b5b5092915050565b60006150b382614467565b91506150be83614467565b9250826150ce576150cd614df6565b5b828204905092915050565b60006150e482614467565b91506150ef83614467565b925082820390508181111561510757615106614fc6565b5b92915050565b7f6d61780000000000000000000000000000000000000000000000000000000000600082015250565b60006151436003836143c0565b915061514e8261510d565b602082019050919050565b6000602082019050818103600083015261517281615136565b9050919050565b7f6461726b20616765000000000000000000000000000000000000000000000000600082015250565b60006151af6008836143c0565b91506151ba82615179565b602082019050919050565b600060208201905081810360008301526151de816151a2565b9050919050565b7f62616c616e6365206f766572666c6f77206661696c7361666500000000000000600082015250565b600061521b6019836143c0565b9150615226826151e5565b602082019050919050565b6000602082019050818103600083015261524a8161520e565b9050919050565b7f6c617374536574746c65426c6f636b0000000000000000000000000000000000600082015250565b6000615287600f836143c0565b915061529282615251565b602082019050919050565b600060208201905081810360008301526152b68161527a565b9050919050565b60008160601b9050919050565b60006152d5826152bd565b9050919050565b60006152e7826152ca565b9050919050565b6152ff6152fa826142dc565b6152dc565b82525050565b6000819050919050565b61532061531b82614381565b615305565b82525050565b6000819050919050565b61534161533c82614467565b615326565b82525050565b600061535382866152ee565b601482019150615363828561530f565b6020820191506153738284615330565b602082019150819050949350505050565b7f646966666963756c747900000000000000000000000000000000000000000000600082015250565b60006153ba600a836143c0565b91506153c582615384565b602082019050919050565b600060208201905081810360008301526153e9816153ad565b9050919050565b7f636f737400000000000000000000000000000000000000000000000000000000600082015250565b60006154266004836143c0565b9150615431826153f0565b602082019050919050565b6000602082019050818103600083015261545581615419565b9050919050565b6000615468828561530f565b6020820191506154788284615330565b6020820191508190509392505050565b60006101008201905061549e600083018b614536565b6154ab602083018a61438b565b6154b860408301896142ee565b6154c56060830188614733565b6154d26080830187614578565b6154df60a0830186614536565b6154ec60c083018561474f565b6154f960e0830184614536565b9998505050505050505050565b7f676173206661696c736166650000000000000000000000000000000000000000600082015250565b600061553c600c836143c0565b915061554782615506565b602082019050919050565b6000602082019050818103600083015261556b8161552f565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061559982615572565b6155a3818561557d565b93506155b38185602086016143d1565b6155bc816143fb565b840191505092915050565b60006080820190506155dc60008301876142ee565b6155e960208301866142ee565b6155f66040830185614587565b8181036060830152615608818461558e565b905095945050505050565b6000815190506156228161422d565b92915050565b60006020828403121561563e5761563d6141f7565b5b600061564c84828501615613565b91505092915050565b7f7265636569766572000000000000000000000000000000000000000000000000600082015250565b600061568b6008836143c0565b915061569682615655565b602082019050919050565b600060208201905081810360008301526156ba8161567e565b9050919050565b60006156cc82614467565b91506156d783614467565b92508282019050808211156156ef576156ee614fc6565b5b92915050565b600060408201905061570a6000830185614536565b6157176020830184614587565b9392505050565b61572781614742565b811461573257600080fd5b50565b6000815190506157448161571e565b92915050565b60008060408385031215615761576157606141f7565b5b600061576f85828601615735565b925050602061578085828601614e40565b9150509250929050565b61579381614562565b811461579e57600080fd5b50565b6000815190506157b08161578a565b92915050565b6000602082840312156157cc576157cb6141f7565b5b60006157da848285016157a1565b91505092915050565b60006060820190506157f8600083018661474f565b6158056020830185614292565b6158126040830184614292565b949350505050565b7f746f6b656e496400000000000000000000000000000000000000000000000000600082015250565b60006158506007836143c0565b915061585b8261581a565b602082019050919050565b6000602082019050818103600083015261587f81615843565b9050919050565b600067ffffffffffffffff8211156158a1576158a0614835565b5b6158aa826143fb565b9050602081019050919050565b60006158ca6158c584615886565b614895565b9050828152602081018484840111156158e6576158e5614830565b5b6158f18482856143d1565b509392505050565b600082601f83011261590e5761590d61482b565b5b815161591e8482602086016158b7565b91505092915050565b60006020828403121561593d5761593c6141f7565b5b600082015167ffffffffffffffff81111561595b5761595a6141fc565b5b615967848285016158f9565b91505092915050565b7f6f776e65724f6600000000000000000000000000000000000000000000000000600082015250565b60006159a66007836143c0565b91506159b182615970565b602082019050919050565b600060208201905081810360008301526159d581615999565b9050919050565b600060049050919050565b600081905092915050565b6000819050919050565b615a0581614286565b82525050565b6000615a1783836159fc565b60208301905092915050565b6000602082019050919050565b615a39816159dc565b615a4381846159e7565b9250615a4e826159f2565b8060005b83811015615a7f578151615a668782615a0b565b9650615a7183615a23565b925050600181019050615a52565b505050505050565b600060e082019050615a9c6000830187614536565b615aa9602083018661438b565b615ab66040830185615a30565b615ac360c0830184614292565b95945050505050565b6000602082019050615ae1600083018461474f565b92915050565b7f656d707479000000000000000000000000000000000000000000000000000000600082015250565b6000615b1d6005836143c0565b9150615b2882615ae7565b602082019050919050565b60006020820190508181036000830152615b4c81615b10565b9050919050565b7f6d73672e76616c75650000000000000000000000000000000000000000000000600082015250565b6000615b896009836143c0565b9150615b9482615b53565b602082019050919050565b60006020820190508181036000830152615bb881615b7c565b9050919050565b7f746f6b656e496473000000000000000000000000000000000000000000000000600082015250565b6000615bf56008836143c0565b9150615c0082615bbf565b602082019050919050565b60006020820190508181036000830152615c2481615be8565b9050919050565b6000615c3682614562565b9150615c4183614562565b9250828201905069ffffffffffffffffffff811115615c6357615c62614fc6565b5b92915050565b6000615c7482614742565b9150615c7f83614742565b9250828202615c8d81614742565b9150808214615c9f57615c9e614fc6565b5b5092915050565b60006affffffffffffffffffffff82169050919050565b6000615cc882615ca6565b9150615cd383615ca6565b925082615ce357615ce2614df6565b5b828206905092915050565b6000615cf982614562565b9150615d0483614562565b9250828202615d1281614562565b9150808214615d2457615d23614fc6565b5b5092915050565b6000615d3682614724565b9150615d4183614724565b9250828201905062ffffff811115615d5c57615d5b614fc6565b5b92915050565b7f63726561746f7200000000000000000000000000000000000000000000000000600082015250565b6000615d986007836143c0565b9150615da382615d62565b602082019050919050565b60006020820190508181036000830152615dc781615d8b565b9050919050565b600061014082019050615de4600083018d614536565b615df1602083018c61438b565b615dfe604083018b614578565b615e0b606083018a614733565b615e186080830189614536565b615e2560a0830188614578565b615e3260c0830187614578565b615e3f60e0830186614536565b615e4d610100830185614292565b615e5b610120830184614536565b9b9a505050505050505050505056fe446f6f6d736461793a20536574746c657273206f66207468652057617374656c616e64a2646970667358221220d14a37ad7ae07964088701c7f24bc661e01367980b01e6ba5d583942a164216b64736f6c634300081200330000000000000000000000005f1aee31bc542b6f54c31eb71683f8c9ac22cda500000597a7e03ca484679197fbc312c8120b53a983aad3362bc462536a998a380000000000000000000000000000000000000000000000000000000000003a980000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000024
Deployed Bytecode
0x60806040526004361061021a5760003560e01c80636c2b836a11610123578063c1e22d4a116100ab578063e00d79ef1161006f578063e00d79ef146107d3578063e09f8bb114610810578063e985e9c51461084d578063f06d67bb1461088a578063f3cb8385146108bb5761021a565b8063c1e22d4a146106ff578063c259e1cc14610728578063c87b56dd14610751578063cfa534401461078e578063dabc6c76146107aa5761021a565b80638df82800116100f25780638df828001461063b57806395d89b4114610657578063a22cb46514610682578063b88d4fde146106ab578063bd3e19d4146106d45761021a565b80636c2b836a1461056857806370a08231146105aa57806381b0eb01146105e75780638da5cb5b146106105761021a565b806313af4035116101a65780633f516018116101755780633f5160181461049757806342842e0e146104c05780634a910046146104e95780636352211e1461051457806364ec8bdb146105515761021a565b806313af4035146103dc57806318160ddd1461040557806323b872dd146104305780632a55205a146104595761021a565b8063081812fc116101ed578063081812fc146102ef578063095ea7b31461032c5780630c3f6acf1461035557806311f6dcbd1461038657806313966db5146103b15761021a565b806301ffc9a71461021f57806302d05d3f1461025c5780630357f5aa1461028757806306fdde03146102c4575b600080fd5b34801561022b57600080fd5b5061024660048036038101906102419190614259565b6108e4565b60405161025391906142a1565b60405180910390f35b34801561026857600080fd5b50610271610904565b60405161027e91906142fd565b60405180910390f35b34801561029357600080fd5b506102ae60048036038101906102a99190614354565b61092a565b6040516102bb919061439a565b60405180910390f35b3480156102d057600080fd5b506102d96109a9565b6040516102e69190614445565b60405180910390f35b3480156102fb57600080fd5b506103166004803603810190610311919061449d565b6109c5565b60405161032391906142fd565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e91906144f6565b610a4a565b005b34801561036157600080fd5b5061036a610c08565b60405161037d9796959493929190614596565b60405180910390f35b34801561039257600080fd5b5061039b610ca7565b6040516103a891906142a1565b60405180910390f35b3480156103bd57600080fd5b506103c6610e76565b6040516103d39190614605565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe9190614620565b610e92565b005b34801561041157600080fd5b5061041a610ede565b604051610427919061464d565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190614668565b610f04565b005b34801561046557600080fd5b50610480600480360381019061047b91906146bb565b611435565b60405161048e9291906146fb565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b99190614620565b611481565b005b3480156104cc57600080fd5b506104e760048036038101906104e29190614668565b6114cd565b005b3480156104f557600080fd5b506104fe6114ed565b60405161050b919061439a565b60405180910390f35b34801561052057600080fd5b5061053b6004803603810190610536919061449d565b611524565b60405161054891906142fd565b60405180910390f35b34801561055d57600080fd5b506105666115a9565b005b34801561057457600080fd5b5061058f600480360381019061058a9190614354565b61163f565b6040516105a19695949392919061475e565b60405180910390f35b3480156105b657600080fd5b506105d160048036038101906105cc9190614620565b6116e1565b6040516105de919061464d565b60405180910390f35b3480156105f357600080fd5b5061060e6004803603810190610609919061449d565b6116f9565b005b34801561061c57600080fd5b50610625611750565b60405161063291906142fd565b60405180910390f35b6106556004803603810190610650919061449d565b611776565b005b34801561066357600080fd5b5061066c612081565b6040516106799190614445565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a491906147eb565b6120ba565b005b3480156106b757600080fd5b506106d260048036038101906106cd9190614960565b6121b7565b005b3480156106e057600080fd5b506106e96122ed565b6040516106f6919061464d565b60405180910390f35b34801561070b57600080fd5b50610726600480360381019061072191906149e3565b612374565b005b34801561073457600080fd5b5061074f600480360381019061074a91906149e3565b6123c8565b005b34801561075d57600080fd5b506107786004803603810190610773919061449d565b6128ba565b6040516107859190614445565b60405180910390f35b6107a860048036038101906107a39190614ad9565b6129ac565b005b3480156107b657600080fd5b506107d160048036038101906107cc9190614b74565b612e1d565b005b3480156107df57600080fd5b506107fa60048036038101906107f59190614c00565b612f04565b604051610807919061464d565b60405180910390f35b34801561081c57600080fd5b5061083760048036038101906108329190614354565b612f65565b6040516108449190614605565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f9190614c40565b61306d565b60405161088191906142a1565b60405180910390f35b34801561089657600080fd5b5061089f61309c565b6040516108b29796959493929190614c80565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd9190614620565b613323565b005b600b6020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061093b8263ffffffff1661336f565b61097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097190614d3b565b60405180910390fd5b60046001830363ffffffff168154811061099757610996614d5b565b5b90600052602060002001549050919050565b604051806060016040528060238152602001615e6b6023913981565b60006109d08261336f565b610a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0690614d3b565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a5582611524565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610b175750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d90614dd6565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4826007600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600080600080600080600080600a9054906101000a900460ff16600060029054906101000a900463ffffffff1660008054906101000a900461ffff16600260149054906101000a900469ffffffffffffffffffff16600260009054906101000a900469ffffffffffffffffffff16600160149054906101000a900469ffffffffffffffffffff1643965096509650965096509650965090919293949596565b600080600060069054906101000a900463ffffffff1663ffffffff1660048054905003905060006005600060048054905063ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff169050600060016005600060048054905063ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a900462ffffff160162ffffff1690507f00000000000000000000000000000000000000000000000000000000000000247f0000000000000000000000000000000000000000000000000000000000015180037f00000000000000000000000000000000000000000000000000000000000000088263ffffffff16021015610e2857600c7f00000000000000000000000000000000000000000000000000000000000000088263ffffffff16027f00000000000000000000000000000000000000000000000000000000000151800381610e1e57610e1d614df6565b5b0482019150610e5f565b600c7f000000000000000000000000000000000000000000000000000000000000002481610e5957610e58614df6565b5b04820191505b600183118015610e6e57508143115b935050505090565b6002600a9054906101000a900469ffffffffffffffffffff1681565b610e9a6133db565b806000600b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060069054906101000a900463ffffffff1663ffffffff1660048054905003905090565b6000610f0f82611524565b9050610f19610ca7565b15610ff9577f0000000000000000000000005f1aee31bc542b6f54c31eb71683f8c9ac22cda573ffffffffffffffffffffffffffffffffffffffff166382657a85836040518263ffffffff1660e01b8152600401610f779190614e25565b602060405180830381865afa158015610f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb89190614e55565b15610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef90614ece565b60405180910390fd5b5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061109157503373ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806111225750600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115890614dd6565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690614f3a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590614fa6565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4826009600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815461133790614ff5565b91905081905550600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815461138a9061501e565b91905081905550600073ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142f576007600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b50505050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166127108460035461146c9190615066565b61147691906150a8565b915091509250929050565b61148961346d565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114e8838383604051806020016040528060008152506121b7565b505050565b60006004600160048054905061150391906150d9565b8154811061151457611513614d5b565b5b9060005260206000200154905090565b600061152f8261336f565b61156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590614d3b565b60405180910390fd5b6009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6115b161346d565b6000600260149054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff169050600260146101000a81549069ffffffffffffffffffff02191690553373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561163b573d6000803e3d6000fd5b5050565b60056020528060005260406000206000915090508060000160009054906101000a900463ffffffff16908060000160049054906101000a900462ffffff16908060000160079054906101000a900461ffff16908060000160099054906101000a900460ff169080600001600a9054906101000a900469ffffffffffffffffffff16908060000160149054906101000a900469ffffffffffffffffffff16905086565b60066020528060005260406000206000915090505481565b6117016133db565b612710811115611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d90615159565b60405180910390fd5b8060038190555050565b6000600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61177e610ca7565b156117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b5906151c5565b60405180910390fd5b69ffffffffffffffffffff8016471061180c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180390615231565b60405180910390fd5b600060016004805490500190506000600a9054906101000a900460ff16156118995760008081819054906101000a900461ffff1660010191906101000a81548161ffff021916908361ffff16021790555080600060026101000a81548163ffffffff021916908363ffffffff160217905550600080600a6101000a81548160ff0219169083151502179055505b60008060069054906101000a900463ffffffff1663ffffffff166004805490500390506000817f0000000000000000000000000000000000000000000000000000000000003a98027f00000597a7e03ca484679197fbc312c8120b53a983aad3362bc462536a998a3803905060006005600060048054905063ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff169050804311611989576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119809061529d565b60405180910390fd5b600081430390507f0000000000000000000000000000000000000000000000000000000000000019811015611a1057807f0000000000000000000000000000000000000000000000000000000000000019037f000000000000000000000000000000000000000000000000000000000000000f028381611a0c57611a0b614df6565b5b0492505b6000662386f26fc1000069ffffffffffffffffffff166002600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1601905060006064600f69ffffffffffffffffffff16830281611a7057611a6f614df6565b5b04905080600260148282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055508069ffffffffffffffffffff1682019150600033600460016004805490500381548110611aeb57611aea614d5b565b5b90600052602060002001548a604051602001611b0993929190615347565b604051602081830303815290604052805190602001209050858160001c10611b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5d906153d0565b60405180910390fd5b82341015611ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba09061543c565b60405180910390fd5b6000611bb58289612f04565b90508144604051602001611bca92919061545c565b6040516020818303038152906040528051906020012091506040518060c001604052804363ffffffff1681526020018962ffffff16815260200160008054906101000a900461ffff1661ffff1681526020018260ff168152602001600069ffffffffffffffffffff168152602001600069ffffffffffffffffffff16815250600560008b63ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548162ffffff021916908362ffffff16021790555060408201518160000160076101000a81548161ffff021916908361ffff16021790555060608201518160000160096101000a81548160ff021916908360ff160217905550608082015181600001600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060a08201518160000160146101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550905050600280600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1681611d9557611d94614df6565b5b04600260008282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555064e8d4a510006102006affffffffffffffffffffff166009830260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff1681611e3057611e2f614df6565b5b06026002600a8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555087600101975060007f00000000000000000000000000000000000000000000000000000000000000247f0000000000000000000000000000000000000000000000000000000000015180037f00000000000000000000000000000000000000000000000000000000000000088a021015611f39577f000000000000000000000000000000000000000000000000000000000000000889027f0000000000000000000000000000000000000000000000000000000000015180039050611f5d565b7f000000000000000000000000000000000000000000000000000000000000002490505b611f6e8a63ffffffff1633856134ff565b7fbf6a0a18cb8b34e66dceac63a664d56b954595faa49f2a9c2c1f94d878fb6ce18a84338c6002600a9054906101000a900469ffffffffffffffffffff16600c8781611fbd57611fbc614df6565b5b0443018843604051611fd6989796959493929190615488565b60405180910390a16127105a11612022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201990615552565b60405180910390fd5b84341115612074573373ffffffffffffffffffffffffffffffffffffffff166108fc8634039081150290604051600060405180830381858888f19350505050158015612072573d6000803e3d6000fd5b505b5050505050505050505050565b6040518060400160405280600a81526020017f534554544c454d454e540000000000000000000000000000000000000000000081525081565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161211791906142a1565b60405180910390a380600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6121c2848484610f04565b6000833b905060008163ffffffff1611156122e657600084905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff1663150b7a02338988886040518563ffffffff1660e01b815260040161224294939291906155c7565b6020604051808303816000875af1158015612261573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122859190615628565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146122e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122db906156a1565b60405180910390fd5b505b5050505050565b600080662386f26fc1000069ffffffffffffffffffff166002600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1661233391906156c1565b905060006064600f69ffffffffffffffffffff16836123529190615066565b61235c91906150a8565b9050808261236a91906156c1565b9150819250505090565b3373ffffffffffffffffffffffffffffffffffffffff166108fc6123988484613628565b9081150290604051600060405180830381858888f193505050501580156123c3573d6000803e3d6000fd5b505050565b6123d0610ca7565b61240f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612406906151c5565b60405180910390fd5b61241e8263ffffffff1661336f565b61245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245490614d3b565b60405180910390fd5b6000807f0000000000000000000000005f1aee31bc542b6f54c31eb71683f8c9ac22cda573ffffffffffffffffffffffffffffffffffffffff1663a54f604585600060069054906101000a900463ffffffff1663ffffffff16600480549050036040518363ffffffff1660e01b81526004016124da9291906156f5565b60408051808303816000875af11580156124f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251c919061574a565b80925081935050506000811561281757600064e8d4a510006102006affffffffffffffffffffff166009600560008a63ffffffff1663ffffffff16815260200190815260200160002060000160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff16816125b0576125af614df6565b5b0602905060008060029054906101000a900463ffffffff1663ffffffff168763ffffffff16106125ef578663ffffffff16600480549050039050612615565b6001600060029054906101000a900463ffffffff1663ffffffff16600480549050030190505b60008282029050662386f26fc100007f0000000000000000000000005f1aee31bc542b6f54c31eb71683f8c9ac22cda573ffffffffffffffffffffffffffffffffffffffff16633d7606d28a6040518263ffffffff1660e01b815260040161267d9190614e25565b602060405180830381865afa15801561269a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126be91906157b6565b02600560008a63ffffffff1663ffffffff16815260200190815260200160002060000160149054906101000a900469ffffffffffffffffffff16600560008b63ffffffff1663ffffffff168152602001908152602001600020600001600a9054906101000a900469ffffffffffffffffffff1660028469ffffffffffffffffffff168161274e5761274d614df6565b5b04010101600260008282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506000600681819054906101000a900463ffffffff1660010191906101000a81548163ffffffff021916908363ffffffff1602179055506127de8863ffffffff16613d63565b6001600060069054906101000a900463ffffffff1663ffffffff1660048054905003036128135761280e87613e7f565b600193505b5050505b8463ffffffff167fb42dc0fdbad9c34e94c321dcafde1913063d2654671596956fcf873387ee0d37848484604051612851939291906157e3565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff166108fc662386f26fc1000069ffffffffffffffffffff169081150290604051600060405180830381858888f193505050501580156128b2573d6000803e3d6000fd5b505050505050565b60606128c58261336f565b612904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fb90615866565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd836040518263ffffffff1660e01b815260040161295f919061464d565b600060405180830381865afa15801561297c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906129a59190615927565b9050919050565b6129bb8263ffffffff16611524565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1f906159bc565b60405180910390fd5b69ffffffffffffffffffff80164710612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d90615231565b60405180910390fd5b60007f0000000000000000000000005f1aee31bc542b6f54c31eb71683f8c9ac22cda573ffffffffffffffffffffffffffffffffffffffff16632a56946b84612abe8661092a565b85612ac7610ca7565b6040518563ffffffff1660e01b8152600401612ae69493929190615a87565b6020604051808303816000875af1158015612b05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2991906157b6565b9050600080600090505b6004811015612baf57838160048110612b4f57612b4e614d5b565b5b602002015115612ba457662386f26fc10000820191508463ffffffff167f2f3508f35cf9b0ed68f9abba5458799a360ddf42fcd12c6f41fd4860ba71631f82604051612b9b9190615acc565b60405180910390a25b806001019050612b33565b5060008169ffffffffffffffffffff1611612bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf690615b33565b60405180910390fd5b600469ffffffffffffffffffff166002600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1681612c4057612c3f614df6565b5b04820291508181019050348169ffffffffffffffffffff161115612c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9090615b9f565b60405180910390fd5b6064600f830269ffffffffffffffffffff1681612cb957612cb8614df6565b5b04600260148282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060646055830269ffffffffffffffffffff1681612d2157612d20614df6565b5b04600160148282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506127105a11612dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da490615552565b60405180910390fd5b8069ffffffffffffffffffff16341115612e17573373ffffffffffffffffffffffffffffffffffffffff166108fc8269ffffffffffffffffffff1634039081150290604051600060405180830381858888f19350505050158015612e15573d6000803e3d6000fd5b505b50505050565b60008383905011612e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5a90615c0b565b60405180910390fd5b600080600090505b84849050811015612eb657612ea7858583818110612e8c57612e8b614d5b565b5b9050602002016020810190612ea19190614354565b84613628565b82019150806001019050612e6b565b503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612efd573d6000803e3d6000fd5b5050505050565b60008060026103e88481612f1b57612f1a614df6565b5b040190506008811115612f2d57600890505b61271060018201600260648760001c81612f4a57612f49614df6565b5b060a0281612f5b57612f5a614df6565b5b0491505092915050565b600080600060029054906101000a900463ffffffff1663ffffffff168363ffffffff1610612fab578263ffffffff16600480549050612fa491906150d9565b9050612fe3565b6001600060029054906101000a900463ffffffff1663ffffffff16600480549050612fd691906150d9565b612fe09190615c2b565b90505b64e8d4a510006102006009600560008763ffffffff1663ffffffff16815260200190815260200160002060000160099054906101000a900460ff166130289190615c69565b60ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6130509190615cbd565b8261305b9190615cee565b6130659190615cee565b915050919050565b60086020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000806000806000806000806005600060048054905063ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff169050600060016005600060048054905063ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a900462ffffff1661312d9190615d2b565b62ffffff1690507f00000000000000000000000000000000000000000000000000000000000000247f000000000000000000000000000000000000000000000000000000000001518061318091906150d9565b7f00000000000000000000000000000000000000000000000000000000000000088263ffffffff166131b29190615066565b101561323357600c7f00000000000000000000000000000000000000000000000000000000000000088263ffffffff166131ec9190615066565b7f000000000000000000000000000000000000000000000000000000000001518061321791906150d9565b61322191906150a8565b8261322c91906156c1565b915061326e565b600c7f000000000000000000000000000000000000000000000000000000000000002461326091906150a8565b8261326b91906156c1565b91505b6004600160048054905061328291906150d9565b8154811061329357613292614d5b565b5b9060005260206000200154600480549050600060069054906101000a900463ffffffff166005600060048054905063ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff16856002600a9054906101000a900469ffffffffffffffffffff16439850985098509850985098509850505090919293949596565b61332b6133db565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff166009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000600b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461346b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346290614f3a565b60405180910390fd5b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146134fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f490615dae565b60405180910390fd5b565b336009600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154600101919050819055506004819080600181540180825580915050600190039060005260206000200160009091909190915055828273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006136398363ffffffff16611524565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146136a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369d906159bc565b60405180910390fd5b600060046001850363ffffffff16815481106136c5576136c4614d5b565b5b9060005260206000200154905060008060029054906101000a900463ffffffff1663ffffffff168563ffffffff161061370d578463ffffffff16600480549050039050613733565b6001600060029054906101000a900463ffffffff1663ffffffff16600480549050030190505b600080600a9054906101000a900460ff166137d15764e8d4a510006102006affffffffffffffffffffff166009600560008a63ffffffff1663ffffffff16815260200190815260200160002060000160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff16816137ca576137c9614df6565b5b0683020290505b60006137db610ca7565b905080156139b1577f0000000000000000000000005f1aee31bc542b6f54c31eb71683f8c9ac22cda573ffffffffffffffffffffffffffffffffffffffff166382657a85886040518263ffffffff1660e01b815260040161383c9190614e25565b602060405180830381865afa158015613859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061387d9190614e55565b156138bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b490614ece565b60405180910390fd5b60028269ffffffffffffffffffff16816138da576138d9614df6565b5b04915060006002600060069054906101000a900463ffffffff1663ffffffff166004805490500369ffffffffffffffffffff16600260009054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff16816139405761393f614df6565b5b0469ffffffffffffffffffff168161395b5761395a614df6565b5b049050808301925080600260008282829054906101000a900469ffffffffffffffffffff160392506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555050613af7565b6000600a9054906101000a900460ff16613af65760028269ffffffffffffffffffff16816139e2576139e1614df6565b5b04600260008282829054906101000a900469ffffffffffffffffffff160392506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555064e8d4a510006102006affffffffffffffffffffff166009600560008b63ffffffff1663ffffffff16815260200190815260200160002060000160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff1681613aac57613aab614df6565b5b06026002600a8282829054906101000a900469ffffffffffffffffffff160392506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055505b5b6000600681819054906101000a900463ffffffff1660010191906101000a81548163ffffffff021916908363ffffffff160217905550600560008863ffffffff1663ffffffff16815260200190815260200160002060000160149054906101000a900469ffffffffffffffffffff16600560008963ffffffff1663ffffffff168152602001908152602001600020600001600a9054906101000a900469ffffffffffffffffffff16662386f26fc100007f0000000000000000000000005f1aee31bc542b6f54c31eb71683f8c9ac22cda573ffffffffffffffffffffffffffffffffffffffff16633d7606d28b6040518263ffffffff1660e01b8152600401613c009190614e25565b602060405180830381865afa158015613c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c4191906157b6565b60010102010182019150613c5a8763ffffffff16613d63565b8015613c92576001600060069054906101000a900463ffffffff1663ffffffff166004805490500303613c9157613c9086613e7f565b5b5b7f043a95ff614f8dc4d9248f78dc6c860496987da7edc830f8189494f7eff4f6b0878585600560008c63ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a900462ffffff16600060069054906101000a900463ffffffff166002600a9054906101000a900469ffffffffffffffffffff16886004805490506000600a9054906101000a900460ff1643604051613d429a99989796959493929190615dce565b60405180910390a18169ffffffffffffffffffff1694505050505092915050565b60006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460019003919050819055506009600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b613e8e8163ffffffff1661336f565b613ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ec490614d3b565b60405180910390fd5b600260009054906101000a900469ffffffffffffffffffff16600560008363ffffffff1663ffffffff168152602001908152602001600020600001600a8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550600160149054906101000a900469ffffffffffffffffffff16600560008363ffffffff1663ffffffff16815260200190815260200160002060000160148282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550600064e8d4a510006102006affffffffffffffffffffff166009600560008663ffffffff1663ffffffff16815260200190815260200160002060000160099054906101000a900460ff160260ff166a01f4641908c320f0501e0a6affffffffffffffffffffff16901c6affffffffffffffffffffff168161405157614050614df6565b5b0602905060008060029054906101000a900463ffffffff1663ffffffff168363ffffffff161115614091578263ffffffff166004805490500390506140b7565b6001600060029054906101000a900463ffffffff1663ffffffff16600480549050030190505b6000828202905060028169ffffffffffffffffffff16816140db576140da614df6565b5b04600560008663ffffffff1663ffffffff168152602001908152602001600020600001600a8282829054906101000a900469ffffffffffffffffffff160192506101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506000600260006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff1602179055506000600160146101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550826002600a6101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555060016000600a6101000a81548160ff02191690831515021790555050505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61423681614201565b811461424157600080fd5b50565b6000813590506142538161422d565b92915050565b60006020828403121561426f5761426e6141f7565b5b600061427d84828501614244565b91505092915050565b60008115159050919050565b61429b81614286565b82525050565b60006020820190506142b66000830184614292565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142e7826142bc565b9050919050565b6142f7816142dc565b82525050565b600060208201905061431260008301846142ee565b92915050565b600063ffffffff82169050919050565b61433181614318565b811461433c57600080fd5b50565b60008135905061434e81614328565b92915050565b60006020828403121561436a576143696141f7565b5b60006143788482850161433f565b91505092915050565b6000819050919050565b61439481614381565b82525050565b60006020820190506143af600083018461438b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143ef5780820151818401526020810190506143d4565b60008484015250505050565b6000601f19601f8301169050919050565b6000614417826143b5565b61442181856143c0565b93506144318185602086016143d1565b61443a816143fb565b840191505092915050565b6000602082019050818103600083015261445f818461440c565b905092915050565b6000819050919050565b61447a81614467565b811461448557600080fd5b50565b60008135905061449781614471565b92915050565b6000602082840312156144b3576144b26141f7565b5b60006144c184828501614488565b91505092915050565b6144d3816142dc565b81146144de57600080fd5b50565b6000813590506144f0816144ca565b92915050565b6000806040838503121561450d5761450c6141f7565b5b600061451b858286016144e1565b925050602061452c85828601614488565b9150509250929050565b61453f81614318565b82525050565b600061ffff82169050919050565b61455c81614545565b82525050565b600069ffffffffffffffffffff82169050919050565b61458181614562565b82525050565b61459081614467565b82525050565b600060e0820190506145ab600083018a614292565b6145b86020830189614536565b6145c56040830188614553565b6145d26060830187614578565b6145df6080830186614578565b6145ec60a0830185614578565b6145f960c0830184614587565b98975050505050505050565b600060208201905061461a6000830184614578565b92915050565b600060208284031215614636576146356141f7565b5b6000614644848285016144e1565b91505092915050565b60006020820190506146626000830184614587565b92915050565b600080600060608486031215614681576146806141f7565b5b600061468f868287016144e1565b93505060206146a0868287016144e1565b92505060406146b186828701614488565b9150509250925092565b600080604083850312156146d2576146d16141f7565b5b60006146e085828601614488565b92505060206146f185828601614488565b9150509250929050565b600060408201905061471060008301856142ee565b61471d6020830184614587565b9392505050565b600062ffffff82169050919050565b61473c81614724565b82525050565b600060ff82169050919050565b61475881614742565b82525050565b600060c0820190506147736000830189614536565b6147806020830188614733565b61478d6040830187614553565b61479a606083018661474f565b6147a76080830185614578565b6147b460a0830184614578565b979650505050505050565b6147c881614286565b81146147d357600080fd5b50565b6000813590506147e5816147bf565b92915050565b60008060408385031215614802576148016141f7565b5b6000614810858286016144e1565b9250506020614821858286016147d6565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61486d826143fb565b810181811067ffffffffffffffff8211171561488c5761488b614835565b5b80604052505050565b600061489f6141ed565b90506148ab8282614864565b919050565b600067ffffffffffffffff8211156148cb576148ca614835565b5b6148d4826143fb565b9050602081019050919050565b82818337600083830152505050565b60006149036148fe846148b0565b614895565b90508281526020810184848401111561491f5761491e614830565b5b61492a8482856148e1565b509392505050565b600082601f8301126149475761494661482b565b5b81356149578482602086016148f0565b91505092915050565b6000806000806080858703121561497a576149796141f7565b5b6000614988878288016144e1565b9450506020614999878288016144e1565b93505060406149aa87828801614488565b925050606085013567ffffffffffffffff8111156149cb576149ca6141fc565b5b6149d787828801614932565b91505092959194509250565b600080604083850312156149fa576149f96141f7565b5b6000614a088582860161433f565b9250506020614a198582860161433f565b9150509250929050565b600067ffffffffffffffff821115614a3e57614a3d614835565b5b602082029050919050565b600080fd5b6000614a61614a5c84614a23565b614895565b90508060208402830185811115614a7b57614a7a614a49565b5b835b81811015614aa45780614a9088826147d6565b845260208401935050602081019050614a7d565b5050509392505050565b600082601f830112614ac357614ac261482b565b5b6004614ad0848285614a4e565b91505092915050565b60008060a08385031215614af057614aef6141f7565b5b6000614afe8582860161433f565b9250506020614b0f85828601614aae565b9150509250929050565b600080fd5b60008083601f840112614b3457614b3361482b565b5b8235905067ffffffffffffffff811115614b5157614b50614b19565b5b602083019150836020820283011115614b6d57614b6c614a49565b5b9250929050565b600080600060408486031215614b8d57614b8c6141f7565b5b600084013567ffffffffffffffff811115614bab57614baa6141fc565b5b614bb786828701614b1e565b93509350506020614bca8682870161433f565b9150509250925092565b614bdd81614381565b8114614be857600080fd5b50565b600081359050614bfa81614bd4565b92915050565b60008060408385031215614c1757614c166141f7565b5b6000614c2585828601614beb565b9250506020614c3685828601614488565b9150509250929050565b60008060408385031215614c5757614c566141f7565b5b6000614c65858286016144e1565b9250506020614c76858286016144e1565b9150509250929050565b600060e082019050614c95600083018a61438b565b614ca26020830189614536565b614caf6040830188614536565b614cbc6060830187614536565b614cc96080830186614536565b614cd660a0830185614578565b614ce360c0830184614587565b98975050505050505050565b7f696e76616c696400000000000000000000000000000000000000000000000000600082015250565b6000614d256007836143c0565b9150614d3082614cef565b602082019050919050565b60006020820190508181036000830152614d5481614d18565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f7065726d697373696f6e00000000000000000000000000000000000000000000600082015250565b6000614dc0600a836143c0565b9150614dcb82614d8a565b602082019050919050565b60006020820190508181036000830152614def81614db3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000602082019050614e3a6000830184614536565b92915050565b600081519050614e4f816147bf565b92915050565b600060208284031215614e6b57614e6a6141f7565b5b6000614e7984828501614e40565b91505092915050565b7f76756c6e657261626c6500000000000000000000000000000000000000000000600082015250565b6000614eb8600a836143c0565b9150614ec382614e82565b602082019050919050565b60006020820190508181036000830152614ee781614eab565b9050919050565b7f6f776e6572000000000000000000000000000000000000000000000000000000600082015250565b6000614f246005836143c0565b9150614f2f82614eee565b602082019050919050565b60006020820190508181036000830152614f5381614f17565b9050919050565b7f7a65726f00000000000000000000000000000000000000000000000000000000600082015250565b6000614f906004836143c0565b9150614f9b82614f5a565b602082019050919050565b60006020820190508181036000830152614fbf81614f83565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061500082614467565b91506000820361501357615012614fc6565b5b600182039050919050565b600061502982614467565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361505b5761505a614fc6565b5b600182019050919050565b600061507182614467565b915061507c83614467565b925082820261508a81614467565b915082820484148315176150a1576150a0614fc6565b5b5092915050565b60006150b382614467565b91506150be83614467565b9250826150ce576150cd614df6565b5b828204905092915050565b60006150e482614467565b91506150ef83614467565b925082820390508181111561510757615106614fc6565b5b92915050565b7f6d61780000000000000000000000000000000000000000000000000000000000600082015250565b60006151436003836143c0565b915061514e8261510d565b602082019050919050565b6000602082019050818103600083015261517281615136565b9050919050565b7f6461726b20616765000000000000000000000000000000000000000000000000600082015250565b60006151af6008836143c0565b91506151ba82615179565b602082019050919050565b600060208201905081810360008301526151de816151a2565b9050919050565b7f62616c616e6365206f766572666c6f77206661696c7361666500000000000000600082015250565b600061521b6019836143c0565b9150615226826151e5565b602082019050919050565b6000602082019050818103600083015261524a8161520e565b9050919050565b7f6c617374536574746c65426c6f636b0000000000000000000000000000000000600082015250565b6000615287600f836143c0565b915061529282615251565b602082019050919050565b600060208201905081810360008301526152b68161527a565b9050919050565b60008160601b9050919050565b60006152d5826152bd565b9050919050565b60006152e7826152ca565b9050919050565b6152ff6152fa826142dc565b6152dc565b82525050565b6000819050919050565b61532061531b82614381565b615305565b82525050565b6000819050919050565b61534161533c82614467565b615326565b82525050565b600061535382866152ee565b601482019150615363828561530f565b6020820191506153738284615330565b602082019150819050949350505050565b7f646966666963756c747900000000000000000000000000000000000000000000600082015250565b60006153ba600a836143c0565b91506153c582615384565b602082019050919050565b600060208201905081810360008301526153e9816153ad565b9050919050565b7f636f737400000000000000000000000000000000000000000000000000000000600082015250565b60006154266004836143c0565b9150615431826153f0565b602082019050919050565b6000602082019050818103600083015261545581615419565b9050919050565b6000615468828561530f565b6020820191506154788284615330565b6020820191508190509392505050565b60006101008201905061549e600083018b614536565b6154ab602083018a61438b565b6154b860408301896142ee565b6154c56060830188614733565b6154d26080830187614578565b6154df60a0830186614536565b6154ec60c083018561474f565b6154f960e0830184614536565b9998505050505050505050565b7f676173206661696c736166650000000000000000000000000000000000000000600082015250565b600061553c600c836143c0565b915061554782615506565b602082019050919050565b6000602082019050818103600083015261556b8161552f565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061559982615572565b6155a3818561557d565b93506155b38185602086016143d1565b6155bc816143fb565b840191505092915050565b60006080820190506155dc60008301876142ee565b6155e960208301866142ee565b6155f66040830185614587565b8181036060830152615608818461558e565b905095945050505050565b6000815190506156228161422d565b92915050565b60006020828403121561563e5761563d6141f7565b5b600061564c84828501615613565b91505092915050565b7f7265636569766572000000000000000000000000000000000000000000000000600082015250565b600061568b6008836143c0565b915061569682615655565b602082019050919050565b600060208201905081810360008301526156ba8161567e565b9050919050565b60006156cc82614467565b91506156d783614467565b92508282019050808211156156ef576156ee614fc6565b5b92915050565b600060408201905061570a6000830185614536565b6157176020830184614587565b9392505050565b61572781614742565b811461573257600080fd5b50565b6000815190506157448161571e565b92915050565b60008060408385031215615761576157606141f7565b5b600061576f85828601615735565b925050602061578085828601614e40565b9150509250929050565b61579381614562565b811461579e57600080fd5b50565b6000815190506157b08161578a565b92915050565b6000602082840312156157cc576157cb6141f7565b5b60006157da848285016157a1565b91505092915050565b60006060820190506157f8600083018661474f565b6158056020830185614292565b6158126040830184614292565b949350505050565b7f746f6b656e496400000000000000000000000000000000000000000000000000600082015250565b60006158506007836143c0565b915061585b8261581a565b602082019050919050565b6000602082019050818103600083015261587f81615843565b9050919050565b600067ffffffffffffffff8211156158a1576158a0614835565b5b6158aa826143fb565b9050602081019050919050565b60006158ca6158c584615886565b614895565b9050828152602081018484840111156158e6576158e5614830565b5b6158f18482856143d1565b509392505050565b600082601f83011261590e5761590d61482b565b5b815161591e8482602086016158b7565b91505092915050565b60006020828403121561593d5761593c6141f7565b5b600082015167ffffffffffffffff81111561595b5761595a6141fc565b5b615967848285016158f9565b91505092915050565b7f6f776e65724f6600000000000000000000000000000000000000000000000000600082015250565b60006159a66007836143c0565b91506159b182615970565b602082019050919050565b600060208201905081810360008301526159d581615999565b9050919050565b600060049050919050565b600081905092915050565b6000819050919050565b615a0581614286565b82525050565b6000615a1783836159fc565b60208301905092915050565b6000602082019050919050565b615a39816159dc565b615a4381846159e7565b9250615a4e826159f2565b8060005b83811015615a7f578151615a668782615a0b565b9650615a7183615a23565b925050600181019050615a52565b505050505050565b600060e082019050615a9c6000830187614536565b615aa9602083018661438b565b615ab66040830185615a30565b615ac360c0830184614292565b95945050505050565b6000602082019050615ae1600083018461474f565b92915050565b7f656d707479000000000000000000000000000000000000000000000000000000600082015250565b6000615b1d6005836143c0565b9150615b2882615ae7565b602082019050919050565b60006020820190508181036000830152615b4c81615b10565b9050919050565b7f6d73672e76616c75650000000000000000000000000000000000000000000000600082015250565b6000615b896009836143c0565b9150615b9482615b53565b602082019050919050565b60006020820190508181036000830152615bb881615b7c565b9050919050565b7f746f6b656e496473000000000000000000000000000000000000000000000000600082015250565b6000615bf56008836143c0565b9150615c0082615bbf565b602082019050919050565b60006020820190508181036000830152615c2481615be8565b9050919050565b6000615c3682614562565b9150615c4183614562565b9250828201905069ffffffffffffffffffff811115615c6357615c62614fc6565b5b92915050565b6000615c7482614742565b9150615c7f83614742565b9250828202615c8d81614742565b9150808214615c9f57615c9e614fc6565b5b5092915050565b60006affffffffffffffffffffff82169050919050565b6000615cc882615ca6565b9150615cd383615ca6565b925082615ce357615ce2614df6565b5b828206905092915050565b6000615cf982614562565b9150615d0483614562565b9250828202615d1281614562565b9150808214615d2457615d23614fc6565b5b5092915050565b6000615d3682614724565b9150615d4183614724565b9250828201905062ffffff811115615d5c57615d5b614fc6565b5b92915050565b7f63726561746f7200000000000000000000000000000000000000000000000000600082015250565b6000615d986007836143c0565b9150615da382615d62565b602082019050919050565b60006020820190508181036000830152615dc781615d8b565b9050919050565b600061014082019050615de4600083018d614536565b615df1602083018c61438b565b615dfe604083018b614578565b615e0b606083018a614733565b615e186080830189614536565b615e2560a0830188614578565b615e3260c0830187614578565b615e3f60e0830186614536565b615e4d610100830185614292565b615e5b610120830184614536565b9b9a505050505050505050505056fe446f6f6d736461793a20536574746c657273206f66207468652057617374656c616e64a2646970667358221220d14a37ad7ae07964088701c7f24bc661e01367980b01e6ba5d583942a164216b64736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005f1aee31bc542b6f54c31eb71683f8c9ac22cda500000597a7e03ca484679197fbc312c8120b53a983aad3362bc462536a998a380000000000000000000000000000000000000000000000000000000000003a980000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000024
-----Decoded View---------------
Arg [0] : _darkAge (address): 0x5F1AEe31BC542b6f54C31EB71683F8C9ac22CDa5
Arg [1] : _BASE_DIFFICULTY (uint256): 38597363079105398474523661669562635951089994888546854679819194669304376
Arg [2] : _DIFFICULTY_RAMP (uint256): 15000
Arg [3] : _DIFFICULTY_COOLDOWN (uint256): 25
Arg [4] : _DIFFICULTY_COOLDOWN_SLOPE (uint256): 15
Arg [5] : _COLLAPSE_INITIAL (uint256): 86400
Arg [6] : _COLLAPSE_RAMP (uint256): 8
Arg [7] : _COLLAPSE_MIN (uint256): 36
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000005f1aee31bc542b6f54c31eb71683f8c9ac22cda5
Arg [1] : 00000597a7e03ca484679197fbc312c8120b53a983aad3362bc462536a998a38
Arg [2] : 0000000000000000000000000000000000000000000000000000000000003a98
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [5] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000024
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.