ETH Price: $1,681.03 (+4.02%)
Gas: 9 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Sponsored

Transaction Hash
Method
Block
From
To
Value
Approve And Call...119957972021-03-08 4:50:49935 days 3 hrs ago1615179049IN
0x5c5cA8...91189Cc5
0 ETH0.0026443281
Transfer Tokens ...117942232021-02-05 4:53:06966 days 3 hrs ago1612500786IN
0x5c5cA8...91189Cc5
0 ETH0.00448140
Transfer Tokens ...93156222020-01-20 2:26:281348 days 5 hrs ago1579487188IN
0x5c5cA8...91189Cc5
0 ETH0.000033991
Transfer Tokens ...93152112020-01-20 0:58:431348 days 7 hrs ago1579481923IN
0x5c5cA8...91189Cc5
0 ETH0.000033991
Transfer Tokens ...93146252020-01-19 22:45:251348 days 9 hrs ago1579473925IN
0x5c5cA8...91189Cc5
0 ETH0.000064111
Transfer Tokens ...93141202020-01-19 20:56:001348 days 11 hrs ago1579467360IN
0x5c5cA8...91189Cc5
0 ETH0.000064111
Transfer Tokens ...93110052020-01-19 9:43:441348 days 22 hrs ago1579427024IN
0x5c5cA8...91189Cc5
0 ETH0.000174832
Transfer Tokens ...93109872020-01-19 9:38:191348 days 22 hrs ago1579426699IN
0x5c5cA8...91189Cc5
0 ETH0.000174872
Transfer Tokens ...93097142020-01-19 4:52:301349 days 3 hrs ago1579409550IN
0x5c5cA8...91189Cc5
0 ETH0.00008771
Transfer Tokens ...93097142020-01-19 4:52:301349 days 3 hrs ago1579409550IN
0x5c5cA8...91189Cc5
0 ETH0.000106881
Transfer Tokens ...93096792020-01-19 4:45:031349 days 3 hrs ago1579409103IN
0x5c5cA8...91189Cc5
0 ETH0.000102711
Transfer Tokens ...93096112020-01-19 4:28:451349 days 3 hrs ago1579408125IN
0x5c5cA8...91189Cc5
0 ETH0.000116382
Transfer Tokens ...93096112020-01-19 4:28:451349 days 3 hrs ago1579408125IN
0x5c5cA8...91189Cc5
0 ETH0.000058191
Transfer Tokens ...93094532020-01-19 3:52:231349 days 4 hrs ago1579405943IN
0x5c5cA8...91189Cc5
0 ETH0.000230824
Transfer Tokens ...93093912020-01-19 3:39:141349 days 4 hrs ago1579405154IN
0x5c5cA8...91189Cc5
0 ETH0.000149641.4
Transfer Tokens ...93093252020-01-19 3:24:461349 days 4 hrs ago1579404286IN
0x5c5cA8...91189Cc5
0 ETH0.000035971
Transfer Tokens ...93093222020-01-19 3:24:171349 days 4 hrs ago1579404257IN
0x5c5cA8...91189Cc5
0 ETH0.000102631
Transfer Tokens ...93090312020-01-19 2:20:061349 days 5 hrs ago1579400406IN
0x5c5cA8...91189Cc5
0 ETH0.000341344.5
Transfer Tokens ...93088992020-01-19 1:46:281349 days 6 hrs ago1579398388IN
0x5c5cA8...91189Cc5
0 ETH0.000080331
0x6080604093088542020-01-19 1:37:431349 days 6 hrs ago1579397863IN
 Create: LavaWallet
0 ETH0.001652461

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LavaWallet

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-01-19
*/

pragma solidity ^0.5.16;


/*
0x5c5cA8c79bf69a5449F1F621215E9Cfc91189Cc5


LAVAWALLET is a Meta Transaction Solution using EIP 712


Simply approve your tokens to this contract to give them super powers!


*/





/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}


contract ECRecovery {

  /**
   * @dev Recover signer address from a message by using their signature
   * @param hash bytes32 message, the hash is the signed message. What is recovered is the signer address.
   * @param sig bytes signature, the signature is generated using web3.eth.sign()
   */
  function recover(bytes32 hash, bytes memory sig) internal  pure returns (address) {
    bytes32 r;
    bytes32 s;
    uint8 v;

    //Check the signature length
    if (sig.length != 65) {
      return (address(0));
    }

    // Divide the signature in r, s and v variables
    assembly {
      r := mload(add(sig, 32))
      s := mload(add(sig, 64))
      v := byte(0, mload(add(sig, 96)))
    }

    // Version of signature should be 27 or 28, but 0 and 1 are also possible versions
    if (v < 27) {
      v += 27;
    }

    // If the version is correct return the signer address
    if (v != 27 && v != 28) {
      return (address(0));
    } else {
      return ecrecover(hash, v, r, s);
    }
  }

}




