More Info
Private Name Tags
ContractCreator
Multichain Info
No addresses found
Latest 25 from a total of 9,395 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transform | 16032310 | 874 days ago | IN | 0 ETH | 0.00692346 | ||||
Transform | 15842045 | 900 days ago | IN | 0 ETH | 0.00801873 | ||||
Transform | 15841923 | 900 days ago | IN | 0 ETH | 0.009762 | ||||
Transform | 15788047 | 908 days ago | IN | 0 ETH | 0.01076591 | ||||
Hatch Egg | 15736050 | 915 days ago | IN | 0 ETH | 0.00573448 | ||||
Lay Egg | 15694165 | 921 days ago | IN | 0 ETH | 0.00087885 | ||||
Hatch Egg | 15694157 | 921 days ago | IN | 0 ETH | 0.00189055 | ||||
Transform | 15638416 | 929 days ago | IN | 0 ETH | 0.00393803 | ||||
Transform | 15603740 | 934 days ago | IN | 0 ETH | 0.00353807 | ||||
Transform | 15602043 | 934 days ago | IN | 0 ETH | 0.00232265 | ||||
Transform | 15601627 | 934 days ago | IN | 0 ETH | 0.00236579 | ||||
Transform | 15585714 | 936 days ago | IN | 0 ETH | 0.00256255 | ||||
Transform | 15545085 | 942 days ago | IN | 0 ETH | 0.00460004 | ||||
Transform | 15471408 | 954 days ago | IN | 0 ETH | 0.00314189 | ||||
Transform | 15471396 | 954 days ago | IN | 0 ETH | 0.00290925 | ||||
Lay Egg | 15467943 | 954 days ago | IN | 0 ETH | 0.00019679 | ||||
Lay Egg | 15463194 | 955 days ago | IN | 0 ETH | 0.00019663 | ||||
Transform | 15452510 | 957 days ago | IN | 0 ETH | 0.00911407 | ||||
Transform | 15452496 | 957 days ago | IN | 0 ETH | 0.00910656 | ||||
Transform | 15412229 | 963 days ago | IN | 0 ETH | 0.0050632 | ||||
Transform | 15405140 | 964 days ago | IN | 0 ETH | 0.00521535 | ||||
Lay Egg | 15397362 | 966 days ago | IN | 0 ETH | 0.00274444 | ||||
Lay Egg | 15396694 | 966 days ago | IN | 0 ETH | 0.00097461 | ||||
Lay Egg | 15396567 | 966 days ago | IN | 0 ETH | 0.00102294 | ||||
Transform | 15385104 | 968 days ago | IN | 0 ETH | 0.00151772 |
Loading...
Loading
Contract Name:
EtheremonTransform
Compiler Version
v0.4.19+commit.c4cbbb05
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-08-28 */ pragma solidity ^0.4.16; // copyright [email protected] contract SafeMath { /* function assert(bool assertion) internal { */ /* if (!assertion) { */ /* throw; */ /* } */ /* } // assert no longer needed once solidity is on 0.4.10 */ function safeAdd(uint256 x, uint256 y) pure internal returns(uint256) { uint256 z = x + y; assert((z >= x) && (z >= y)); return z; } function safeSubtract(uint256 x, uint256 y) pure internal returns(uint256) { assert(x >= y); uint256 z = x - y; return z; } function safeMult(uint256 x, uint256 y) pure internal returns(uint256) { uint256 z = x * y; assert((x == 0)||(z/x == y)); return z; } } contract BasicAccessControl { address public owner; // address[] public moderators; uint16 public totalModerators = 0; mapping (address => bool) public moderators; bool public isMaintaining = false; function BasicAccessControl() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } modifier onlyModerators() { require(msg.sender == owner || moderators[msg.sender] == true); _; } modifier isActive { require(!isMaintaining); _; } function ChangeOwner(address _newOwner) onlyOwner public { if (_newOwner != address(0)) { owner = _newOwner; } } function AddModerator(address _newModerator) onlyOwner public { if (moderators[_newModerator] == false) { moderators[_newModerator] = true; totalModerators += 1; } } function RemoveModerator(address _oldModerator) onlyOwner public { if (moderators[_oldModerator] == true) { moderators[_oldModerator] = false; totalModerators -= 1; } } function UpdateMaintaining(bool _isMaintaining) onlyOwner public { isMaintaining = _isMaintaining; } } contract EtheremonEnum { enum ResultCode { SUCCESS, ERROR_CLASS_NOT_FOUND, ERROR_LOW_BALANCE, ERROR_SEND_FAIL, ERROR_NOT_TRAINER, ERROR_NOT_ENOUGH_MONEY, ERROR_INVALID_AMOUNT, ERROR_OBJ_NOT_FOUND, ERROR_OBJ_INVALID_OWNERSHIP } enum ArrayType { CLASS_TYPE, STAT_STEP, STAT_START, STAT_BASE, OBJ_SKILL } enum PropertyType { ANCESTOR, XFACTOR } } contract EtheremonDataBase is EtheremonEnum, BasicAccessControl { uint64 public totalMonster; uint32 public totalClass; // write function decreaseMonsterExp(uint64 _objId, uint32 amount) external; // read function getSizeArrayType(ArrayType _type, uint64 _id) constant public returns(uint); function getElementInArrayType(ArrayType _type, uint64 _id, uint _index) constant public returns(uint8); function getMonsterClass(uint32 _classId) constant public returns(uint32 classId, uint256 price, uint256 returnPrice, uint32 total, bool catchable); function getMonsterObj(uint64 _objId) constant public returns(uint64 objId, uint32 classId, address trainer, uint32 exp, uint32 createIndex, uint32 lastClaimIndex, uint createTime); function getMonsterName(uint64 _objId) constant public returns(string name); function getExtraBalance(address _trainer) constant public returns(uint256); function getMonsterDexSize(address _trainer) constant public returns(uint); function getMonsterObjId(address _trainer, uint index) constant public returns(uint64); function getExpectedBalance(address _trainer) constant public returns(uint256); function getMonsterReturn(uint64 _objId) constant public returns(uint256 current, uint256 total); } contract EtheremonTransformData { uint64 public totalEgg = 0; function getHatchingEggId(address _trainer) constant external returns(uint64); function getHatchingEggData(address _trainer) constant external returns(uint64, uint64, uint32, address, uint, uint64); function getTranformedId(uint64 _objId) constant external returns(uint64); function countEgg(uint64 _objId) constant external returns(uint); function setHatchTime(uint64 _eggId, uint _hatchTime) external; function setHatchedEgg(uint64 _eggId, uint64 _newObjId) external; function addEgg(uint64 _objId, uint32 _classId, address _trainer, uint _hatchTime) external returns(uint64); function setTranformed(uint64 _objId, uint64 _newObjId) external; } contract EtheremonWorld { function getGen0COnfig(uint32 _classId) constant public returns(uint32, uint256, uint32); function getTrainerEarn(address _trainer) constant public returns(uint256); function getReturnFromMonster(uint64 _objId) constant public returns(uint256 current, uint256 total); function getClassPropertyValue(uint32 _classId, EtheremonEnum.PropertyType _type, uint index) constant external returns(uint32); function getClassPropertySize(uint32 _classId, EtheremonEnum.PropertyType _type) constant external returns(uint); } interface EtheremonBattle { function isOnBattle(uint64 _objId) constant external returns(bool); function getMonsterLevel(uint64 _objId) constant public returns(uint8); } interface EtheremonTradeInterface { function isOnTrading(uint64 _objId) constant external returns(bool); } interface EtheremonMonsterNFTInterface { function mintMonster(uint32 _classId, address _trainer, string _name) external returns(uint); function burnMonster(uint64 _tokenId) external; } interface EtheremonTransformSettingInterface { function getRandomClassId(uint _seed) constant external returns(uint32); function getLayEggInfo(uint32 _classId) constant external returns(uint8 layingLevel, uint8 layingCost); function getTransformInfo(uint32 _classId) constant external returns(uint32 transformClassId, uint8 level); function getClassTransformInfo(uint32 _classId) constant external returns(uint8 layingLevel, uint8 layingCost, uint8 transformLevel, uint32 transformCLassId); } contract EtheremonTransform is EtheremonEnum, BasicAccessControl, SafeMath { uint8 constant public STAT_COUNT = 6; uint8 constant public STAT_MAX = 32; uint8 constant public GEN0_NO = 24; struct MonsterObjAcc { uint64 monsterId; uint32 classId; address trainer; string name; uint32 exp; uint32 createIndex; uint32 lastClaimIndex; uint createTime; } struct MonsterEgg { uint64 eggId; uint64 objId; uint32 classId; address trainer; uint hatchTime; uint64 newObjId; } struct BasicObjInfo { uint32 classId; address owner; uint8 level; uint32 exp; } // Gen0 has return price & no longer can be caught when this contract is deployed struct Gen0Config { uint32 classId; uint256 originalPrice; uint256 returnPrice; uint32 total; // total caught (not count those from eggs) } // hatching range uint public hatchStartTime = 2; // hour uint public hatchMaxTime = 46; // hour uint public removeHatchingTimeFee = 0.05 ether; // ETH uint public buyEggFee = 0.09 ether; // ETH mapping(uint8 => uint32) public levelExps; mapping(uint32 => Gen0Config) public gen0Config; // linked smart contract address public dataContract; address public worldContract; address public transformDataContract; address public transformSettingContract; address public battleContract; address public tradeContract; address public monsterNFTContract; // events event EventLayEgg(address indexed trainer, uint objId, uint eggId); event EventHatchEgg(address indexed trainer, uint eggId, uint objId); event EventTransform(address indexed trainer, uint oldObjId, uint newObjId); // constructor function EtheremonTransform(address _dataContract, address _worldContract, address _transformDataContract, address _transformSettingContract, address _battleContract, address _tradeContract, address _monsterNFTContract) public { dataContract = _dataContract; worldContract = _worldContract; transformDataContract = _transformDataContract; transformSettingContract = _transformSettingContract; battleContract = _battleContract; tradeContract = _tradeContract; monsterNFTContract = _monsterNFTContract; } // helper function getRandom(address _player, uint _block, uint64 _count) constant public returns(uint) { return uint(keccak256(block.blockhash(_block), _player, _count)); } // admin & moderators function setContract(address _dataContract, address _worldContract, address _transformDataContract, address _transformSettingContract, address _battleContract, address _tradeContract, address _monsterNFTContract) onlyModerators external { dataContract = _dataContract; worldContract = _worldContract; transformDataContract = _transformDataContract; transformSettingContract = _transformSettingContract; battleContract = _battleContract; tradeContract = _tradeContract; monsterNFTContract = _monsterNFTContract; } function setOriginalPriceGen0() onlyModerators external { gen0Config[1] = Gen0Config(1, 0.3 ether, 0.003 ether, 374); gen0Config[2] = Gen0Config(2, 0.3 ether, 0.003 ether, 408); gen0Config[3] = Gen0Config(3, 0.3 ether, 0.003 ether, 373); gen0Config[4] = Gen0Config(4, 0.2 ether, 0.002 ether, 437); gen0Config[5] = Gen0Config(5, 0.1 ether, 0.001 ether, 497); gen0Config[6] = Gen0Config(6, 0.3 ether, 0.003 ether, 380); gen0Config[7] = Gen0Config(7, 0.2 ether, 0.002 ether, 345); gen0Config[8] = Gen0Config(8, 0.1 ether, 0.001 ether, 518); gen0Config[9] = Gen0Config(9, 0.1 ether, 0.001 ether, 447); gen0Config[10] = Gen0Config(10, 0.2 ether, 0.002 ether, 380); gen0Config[11] = Gen0Config(11, 0.2 ether, 0.002 ether, 354); gen0Config[12] = Gen0Config(12, 0.2 ether, 0.002 ether, 346); gen0Config[13] = Gen0Config(13, 0.2 ether, 0.002 ether, 351); gen0Config[14] = Gen0Config(14, 0.2 ether, 0.002 ether, 338); gen0Config[15] = Gen0Config(15, 0.2 ether, 0.002 ether, 341); gen0Config[16] = Gen0Config(16, 0.35 ether, 0.0035 ether, 384); gen0Config[17] = Gen0Config(17, 1 ether, 0.01 ether, 305); gen0Config[18] = Gen0Config(18, 0.1 ether, 0.001 ether, 427); gen0Config[19] = Gen0Config(19, 1 ether, 0.01 ether, 304); gen0Config[20] = Gen0Config(20, 0.4 ether, 0.05 ether, 82); gen0Config[21] = Gen0Config(21, 1, 1, 123); gen0Config[22] = Gen0Config(22, 0.2 ether, 0.001 ether, 468); gen0Config[23] = Gen0Config(23, 0.5 ether, 0.0025 ether, 302); gen0Config[24] = Gen0Config(24, 1 ether, 0.005 ether, 195); } function withdrawEther(address _sendTo, uint _amount) onlyModerators external { // no user money is kept in this contract, only trasaction fee if (_amount > this.balance) { revert(); } _sendTo.transfer(_amount); } function setConfig(uint _removeHatchingTimeFee, uint _buyEggFee, uint _hatchStartTime, uint _hatchMaxTime) onlyModerators external { removeHatchingTimeFee = _removeHatchingTimeFee; buyEggFee = _buyEggFee; hatchStartTime = _hatchStartTime; hatchMaxTime = _hatchMaxTime; } function genLevelExp() onlyModerators external { uint8 level = 1; uint32 requirement = 100; uint32 sum = requirement; while(level <= 100) { levelExps[level] = sum; level += 1; requirement = (requirement * 11) / 10 + 5; sum += requirement; } } function removeHatchingTimeWithToken(address _trainer) isActive onlyModerators external { EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); MonsterEgg memory egg; (egg.eggId, egg.objId, egg.classId, egg.trainer, egg.hatchTime, egg.newObjId) = transformData.getHatchingEggData(_trainer); // not hatching any egg if (egg.eggId == 0 || egg.trainer != _trainer || egg.newObjId > 0) revert(); EtheremonMonsterNFTInterface monsterNFT = EtheremonMonsterNFTInterface(monsterNFTContract); uint objId = monsterNFT.mintMonster(egg.classId, egg.trainer, "..name me..."); transformData.setHatchedEgg(egg.eggId, uint64(objId)); EventHatchEgg(egg.trainer, egg.eggId, objId); } function buyEggWithToken(address _trainer) isActive onlyModerators external { EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); // make sure no hatching egg at the same time if (transformData.getHatchingEggId(_trainer) > 0) { revert(); } // add random egg uint seed = getRandom(_trainer, block.number - 1, transformData.totalEgg()); uint32 classId = EtheremonTransformSettingInterface(transformSettingContract).getRandomClassId(seed); if (classId == 0) revert(); uint64 eggId = transformData.addEgg(0, classId, _trainer, block.timestamp + (hatchStartTime + seed % hatchMaxTime) * 3600); // deduct exp EventLayEgg(_trainer, 0, eggId); } // public function ceil(uint a, uint m) pure public returns (uint) { return ((a + m - 1) / m) * m; } function getLevel(uint32 exp) view public returns (uint8) { uint8 minIndex = 1; uint8 maxIndex = 100; uint8 currentIndex; while (minIndex < maxIndex) { currentIndex = (minIndex + maxIndex) / 2; if (exp < levelExps[currentIndex]) maxIndex = currentIndex; else minIndex = currentIndex + 1; } return minIndex; } function getGen0ObjInfo(uint64 _objId) constant public returns(uint32, uint32, uint256) { EtheremonDataBase data = EtheremonDataBase(dataContract); MonsterObjAcc memory obj; (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = data.getMonsterObj(_objId); Gen0Config memory gen0 = gen0Config[obj.classId]; if (gen0.classId != obj.classId) { return (gen0.classId, obj.createIndex, 0); } uint32 totalGap = 0; if (obj.createIndex < gen0.total) totalGap = gen0.total - obj.createIndex; return (obj.classId, obj.createIndex, safeMult(totalGap, gen0.returnPrice)); } function getObjClassExp(uint64 _objId) constant public returns(uint32, address, uint32) { EtheremonDataBase data = EtheremonDataBase(dataContract); MonsterObjAcc memory obj; (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = data.getMonsterObj(_objId); return (obj.classId, obj.trainer, obj.exp); } function getClassCheckOwner(uint64 _objId, address _trainer) constant public returns(uint32) { EtheremonDataBase data = EtheremonDataBase(dataContract); MonsterObjAcc memory obj; uint32 _ = 0; (obj.monsterId, obj.classId, obj.trainer, obj.exp, _, _, obj.createTime) = data.getMonsterObj(_objId); if (_trainer != obj.trainer) return 0; return obj.classId; } function calculateMaxEggG0(uint64 _objId) constant public returns(uint) { uint32 classId; uint32 createIndex; uint256 totalEarn; (classId, createIndex, totalEarn) = getGen0ObjInfo(_objId); if (classId > GEN0_NO || classId == 20 || classId == 21) return 0; Gen0Config memory config = gen0Config[classId]; // the one from egg can not lay if (createIndex > config.total) return 0; // calculate agv price uint256 avgPrice = config.originalPrice; uint rate = config.originalPrice/config.returnPrice; if (config.total > rate) { uint k = config.total - rate; avgPrice = (config.total * config.originalPrice + config.returnPrice * k * (k+1) / 2) / config.total; } uint256 catchPrice = config.originalPrice; if (createIndex > rate) { catchPrice += config.returnPrice * safeSubtract(createIndex, rate); } if (totalEarn >= catchPrice) { return 0; } return ceil((catchPrice - totalEarn)*15*1000/avgPrice, 10000)/10000; } function layEgg(uint64 _objId) isActive external { EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); // make sure no hatching egg at the same time if (transformData.getHatchingEggId(msg.sender) > 0) { revert(); } // can not lay egg when trading if (EtheremonTradeInterface(tradeContract).isOnTrading(_objId)) revert(); // check obj uint32 classId; address owner; uint32 exp; uint8 currentLevel; (classId, owner, exp) = getObjClassExp(_objId); currentLevel = getLevel(exp); if (classId == 0 || owner != msg.sender) { revert(); } // check lay egg condition uint8 temp = 0; if (classId <= GEN0_NO) { // legends if (transformData.countEgg(_objId) >= calculateMaxEggG0(_objId)) revert(); temp = currentLevel; } else { uint8 layingLevel; (layingLevel, temp) = EtheremonTransformSettingInterface(transformSettingContract).getLayEggInfo(classId); if (layingLevel == 0 || currentLevel < layingLevel || currentLevel < temp) revert(); temp = currentLevel - temp; } // add egg uint seed = getRandom(msg.sender, block.number - 1, transformData.totalEgg()); uint64 eggId = transformData.addEgg(_objId, classId, msg.sender, block.timestamp + (hatchStartTime + seed % hatchMaxTime) * 3600); // deduct exp if (temp < currentLevel) { EtheremonDataBase data = EtheremonDataBase(dataContract); data.decreaseMonsterExp(_objId, exp - levelExps[temp-1]); } EventLayEgg(msg.sender, _objId, eggId); } function hatchEgg() isActive external { // use as a seed for random EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); MonsterEgg memory egg; (egg.eggId, egg.objId, egg.classId, egg.trainer, egg.hatchTime, egg.newObjId) = transformData.getHatchingEggData(msg.sender); // not hatching any egg if (egg.eggId == 0 || egg.trainer != msg.sender) revert(); // need more time if (egg.newObjId > 0 || egg.hatchTime > block.timestamp) { revert(); } EtheremonMonsterNFTInterface monsterNFT = EtheremonMonsterNFTInterface(monsterNFTContract); uint objId = monsterNFT.mintMonster(egg.classId, egg.trainer, "..name me..."); transformData.setHatchedEgg(egg.eggId, uint64(objId)); EventHatchEgg(egg.trainer, egg.eggId, objId); } function removeHatchingTime() isActive external payable { EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); MonsterEgg memory egg; (egg.eggId, egg.objId, egg.classId, egg.trainer, egg.hatchTime, egg.newObjId) = transformData.getHatchingEggData(msg.sender); // not hatching any egg if (egg.eggId == 0 || egg.trainer != msg.sender || egg.newObjId > 0) revert(); if (msg.value != removeHatchingTimeFee) { revert(); } EtheremonMonsterNFTInterface monsterNFT = EtheremonMonsterNFTInterface(monsterNFTContract); uint objId = monsterNFT.mintMonster(egg.classId, egg.trainer, "..name me..."); transformData.setHatchedEgg(egg.eggId, uint64(objId)); EventHatchEgg(egg.trainer, egg.eggId, objId); } function checkAncestors(uint32 _classId, address _trainer, uint64 _a1, uint64 _a2, uint64 _a3) constant public returns(bool) { EtheremonWorld world = EtheremonWorld(worldContract); uint index = 0; uint32 temp = 0; // check ancestor uint32[3] memory ancestors; uint32[3] memory requestAncestors; index = world.getClassPropertySize(_classId, PropertyType.ANCESTOR); while (index > 0) { index -= 1; ancestors[index] = world.getClassPropertyValue(_classId, PropertyType.ANCESTOR, index); } if (_a1 > 0) { temp = getClassCheckOwner(_a1, _trainer); if (temp == 0) return false; requestAncestors[0] = temp; } if (_a2 > 0) { temp = getClassCheckOwner(_a2, _trainer); if (temp == 0) return false; requestAncestors[1] = temp; } if (_a3 > 0) { temp = getClassCheckOwner(_a3, _trainer); if (temp == 0) return false; requestAncestors[2] = temp; } if (requestAncestors[0] > 0 && (requestAncestors[0] == requestAncestors[1] || requestAncestors[0] == requestAncestors[2])) return false; if (requestAncestors[1] > 0 && (requestAncestors[1] == requestAncestors[2])) return false; for (index = 0; index < ancestors.length; index++) { temp = ancestors[index]; if (temp > 0 && temp != requestAncestors[0] && temp != requestAncestors[1] && temp != requestAncestors[2]) return false; } return true; } function transform(uint64 _objId, uint64 _a1, uint64 _a2, uint64 _a3) isActive external payable { EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); if (transformData.getTranformedId(_objId) > 0) revert(); EtheremonBattle battle = EtheremonBattle(battleContract); EtheremonTradeInterface trade = EtheremonTradeInterface(tradeContract); if (battle.isOnBattle(_objId) || trade.isOnTrading(_objId)) revert(); BasicObjInfo memory objInfo; (objInfo.classId, objInfo.owner, objInfo.exp) = getObjClassExp(_objId); objInfo.level = getLevel(objInfo.exp); if (objInfo.classId == 0 || objInfo.owner != msg.sender) revert(); uint32 transformClass; uint8 transformLevel; (transformClass, transformLevel) = EtheremonTransformSettingInterface(transformSettingContract).getTransformInfo(objInfo.classId); if (transformClass == 0 || transformLevel == 0) revert(); if (objInfo.level < transformLevel) revert(); // gen0 - can not transform if it has bonus egg if (objInfo.classId <= GEN0_NO) { // legends if (getBonusEgg(_objId) > 0) revert(); } else { if (!checkAncestors(objInfo.classId, msg.sender, _a1, _a2, _a3)) revert(); } EtheremonMonsterNFTInterface monsterNFT = EtheremonMonsterNFTInterface(monsterNFTContract); uint newObjId = monsterNFT.mintMonster(transformClass, msg.sender, "..name me..."); monsterNFT.burnMonster(_objId); transformData.setTranformed(_objId, uint64(newObjId)); EventTransform(msg.sender, _objId, newObjId); } function buyEgg() isActive external payable { if (msg.value != buyEggFee) { revert(); } EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); // make sure no hatching egg at the same time if (transformData.getHatchingEggId(msg.sender) > 0) { revert(); } // add random egg uint seed = getRandom(msg.sender, block.number - 1, transformData.totalEgg()); uint32 classId = EtheremonTransformSettingInterface(transformSettingContract).getRandomClassId(seed); if (classId == 0) revert(); uint64 eggId = transformData.addEgg(0, classId, msg.sender, block.timestamp + (hatchStartTime + seed % hatchMaxTime) * 3600); // deduct exp EventLayEgg(msg.sender, 0, eggId); } // read function getBonusEgg(uint64 _objId) constant public returns(uint) { EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); uint totalBonusEgg = calculateMaxEggG0(_objId); if (totalBonusEgg > 0) { return (totalBonusEgg - transformData.countEgg(_objId)); } return 0; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_objId","type":"uint64"},{"name":"_a1","type":"uint64"},{"name":"_a2","type":"uint64"},{"name":"_a3","type":"uint64"}],"name":"transform","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"dataContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"gen0Config","outputs":[{"name":"classId","type":"uint32"},{"name":"originalPrice","type":"uint256"},{"name":"returnPrice","type":"uint256"},{"name":"total","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"getObjClassExp","outputs":[{"name":"","type":"uint32"},{"name":"","type":"address"},{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"moderators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"worldContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"buyEggFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hatchMaxTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"calculateMaxEggG0","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"genLevelExp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"monsterNFTContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"battleContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_isMaintaining","type":"bool"}],"name":"UpdateMaintaining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"STAT_MAX","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalModerators","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sendTo","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transformSettingContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_trainer","type":"address"}],"name":"buyEggWithToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setOriginalPriceGen0","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newModerator","type":"address"}],"name":"AddModerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"GEN0_NO","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"levelExps","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyEgg","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"m","type":"uint256"}],"name":"ceil","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_dataContract","type":"address"},{"name":"_worldContract","type":"address"},{"name":"_transformDataContract","type":"address"},{"name":"_transformSettingContract","type":"address"},{"name":"_battleContract","type":"address"},{"name":"_tradeContract","type":"address"},{"name":"_monsterNFTContract","type":"address"}],"name":"setContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hatchStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transformDataContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_player","type":"address"},{"name":"_block","type":"uint256"},{"name":"_count","type":"uint64"}],"name":"getRandom","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_trainer","type":"address"},{"name":"_a1","type":"uint64"},{"name":"_a2","type":"uint64"},{"name":"_a3","type":"uint64"}],"name":"checkAncestors","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"removeHatchingTime","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_trainer","type":"address"}],"name":"removeHatchingTimeWithToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"removeHatchingTimeFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"getBonusEgg","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"exp","type":"uint32"}],"name":"getLevel","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_oldModerator","type":"address"}],"name":"RemoveModerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"hatchEgg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"getGen0ObjInfo","outputs":[{"name":"","type":"uint32"},{"name":"","type":"uint32"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"STAT_COUNT","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_removeHatchingTimeFee","type":"uint256"},{"name":"_buyEggFee","type":"uint256"},{"name":"_hatchStartTime","type":"uint256"},{"name":"_hatchMaxTime","type":"uint256"}],"name":"setConfig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"},{"name":"_trainer","type":"address"}],"name":"getClassCheckOwner","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_objId","type":"uint64"}],"name":"layEgg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isMaintaining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"ChangeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tradeContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_dataContract","type":"address"},{"name":"_worldContract","type":"address"},{"name":"_transformDataContract","type":"address"},{"name":"_transformSettingContract","type":"address"},{"name":"_battleContract","type":"address"},{"name":"_tradeContract","type":"address"},{"name":"_monsterNFTContract","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"trainer","type":"address"},{"indexed":false,"name":"objId","type":"uint256"},{"indexed":false,"name":"eggId","type":"uint256"}],"name":"EventLayEgg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"trainer","type":"address"},{"indexed":false,"name":"eggId","type":"uint256"},{"indexed":false,"name":"objId","type":"uint256"}],"name":"EventHatchEgg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"trainer","type":"address"},{"indexed":false,"name":"oldObjId","type":"uint256"},{"indexed":false,"name":"newObjId","type":"uint256"}],"name":"EventTransform","type":"event"}]
Contract Creation Code
60606040526000805460a060020a61ffff02191690556002805460ff19168155600355602e60045566b1a2bc2ec5000060055567013fbe85edc90000600655341561004957600080fd5b60405160e0806141c98339810160405280805191906020018051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03338116600160a060020a031992831617909255600980549b83169b82169b909b17909a55600a8054998216998b1699909917909855600b8054978916978a16979097179096555050600c805493861693871693909317909255600d8054918516918616919091179055600e8054918416918516919091179055600f805492909116919092161790556140a0806101296000396000f30060606040526004361061020b5763ffffffff60e060020a600035041663085f8ebb81146102105780630d668818146102395780630daf4151146102685780630f75c82e146102b557806314d0f1ba1461030b578063187584801461033e5780631dbb986714610351578063217b97e4146103765780632f6a6e201461038957806333ced321146103a95780633dd287d4146103bc578063423b1ca3146103cf57806348ef5aa8146103e25780634e3dc2f1146103fa5780634efb023e14610423578063522f68151461044d57806354f47be71461046f5780635b86ce971461048257806366ba2670146104a15780636c81fd6d146104b457806373d65c00146104d357806378b475a8146104e65780637d635502146105185780638587be6e146105205780638a9ba931146105395780638da5cb5b1461057c57806392c537e91461058f57806393cc6d85146105a25780639b945097146105b55780639bd7d688146105e4578063a3c07c6a14610625578063a3cb3e971461062d578063a4d5e30e1461064c578063afd61d2c1461065f578063b2cad9b71461067f578063b85d62751461069b578063ca9c4b33146106ba578063d2fb32c2146106cd578063d98e14bd14610717578063e5c389cd1461072a578063e98f402c14610749578063eb14367d14610775578063ee4e441614610795578063f2853292146107a8578063ffa640d8146107c7575b600080fd5b61023767ffffffffffffffff600435811690602435811690604435811690606435166107da565b005b341561024457600080fd5b61024c610cd7565b604051600160a060020a03909116815260200160405180910390f35b341561027357600080fd5b61028463ffffffff60043516610ce6565b60405163ffffffff948516815260208101939093526040808401929092529092166060820152608001905180910390f35b34156102c057600080fd5b6102d567ffffffffffffffff60043516610d15565b60405163ffffffff9384168152600160a060020a0390921660208301529091166040808301919091526060909101905180910390f35b341561031657600080fd5b61032a600160a060020a0360043516610e20565b604051901515815260200160405180910390f35b341561034957600080fd5b61024c610e35565b341561035c57600080fd5b610364610e44565b60405190815260200160405180910390f35b341561038157600080fd5b610364610e4a565b341561039457600080fd5b61036467ffffffffffffffff60043516610e50565b34156103b457600080fd5b61023761101b565b34156103c757600080fd5b61024c6110c9565b34156103da57600080fd5b61024c6110d8565b34156103ed57600080fd5b61023760043515156110e7565b341561040557600080fd5b61040d611115565b60405160ff909116815260200160405180910390f35b341561042e57600080fd5b61043661111a565b60405161ffff909116815260200160405180910390f35b341561045857600080fd5b610237600160a060020a036004351660243561113c565b341561047a57600080fd5b61024c6111ce565b341561048d57600080fd5b610237600160a060020a03600435166111dd565b34156104ac57600080fd5b6102376114bf565b34156104bf57600080fd5b610237600160a060020a0360043516612589565b34156104de57600080fd5b61040d612633565b34156104f157600080fd5b6104ff60ff60043516612638565b60405163ffffffff909116815260200160405180910390f35b610237612650565b341561052b57600080fd5b6103646004356024356128d9565b341561054457600080fd5b610237600160a060020a0360043581169060243581169060443581169060643581169060843581169060a43581169060c435166128f5565b341561058757600080fd5b61024c6129c6565b341561059a57600080fd5b6103646129d5565b34156105ad57600080fd5b61024c6129db565b34156105c057600080fd5b610364600160a060020a036004351660243567ffffffffffffffff604435166129ea565b34156105ef57600080fd5b61032a63ffffffff60043516600160a060020a036024351667ffffffffffffffff60443581169060643581169060843516612a54565b610237612dc1565b341561063857600080fd5b610237600160a060020a0360043516613097565b341561065757600080fd5b6103646133a6565b341561066a57600080fd5b61036467ffffffffffffffff600435166133ac565b341561068a57600080fd5b61040d63ffffffff60043516613458565b34156106a657600080fd5b610237600160a060020a03600435166134bb565b34156106c557600080fd5b610237613565565b34156106d857600080fd5b6106ed67ffffffffffffffff600435166136bb565b60405163ffffffff9384168152919092166020820152604080820192909252606001905180910390f35b341561072257600080fd5b61040d6138a1565b341561073557600080fd5b6102376004356024356044356064356138a6565b341561075457600080fd5b6104ff67ffffffffffffffff60043516600160a060020a0360243516613900565b341561078057600080fd5b61023767ffffffffffffffff60043516613a11565b34156107a057600080fd5b61032a613ee4565b34156107b357600080fd5b610237600160a060020a0360043516613eed565b34156107d257600080fd5b61024c613f44565b60008060006107e7613f92565b60025460009081908190819060ff161561080057600080fd5b600b54600160a060020a0316975060008863fd7d79488e836040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b151561085e57600080fd5b6102c65a03f1151561086f57600080fd5b5050506040518051905067ffffffffffffffff16111561088e57600080fd5b600d54600e54600160a060020a039182169850169550866335f097f38d60006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b15156108f357600080fd5b6102c65a03f1151561090457600080fd5b5050506040518051905080610988575085600160a060020a031663a847a71c8d60006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b151561096c57600080fd5b6102c65a03f1151561097d57600080fd5b505050604051805190505b1561099257600080fd5b61099b8c610d15565b63ffffffff90811660608901908152600160a060020a0390921660208901529190911686526109ca9051613458565b60ff166040860152845163ffffffff1615806109fc575033600160a060020a03168560200151600160a060020a031614155b15610a0657600080fd5b600c54600160a060020a031663e8679512865160006040516040015260405163ffffffff83811660e060020a0282529190911660048201526024016040805180830381600087803b1515610a5957600080fd5b6102c65a03f11515610a6a57600080fd5b50505060405180519060200180519195509093505063ffffffff84161580610a93575060ff8316155b15610a9d57600080fd5b8260ff16856040015160ff161015610ab457600080fd5b6018855163ffffffff1611610ade576000610ace8d6133ac565b1115610ad957600080fd5b610af7565b610aec8551338d8d8d612a54565b1515610af757600080fd5b600f54600160a060020a0316915081630963d4b7853360006040516020015260405163ffffffff84811660e060020a028252929092166004830152600160a060020a0316602482015260606044820152600c60648201527f2e2e6e616d65206d652e2e2e0000000000000000000000000000000000000000608482015260a401602060405180830381600087803b1515610b9057600080fd5b6102c65a03f11515610ba157600080fd5b5050506040518051915050600160a060020a0382166381b230428d60405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401600060405180830381600087803b1515610bfb57600080fd5b6102c65a03f11515610c0c57600080fd5b50505087600160a060020a03166354b670578d8360405160e060020a63ffffffff851602815267ffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b1515610c6657600080fd5b6102c65a03f11515610c7757600080fd5b50505033600160a060020a03167f5b37de5d4b6cf3f52fe00ba7b9a2ca6bffc9501f341f008ef3cb0e4a3aa7eaad8d8360405167ffffffffffffffff909216825260208201526040908101905180910390a2505050505050505050505050565b600954600160a060020a031681565b600860205260009081526040902080546001820154600283015460039093015463ffffffff9283169391921684565b600080600080610d23613fb9565b600954600160a060020a0316915081630720246087600060405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b1515610d8057600080fd5b6102c65a03f11515610d9157600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08901525063ffffffff90811660c088015290811660a08701529081166080860152600160a060020a039091166040850152166020830190815267ffffffffffffffff9091168252518160400151826080015194509450945050509193909250565b60016020526000908152604090205460ff1681565b600a54600160a060020a031681565b60065481565b60045481565b600080600080610e5e613f92565b600080600080610e6d8a6136bb565b91995097509550601863ffffffff89161180610e8f57508763ffffffff166014145b80610ea057508763ffffffff166015145b15610eae576000985061100e565b63ffffffff88166000908152600860205260409081902090608090519081016040908152825463ffffffff908116835260018401546020840152600284015491830191909152600390920154909116606082019081529095505163ffffffff168763ffffffff161115610f24576000985061100e565b8460200151935084604001518560200151811515610f3e57fe5b04925082856060015163ffffffff161115610fa45782856060015163ffffffff16039150846060015163ffffffff166002836001018488604001510202811515610f8457fe5b048660200151876060015163ffffffff160201811515610fa057fe5b0493505b84602001519050828763ffffffff161115610fd157610fc98763ffffffff1684613f53565b856040015102015b808610610fe1576000985061100e565b61271061100185613a9889850302811515610ff857fe5b046127106128d9565b81151561100a57fe5b0498505b5050505050505050919050565b600080548190819033600160a060020a039081169116148061105b5750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561106657600080fd5b506001915060649050805b606460ff8416116110c45760ff83166000908152600760205260409020805463ffffffff191663ffffffff83811691909117909155600190930192600a90600b8402160460050191508181019050611071565b505050565b600f54600160a060020a031681565b600d54600160a060020a031681565b60005433600160a060020a0390811691161461110257600080fd5b6002805460ff1916911515919091179055565b602081565b60005474010000000000000000000000000000000000000000900461ffff1681565b60005433600160a060020a03908116911614806111775750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561118257600080fd5b30600160a060020a03163181111561119957600080fd5b600160a060020a03821681156108fc0282604051600060405180830381858888f1935050505015156111ca57600080fd5b5050565b600c54600160a060020a031681565b60025460009081908190819060ff16156111f657600080fd5b60005433600160a060020a03908116911614806112315750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561123c57600080fd5b600b54600160a060020a0316935060008463aeb669eb87836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561129957600080fd5b6102c65a03f115156112aa57600080fd5b5050506040518051905067ffffffffffffffff1611156112c957600080fd5b611337856001430386600160a060020a031663fdb4dbe06000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561131757600080fd5b6102c65a03f1151561132857600080fd5b505050604051805190506129ea565b600c54909350600160a060020a0316634cd3745d8460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561138b57600080fd5b6102c65a03f1151561139c57600080fd5b505050604051805192505063ffffffff821615156113b957600080fd5b83600160a060020a0316630bc954dc60008488600454888115156113d957fe5b0660035401610e1002420160006040516020015260405163ffffffff86811660e060020a02825267ffffffffffffffff959095166004820152929093166024830152600160a060020a031660448201526064810191909152608401602060405180830381600087803b151561144d57600080fd5b6102c65a03f1151561145e57600080fd5b5050506040518051915050600160a060020a0385167f3c3333d9f85107cb0696d2fe51b5060309ca58fa67419084a4159f1f0c76056c60008360405191825267ffffffffffffffff1660208201526040908101905180910390a25050505050565b60005433600160a060020a03908116911614806114fa5750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561150557600080fd5b608060405190810160409081526001808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101766060840152600052600890527fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526002808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101986060840152600052600890527f6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea90418151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526003808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101756060840152600052600890527f625b35f5e76f098dd7c3a05b10e2e5e78a4a01228d60c3b143426cdf36d264558151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260048083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101b56060840152600052600890527f9321edea6e3be4df59a344b401fab4f888b556fda1f954244cff9204bad624b88151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600580835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101f16060840152600052600890527f91238f30f286c9a1c6e901c4eda3b214c381c846e3dbe48df95c21488e8e1fdb8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526006808352670429d069189e0000602080850191909152660aa87bee5380009284019290925261017c6060840152600052600890527f13acf3fc7bed94759963f076d5d3443d88732026bffc8253bdf4a6e65f21ecc58151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260078083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101596060840152600052600890527f24cd397636bedc6cf9b490d0edd57c769c19b367fb7d5c2344ae1ddc7d21c1448151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600880835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526102066060840152600081905290527fe4c2e8be66af8dd2d277000f4f830a10546f8b14e45cd850b875c98ba0f0d2cd8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600980835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101bf6060840152600052600890527f82c9e868e45873bb5a4f47c09e14a12f6a6314e13aabd611e4374762bb4e8b368151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600a8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261017c6060840152600052600890527f586689db7536874b78a6eac0f58556a56a106985743f7c16a699b27bb02f88bd8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600b8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101626060840152600052600890527fcb250a1a60f48f70f08c912424f39071fd9a8b7099a72dffd251fce0294f37498151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600c8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015a6060840152600052600890527faba08fc86a199da17c4b45fa0fb586714474d27e5e1f0220658b6275561b2e188151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600d8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015f6060840152600052600890527f9006e1a1959cda25aa0dba7b7a958efb843c4c8cb81a2c2fb8637a074e0818f28151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600e8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101526060840152600052600890527fb6457486547dfd0925a66a479476c3a3e54935ea6192a908abe6bd58ec247b418151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600f8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101556060840152600052600890527f8fab3b3b6d3bf24f9b00213fe8dda2fb1e188fcd88f523fcb711ff1f6aed59e38151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260108083526704db732547630000602080850191909152660c6f3b40b6c000928401929092526101806060840152600052600890527fdf6cae10d416b4d6f459eba806bebc4b85f190dfac647ab7cb4cd2638815444c8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526011808352670de0b6b3a7640000602080850191909152662386f26fc10000928401929092526101316060840152600052600890527fbb47c685b7a6169f9415fd073108f8b7da3e741b7dde8513850bca404684fa978151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601280835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101ab6060840152600052600890527f24c3f2390203786f976c5d43dee94e7a42ec7bdf845f67695ebd67f3c39c18148151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526013808352670de0b6b3a7640000602080850191909152662386f26fc10000928401929092526101306060840152600052600890527f1dfebf40b0462aa6ee8060c248d0caec9e679d370b76490bfe8441dbbab052168151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601480835267058d15e17628000060208085019190915266b1a2bc2ec500009284019290925260526060840152600052600890527fbb1110247bce6eaaf3cb168d5660645ab99866afefe1e7c6fa4388014157e5ba8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260158083526001602080850182905292840152607b6060840152600052600890527fb29f796e1978e2043677a1f0396c8f9106e30db6bae4734a9de4f7fffa6f3fb88151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260168083526702c68af0bb14000060208085019190915266038d7ea4c68000928401929092526101d46060840152600052600890527fe34c1268cf989e507da6d357c2274f08fc653db420491bb916dfda9e5c93bd558151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260178083526706f05b59d3b200006020808501919091526608e1bc9bf040009284019290925261012e6060840152600052600890527f69dd648f27f59b1ee254e03cc0e7f3101ebd5768b9ab5a13693b554f528fc0c58151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526018808352670de0b6b3a76400006020808501919091526611c37937e080009284019290925260c36060840152600052600890527f83ba890607818823e46eb1e5ed8f7282277ac60de8c863727688b48d92a8da6d8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550565b60005433600160a060020a039081169116146125a457600080fd5b600160a060020a03811660009081526001602052604090205460ff16151561263057600160a060020a03811660009081526001602081905260408220805460ff191682179055815461ffff7401000000000000000000000000000000000000000080830482169093011690910275ffff0000000000000000000000000000000000000000199091161790555b50565b601881565b60076020526000908152604090205463ffffffff1681565b60025460009081908190819060ff161561266957600080fd5b600654341461267757600080fd5b600b54600160a060020a0316935060008463aeb669eb33836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156126d457600080fd5b6102c65a03f115156126e557600080fd5b5050506040518051905067ffffffffffffffff16111561270457600080fd5b612752336001430386600160a060020a031663fdb4dbe06000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561131757600080fd5b600c54909350600160a060020a0316634cd3745d8460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156127a657600080fd5b6102c65a03f115156127b757600080fd5b505050604051805192505063ffffffff821615156127d457600080fd5b83600160a060020a0316630bc954dc60008433600454888115156127f457fe5b0660035401610e1002420160006040516020015260405163ffffffff86811660e060020a02825267ffffffffffffffff959095166004820152929093166024830152600160a060020a031660448201526064810191909152608401602060405180830381600087803b151561286857600080fd5b6102c65a03f1151561287957600080fd5b5050506040518051915050600160a060020a0333167f3c3333d9f85107cb0696d2fe51b5060309ca58fa67419084a4159f1f0c76056c60008360405191825267ffffffffffffffff1660208201526040908101905180910390a250505050565b600081826001848601038115156128ec57fe5b04029392505050565b60005433600160a060020a03908116911614806129305750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561293b57600080fd5b6009805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03998a1617909155600a8054821697891697909717909655600b8054871695881695909517909455600c8054861693871693909317909255600d80548516918616919091179055600e80548416918516919091179055600f80549092169216919091179055565b600054600160a060020a031681565b60035481565b600b54600160a060020a031681565b600082408483604051928352600160a060020a03919091166c0100000000000000000000000002602083015267ffffffffffffffff167801000000000000000000000000000000000000000000000000026034820152603c01604051908190039020949350505050565b600080600080612a62614005565b612a6a614005565b600a54600160a060020a0316945060009350839250846388e9abb68c8580604051602001526040518363ffffffff1660e060020a028152600401808363ffffffff1663ffffffff168152602001826001811115612ac357fe5b60ff16815260200192505050602060405180830381600087803b1515612ae857600080fd5b6102c65a03f11515612af957600080fd5b50505060405180519450505b6000841115612bcc5760018403935084600160a060020a0316635b6263398c6000876000604051602001526040518463ffffffff1660e060020a028152600401808463ffffffff1663ffffffff168152602001836001811115612b6457fe5b60ff1681526020018281526020019350505050602060405180830381600087803b1515612b9057600080fd5b6102c65a03f11515612ba157600080fd5b50505060405180519050828560038110612bb757fe5b63ffffffff9092166020929092020152612b05565b60008967ffffffffffffffff161115612c0b57612be9898b613900565b925063ffffffff83161515612c015760009550612db3565b63ffffffff831681525b60008867ffffffffffffffff161115612c4d57612c28888b613900565b925063ffffffff83161515612c405760009550612db3565b63ffffffff831660208201525b60008767ffffffffffffffff161115612c8f57612c6a878b613900565b925063ffffffff83161515612c825760009550612db3565b63ffffffff831660408201525b6000815163ffffffff16118015612cd05750602081015163ffffffff16815163ffffffff161480612cd05750604081015163ffffffff16815163ffffffff16145b15612cde5760009550612db3565b6000602082015163ffffffff16118015612d0b5750604081015163ffffffff16602082015163ffffffff16145b15612d195760009550612db3565b600093505b6003841015612dae57818460038110612d3357fe5b6020020151925060008363ffffffff16118015612d5d5750805163ffffffff168363ffffffff1614155b8015612d795750602081015163ffffffff168363ffffffff1614155b8015612d955750604081015163ffffffff168363ffffffff1614155b15612da35760009550612db3565b600190930192612d1e565b600195505b505050505095945050505050565b6000612dcb61402d565b600254600090819060ff1615612de057600080fd5b600b54600160a060020a031693508363710ad12833600060405160c0015260405160e060020a63ffffffff8416028152600160a060020a03909116600482015260240160c060405180830381600087803b1515612e3c57600080fd5b6102c65a03f11515612e4d57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805167ffffffffffffffff90811660a08b015260808a019290925250600160a060020a03909116606088015263ffffffff90911660408701529081166020860152168352825167ffffffffffffffff161580612ee3575033600160a060020a03168360600151600160a060020a031614155b80612efc575060008360a0015167ffffffffffffffff16115b15612f0657600080fd5b6005543414612f1457600080fd5b600f54600160a060020a0316915081630963d4b76040850151856060015160006040516020015260405163ffffffff84811660e060020a028252929092166004830152600160a060020a0316602482015260606044820152600c60648201527f2e2e6e616d65206d652e2e2e0000000000000000000000000000000000000000608482015260a401602060405180830381600087803b1515612fb557600080fd5b6102c65a03f11515612fc657600080fd5b5050506040518051915050600160a060020a0384166337bd186884518360405160e060020a63ffffffff851602815267ffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b151561302957600080fd5b6102c65a03f1151561303a57600080fd5b5050508260600151600160a060020a03167f484eebcfa9cf8e34a4eefdfeaeced0cb795d3fcc1fa8ae1c8380dc3553a1e22e84518360405167ffffffffffffffff909216825260208201526040908101905180910390a250505050565b60006130a161402d565b600254600090819060ff16156130b657600080fd5b60005433600160a060020a03908116911614806130f15750600160a060020a03331660009081526001602081905260409091205460ff161515145b15156130fc57600080fd5b600b54600160a060020a031693508363710ad12886600060405160c0015260405160e060020a63ffffffff8416028152600160a060020a03909116600482015260240160c060405180830381600087803b151561315857600080fd5b6102c65a03f1151561316957600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805167ffffffffffffffff90811660a08b015260808a019290925250600160a060020a03909116606088015263ffffffff90911660408701529081166020860152168352825167ffffffffffffffff1615806131ff575084600160a060020a03168360600151600160a060020a031614155b80613218575060008360a0015167ffffffffffffffff16115b1561322257600080fd5b600f54600160a060020a0316915081630963d4b76040850151856060015160006040516020015260405163ffffffff84811660e060020a028252929092166004830152600160a060020a0316602482015260606044820152600c60648201527f2e2e6e616d65206d652e2e2e0000000000000000000000000000000000000000608482015260a401602060405180830381600087803b15156132c357600080fd5b6102c65a03f115156132d457600080fd5b5050506040518051915050600160a060020a0384166337bd186884518360405160e060020a63ffffffff851602815267ffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b151561333757600080fd5b6102c65a03f1151561334857600080fd5b5050508260600151600160a060020a03167f484eebcfa9cf8e34a4eefdfeaeced0cb795d3fcc1fa8ae1c8380dc3553a1e22e84518360405167ffffffffffffffff909216825260208201526040908101905180910390a25050505050565b60055481565b600b54600090600160a060020a0316816133c584610e50565b9050600081111561344c5781600160a060020a031663ec0ba0068560006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b151561342857600080fd5b6102c65a03f1151561343957600080fd5b5050506040518051905081039250613451565b600092505b5050919050565b600060016064825b8160ff168360ff1610156134b257600260ff848401160460ff811660009081526007602052604090205490915063ffffffff90811690861610156134a6578091506134ad565b8060010192505b613460565b50909392505050565b60005433600160a060020a039081169116146134d657600080fd5b600160a060020a03811660009081526001602081905260409091205460ff161515141561263057600160a060020a03166000908152600160205260408120805460ff19169055805475ffff0000000000000000000000000000000000000000198116740100000000000000000000000000000000000000009182900461ffff9081166000190116909102179055565b600061356f61402d565b600254600090819060ff161561358457600080fd5b600b54600160a060020a031693508363710ad12833600060405160c0015260405160e060020a63ffffffff8416028152600160a060020a03909116600482015260240160c060405180830381600087803b15156135e057600080fd5b6102c65a03f115156135f157600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805167ffffffffffffffff90811660a08b015260808a019290925250600160a060020a03909116606088015263ffffffff90911660408701529081166020860152168352825167ffffffffffffffff161580613687575033600160a060020a03168360600151600160a060020a031614155b1561369157600080fd5b60008360a0015167ffffffffffffffff1611806136b15750428360800151115b15612f1457600080fd5b6000806000806136c9613fb9565b6136d1613f92565b600954600160a060020a031692506000836307202460898360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561372f57600080fd5b6102c65a03f1151561374057600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08b01525063ffffffff90811660c08a015290811660a08901529081166080880152600160a060020a039091166040870152166020850190815267ffffffffffffffff90911684526008906000905163ffffffff1663ffffffff16815260200190815260200160002060806040519081016040908152825463ffffffff908116835260018401546020808501919091526002850154928401929092526003909301549092166060820152925083015163ffffffff16825163ffffffff16146138445781518360a00151909750955060009450613896565b506000606082015163ffffffff168360a0015163ffffffff161015613871578260a0015182606001510390505b82602001518360a0015161388f8363ffffffff168560400151613f67565b9650965096505b505050509193909250565b600681565b60005433600160a060020a03908116911614806138e15750600160a060020a03331660009081526001602081905260409091205460ff161515145b15156138ec57600080fd5b600593909355600691909155600355600455565b60008061390b613fb9565b600954600160a060020a031691506000826307202460878360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561396957600080fd5b6102c65a03f1151561397a57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08a0152505063ffffffff9182166080880152600160a060020a03909216604087019081529216602086015267ffffffffffffffff909216845290915051600160a060020a03868116911614613a005760009350613a08565b816020015193505b50505092915050565b600080600080600080600080600080600260009054906101000a900460ff16151515613a3c57600080fd5b600b54600160a060020a0316995060008a63aeb669eb33836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613a9957600080fd5b6102c65a03f11515613aaa57600080fd5b5050506040518051905067ffffffffffffffff161115613ac957600080fd5b600e54600160a060020a031663a847a71c8c60006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b1515613b2357600080fd5b6102c65a03f11515613b3457600080fd5b5050506040518051905015613b4857600080fd5b613b518b610d15565b919a5098509650613b6187613458565b955063ffffffff89161580613b88575033600160a060020a031688600160a060020a031614155b15613b9257600080fd5b60009450601863ffffffff8a1611613c3457613bad8b610e50565b8a600160a060020a031663ec0ba0068d60006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b1515613c0557600080fd5b6102c65a03f11515613c1657600080fd5b50505060405180519050101515613c2c57600080fd5b859450613cdf565b600c54600160a060020a031663e94b6aef8a60006040516040015260405163ffffffff83811660e060020a0282529190911660048201526024016040805180830381600087803b1515613c8657600080fd5b6102c65a03f11515613c9757600080fd5b505050604051805190602001805196509094505060ff84161580613cc057508360ff168660ff16105b80613cd057508460ff168660ff16105b15613cda57600080fd5b938503935b613d2d33600143038c600160a060020a031663fdb4dbe06000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561131757600080fd5b925089600160a060020a0316630bc954dc8c8b3360045488811515613d4e57fe5b0660035401610e1002420160006040516020015260405163ffffffff86811660e060020a02825267ffffffffffffffff959095166004820152929093166024830152600160a060020a031660448201526064810191909152608401602060405180830381600087803b1515613dc257600080fd5b6102c65a03f11515613dd357600080fd5b5050506040518051905091508560ff168560ff161015613e86575060095460ff6000198601166000908152600760205260409081902054600160a060020a039092169182916331afa55f918e9163ffffffff9091168b03905163ffffffff84811660e060020a02825267ffffffffffffffff93909316600482015291166024820152604401600060405180830381600087803b1515613e7157600080fd5b6102c65a03f11515613e8257600080fd5b5050505b33600160a060020a03167f3c3333d9f85107cb0696d2fe51b5060309ca58fa67419084a4159f1f0c76056c8c8460405167ffffffffffffffff9283168152911660208201526040908101905180910390a25050505050505050505050565b60025460ff1681565b60005433600160a060020a03908116911614613f0857600080fd5b600160a060020a038116156126305760008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b600e54600160a060020a031681565b60008082841015613f6057fe5b5050900390565b6000828202831580613f835750828482811515613f8057fe5b04145b1515613f8b57fe5b9392505050565b60806040519081016040908152600080835260208301819052908201819052606082015290565b61010060405190810160409081526000808352602083018190529082015260608101613fe3614062565b8152600060208201819052604082018190526060820181905260809091015290565b60606040519081016040526003815b6000815260001990910190602001816140145790505090565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a082015290565b602060405190810160405260008152905600a165627a7a723058200df28e24a3b4d6911d0a59e949dbca661dbfba03cb13c02724709ddedc9e37470029000000000000000000000000abc1c404424bdf24c19a5cc5ef8f47781d18eb3e0000000000000000000000001fc7bd85293f3982f40d52698df8d26be89360d6000000000000000000000000fdf4411669fc6e8951a6ae987307d7582fda7a050000000000000000000000000c3865a8f6678cae495a60240700840204a4e604000000000000000000000000022c635044ba01ced1e098bc32e62a954147f2de0000000000000000000000004ba72f0f8dad13709ee28a992869e79d0fe470300000000000000000000000005d00d312e171be5342067c09bae883f9bcb2003b
Deployed Bytecode
0x60606040526004361061020b5763ffffffff60e060020a600035041663085f8ebb81146102105780630d668818146102395780630daf4151146102685780630f75c82e146102b557806314d0f1ba1461030b578063187584801461033e5780631dbb986714610351578063217b97e4146103765780632f6a6e201461038957806333ced321146103a95780633dd287d4146103bc578063423b1ca3146103cf57806348ef5aa8146103e25780634e3dc2f1146103fa5780634efb023e14610423578063522f68151461044d57806354f47be71461046f5780635b86ce971461048257806366ba2670146104a15780636c81fd6d146104b457806373d65c00146104d357806378b475a8146104e65780637d635502146105185780638587be6e146105205780638a9ba931146105395780638da5cb5b1461057c57806392c537e91461058f57806393cc6d85146105a25780639b945097146105b55780639bd7d688146105e4578063a3c07c6a14610625578063a3cb3e971461062d578063a4d5e30e1461064c578063afd61d2c1461065f578063b2cad9b71461067f578063b85d62751461069b578063ca9c4b33146106ba578063d2fb32c2146106cd578063d98e14bd14610717578063e5c389cd1461072a578063e98f402c14610749578063eb14367d14610775578063ee4e441614610795578063f2853292146107a8578063ffa640d8146107c7575b600080fd5b61023767ffffffffffffffff600435811690602435811690604435811690606435166107da565b005b341561024457600080fd5b61024c610cd7565b604051600160a060020a03909116815260200160405180910390f35b341561027357600080fd5b61028463ffffffff60043516610ce6565b60405163ffffffff948516815260208101939093526040808401929092529092166060820152608001905180910390f35b34156102c057600080fd5b6102d567ffffffffffffffff60043516610d15565b60405163ffffffff9384168152600160a060020a0390921660208301529091166040808301919091526060909101905180910390f35b341561031657600080fd5b61032a600160a060020a0360043516610e20565b604051901515815260200160405180910390f35b341561034957600080fd5b61024c610e35565b341561035c57600080fd5b610364610e44565b60405190815260200160405180910390f35b341561038157600080fd5b610364610e4a565b341561039457600080fd5b61036467ffffffffffffffff60043516610e50565b34156103b457600080fd5b61023761101b565b34156103c757600080fd5b61024c6110c9565b34156103da57600080fd5b61024c6110d8565b34156103ed57600080fd5b61023760043515156110e7565b341561040557600080fd5b61040d611115565b60405160ff909116815260200160405180910390f35b341561042e57600080fd5b61043661111a565b60405161ffff909116815260200160405180910390f35b341561045857600080fd5b610237600160a060020a036004351660243561113c565b341561047a57600080fd5b61024c6111ce565b341561048d57600080fd5b610237600160a060020a03600435166111dd565b34156104ac57600080fd5b6102376114bf565b34156104bf57600080fd5b610237600160a060020a0360043516612589565b34156104de57600080fd5b61040d612633565b34156104f157600080fd5b6104ff60ff60043516612638565b60405163ffffffff909116815260200160405180910390f35b610237612650565b341561052b57600080fd5b6103646004356024356128d9565b341561054457600080fd5b610237600160a060020a0360043581169060243581169060443581169060643581169060843581169060a43581169060c435166128f5565b341561058757600080fd5b61024c6129c6565b341561059a57600080fd5b6103646129d5565b34156105ad57600080fd5b61024c6129db565b34156105c057600080fd5b610364600160a060020a036004351660243567ffffffffffffffff604435166129ea565b34156105ef57600080fd5b61032a63ffffffff60043516600160a060020a036024351667ffffffffffffffff60443581169060643581169060843516612a54565b610237612dc1565b341561063857600080fd5b610237600160a060020a0360043516613097565b341561065757600080fd5b6103646133a6565b341561066a57600080fd5b61036467ffffffffffffffff600435166133ac565b341561068a57600080fd5b61040d63ffffffff60043516613458565b34156106a657600080fd5b610237600160a060020a03600435166134bb565b34156106c557600080fd5b610237613565565b34156106d857600080fd5b6106ed67ffffffffffffffff600435166136bb565b60405163ffffffff9384168152919092166020820152604080820192909252606001905180910390f35b341561072257600080fd5b61040d6138a1565b341561073557600080fd5b6102376004356024356044356064356138a6565b341561075457600080fd5b6104ff67ffffffffffffffff60043516600160a060020a0360243516613900565b341561078057600080fd5b61023767ffffffffffffffff60043516613a11565b34156107a057600080fd5b61032a613ee4565b34156107b357600080fd5b610237600160a060020a0360043516613eed565b34156107d257600080fd5b61024c613f44565b60008060006107e7613f92565b60025460009081908190819060ff161561080057600080fd5b600b54600160a060020a0316975060008863fd7d79488e836040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b151561085e57600080fd5b6102c65a03f1151561086f57600080fd5b5050506040518051905067ffffffffffffffff16111561088e57600080fd5b600d54600e54600160a060020a039182169850169550866335f097f38d60006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b15156108f357600080fd5b6102c65a03f1151561090457600080fd5b5050506040518051905080610988575085600160a060020a031663a847a71c8d60006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b151561096c57600080fd5b6102c65a03f1151561097d57600080fd5b505050604051805190505b1561099257600080fd5b61099b8c610d15565b63ffffffff90811660608901908152600160a060020a0390921660208901529190911686526109ca9051613458565b60ff166040860152845163ffffffff1615806109fc575033600160a060020a03168560200151600160a060020a031614155b15610a0657600080fd5b600c54600160a060020a031663e8679512865160006040516040015260405163ffffffff83811660e060020a0282529190911660048201526024016040805180830381600087803b1515610a5957600080fd5b6102c65a03f11515610a6a57600080fd5b50505060405180519060200180519195509093505063ffffffff84161580610a93575060ff8316155b15610a9d57600080fd5b8260ff16856040015160ff161015610ab457600080fd5b6018855163ffffffff1611610ade576000610ace8d6133ac565b1115610ad957600080fd5b610af7565b610aec8551338d8d8d612a54565b1515610af757600080fd5b600f54600160a060020a0316915081630963d4b7853360006040516020015260405163ffffffff84811660e060020a028252929092166004830152600160a060020a0316602482015260606044820152600c60648201527f2e2e6e616d65206d652e2e2e0000000000000000000000000000000000000000608482015260a401602060405180830381600087803b1515610b9057600080fd5b6102c65a03f11515610ba157600080fd5b5050506040518051915050600160a060020a0382166381b230428d60405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401600060405180830381600087803b1515610bfb57600080fd5b6102c65a03f11515610c0c57600080fd5b50505087600160a060020a03166354b670578d8360405160e060020a63ffffffff851602815267ffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b1515610c6657600080fd5b6102c65a03f11515610c7757600080fd5b50505033600160a060020a03167f5b37de5d4b6cf3f52fe00ba7b9a2ca6bffc9501f341f008ef3cb0e4a3aa7eaad8d8360405167ffffffffffffffff909216825260208201526040908101905180910390a2505050505050505050505050565b600954600160a060020a031681565b600860205260009081526040902080546001820154600283015460039093015463ffffffff9283169391921684565b600080600080610d23613fb9565b600954600160a060020a0316915081630720246087600060405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b1515610d8057600080fd5b6102c65a03f11515610d9157600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08901525063ffffffff90811660c088015290811660a08701529081166080860152600160a060020a039091166040850152166020830190815267ffffffffffffffff9091168252518160400151826080015194509450945050509193909250565b60016020526000908152604090205460ff1681565b600a54600160a060020a031681565b60065481565b60045481565b600080600080610e5e613f92565b600080600080610e6d8a6136bb565b91995097509550601863ffffffff89161180610e8f57508763ffffffff166014145b80610ea057508763ffffffff166015145b15610eae576000985061100e565b63ffffffff88166000908152600860205260409081902090608090519081016040908152825463ffffffff908116835260018401546020840152600284015491830191909152600390920154909116606082019081529095505163ffffffff168763ffffffff161115610f24576000985061100e565b8460200151935084604001518560200151811515610f3e57fe5b04925082856060015163ffffffff161115610fa45782856060015163ffffffff16039150846060015163ffffffff166002836001018488604001510202811515610f8457fe5b048660200151876060015163ffffffff160201811515610fa057fe5b0493505b84602001519050828763ffffffff161115610fd157610fc98763ffffffff1684613f53565b856040015102015b808610610fe1576000985061100e565b61271061100185613a9889850302811515610ff857fe5b046127106128d9565b81151561100a57fe5b0498505b5050505050505050919050565b600080548190819033600160a060020a039081169116148061105b5750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561106657600080fd5b506001915060649050805b606460ff8416116110c45760ff83166000908152600760205260409020805463ffffffff191663ffffffff83811691909117909155600190930192600a90600b8402160460050191508181019050611071565b505050565b600f54600160a060020a031681565b600d54600160a060020a031681565b60005433600160a060020a0390811691161461110257600080fd5b6002805460ff1916911515919091179055565b602081565b60005474010000000000000000000000000000000000000000900461ffff1681565b60005433600160a060020a03908116911614806111775750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561118257600080fd5b30600160a060020a03163181111561119957600080fd5b600160a060020a03821681156108fc0282604051600060405180830381858888f1935050505015156111ca57600080fd5b5050565b600c54600160a060020a031681565b60025460009081908190819060ff16156111f657600080fd5b60005433600160a060020a03908116911614806112315750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561123c57600080fd5b600b54600160a060020a0316935060008463aeb669eb87836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561129957600080fd5b6102c65a03f115156112aa57600080fd5b5050506040518051905067ffffffffffffffff1611156112c957600080fd5b611337856001430386600160a060020a031663fdb4dbe06000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561131757600080fd5b6102c65a03f1151561132857600080fd5b505050604051805190506129ea565b600c54909350600160a060020a0316634cd3745d8460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561138b57600080fd5b6102c65a03f1151561139c57600080fd5b505050604051805192505063ffffffff821615156113b957600080fd5b83600160a060020a0316630bc954dc60008488600454888115156113d957fe5b0660035401610e1002420160006040516020015260405163ffffffff86811660e060020a02825267ffffffffffffffff959095166004820152929093166024830152600160a060020a031660448201526064810191909152608401602060405180830381600087803b151561144d57600080fd5b6102c65a03f1151561145e57600080fd5b5050506040518051915050600160a060020a0385167f3c3333d9f85107cb0696d2fe51b5060309ca58fa67419084a4159f1f0c76056c60008360405191825267ffffffffffffffff1660208201526040908101905180910390a25050505050565b60005433600160a060020a03908116911614806114fa5750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561150557600080fd5b608060405190810160409081526001808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101766060840152600052600890527fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526002808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101986060840152600052600890527f6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea90418151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526003808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101756060840152600052600890527f625b35f5e76f098dd7c3a05b10e2e5e78a4a01228d60c3b143426cdf36d264558151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260048083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101b56060840152600052600890527f9321edea6e3be4df59a344b401fab4f888b556fda1f954244cff9204bad624b88151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600580835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101f16060840152600052600890527f91238f30f286c9a1c6e901c4eda3b214c381c846e3dbe48df95c21488e8e1fdb8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526006808352670429d069189e0000602080850191909152660aa87bee5380009284019290925261017c6060840152600052600890527f13acf3fc7bed94759963f076d5d3443d88732026bffc8253bdf4a6e65f21ecc58151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260078083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101596060840152600052600890527f24cd397636bedc6cf9b490d0edd57c769c19b367fb7d5c2344ae1ddc7d21c1448151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600880835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526102066060840152600081905290527fe4c2e8be66af8dd2d277000f4f830a10546f8b14e45cd850b875c98ba0f0d2cd8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600980835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101bf6060840152600052600890527f82c9e868e45873bb5a4f47c09e14a12f6a6314e13aabd611e4374762bb4e8b368151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600a8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261017c6060840152600052600890527f586689db7536874b78a6eac0f58556a56a106985743f7c16a699b27bb02f88bd8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600b8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101626060840152600052600890527fcb250a1a60f48f70f08c912424f39071fd9a8b7099a72dffd251fce0294f37498151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600c8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015a6060840152600052600890527faba08fc86a199da17c4b45fa0fb586714474d27e5e1f0220658b6275561b2e188151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600d8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015f6060840152600052600890527f9006e1a1959cda25aa0dba7b7a958efb843c4c8cb81a2c2fb8637a074e0818f28151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600e8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101526060840152600052600890527fb6457486547dfd0925a66a479476c3a3e54935ea6192a908abe6bd58ec247b418151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600f8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101556060840152600052600890527f8fab3b3b6d3bf24f9b00213fe8dda2fb1e188fcd88f523fcb711ff1f6aed59e38151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260108083526704db732547630000602080850191909152660c6f3b40b6c000928401929092526101806060840152600052600890527fdf6cae10d416b4d6f459eba806bebc4b85f190dfac647ab7cb4cd2638815444c8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526011808352670de0b6b3a7640000602080850191909152662386f26fc10000928401929092526101316060840152600052600890527fbb47c685b7a6169f9415fd073108f8b7da3e741b7dde8513850bca404684fa978151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601280835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101ab6060840152600052600890527f24c3f2390203786f976c5d43dee94e7a42ec7bdf845f67695ebd67f3c39c18148151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526013808352670de0b6b3a7640000602080850191909152662386f26fc10000928401929092526101306060840152600052600890527f1dfebf40b0462aa6ee8060c248d0caec9e679d370b76490bfe8441dbbab052168151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601480835267058d15e17628000060208085019190915266b1a2bc2ec500009284019290925260526060840152600052600890527fbb1110247bce6eaaf3cb168d5660645ab99866afefe1e7c6fa4388014157e5ba8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260158083526001602080850182905292840152607b6060840152600052600890527fb29f796e1978e2043677a1f0396c8f9106e30db6bae4734a9de4f7fffa6f3fb88151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260168083526702c68af0bb14000060208085019190915266038d7ea4c68000928401929092526101d46060840152600052600890527fe34c1268cf989e507da6d357c2274f08fc653db420491bb916dfda9e5c93bd558151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260178083526706f05b59d3b200006020808501919091526608e1bc9bf040009284019290925261012e6060840152600052600890527f69dd648f27f59b1ee254e03cc0e7f3101ebd5768b9ab5a13693b554f528fc0c58151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526018808352670de0b6b3a76400006020808501919091526611c37937e080009284019290925260c36060840152600052600890527f83ba890607818823e46eb1e5ed8f7282277ac60de8c863727688b48d92a8da6d8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550565b60005433600160a060020a039081169116146125a457600080fd5b600160a060020a03811660009081526001602052604090205460ff16151561263057600160a060020a03811660009081526001602081905260408220805460ff191682179055815461ffff7401000000000000000000000000000000000000000080830482169093011690910275ffff0000000000000000000000000000000000000000199091161790555b50565b601881565b60076020526000908152604090205463ffffffff1681565b60025460009081908190819060ff161561266957600080fd5b600654341461267757600080fd5b600b54600160a060020a0316935060008463aeb669eb33836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156126d457600080fd5b6102c65a03f115156126e557600080fd5b5050506040518051905067ffffffffffffffff16111561270457600080fd5b612752336001430386600160a060020a031663fdb4dbe06000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561131757600080fd5b600c54909350600160a060020a0316634cd3745d8460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156127a657600080fd5b6102c65a03f115156127b757600080fd5b505050604051805192505063ffffffff821615156127d457600080fd5b83600160a060020a0316630bc954dc60008433600454888115156127f457fe5b0660035401610e1002420160006040516020015260405163ffffffff86811660e060020a02825267ffffffffffffffff959095166004820152929093166024830152600160a060020a031660448201526064810191909152608401602060405180830381600087803b151561286857600080fd5b6102c65a03f1151561287957600080fd5b5050506040518051915050600160a060020a0333167f3c3333d9f85107cb0696d2fe51b5060309ca58fa67419084a4159f1f0c76056c60008360405191825267ffffffffffffffff1660208201526040908101905180910390a250505050565b600081826001848601038115156128ec57fe5b04029392505050565b60005433600160a060020a03908116911614806129305750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561293b57600080fd5b6009805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03998a1617909155600a8054821697891697909717909655600b8054871695881695909517909455600c8054861693871693909317909255600d80548516918616919091179055600e80548416918516919091179055600f80549092169216919091179055565b600054600160a060020a031681565b60035481565b600b54600160a060020a031681565b600082408483604051928352600160a060020a03919091166c0100000000000000000000000002602083015267ffffffffffffffff167801000000000000000000000000000000000000000000000000026034820152603c01604051908190039020949350505050565b600080600080612a62614005565b612a6a614005565b600a54600160a060020a0316945060009350839250846388e9abb68c8580604051602001526040518363ffffffff1660e060020a028152600401808363ffffffff1663ffffffff168152602001826001811115612ac357fe5b60ff16815260200192505050602060405180830381600087803b1515612ae857600080fd5b6102c65a03f11515612af957600080fd5b50505060405180519450505b6000841115612bcc5760018403935084600160a060020a0316635b6263398c6000876000604051602001526040518463ffffffff1660e060020a028152600401808463ffffffff1663ffffffff168152602001836001811115612b6457fe5b60ff1681526020018281526020019350505050602060405180830381600087803b1515612b9057600080fd5b6102c65a03f11515612ba157600080fd5b50505060405180519050828560038110612bb757fe5b63ffffffff9092166020929092020152612b05565b60008967ffffffffffffffff161115612c0b57612be9898b613900565b925063ffffffff83161515612c015760009550612db3565b63ffffffff831681525b60008867ffffffffffffffff161115612c4d57612c28888b613900565b925063ffffffff83161515612c405760009550612db3565b63ffffffff831660208201525b60008767ffffffffffffffff161115612c8f57612c6a878b613900565b925063ffffffff83161515612c825760009550612db3565b63ffffffff831660408201525b6000815163ffffffff16118015612cd05750602081015163ffffffff16815163ffffffff161480612cd05750604081015163ffffffff16815163ffffffff16145b15612cde5760009550612db3565b6000602082015163ffffffff16118015612d0b5750604081015163ffffffff16602082015163ffffffff16145b15612d195760009550612db3565b600093505b6003841015612dae57818460038110612d3357fe5b6020020151925060008363ffffffff16118015612d5d5750805163ffffffff168363ffffffff1614155b8015612d795750602081015163ffffffff168363ffffffff1614155b8015612d955750604081015163ffffffff168363ffffffff1614155b15612da35760009550612db3565b600190930192612d1e565b600195505b505050505095945050505050565b6000612dcb61402d565b600254600090819060ff1615612de057600080fd5b600b54600160a060020a031693508363710ad12833600060405160c0015260405160e060020a63ffffffff8416028152600160a060020a03909116600482015260240160c060405180830381600087803b1515612e3c57600080fd5b6102c65a03f11515612e4d57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805167ffffffffffffffff90811660a08b015260808a019290925250600160a060020a03909116606088015263ffffffff90911660408701529081166020860152168352825167ffffffffffffffff161580612ee3575033600160a060020a03168360600151600160a060020a031614155b80612efc575060008360a0015167ffffffffffffffff16115b15612f0657600080fd5b6005543414612f1457600080fd5b600f54600160a060020a0316915081630963d4b76040850151856060015160006040516020015260405163ffffffff84811660e060020a028252929092166004830152600160a060020a0316602482015260606044820152600c60648201527f2e2e6e616d65206d652e2e2e0000000000000000000000000000000000000000608482015260a401602060405180830381600087803b1515612fb557600080fd5b6102c65a03f11515612fc657600080fd5b5050506040518051915050600160a060020a0384166337bd186884518360405160e060020a63ffffffff851602815267ffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b151561302957600080fd5b6102c65a03f1151561303a57600080fd5b5050508260600151600160a060020a03167f484eebcfa9cf8e34a4eefdfeaeced0cb795d3fcc1fa8ae1c8380dc3553a1e22e84518360405167ffffffffffffffff909216825260208201526040908101905180910390a250505050565b60006130a161402d565b600254600090819060ff16156130b657600080fd5b60005433600160a060020a03908116911614806130f15750600160a060020a03331660009081526001602081905260409091205460ff161515145b15156130fc57600080fd5b600b54600160a060020a031693508363710ad12886600060405160c0015260405160e060020a63ffffffff8416028152600160a060020a03909116600482015260240160c060405180830381600087803b151561315857600080fd5b6102c65a03f1151561316957600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805167ffffffffffffffff90811660a08b015260808a019290925250600160a060020a03909116606088015263ffffffff90911660408701529081166020860152168352825167ffffffffffffffff1615806131ff575084600160a060020a03168360600151600160a060020a031614155b80613218575060008360a0015167ffffffffffffffff16115b1561322257600080fd5b600f54600160a060020a0316915081630963d4b76040850151856060015160006040516020015260405163ffffffff84811660e060020a028252929092166004830152600160a060020a0316602482015260606044820152600c60648201527f2e2e6e616d65206d652e2e2e0000000000000000000000000000000000000000608482015260a401602060405180830381600087803b15156132c357600080fd5b6102c65a03f115156132d457600080fd5b5050506040518051915050600160a060020a0384166337bd186884518360405160e060020a63ffffffff851602815267ffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b151561333757600080fd5b6102c65a03f1151561334857600080fd5b5050508260600151600160a060020a03167f484eebcfa9cf8e34a4eefdfeaeced0cb795d3fcc1fa8ae1c8380dc3553a1e22e84518360405167ffffffffffffffff909216825260208201526040908101905180910390a25050505050565b60055481565b600b54600090600160a060020a0316816133c584610e50565b9050600081111561344c5781600160a060020a031663ec0ba0068560006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b151561342857600080fd5b6102c65a03f1151561343957600080fd5b5050506040518051905081039250613451565b600092505b5050919050565b600060016064825b8160ff168360ff1610156134b257600260ff848401160460ff811660009081526007602052604090205490915063ffffffff90811690861610156134a6578091506134ad565b8060010192505b613460565b50909392505050565b60005433600160a060020a039081169116146134d657600080fd5b600160a060020a03811660009081526001602081905260409091205460ff161515141561263057600160a060020a03166000908152600160205260408120805460ff19169055805475ffff0000000000000000000000000000000000000000198116740100000000000000000000000000000000000000009182900461ffff9081166000190116909102179055565b600061356f61402d565b600254600090819060ff161561358457600080fd5b600b54600160a060020a031693508363710ad12833600060405160c0015260405160e060020a63ffffffff8416028152600160a060020a03909116600482015260240160c060405180830381600087803b15156135e057600080fd5b6102c65a03f115156135f157600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805167ffffffffffffffff90811660a08b015260808a019290925250600160a060020a03909116606088015263ffffffff90911660408701529081166020860152168352825167ffffffffffffffff161580613687575033600160a060020a03168360600151600160a060020a031614155b1561369157600080fd5b60008360a0015167ffffffffffffffff1611806136b15750428360800151115b15612f1457600080fd5b6000806000806136c9613fb9565b6136d1613f92565b600954600160a060020a031692506000836307202460898360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561372f57600080fd5b6102c65a03f1151561374057600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08b01525063ffffffff90811660c08a015290811660a08901529081166080880152600160a060020a039091166040870152166020850190815267ffffffffffffffff90911684526008906000905163ffffffff1663ffffffff16815260200190815260200160002060806040519081016040908152825463ffffffff908116835260018401546020808501919091526002850154928401929092526003909301549092166060820152925083015163ffffffff16825163ffffffff16146138445781518360a00151909750955060009450613896565b506000606082015163ffffffff168360a0015163ffffffff161015613871578260a0015182606001510390505b82602001518360a0015161388f8363ffffffff168560400151613f67565b9650965096505b505050509193909250565b600681565b60005433600160a060020a03908116911614806138e15750600160a060020a03331660009081526001602081905260409091205460ff161515145b15156138ec57600080fd5b600593909355600691909155600355600455565b60008061390b613fb9565b600954600160a060020a031691506000826307202460878360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b151561396957600080fd5b6102c65a03f1151561397a57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08a0152505063ffffffff9182166080880152600160a060020a03909216604087019081529216602086015267ffffffffffffffff909216845290915051600160a060020a03868116911614613a005760009350613a08565b816020015193505b50505092915050565b600080600080600080600080600080600260009054906101000a900460ff16151515613a3c57600080fd5b600b54600160a060020a0316995060008a63aeb669eb33836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613a9957600080fd5b6102c65a03f11515613aaa57600080fd5b5050506040518051905067ffffffffffffffff161115613ac957600080fd5b600e54600160a060020a031663a847a71c8c60006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b1515613b2357600080fd5b6102c65a03f11515613b3457600080fd5b5050506040518051905015613b4857600080fd5b613b518b610d15565b919a5098509650613b6187613458565b955063ffffffff89161580613b88575033600160a060020a031688600160a060020a031614155b15613b9257600080fd5b60009450601863ffffffff8a1611613c3457613bad8b610e50565b8a600160a060020a031663ec0ba0068d60006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b1515613c0557600080fd5b6102c65a03f11515613c1657600080fd5b50505060405180519050101515613c2c57600080fd5b859450613cdf565b600c54600160a060020a031663e94b6aef8a60006040516040015260405163ffffffff83811660e060020a0282529190911660048201526024016040805180830381600087803b1515613c8657600080fd5b6102c65a03f11515613c9757600080fd5b505050604051805190602001805196509094505060ff84161580613cc057508360ff168660ff16105b80613cd057508460ff168660ff16105b15613cda57600080fd5b938503935b613d2d33600143038c600160a060020a031663fdb4dbe06000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561131757600080fd5b925089600160a060020a0316630bc954dc8c8b3360045488811515613d4e57fe5b0660035401610e1002420160006040516020015260405163ffffffff86811660e060020a02825267ffffffffffffffff959095166004820152929093166024830152600160a060020a031660448201526064810191909152608401602060405180830381600087803b1515613dc257600080fd5b6102c65a03f11515613dd357600080fd5b5050506040518051905091508560ff168560ff161015613e86575060095460ff6000198601166000908152600760205260409081902054600160a060020a039092169182916331afa55f918e9163ffffffff9091168b03905163ffffffff84811660e060020a02825267ffffffffffffffff93909316600482015291166024820152604401600060405180830381600087803b1515613e7157600080fd5b6102c65a03f11515613e8257600080fd5b5050505b33600160a060020a03167f3c3333d9f85107cb0696d2fe51b5060309ca58fa67419084a4159f1f0c76056c8c8460405167ffffffffffffffff9283168152911660208201526040908101905180910390a25050505050505050505050565b60025460ff1681565b60005433600160a060020a03908116911614613f0857600080fd5b600160a060020a038116156126305760008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b600e54600160a060020a031681565b60008082841015613f6057fe5b5050900390565b6000828202831580613f835750828482811515613f8057fe5b04145b1515613f8b57fe5b9392505050565b60806040519081016040908152600080835260208301819052908201819052606082015290565b61010060405190810160409081526000808352602083018190529082015260608101613fe3614062565b8152600060208201819052604082018190526060820181905260809091015290565b60606040519081016040526003815b6000815260001990910190602001816140145790505090565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a082015290565b602060405190810160405260008152905600a165627a7a723058200df28e24a3b4d6911d0a59e949dbca661dbfba03cb13c02724709ddedc9e37470029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000abc1c404424bdf24c19a5cc5ef8f47781d18eb3e0000000000000000000000001fc7bd85293f3982f40d52698df8d26be89360d6000000000000000000000000fdf4411669fc6e8951a6ae987307d7582fda7a050000000000000000000000000c3865a8f6678cae495a60240700840204a4e604000000000000000000000000022c635044ba01ced1e098bc32e62a954147f2de0000000000000000000000004ba72f0f8dad13709ee28a992869e79d0fe470300000000000000000000000005d00d312e171be5342067c09bae883f9bcb2003b
-----Decoded View---------------
Arg [0] : _dataContract (address): 0xABC1c404424BDF24C19A5cC5EF8F47781D18Eb3E
Arg [1] : _worldContract (address): 0x1fC7bD85293f3982f40D52698DF8D26be89360d6
Arg [2] : _transformDataContract (address): 0xfdF4411669fC6e8951A6aE987307D7582FDA7A05
Arg [3] : _transformSettingContract (address): 0x0C3865A8f6678cae495A60240700840204a4e604
Arg [4] : _battleContract (address): 0x022c635044bA01cEd1e098bC32E62A954147F2de
Arg [5] : _tradeContract (address): 0x4bA72F0F8DAd13709EE28a992869E79d0fE47030
Arg [6] : _monsterNFTContract (address): 0x5D00d312e171Be5342067c09BaE883f9Bcb2003B
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000abc1c404424bdf24c19a5cc5ef8f47781d18eb3e
Arg [1] : 0000000000000000000000001fc7bd85293f3982f40d52698df8d26be89360d6
Arg [2] : 000000000000000000000000fdf4411669fc6e8951a6ae987307d7582fda7a05
Arg [3] : 0000000000000000000000000c3865a8f6678cae495a60240700840204a4e604
Arg [4] : 000000000000000000000000022c635044ba01ced1e098bc32e62a954147f2de
Arg [5] : 0000000000000000000000004ba72f0f8dad13709ee28a992869e79d0fe47030
Arg [6] : 0000000000000000000000005d00d312e171be5342067c09bae883f9bcb2003b
Swarm Source
bzzr://0df28e24a3b4d6911d0a59e949dbca661dbfba03cb13c02724709ddedc9e3747
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.