Address Details
contract

0x4Dc2562e7DEE6859d7c41A779ac843584984D8B8

Contract Name
SmartRentFactory
Creator
0x022cba–2ddf2f at 0xc8ac20–cc9c6b
Balance
0 CELO ( )
Locked CELO Balance
0.00 CELO
Voting CELO Balance
0.00 CELO
Pending Unlocked Gold
0.00 CELO
Tokens
Fetching tokens...
Transactions
3 Transactions
Transfers
0 Transfers
Gas Used
4,546,209
Last Balance Update
5199403
This contract has been verified via Sourcify. View contract in Sourcify repository
Contract name:
SmartRentFactory




Optimization enabled
false
Compiler version
v0.5.16+commit.9c3226ce




EVM Version
istanbul




Verified at
2022-07-08T19:21:09.335478Z

/C/Users/User/Desktop/fyp/contracts/SmartRentFactory.sol

pragma solidity >=0.5.0;

import './SmartRentContract.sol';

contract SmartRentFactory {

    event NewLease(address contractAddress, address indexed landlord, address indexed tenant);

    string name = "Connected ";

    function createRent(
        string memory _landlord,
        string memory _tenant,
        address payable _landlordAddress,
        string memory _roomAddress,
        uint256 _startDate,
        uint256 _endDate,
        uint256 _deposit,
        uint256 _rent,
        address payable _tenantAddress
    ) public 
    {
        address newContract = address(new SmartRentContract(_landlord, _tenant, _landlordAddress, _roomAddress, _startDate, _endDate, _deposit, _rent, _tenantAddress));
        emit NewLease(newContract, _landlordAddress, _tenantAddress);
    }
}
        

/C/Users/User/Desktop/fyp/contracts/SmartRentContract.sol

// Learn more about Solidity here: https://solidity.readthedocs.io

// This statement specifies the compatible compiler versions
pragma solidity >=0.5.0;