contract ERC20Interface {
    function totalSupply() public view returns (uint);
    function balanceOf(address tokenOwner) public view returns (uint balance);
    function allowance(address tokenOwner, address spender) public view returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);

    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}



contract RelayAuthorityInterface {
    function getRelayAuthority() public returns (address);
}

contract ApproveAndCallFallBack {
    function receiveApproval(address from, uint256 tokens, address token, bytes memory data) public;
}






contract LavaWallet is ECRecovery{

  using SafeMath for uint;

   mapping(bytes32 => uint256) burnedSignatures;



  struct LavaPacket {
    string methodName;
    address relayAuthority; //either a contract or an account
    address from;
    address to;
    address wallet;  //this contract address
    address token;
    uint256 tokens;
    uint256 relayerRewardTokens;
    uint256 expires;
    uint256 nonce;
  }


  /*
      MUST update these if architecture changes !!
      MAKE SURE there are NO spaces !
  */
    bytes32 constant EIP712DOMAIN_TYPEHASH = keccak256(
          "EIP712Domain(string contractName,string version,uint256 chainId,address verifyingContract)"
      );

   function getLavaDomainTypehash() public pure returns (bytes32) {
      return EIP712DOMAIN_TYPEHASH;
   }

    function getEIP712DomainHash(string memory contractName, string memory version, uint256 chainId, address verifyingContract) public pure returns (bytes32) {

      return keccak256(abi.encode(
            EIP712DOMAIN_TYPEHASH,
            keccak256(bytes(contractName)),
            keccak256(bytes(version)),
            chainId,
            verifyingContract
        ));
    }




  bytes32 constant LAVAPACKET_TYPEHASH = keccak256(
      "LavaPacket(string methodName,address relayAuthority,address from,address to,address wallet,address token,uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce)"
  );



    function getLavaPacketTypehash()  public pure returns (bytes32) {
      return LAVAPACKET_TYPEHASH;
  }



   function getLavaPacketHash(string memory methodName, address relayAuthority,address from,address to, address wallet, address token, uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce) public pure returns (bytes32) {
          return keccak256(abi.encode(
              LAVAPACKET_TYPEHASH,
              keccak256(bytes(methodName)),
              relayAuthority,
              from,
              to,
              wallet,
              token,
              tokens,
              relayerRewardTokens,
              expires,
              nonce
          ));
      }


   constructor(  ) public {


  }


  //do not allow ether to enter
  function() external payable {
      revert();
  }



    // Make sure the change the chainID here if deploying to a testnet
      function getLavaTypedDataHash(string memory methodName, address relayAuthority,address from,address to, address wallet,address token,uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce) public view returns (bytes32) {


              // Note: we need to use `encodePacked` here instead of `encode`.
              bytes32 digest = keccak256(abi.encodePacked(
                  "\x19\x01",
                  getEIP712DomainHash('Lava Wallet','1',1,address(this)),
                  getLavaPacketHash(methodName,relayAuthority,from,to,wallet,token,tokens,relayerRewardTokens,expires,nonce)
              ));
              return digest;
          }



        /*
        This uses the metaTX signature and the fact that the ERC20 tokens are Approved to this contract to send them out via the relays eth TX.

        */

   function _validatePacketSignature(  string memory methodName, address relayAuthority,address from,address to, address token,uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce,  bytes memory signature) internal returns (bool success)
   {
       address wallet = address(this);



       /*
        Always allow relaying if the specified relayAuthority is 0.
        If the authority address is not a contract, allow it to relay
        If the authority address is a contract, allow its defined 'getAuthority()' delegate to relay
       */

       require( relayAuthority == address(0x0)
         || (!addressContainsContract(relayAuthority) && msg.sender == relayAuthority)
         || (addressContainsContract(relayAuthority) && msg.sender == RelayAuthorityInterface(relayAuthority).getRelayAuthority())  );


         //check to make sure that signature == ecrecover signature
         bytes32 sigHash = getLavaTypedDataHash(methodName,relayAuthority,from,to,wallet,token,tokens,relayerRewardTokens,expires,nonce);


         address recoveredSignatureSigner = recover(sigHash,signature);


          //make sure the signer is the depositor of the tokens
          require(from == recoveredSignatureSigner);


          //make sure the signature has not expired
          require(block.number < expires || expires == 0);

          uint burnedSignature = burnedSignatures[sigHash];
          burnedSignatures[sigHash] = 0x1; //spent
          require(burnedSignature == 0x0 );


         //remember to tip your relayer!
         require( ERC20Interface(token).transferFrom(from, msg.sender, relayerRewardTokens )  );



       return true;
   }

   //why wont this work w approve ??
   function _transferTokens(address to, address token, uint tokens) internal returns (bool success) {
         ERC20Interface(token).transfer(to, tokens );

         return true;
    }


    ///transfer tokens within the lava balances
    //Requires approval
   function _transferTokensFrom( address from, address to,address token,  uint tokens) internal returns (bool success) {
        ERC20Interface(token).transferFrom(from, to, tokens );  //??

       return true;
   }



   /*
    Approves lava tokens for another smart contract ('TO field') and call the contracts receiveApproval method all in one fell swoop

    */

    function approveAndCallWithSignature( string memory methodName, address relayAuthority,address from,address to,   address token, uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce, bytes memory signature ) public returns (bool success)   {

       require(!bytesEqual('transfer',bytes(methodName)));


       require(_validatePacketSignature(methodName,relayAuthority,from,to, token,tokens,relayerRewardTokens,expires,nonce, signature));

       bytes memory method = bytes(methodName);

       _sendApproveAndCall(from,to,token,tokens,method);

        return true;
    }

    function _sendApproveAndCall(address from, address to, address token, uint tokens, bytes memory methodName) internal
    {
        ApproveAndCallFallBack(to).receiveApproval(from, tokens, token, bytes(methodName));
    }



   function transferTokensWithSignature(string memory methodName, address relayAuthority, address from, address to, address token, uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce, bytes memory signature) public returns (bool success)
 {

     require(bytesEqual('transfer',bytes(methodName)));


     require(_validatePacketSignature(methodName,relayAuthority,from,to, token,tokens,relayerRewardTokens,expires,nonce, signature));

     require( ERC20Interface(token).transferFrom(from,  to, tokens )  );


     return true;

 }

 function burnSignature(string memory methodName, address relayAuthority, address from, address to, address wallet,address token,uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce,  bytes memory signature) public returns (bool success)
      {


         bytes32 sigHash = getLavaTypedDataHash(methodName,relayAuthority,from,to,wallet,token, tokens,relayerRewardTokens,expires,nonce);

          address recoveredSignatureSigner = recover(sigHash,signature);

          //make sure the invalidator is the signer
          require(recoveredSignatureSigner == from);

          //only the original packet owner can burn signature, not a relay
          require(from == msg.sender);

          //make sure this signature has never been used
          uint burnedSignature = burnedSignatures[sigHash];
          burnedSignatures[sigHash] = 0x2; //invalidated
          require(burnedSignature == 0x0);

          return true;
      }



     function signatureBurnStatus(bytes32 digest) public view returns (uint)
     {
       return (burnedSignatures[digest]);
     }

     function signatureIsValid(string memory methodName, address relayAuthority,address from,address to, address wallet,address token, uint256 tokens,uint256 relayerRewardTokens,uint256 expires,uint256 nonce, bytes memory signature) public view returns (bool success)
   {

        //check to make sure that signature == ecrecover signature
       bytes32 sigHash = getLavaTypedDataHash(methodName,relayAuthority,from,to,wallet,token, tokens,relayerRewardTokens,expires,nonce);


       address recoveredSignatureSigner = recover(sigHash,signature);


       return  (from == recoveredSignatureSigner) ;

   }


       /*
         Receive approval to spend tokens and perform any action all in one transaction
       */
     /*function receiveApproval(address from, uint256 tokens, address token, bytes data) public returns (bool success) {


        // do something ?

     }*/
 


     function addressContainsContract(address _to) view internal returns (bool)
     {
       uint codeLength;

        assembly {
            // Retrieve the size of the code on target address, this needs assembly .
            codeLength := extcodesize(_to)
        }

         return (codeLength>0);
     }


     function bytesEqual(bytes memory b1,bytes memory b2) pure internal returns (bool)
        {
          if(b1.length != b2.length) return false;

          for (uint i=0; i<b1.length; i++) {
            if(b1[i] != b2[i]) return false;
          }

          return true;
        }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"string","name":"methodName","type":"string"},{"internalType":"address","name":"relayAuthority","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"relayerRewardTokens","type":"uint256"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"approveAndCallWithSignature","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"methodName","type":"string"},{"internalType":"address","name":"relayAuthority","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"wallet","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"relayerRewardTokens","type":"uint256"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"burnSignature","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"}],"name":"getEIP712DomainHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getLavaDomainTypehash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"methodName","type":"string"},{"internalType":"address","name":"relayAuthority","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"wallet","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"relayerRewardTokens","type":"uint256"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"getLavaPacketHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getLavaPacketTypehash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"methodName","type":"string"},{"internalType":"address","name":"relayAuthority","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"wallet","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"relayerRewardTokens","type":"uint256"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"getLavaTypedDataHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"}],"name":"signatureBurnStatus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"methodName","type":"string"},{"internalType":"address","name":"relayAuthority","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"wallet","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"relayerRewardTokens","type":"uint256"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"signatureIsValid","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"methodName","type":"string"},{"internalType":"address","name":"relayAuthority","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"relayerRewardTokens","type":"uint256"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"transferTokensWithSignature","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50611cf9806100206000396000f3fe6080604052600436106100915760003560e01c80639c96f59e116100595780639c96f59e14610715578063a4e59a8914610955578063c375ba8a14610afa578063d327c1eb14610b25578063dd975f9614610cc257610091565b8063021b06991461009657806309417110146102d657806359921b7b1461032557806376af0d0e146104ca5780638d11fa54146106ea575b600080fd5b3480156100a257600080fd5b506102bc60048036036101608110156100ba57600080fd5b81019080803590602001906401000000008111156100d757600080fd5b8201836020820111156100e957600080fd5b8035906020019184600183028401116401000000008311171561010b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561023657600080fd5b82018360208201111561024857600080fd5b8035906020019184600183028401116401000000008311171561026a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ee2565b604051808215151515815260200191505060405180910390f35b3480156102e257600080fd5b5061030f600480360360208110156102f957600080fd5b8101908080359060200190929190505050610fc9565b6040518082815260200191505060405180910390f35b34801561033157600080fd5b506104b4600480360361014081101561034957600080fd5b810190808035906020019064010000000081111561036657600080fd5b82018360208201111561037857600080fd5b8035906020019184600183028401116401000000008311171561039a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610fe5565b6040518082815260200191505060405180910390f35b3480156104d657600080fd5b506106d060048036036101408110156104ee57600080fd5b810190808035906020019064010000000081111561050b57600080fd5b82018360208201111561051d57600080fd5b8035906020019184600183028401116401000000008311171561053f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561064a57600080fd5b82018360208201111561065c57600080fd5b8035906020019184600183028401116401000000008311171561067e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611169565b604051808215151515815260200191505060405180910390f35b3480156106f657600080fd5b506106ff6111f4565b6040518082815260200191505060405180910390f35b34801561072157600080fd5b5061093b600480360361016081101561073957600080fd5b810190808035906020019064010000000081111561075657600080fd5b82018360208201111561076857600080fd5b8035906020019184600183028401116401000000008311171561078a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156108b557600080fd5b8201836020820111156108c757600080fd5b803590602001918460018302840111640100000000831117156108e957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611214565b604051808215151515815260200191505060405180910390f35b34801561096157600080fd5b50610ae4600480360361014081101561097957600080fd5b810190808035906020019064010000000081111561099657600080fd5b8201836020820111156109a857600080fd5b803590602001918460018302840111640100000000831117156109ca57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919050505061127b565b6040518082815260200191505060405180910390f35b348015610b0657600080fd5b50610b0f611370565b6040518082815260200191505060405180910390f35b348015610b3157600080fd5b50610cac60048036036080811015610b4857600080fd5b8101908080359060200190640100000000811115610b6557600080fd5b820183602082011115610b7757600080fd5b80359060200191846001830284011164010000000083111715610b9957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610bfc57600080fd5b820183602082011115610c0e57600080fd5b80359060200191846001830284011164010000000083111715610c3057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611390565b6040518082815260200191505060405180910390f35b348015610cce57600080fd5b50610ec86004803603610140811015610ce657600080fd5b8101908080359060200190640100000000811115610d0357600080fd5b820183602082011115610d1557600080fd5b80359060200191846001830284011164010000000083111715610d3757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610e4257600080fd5b820183602082011115610e5457600080fd5b80359060200191846001830284011164010000000083111715610e7657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611435565b604051808215151515815260200191505060405180910390f35b600080610ef78d8d8d8d8d8d8d8d8d8d61127b565b90506000610f0582856115ab565b90508b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f3f57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614610f7757600080fd5b600080600084815260200190815260200160002054905060026000808581526020019081526020016000208190555060008114610fb357600080fd5b600193505050509b9a5050505050505050505050565b6000806000838152602001908152602001600020549050919050565b60006040518080611c1360b2913960b201905060405180910390208b805190602001208b8b8b8b8b8b8b8b8b604051602001808c81526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019b5050505050505050505050506040516020818303038152906040528051906020012090509a9950505050505050505050565b60006111aa6040518060400160405280600881526020017f7472616e736665720000000000000000000000000000000000000000000000008152508c61168d565b156111b457600080fd5b6111c68b8b8b8b8b8b8b8b8b8b61174a565b6111cf57600080fd5b60608b90506111e18a8a8a8a85611a5e565b60019150509a9950505050505050505050565b60006040518080611bb9605a9139605a0190506040518091039020905090565b6000806112298d8d8d8d8d8d8d8d8d8d61127b565b9050600061123782856115ab565b90508073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614925050509b9a5050505050505050505050565b6000806112f56040518060400160405280600b81526020017f4c6176612057616c6c65740000000000000000000000000000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250600130611390565b6113078d8d8d8d8d8d8d8d8d8d610fe5565b60405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050809150509a9950505050505050505050565b60006040518080611c1360b2913960b20190506040518091039020905090565b60006040518080611bb9605a9139605a0190506040518091039020858051906020012085805190602001208585604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001209050949350505050565b60006114766040518060400160405280600881526020017f7472616e736665720000000000000000000000000000000000000000000000008152508c61168d565b61147f57600080fd5b6114918b8b8b8b8b8b8b8b8b8b61174a565b61149a57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff166323b872dd8a8a896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561155557600080fd5b505af1158015611569573d6000803e3d6000fd5b505050506040513d602081101561157f57600080fd5b810190808051906020019092919050505061159957600080fd5b600190509a9950505050505050505050565b60008060008060418551146115c65760009350505050611687565b6020850151925060408501519150606085015160001a9050601b8160ff1610156115f157601b810190505b601b8160ff16141580156116095750601c8160ff1614155b1561161a5760009350505050611687565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611677573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600081518351146116a15760009050611744565b60008090505b835181101561173e578281815181106116bc57fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181106116f557fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611731576000915050611744565b80806001019150506116a7565b50600190505b92915050565b600080309050600073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614806117c8575061178f8b611ba5565b1580156117c757508a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b5b8061189157506117d78b611ba5565b801561189057508a73ffffffffffffffffffffffffffffffffffffffff16638c0636866040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561182657600080fd5b505af115801561183a573d6000803e3d6000fd5b505050506040513d602081101561185057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b5b61189a57600080fd5b60006118ae8d8d8d8d868e8e8e8e8e61127b565b905060006118bc82866115ab565b90508073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16146118f657600080fd5b864310806119045750600087145b61190d57600080fd5b60008060008481526020019081526020016000205490506001600080858152602001908152602001600020819055506000811461194957600080fd5b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd8e338c6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611a0457600080fd5b505af1158015611a18573d6000803e3d6000fd5b505050506040513d6020811015611a2e57600080fd5b8101908080519060200190929190505050611a4857600080fd5b60019450505050509a9950505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1868486856040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611b37578082015181840152602081019050611b1c565b50505050905090810190601f168015611b645780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611b8657600080fd5b505af1158015611b9a573d6000803e3d6000fd5b505050505050505050565b600080823b90506000811191505091905056fe454950373132446f6d61696e28737472696e6720636f6e74726163744e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294c6176615061636b657428737472696e67206d6574686f644e616d652c616464726573732072656c6179417574686f726974792c616464726573732066726f6d2c6164647265737320746f2c616464726573732077616c6c65742c6164647265737320746f6b656e2c75696e7432353620746f6b656e732c75696e743235362072656c61796572526577617264546f6b656e732c75696e7432353620657870697265732c75696e74323536206e6f6e636529a265627a7a72315820608421ca71d0c3f32b57dc88735f8f85c46e47c014d4098de6e2c69c64fff35464736f6c63430005100032

Deployed Bytecode

0x6080604052600436106100915760003560e01c80639c96f59e116100595780639c96f59e14610715578063a4e59a8914610955578063c375ba8a14610afa578063d327c1eb14610b25578063dd975f9614610cc257610091565b8063021b06991461009657806309417110146102d657806359921b7b1461032557806376af0d0e146104ca5780638d11fa54146106ea575b600080fd5b3480156100a257600080fd5b506102bc60048036036101608110156100ba57600080fd5b81019080803590602001906401000000008111156100d757600080fd5b8201836020820111156100e957600080fd5b8035906020019184600183028401116401000000008311171561010b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561023657600080fd5b82018360208201111561024857600080fd5b8035906020019184600183028401116401000000008311171561026a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ee2565b604051808215151515815260200191505060405180910390f35b3480156102e257600080fd5b5061030f600480360360208110156102f957600080fd5b8101908080359060200190929190505050610fc9565b6040518082815260200191505060405180910390f35b34801561033157600080fd5b506104b4600480360361014081101561034957600080fd5b810190808035906020019064010000000081111561036657600080fd5b82018360208201111561037857600080fd5b8035906020019184600183028401116401000000008311171561039a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610fe5565b6040518082815260200191505060405180910390f35b3480156104d657600080fd5b506106d060048036036101408110156104ee57600080fd5b810190808035906020019064010000000081111561050b57600080fd5b82018360208201111561051d57600080fd5b8035906020019184600183028401116401000000008311171561053f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561064a57600080fd5b82018360208201111561065c57600080fd5b8035906020019184600183028401116401000000008311171561067e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611169565b604051808215151515815260200191505060405180910390f35b3480156106f657600080fd5b506106ff6111f4565b6040518082815260200191505060405180910390f35b34801561072157600080fd5b5061093b600480360361016081101561073957600080fd5b810190808035906020019064010000000081111561075657600080fd5b82018360208201111561076857600080fd5b8035906020019184600183028401116401000000008311171561078a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156108b557600080fd5b8201836020820111156108c757600080fd5b803590602001918460018302840111640100000000831117156108e957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611214565b604051808215151515815260200191505060405180910390f35b34801561096157600080fd5b50610ae4600480360361014081101561097957600080fd5b810190808035906020019064010000000081111561099657600080fd5b8201836020820111156109a857600080fd5b803590602001918460018302840111640100000000831117156109ca57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919050505061127b565b6040518082815260200191505060405180910390f35b348015610b0657600080fd5b50610b0f611370565b6040518082815260200191505060405180910390f35b348015610b3157600080fd5b50610cac60048036036080811015610b4857600080fd5b8101908080359060200190640100000000811115610b6557600080fd5b820183602082011115610b7757600080fd5b80359060200191846001830284011164010000000083111715610b9957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610bfc57600080fd5b820183602082011115610c0e57600080fd5b80359060200191846001830284011164010000000083111715610c3057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611390565b6040518082815260200191505060405180910390f35b348015610cce57600080fd5b50610ec86004803603610140811015610ce657600080fd5b8101908080359060200190640100000000811115610d0357600080fd5b820183602082011115610d1557600080fd5b80359060200191846001830284011164010000000083111715610d3757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610e4257600080fd5b820183602082011115610e5457600080fd5b80359060200191846001830284011164010000000083111715610e7657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611435565b604051808215151515815260200191505060405180910390f35b600080610ef78d8d8d8d8d8d8d8d8d8d61127b565b90506000610f0582856115ab565b90508b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f3f57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614610f7757600080fd5b600080600084815260200190815260200160002054905060026000808581526020019081526020016000208190555060008114610fb357600080fd5b600193505050509b9a5050505050505050505050565b6000806000838152602001908152602001600020549050919050565b60006040518080611c1360b2913960b201905060405180910390208b805190602001208b8b8b8b8b8b8b8b8b604051602001808c81526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019b5050505050505050505050506040516020818303038152906040528051906020012090509a9950505050505050505050565b60006111aa6040518060400160405280600881526020017f7472616e736665720000000000000000000000000000000000000000000000008152508c61168d565b156111b457600080fd5b6111c68b8b8b8b8b8b8b8b8b8b61174a565b6111cf57600080fd5b60608b90506111e18a8a8a8a85611a5e565b60019150509a9950505050505050505050565b60006040518080611bb9605a9139605a0190506040518091039020905090565b6000806112298d8d8d8d8d8d8d8d8d8d61127b565b9050600061123782856115ab565b90508073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614925050509b9a5050505050505050505050565b6000806112f56040518060400160405280600b81526020017f4c6176612057616c6c65740000000000000000000000000000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250600130611390565b6113078d8d8d8d8d8d8d8d8d8d610fe5565b60405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050809150509a9950505050505050505050565b60006040518080611c1360b2913960b20190506040518091039020905090565b60006040518080611bb9605a9139605a0190506040518091039020858051906020012085805190602001208585604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001209050949350505050565b60006114766040518060400160405280600881526020017f7472616e736665720000000000000000000000000000000000000000000000008152508c61168d565b61147f57600080fd5b6114918b8b8b8b8b8b8b8b8b8b61174a565b61149a57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff166323b872dd8a8a896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561155557600080fd5b505af1158015611569573d6000803e3d6000fd5b505050506040513d602081101561157f57600080fd5b810190808051906020019092919050505061159957600080fd5b600190509a9950505050505050505050565b60008060008060418551146115c65760009350505050611687565b6020850151925060408501519150606085015160001a9050601b8160ff1610156115f157601b810190505b601b8160ff16141580156116095750601c8160ff1614155b1561161a5760009350505050611687565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611677573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600081518351146116a15760009050611744565b60008090505b835181101561173e578281815181106116bc57fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181106116f557fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611731576000915050611744565b80806001019150506116a7565b50600190505b92915050565b600080309050600073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614806117c8575061178f8b611ba5565b1580156117c757508a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b5b8061189157506117d78b611ba5565b801561189057508a73ffffffffffffffffffffffffffffffffffffffff16638c0636866040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561182657600080fd5b505af115801561183a573d6000803e3d6000fd5b505050506040513d602081101561185057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b5b61189a57600080fd5b60006118ae8d8d8d8d868e8e8e8e8e61127b565b905060006118bc82866115ab565b90508073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16146118f657600080fd5b864310806119045750600087145b61190d57600080fd5b60008060008481526020019081526020016000205490506001600080858152602001908152602001600020819055506000811461194957600080fd5b8a73ffffffffffffffffffffffffffffffffffffffff166323b872dd8e338c6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611a0457600080fd5b505af1158015611a18573d6000803e3d6000fd5b505050506040513d6020811015611a2e57600080fd5b8101908080519060200190929190505050611a4857600080fd5b60019450505050509a9950505050505050505050565b8373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1868486856040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611b37578082015181840152602081019050611b1c565b50505050905090810190601f168015611b645780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611b8657600080fd5b505af1158015611b9a573d6000803e3d6000fd5b505050505050505050565b600080823b90506000811191505091905056fe454950373132446f6d61696e28737472696e6720636f6e74726163744e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294c6176615061636b657428737472696e67206d6574686f644e616d652c616464726573732072656c6179417574686f726974792c616464726573732066726f6d2c6164647265737320746f2c616464726573732077616c6c65742c6164647265737320746f6b656e2c75696e7432353620746f6b656e732c75696e743235362072656c61796572526577617264546f6b656e732c75696e7432353620657870697265732c75696e74323536206e6f6e636529a265627a7a72315820608421ca71d0c3f32b57dc88735f8f85c46e47c014d4098de6e2c69c64fff35464736f6c63430005100032

Deployed Bytecode Sourcemap

3395:9759:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5723:8;;;10502:970;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10502:970:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;10502:970:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10502:970:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10502:970:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10502:970:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;10502:970:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10502:970:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10502:970:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10502:970:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;10502:970:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11485:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11485:130:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11485:130:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5001:602;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5001:602:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5001:602:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5001:602:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5001:602:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5001:602:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5001:602:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9087:606;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9087:606:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9087:606:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9087:606:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9087:606:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9087:606:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9087:606:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9087:606:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9087:606:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9087:606:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9087:606:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4116:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4116:107:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11624:616;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11624:616:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;11624:616:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11624:616:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11624:616:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11624:616:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11624:616:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;11624:616:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11624:616:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11624:616:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11624:616:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5823:676;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5823:676:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5823:676:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5823:676:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5823:676:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5823:676:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5823:676:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4885:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4885:105:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4231:387;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4231:387:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4231:387:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4231:387:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4231:387:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4231:387:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4231:387:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4231:387:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4231:387:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4231:387:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4231:387:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9935:562;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9935:562:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9935:562:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9935:562:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9935:562:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9935:562:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9935:562:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9935:562:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9935:562:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9935:562:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9935:562:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10502:970;10745:12;10782:15;10800:110;10821:10;10832:14;10847:4;10852:2;10855:6;10862:5;10869:6;10876:19;10896:7;10904:5;10800:20;:110::i;:::-;10782:128;;10925:32;10960:26;10968:7;10976:9;10960:7;:26::i;:::-;10925:61;;11090:4;11062:32;;:24;:32;;;11054:41;;;;;;11202:10;11194:18;;:4;:18;;;11186:27;;;;;;11286:20;11309:16;:25;11326:7;11309:25;;;;;;;;;;;;11286:48;;11375:3;11347:16;:25;11364:7;11347:25;;;;;;;;;;;:31;;;;11432:3;11413:15;:22;11405:31;;;;;;11458:4;11451:11;;;;;10502:970;;;;;;;;;;;;;:::o;11485:130::-;11551:4;11581:16;:24;11598:6;11581:24;;;;;;;;;;;;11573:33;;11485:130;;;:::o;5001:602::-;5228:7;4669:203;;;;;;;;;;;;;;;;;;;5346:10;5330:28;;;;;;5375:14;5406:4;5427:2;5446:6;5469:5;5491:6;5514:19;5550:7;5574:5;5267:325;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5267:325:0;;;5257:336;;;;;;5250:343;;5001:602;;;;;;;;;;;;:::o;9087:606::-;9331:12;9368:40;;;;;;;;;;;;;;;;;;9396:10;9368;:40::i;:::-;9367:41;9359:50;;;;;;9431:118;9456:10;9467:14;9482:4;9487:2;9491:5;9497:6;9504:19;9524:7;9532:5;9539:9;9431:24;:118::i;:::-;9423:127;;;;;;9562:19;9590:10;9562:39;;9613:48;9633:4;9638:2;9641:5;9647:6;9654;9613:19;:48::i;:::-;9681:4;9674:11;;;9087:606;;;;;;;;;;;;:::o;4116:107::-;4170:7;3985:123;;;;;;;;;;;;;;;;;;;4188:28;;4116:107;:::o;11624:616::-;11873:12;11971:15;11989:110;12010:10;12021:14;12036:4;12041:2;12044:6;12051:5;12058:6;12065:19;12085:7;12093:5;11989:20;:110::i;:::-;11971:128;;12113:32;12148:26;12156:7;12164:9;12148:7;:26::i;:::-;12113:61;;12205:24;12197:32;;:4;:32;;;12188:42;;;;11624:616;;;;;;;;;;;;;:::o;5823:676::-;6051:7;6161:14;6256:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6294:1;6304:4;6256:19;:54::i;:::-;6331:106;6349:10;6360:14;6375:4;6380:2;6383:6;6390:5;6396:6;6403:19;6423:7;6431:5;6331:17;:106::i;:::-;6188:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6188:266:0;;;6178:277;;;;;;6161:294;;6479:6;6472:13;;;5823:676;;;;;;;;;;;;:::o;4885:105::-;4940:7;4669:203;;;;;;;;;;;;;;;;;;;4958:26;;4885:105;:::o;4231:387::-;4376:7;3985:123;;;;;;;;;;;;;;;;;;;4490:12;4474:30;;;;;;4535:7;4519:25;;;;;;4559:7;4581:17;4413:196;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4413:196:0;;;4403:207;;;;;;4396:214;;4231:387;;;;;;:::o;9935:562::-;10177:12;10211:40;;;;;;;;;;;;;;;;;;10239:10;10211;:40::i;:::-;10203:49;;;;;;10272:118;10297:10;10308:14;10323:4;10328:2;10332:5;10338:6;10345:19;10365:7;10373:5;10380:9;10272:24;:118::i;:::-;10264:127;;;;;;10425:5;10410:34;;;10445:4;10452:2;10456:6;10410:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10410:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10410:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10410:54:0;;;;;;;;;;;;;;;;10401:66;;;;;;10486:4;10479:11;;9935:562;;;;;;;;;;;;:::o;1701:731::-;1774:7;1790:9;1806;1822:7;1890:2;1876:3;:10;:16;1872:58;;1919:1;1903:19;;;;;;;1872:58;2029:2;2024:3;2020:12;2014:19;2009:24;;2061:2;2056:3;2052:12;2046:19;2041:24;;2101:2;2096:3;2092:12;2086:19;2083:1;2078:28;2073:33;;2217:2;2213:1;:6;;;2209:36;;;2235:2;2230:7;;;;2209:36;2322:2;2317:1;:7;;;;:18;;;;;2333:2;2328:1;:7;;;;2317:18;2313:114;;;2362:1;2346:19;;;;;;;2313:114;2395:24;2405:4;2411:1;2414;2417;2395:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2395:24:0;;;;;;;;2388:31;;;;;1701:731;;;;;:::o;12859:288::-;12935:4;12979:2;:9;12966:2;:9;:22;12963:39;;12997:5;12990:12;;;;12963:39;13022:6;13029:1;13022:8;;13017:93;13034:2;:9;13032:1;:11;13017:93;;;13077:2;13080:1;13077:5;;;;;;;;;;;;;;;;13068:14;;;:2;13071:1;13068:5;;;;;;;;;;;;;;;;:14;;;;13065:31;;13091:5;13084:12;;;;;13065:31;13045:3;;;;;;;13017:93;;;;13131:4;13124:11;;12859:288;;;;;:::o;6683:1710::-;6924:12;6952:14;6977:4;6952:30;;7299:3;7273:30;;:14;:30;;;:118;;;;7319:39;7343:14;7319:23;:39::i;:::-;7318:40;:72;;;;;7376:14;7362:28;;:10;:28;;;7318:72;7273:118;:250;;;;7406:39;7430:14;7406:23;:39::i;:::-;:116;;;;;7487:14;7463:57;;;:59;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7463:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7463:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7463:59:0;;;;;;;;;;;;;;;;7449:73;;:10;:73;;;7406:116;7273:250;7264:262;;;;;;7611:15;7629:109;7650:10;7661:14;7676:4;7681:2;7684:6;7691:5;7697:6;7704:19;7724:7;7732:5;7629:20;:109::i;:::-;7611:127;;7754:32;7789:26;7797:7;7805:9;7789:7;:26::i;:::-;7754:61;;7913:24;7905:32;;:4;:32;;;7897:41;;;;;;8031:7;8016:12;:22;:38;;;;8053:1;8042:7;:12;8016:38;8008:47;;;;;;8070:20;8093:16;:25;8110:7;8093:25;;;;;;;;;;;;8070:48;;8159:3;8131:16;:25;8148:7;8131:25;;;;;;;;;;;:31;;;;8210:3;8191:15;:22;8183:32;;;;;;8297:5;8282:34;;;8317:4;8323:10;8335:19;8282:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8282:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8282:74:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8282:74:0;;;;;;;;;;;;;;;;8273:86;;;;;;8382:4;8375:11;;;;;;6683:1710;;;;;;;;;;;;:::o;9701:223::-;9857:2;9834:42;;;9877:4;9883:6;9891:5;9904:10;9834:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9834:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9834:82:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9834:82:0;;;;9701:223;;;;;:::o;12534:314::-;12603:4;12625:15;12790:3;12778:16;12764:30;;12837:1;12826:10;:12;12818:21;;;12534:314;;;:::o

Swarm Source

bzzr://608421ca71d0c3f32b57dc88735f8f85c46e47c014d4098de6e2c69c64fff354

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.