// Declare a contract called HelloWorld
contract SmartRentContract {
    
    event TenantAssigned(address tenantAddress, uint rentAmount, uint rentDeposit);
    event TenantSigned(address tenantAddress);
    event DepositPaid(address tenantAddress, uint rentDeposit);
    event DepositWithdrawn(address tenantAddress, uint rentDeposit);
    event DepositClaimed(address landlordAddress, uint rentDeposit);
    event RentPaid(address tenantAddress, uint amount);
    event RentWithdrawn(address landlordAddress, uint amount);
    event ApprovedSmartRent(address tenant);

    address payable public landlordAddress;
    string public landlordName;
    string public tenantName;
    
    bool public isSigned = false;
    bool public hasPaidDeposit = false;
    
    mapping (address => bool) public tenantToSigned;
    address payable public tenantAddress;
    uint256 public rentAmount;
    uint256 public rentDeposit;
    uint256 public startDate;
    uint256 public endDate;
    string public roomAddress;

    uint256 public depositInContract = 0;
    uint256 public totalRentLeft;
    uint256 public rentHavePaid = 0;

    constructor(string memory _landlord,
            string memory _tenant,
            address payable _landlordAddress,
            string memory _roomAddress,
            uint256 _startDate,
            uint256 _endDate,
            uint256 _deposit,
            uint256 _rent,
            address payable _tenantAddress)
        public {
            landlordName = _landlord;
            tenantName = _tenant;
            landlordAddress = _landlordAddress;
            roomAddress = _roomAddress;
            startDate = _startDate;
            endDate = _endDate;
            rentDeposit = _deposit;
            rentAmount = _rent;
            totalRentLeft = _rent;
            tenantAddress = _tenantAddress;
    }

    modifier landlordOnly() {
        require(msg.sender == landlordAddress);
        _;
    }

    modifier tenantOnly() {
        require(msg.sender == tenantAddress);
        _;
    }

    modifier hasSigned() {
        require(isSigned == true, "Tenant must sign the contract before invoking this functionality");
        _;
    }

    modifier notZeroAddres(address addr){
        require(addr != address(0), "0th address is not allowed!");
        _;
    }

    function assignTenant(address _tenantAddress)
      external notZeroAddres(_tenantAddress) {
        require(_tenantAddress != landlordAddress, "Landlord is not allowed to be tenant at the same time");
        emit TenantAssigned(_tenantAddress, rentAmount, rentDeposit);
    }

    function signContract() public {
        require(isSigned == false);
        tenantToSigned[msg.sender] = true;
        isSigned = true;
        emit TenantSigned(msg.sender);
    }

    function payDeposit() external payable {
        require(hasPaidDeposit == false, "Tenant cannot pay deposit more than one time");
        require(isSigned == true, "Tenant need to sign the contract before paying deposit");
        hasPaidDeposit = true;
        depositInContract = depositInContract + msg.value;
        emit DepositPaid(msg.sender, msg.value);
    }

    function withdrawDeposit() external payable tenantOnly {
        require(hasPaidDeposit == true, "Tenant need to pay deposit first");
        require(block.timestamp > endDate, "Tenant can only withdraw deposit after period end");
        require(depositInContract > 0, "Deposit in contract cannot be empty");
        require(totalRentLeft == 0, "Tenant can only withdraw deposit after cleared all rental fee");
        tenantAddress.transfer(depositInContract);
        depositInContract = 0;
        emit DepositWithdrawn(msg.sender, rentDeposit);
    }

    function payRent() external payable tenantOnly {
        require(isSigned == true);
        require(hasPaidDeposit == true, "Tenant need to pay deposit first");
        require(msg.value <= totalRentLeft, "Amount inserted has exceed outstanding rent");
        require(block.timestamp < endDate);
        totalRentLeft = totalRentLeft - msg.value;
        rentHavePaid = msg.value;
        emit RentPaid(msg.sender, msg.value);
    }

    function withdrawRent() external payable landlordOnly {
        require(rentHavePaid != 0, "Tenant has not paid any rent yet");
        landlordAddress.transfer(rentHavePaid);
        emit RentWithdrawn(msg.sender, rentHavePaid);
        rentHavePaid = 0;
    }

    function claimDeposit() external payable landlordOnly {
        require(block.timestamp > endDate, "Landlord can only claim deposit after period end");
        require(totalRentLeft != 0, "Landlord can only claim deposit if tenant did not settle their rent after period end");
        landlordAddress.transfer(depositInContract);
        depositInContract = 0;
        emit DepositClaimed(msg.sender, rentDeposit);
    }

}
          

Contract ABI

[{"type":"event","name":"NewLease","inputs":[{"type":"address","name":"contractAddress","internalType":"address","indexed":false},{"type":"address","name":"landlord","internalType":"address","indexed":true},{"type":"address","name":"tenant","internalType":"address","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"createRent","inputs":[{"type":"string","name":"_landlord","internalType":"string"},{"type":"string","name":"_tenant","internalType":"string"},{"type":"address","name":"_landlordAddress","internalType":"address payable"},{"type":"string","name":"_roomAddress","internalType":"string"},{"type":"uint256","name":"_startDate","internalType":"uint256"},{"type":"uint256","name":"_endDate","internalType":"uint256"},{"type":"uint256","name":"_deposit","internalType":"uint256"},{"type":"uint256","name":"_rent","internalType":"uint256"},{"type":"address","name":"_tenantAddress","internalType":"address payable"}],"constant":false}]
              

Contract Creation Code

0x60806040526040518060400160405280600a81526020017f436f6e6e656374656420000000000000000000000000000000000000000000008152506000908051906020019061004f929190610062565b5034801561005c57600080fd5b50610107565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100a357805160ff19168380011785556100d1565b828001600101855582156100d1579182015b828111156100d05782518255916020019190600101906100b5565b5b5090506100de91906100e2565b5090565b61010491905b808211156101005760008160009055506001016100e8565b5090565b90565b612161806101166000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80635c12b5d114610030575b600080fd5b610280600480360361012081101561004757600080fd5b810190808035906020019064010000000081111561006457600080fd5b82018360208201111561007657600080fd5b8035906020019184600183028401116401000000008311171561009857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156100fb57600080fd5b82018360208201111561010d57600080fd5b8035906020019184600183028401116401000000008311171561012f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156101b257600080fd5b8201836020820111156101c457600080fd5b803590602001918460018302840111640100000000831117156101e657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610282565b005b60008989898989898989896040516102999061051e565b8080602001806020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018981526020018881526020018781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184810384528d818151815260200191508051906020019080838360005b8381101561035a57808201518184015260208101905061033f565b50505050905090810190601f1680156103875780820380516001836020036101000a031916815260200191505b5084810383528c818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b5084810382528a818151815260200191508051906020019080838360005b8381101561042657808201518184015260208101905061040b565b50505050905090810190601f1680156104535780820380516001836020036101000a031916815260200191505b509c50505050505050505050505050604051809103906000f08015801561047e573d6000803e3d6000fd5b5090508173ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f6a5e83232efe4dca9454d60fbe19e482e52f973d7fa4123b439c1f9c338a8b7983604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a350505050505050505050565b611c018061052c8339019056fe60806040526000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055506000600b556000600d553480156200005157600080fd5b5060405162001c0138038062001c0183398181016040526101208110156200007857600080fd5b81019080805160405193929190846401000000008211156200009957600080fd5b83820191506020820185811115620000b057600080fd5b8251866001820283011164010000000082111715620000ce57600080fd5b8083526020830192505050908051906020019080838360005b8381101562000104578082015181840152602081019050620000e7565b50505050905090810190601f168015620001325780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200015657600080fd5b838201915060208201858111156200016d57600080fd5b82518660018202830111640100000000821117156200018b57600080fd5b8083526020830192505050908051906020019080838360005b83811015620001c1578082015181840152602081019050620001a4565b50505050905090810190601f168015620001ef5780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190805160405193929190846401000000008211156200021d57600080fd5b838201915060208201858111156200023457600080fd5b82518660018202830111640100000000821117156200025257600080fd5b8083526020830192505050908051906020019080838360005b83811015620002885780820151818401526020810190506200026b565b50505050905090810190601f168015620002b65780820380516001836020036101000a031916815260200191505b50604052602001805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505088600190805190602001906200030a929190620003f0565b50876002908051906020019062000323929190620003f0565b50866000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600a90805190602001906200037c929190620003f0565b508460088190555083600981905550826007819055508160068190555081600c8190555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050506200049f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200043357805160ff191683800117855562000464565b8280016001018555821562000464579182015b828111156200046357825182559160200191906001019062000446565b5b50905062000473919062000477565b5090565b6200049c91905b80821115620004985760008160009055506001016200047e565b5090565b90565b61175280620004af6000396000f3fe6080604052600436106101355760003560e01c8063a709c4fe116100ab578063d1aac1711161006f578063d1aac171146103f2578063d964f29e14610443578063e1746af9146104d3578063e66a6b221461053c578063f63e7db21461056b578063f8ef1e13146105fb57610135565b8063a709c4fe14610324578063aca1feea1461032e578063b8b4f1a014610385578063bf8c0efc1461039c578063c24a0f8b146103c757610135565b80635c274b86116100fd5780635c274b86146101ff5780635f696ec3146102095780636322182e14610234578063906b7fc71461023e5780639419bc2914610269578063a3073fab146102f957610135565b806302d8db081461013a5780630b97bc8614610191578063117df088146101bc57806329d07a51146101c657806332dd81f6146101d0575b600080fd5b34801561014657600080fd5b5061014f610626565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019d57600080fd5b506101a661064b565b6040518082815260200191505060405180910390f35b6101c4610651565b005b6101ce610926565b005b3480156101dc57600080fd5b506101e5610b16565b604051808215151515815260200191505060405180910390f35b610207610b29565b005b34801561021557600080fd5b5061021e610c94565b6040518082815260200191505060405180910390f35b61023c610c9a565b005b34801561024a57600080fd5b50610253610e4d565b6040518082815260200191505060405180910390f35b34801561027557600080fd5b5061027e610e53565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102be5780820151818401526020810190506102a3565b50505050905090810190601f1680156102eb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030557600080fd5b5061030e610ef1565b6040518082815260200191505060405180910390f35b61032c610ef7565b005b34801561033a57600080fd5b506103436110e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561039157600080fd5b5061039a611108565b005b3480156103a857600080fd5b506103b1611200565b6040518082815260200191505060405180910390f35b3480156103d357600080fd5b506103dc611206565b6040518082815260200191505060405180910390f35b3480156103fe57600080fd5b506104416004803603602081101561041557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061120c565b005b34801561044f57600080fd5b506104586113d1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561049857808201518184015260208101905061047d565b50505050905090810190601f1680156104c55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104df57600080fd5b50610522600480360360208110156104f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061146f565b604051808215151515815260200191505060405180910390f35b34801561054857600080fd5b5061055161148f565b604051808215151515815260200191505060405180910390f35b34801561057757600080fd5b506105806114a2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105c05780820151818401526020810190506105a5565b50505050905090810190601f1680156105ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561060757600080fd5b50610610611540565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ab57600080fd5b60011515600360019054906101000a900460ff16151514610734576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f54656e616e74206e65656420746f20706179206465706f73697420666972737481525060200191505060405180910390fd5b600954421161078e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806115e06031913960400191505060405180910390fd5b6000600b54116107e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116656023913960400191505060405180910390fd5b6000600c5414610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806115a3603d913960400191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600b549081150290604051600060405180830381858888f193505050501580156108ae573d6000803e3d6000fd5b506000600b819055507f4482101800a5c2e900f4156e57e05e19ffd7b366cde579553d723fd3abb2180e33600754604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461097f57600080fd5b60095442116109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806115476030913960400191505060405180910390fd5b6000600c541415610a35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260548152602001806116116054913960600191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600b549081150290604051600060405180830381858888f19350505050158015610a9e573d6000803e3d6000fd5b506000600b819055507fe800e3ea37ded367af4fce9aa5ecaa72b693f315a2c3b6c7a3d07c84196515fb33600754604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b600360019054906101000a900460ff1681565b60001515600360019054906101000a900460ff16151514610b95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611577602c913960400191505060405180910390fd5b60011515600360009054906101000a900460ff16151514610c01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806116e86036913960400191505060405180910390fd5b6001600360016101000a81548160ff02191690831515021790555034600b5401600b819055507ff1953715a33b9e021c0f2cf12911e8ac25fdb177bf6fc92d1331ae05201fe9f63334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b600c5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cf357600080fd5b6000600d541415610d6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f54656e616e7420686173206e6f74207061696420616e792072656e742079657481525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600d549081150290604051600060405180830381858888f19350505050158015610dd5573d6000803e3d6000fd5b507ffeb9f3b8586fb3823735104fd243164bdb90fcd9e989f902e96eb5b26bed4e3833600d54604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16000600d81905550565b600b5481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ee95780601f10610ebe57610100808354040283529160200191610ee9565b820191906000526020600020905b815481529060010190602001808311610ecc57829003601f168201915b505050505081565b600d5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f5157600080fd5b60011515600360009054906101000a900460ff16151514610f7157600080fd5b60011515600360019054906101000a900460ff16151514610ffa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f54656e616e74206e65656420746f20706179206465706f73697420666972737481525060200191505060405180910390fd5b600c54341115611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806116bd602b913960400191505060405180910390fd5b600954421061106357600080fd5b34600c5403600c8190555034600d819055507f03b5033869479e8a98af42b272f05933f60489fe9fb43d63e11a6c31f3fa74743334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60001515600360009054906101000a900460ff1615151461112857600080fd5b6001600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360006101000a81548160ff0219169083151502179055507fe653009d32c7245a6ff858fa3a804f5beb3b19b4bbe48178446e966401d8389433604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60075481565b60095481565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f3074682061646472657373206973206e6f7420616c6c6f77656421000000000081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611356576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806116886035913960400191505060405180910390fd5b7ff32dc6bb034b9afc20d4c7daa180b08e89cac33817a6836595b1021c4347620482600654600754604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15050565b600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114675780601f1061143c57610100808354040283529160200191611467565b820191906000526020600020905b81548152906001019060200180831161144a57829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900460ff1681565b600360009054906101000a900460ff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115385780601f1061150d57610100808354040283529160200191611538565b820191906000526020600020905b81548152906001019060200180831161151b57829003601f168201915b505050505081565b6006548156fe4c616e646c6f72642063616e206f6e6c7920636c61696d206465706f73697420616674657220706572696f6420656e6454656e616e742063616e6e6f7420706179206465706f736974206d6f7265207468616e206f6e652074696d6554656e616e742063616e206f6e6c79207769746864726177206465706f73697420616674657220636c656172656420616c6c2072656e74616c2066656554656e616e742063616e206f6e6c79207769746864726177206465706f73697420616674657220706572696f6420656e644c616e646c6f72642063616e206f6e6c7920636c61696d206465706f7369742069662074656e616e7420646964206e6f7420736574746c652074686569722072656e7420616674657220706572696f6420656e644465706f73697420696e20636f6e74726163742063616e6e6f7420626520656d7074794c616e646c6f7264206973206e6f7420616c6c6f77656420746f2062652074656e616e74206174207468652073616d652074696d65416d6f756e7420696e7365727465642068617320657863656564206f75747374616e64696e672072656e7454656e616e74206e65656420746f207369676e2074686520636f6e7472616374206265666f726520706179696e67206465706f736974a265627a7a723158203f265ae78c7c2eaa23e92f18131c713b44a8c5717938d23d614dfa89cfb1931b64736f6c63430005100032a265627a7a72315820fac68cc60462ecf2c94a12bde7c2e64126ec4bd9ab6597f63144db2b41aa60a964736f6c63430005100032

Deployed ByteCode

0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80635c12b5d114610030575b600080fd5b610280600480360361012081101561004757600080fd5b810190808035906020019064010000000081111561006457600080fd5b82018360208201111561007657600080fd5b8035906020019184600183028401116401000000008311171561009857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156100fb57600080fd5b82018360208201111561010d57600080fd5b8035906020019184600183028401116401000000008311171561012f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156101b257600080fd5b8201836020820111156101c457600080fd5b803590602001918460018302840111640100000000831117156101e657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610282565b005b60008989898989898989896040516102999061051e565b8080602001806020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018981526020018881526020018781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184810384528d818151815260200191508051906020019080838360005b8381101561035a57808201518184015260208101905061033f565b50505050905090810190601f1680156103875780820380516001836020036101000a031916815260200191505b5084810383528c818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b5084810382528a818151815260200191508051906020019080838360005b8381101561042657808201518184015260208101905061040b565b50505050905090810190601f1680156104535780820380516001836020036101000a031916815260200191505b509c50505050505050505050505050604051809103906000f08015801561047e573d6000803e3d6000fd5b5090508173ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f6a5e83232efe4dca9454d60fbe19e482e52f973d7fa4123b439c1f9c338a8b7983604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a350505050505050505050565b611c018061052c8339019056fe60806040526000600360006101000a81548160ff0219169083151502179055506000600360016101000a81548160ff0219169083151502179055506000600b556000600d553480156200005157600080fd5b5060405162001c0138038062001c0183398181016040526101208110156200007857600080fd5b81019080805160405193929190846401000000008211156200009957600080fd5b83820191506020820185811115620000b057600080fd5b8251866001820283011164010000000082111715620000ce57600080fd5b8083526020830192505050908051906020019080838360005b8381101562000104578082015181840152602081019050620000e7565b50505050905090810190601f168015620001325780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200015657600080fd5b838201915060208201858111156200016d57600080fd5b82518660018202830111640100000000821117156200018b57600080fd5b8083526020830192505050908051906020019080838360005b83811015620001c1578082015181840152602081019050620001a4565b50505050905090810190601f168015620001ef5780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190805160405193929190846401000000008211156200021d57600080fd5b838201915060208201858111156200023457600080fd5b82518660018202830111640100000000821117156200025257600080fd5b8083526020830192505050908051906020019080838360005b83811015620002885780820151818401526020810190506200026b565b50505050905090810190601f168015620002b65780820380516001836020036101000a031916815260200191505b50604052602001805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505088600190805190602001906200030a929190620003f0565b50876002908051906020019062000323929190620003f0565b50866000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600a90805190602001906200037c929190620003f0565b508460088190555083600981905550826007819055508160068190555081600c8190555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050506200049f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200043357805160ff191683800117855562000464565b8280016001018555821562000464579182015b828111156200046357825182559160200191906001019062000446565b5b50905062000473919062000477565b5090565b6200049c91905b80821115620004985760008160009055506001016200047e565b5090565b90565b61175280620004af6000396000f3fe6080604052600436106101355760003560e01c8063a709c4fe116100ab578063d1aac1711161006f578063d1aac171146103f2578063d964f29e14610443578063e1746af9146104d3578063e66a6b221461053c578063f63e7db21461056b578063f8ef1e13146105fb57610135565b8063a709c4fe14610324578063aca1feea1461032e578063b8b4f1a014610385578063bf8c0efc1461039c578063c24a0f8b146103c757610135565b80635c274b86116100fd5780635c274b86146101ff5780635f696ec3146102095780636322182e14610234578063906b7fc71461023e5780639419bc2914610269578063a3073fab146102f957610135565b806302d8db081461013a5780630b97bc8614610191578063117df088146101bc57806329d07a51146101c657806332dd81f6146101d0575b600080fd5b34801561014657600080fd5b5061014f610626565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019d57600080fd5b506101a661064b565b6040518082815260200191505060405180910390f35b6101c4610651565b005b6101ce610926565b005b3480156101dc57600080fd5b506101e5610b16565b604051808215151515815260200191505060405180910390f35b610207610b29565b005b34801561021557600080fd5b5061021e610c94565b6040518082815260200191505060405180910390f35b61023c610c9a565b005b34801561024a57600080fd5b50610253610e4d565b6040518082815260200191505060405180910390f35b34801561027557600080fd5b5061027e610e53565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102be5780820151818401526020810190506102a3565b50505050905090810190601f1680156102eb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030557600080fd5b5061030e610ef1565b6040518082815260200191505060405180910390f35b61032c610ef7565b005b34801561033a57600080fd5b506103436110e2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561039157600080fd5b5061039a611108565b005b3480156103a857600080fd5b506103b1611200565b6040518082815260200191505060405180910390f35b3480156103d357600080fd5b506103dc611206565b6040518082815260200191505060405180910390f35b3480156103fe57600080fd5b506104416004803603602081101561041557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061120c565b005b34801561044f57600080fd5b506104586113d1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561049857808201518184015260208101905061047d565b50505050905090810190601f1680156104c55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104df57600080fd5b50610522600480360360208110156104f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061146f565b604051808215151515815260200191505060405180910390f35b34801561054857600080fd5b5061055161148f565b604051808215151515815260200191505060405180910390f35b34801561057757600080fd5b506105806114a2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105c05780820151818401526020810190506105a5565b50505050905090810190601f1680156105ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561060757600080fd5b50610610611540565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ab57600080fd5b60011515600360019054906101000a900460ff16151514610734576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f54656e616e74206e65656420746f20706179206465706f73697420666972737481525060200191505060405180910390fd5b600954421161078e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806115e06031913960400191505060405180910390fd5b6000600b54116107e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116656023913960400191505060405180910390fd5b6000600c5414610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806115a3603d913960400191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600b549081150290604051600060405180830381858888f193505050501580156108ae573d6000803e3d6000fd5b506000600b819055507f4482101800a5c2e900f4156e57e05e19ffd7b366cde579553d723fd3abb2180e33600754604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461097f57600080fd5b60095442116109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806115476030913960400191505060405180910390fd5b6000600c541415610a35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260548152602001806116116054913960600191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600b549081150290604051600060405180830381858888f19350505050158015610a9e573d6000803e3d6000fd5b506000600b819055507fe800e3ea37ded367af4fce9aa5ecaa72b693f315a2c3b6c7a3d07c84196515fb33600754604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b600360019054906101000a900460ff1681565b60001515600360019054906101000a900460ff16151514610b95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611577602c913960400191505060405180910390fd5b60011515600360009054906101000a900460ff16151514610c01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806116e86036913960400191505060405180910390fd5b6001600360016101000a81548160ff02191690831515021790555034600b5401600b819055507ff1953715a33b9e021c0f2cf12911e8ac25fdb177bf6fc92d1331ae05201fe9f63334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b600c5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cf357600080fd5b6000600d541415610d6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f54656e616e7420686173206e6f74207061696420616e792072656e742079657481525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600d549081150290604051600060405180830381858888f19350505050158015610dd5573d6000803e3d6000fd5b507ffeb9f3b8586fb3823735104fd243164bdb90fcd9e989f902e96eb5b26bed4e3833600d54604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16000600d81905550565b600b5481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ee95780601f10610ebe57610100808354040283529160200191610ee9565b820191906000526020600020905b815481529060010190602001808311610ecc57829003601f168201915b505050505081565b600d5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f5157600080fd5b60011515600360009054906101000a900460ff16151514610f7157600080fd5b60011515600360019054906101000a900460ff16151514610ffa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f54656e616e74206e65656420746f20706179206465706f73697420666972737481525060200191505060405180910390fd5b600c54341115611055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806116bd602b913960400191505060405180910390fd5b600954421061106357600080fd5b34600c5403600c8190555034600d819055507f03b5033869479e8a98af42b272f05933f60489fe9fb43d63e11a6c31f3fa74743334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60001515600360009054906101000a900460ff1615151461112857600080fd5b6001600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360006101000a81548160ff0219169083151502179055507fe653009d32c7245a6ff858fa3a804f5beb3b19b4bbe48178446e966401d8389433604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b60075481565b60095481565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f3074682061646472657373206973206e6f7420616c6c6f77656421000000000081525060200191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611356576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806116886035913960400191505060405180910390fd5b7ff32dc6bb034b9afc20d4c7daa180b08e89cac33817a6836595b1021c4347620482600654600754604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15050565b600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114675780601f1061143c57610100808354040283529160200191611467565b820191906000526020600020905b81548152906001019060200180831161144a57829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900460ff1681565b600360009054906101000a900460ff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115385780601f1061150d57610100808354040283529160200191611538565b820191906000526020600020905b81548152906001019060200180831161151b57829003601f168201915b505050505081565b6006548156fe4c616e646c6f72642063616e206f6e6c7920636c61696d206465706f73697420616674657220706572696f6420656e6454656e616e742063616e6e6f7420706179206465706f736974206d6f7265207468616e206f6e652074696d6554656e616e742063616e206f6e6c79207769746864726177206465706f73697420616674657220636c656172656420616c6c2072656e74616c2066656554656e616e742063616e206f6e6c79207769746864726177206465706f73697420616674657220706572696f6420656e644c616e646c6f72642063616e206f6e6c7920636c61696d206465706f7369742069662074656e616e7420646964206e6f7420736574746c652074686569722072656e7420616674657220706572696f6420656e644465706f73697420696e20636f6e74726163742063616e6e6f7420626520656d7074794c616e646c6f7264206973206e6f7420616c6c6f77656420746f2062652074656e616e74206174207468652073616d652074696d65416d6f756e7420696e7365727465642068617320657863656564206f75747374616e64696e672072656e7454656e616e74206e65656420746f207369676e2074686520636f6e7472616374206265666f726520706179696e67206465706f736974a265627a7a723158203f265ae78c7c2eaa23e92f18131c713b44a8c5717938d23d614dfa89cfb1931b64736f6c63430005100032a265627a7a72315820fac68cc60462ecf2c94a12bde7c2e64126ec4bd9ab6597f63144db2b41aa60a964736f6c63430005100032