{"id":"c301652843ee5deb64bb2720564f49d0","_format":"hh-sol-build-info-1","solcVersion":"0.5.16","solcLongVersion":"0.5.16+commit.9c3226ce","input":{"language":"Solidity","sources":{"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol":{"content":"pragma solidity ^0.5.16;\n\nimport \"../../Utils/Tokenlock.sol\";\n\ncontract XVS is Tokenlock {\n    /// @notice BEP-20 token name for this token\n    string public constant name = \"Venus\";\n\n    /// @notice BEP-20 token symbol for this token\n    string public constant symbol = \"XVS\";\n\n    /// @notice BEP-20 token decimals for this token\n    uint8 public constant decimals = 18;\n\n    /// @notice Total number of tokens in circulation\n    uint public constant totalSupply = 30000000e18; // 30 million XVS\n\n    /// @notice Allowance amounts on behalf of others\n    mapping(address => mapping(address => uint96)) internal allowances;\n\n    /// @notice Official record of token balances for each account\n    mapping(address => uint96) internal balances;\n\n    /// @notice A record of each accounts delegate\n    mapping(address => address) public delegates;\n\n    /// @notice A checkpoint for marking number of votes from a given block\n    struct Checkpoint {\n        uint32 fromBlock;\n        uint96 votes;\n    }\n\n    /// @notice A record of votes checkpoints for each account, by index\n    mapping(address => mapping(uint32 => Checkpoint)) public checkpoints;\n\n    /// @notice The number of checkpoints for each account\n    mapping(address => uint32) public numCheckpoints;\n\n    /// @notice The EIP-712 typehash for the contract's domain\n    bytes32 public constant DOMAIN_TYPEHASH =\n        keccak256(\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\");\n\n    /// @notice The EIP-712 typehash for the delegation struct used by the contract\n    bytes32 public constant DELEGATION_TYPEHASH =\n        keccak256(\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\");\n\n    /// @notice A record of states for signing / validating signatures\n    mapping(address => uint) public nonces;\n\n    /// @notice An event thats emitted when an account changes its delegate\n    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);\n\n    /// @notice An event thats emitted when a delegate account's vote balance changes\n    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);\n\n    /// @notice The standard BEP-20 transfer event\n    event Transfer(address indexed from, address indexed to, uint256 amount);\n\n    /// @notice The standard BEP-20 approval event\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\n\n    /**\n     * @notice Construct a new XVS token\n     * @param account The initial account to grant all the tokens\n     */\n    constructor(address account) public {\n        balances[account] = uint96(totalSupply);\n        emit Transfer(address(0), account, totalSupply);\n    }\n\n    /**\n     * @notice Get the number of tokens `spender` is approved to spend on behalf of `account`\n     * @param account The address of the account holding the funds\n     * @param spender The address of the account spending the funds\n     * @return The number of tokens approved\n     */\n    function allowance(address account, address spender) external view returns (uint) {\n        return allowances[account][spender];\n    }\n\n    /**\n     * @notice Approve `spender` to transfer up to `amount` from `src`\n     * @dev This will overwrite the approval amount for `spender`\n     * @param spender The address of the account which may transfer tokens\n     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)\n     * @return Whether or not the approval succeeded\n     */\n    function approve(address spender, uint rawAmount) external validLock returns (bool) {\n        uint96 amount;\n        if (rawAmount == uint(-1)) {\n            amount = uint96(-1);\n        } else {\n            amount = safe96(rawAmount, \"XVS::approve: amount exceeds 96 bits\");\n        }\n\n        allowances[msg.sender][spender] = amount;\n\n        emit Approval(msg.sender, spender, amount);\n        return true;\n    }\n\n    /**\n     * @notice Get the number of tokens held by the `account`\n     * @param account The address of the account to get the balance of\n     * @return The number of tokens held\n     */\n    function balanceOf(address account) external view returns (uint) {\n        return balances[account];\n    }\n\n    /**\n     * @notice Transfer `amount` tokens from `msg.sender` to `dst`\n     * @param dst The address of the destination account\n     * @param rawAmount The number of tokens to transfer\n     * @return Whether or not the transfer succeeded\n     */\n    function transfer(address dst, uint rawAmount) external validLock returns (bool) {\n        uint96 amount = safe96(rawAmount, \"XVS::transfer: amount exceeds 96 bits\");\n        _transferTokens(msg.sender, dst, amount);\n        return true;\n    }\n\n    /**\n     * @notice Transfer `amount` tokens from `src` to `dst`\n     * @param src The address of the source account\n     * @param dst The address of the destination account\n     * @param rawAmount The number of tokens to transfer\n     * @return Whether or not the transfer succeeded\n     */\n    function transferFrom(address src, address dst, uint rawAmount) external validLock returns (bool) {\n        address spender = msg.sender;\n        uint96 spenderAllowance = allowances[src][spender];\n        uint96 amount = safe96(rawAmount, \"XVS::approve: amount exceeds 96 bits\");\n\n        if (spender != src && spenderAllowance != uint96(-1)) {\n            uint96 newAllowance = sub96(\n                spenderAllowance,\n                amount,\n                \"XVS::transferFrom: transfer amount exceeds spender allowance\"\n            );\n            allowances[src][spender] = newAllowance;\n\n            emit Approval(src, spender, newAllowance);\n        }\n\n        _transferTokens(src, dst, amount);\n        return true;\n    }\n\n    /**\n     * @notice Delegate votes from `msg.sender` to `delegatee`\n     * @param delegatee The address to delegate votes to\n     */\n    function delegate(address delegatee) public validLock {\n        return _delegate(msg.sender, delegatee);\n    }\n\n    /**\n     * @notice Delegates votes from signatory to `delegatee`\n     * @param delegatee The address to delegate votes to\n     * @param nonce The contract state required to match the signature\n     * @param expiry The time at which to expire the signature\n     * @param v The recovery byte of the signature\n     * @param r Half of the ECDSA signature pair\n     * @param s Half of the ECDSA signature pair\n     */\n    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public validLock {\n        bytes32 domainSeparator = keccak256(\n            abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))\n        );\n        bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));\n        bytes32 digest = keccak256(abi.encodePacked(\"\\x19\\x01\", domainSeparator, structHash));\n        address signatory = ecrecover(digest, v, r, s);\n        require(signatory != address(0), \"XVS::delegateBySig: invalid signature\");\n        require(nonce == nonces[signatory]++, \"XVS::delegateBySig: invalid nonce\");\n        require(now <= expiry, \"XVS::delegateBySig: signature expired\");\n        return _delegate(signatory, delegatee);\n    }\n\n    /**\n     * @notice Gets the current votes balance for `account`\n     * @param account The address to get votes balance\n     * @return The number of current votes for `account`\n     */\n    function getCurrentVotes(address account) external view returns (uint96) {\n        uint32 nCheckpoints = numCheckpoints[account];\n        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;\n    }\n\n    /**\n     * @notice Determine the prior number of votes for an account as of a block number\n     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.\n     * @param account The address of the account to check\n     * @param blockNumber The block number to get the vote balance at\n     * @return The number of votes the account had as of the given block\n     */\n    function getPriorVotes(address account, uint blockNumber) public view returns (uint96) {\n        require(blockNumber < block.number, \"XVS::getPriorVotes: not yet determined\");\n\n        uint32 nCheckpoints = numCheckpoints[account];\n        if (nCheckpoints == 0) {\n            return 0;\n        }\n\n        // First check most recent balance\n        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {\n            return checkpoints[account][nCheckpoints - 1].votes;\n        }\n\n        // Next check implicit zero balance\n        if (checkpoints[account][0].fromBlock > blockNumber) {\n            return 0;\n        }\n\n        uint32 lower = 0;\n        uint32 upper = nCheckpoints - 1;\n        while (upper > lower) {\n            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow\n            Checkpoint memory cp = checkpoints[account][center];\n            if (cp.fromBlock == blockNumber) {\n                return cp.votes;\n            } else if (cp.fromBlock < blockNumber) {\n                lower = center;\n            } else {\n                upper = center - 1;\n            }\n        }\n        return checkpoints[account][lower].votes;\n    }\n\n    function _delegate(address delegator, address delegatee) internal {\n        address currentDelegate = delegates[delegator];\n        uint96 delegatorBalance = balances[delegator];\n        delegates[delegator] = delegatee;\n\n        emit DelegateChanged(delegator, currentDelegate, delegatee);\n\n        _moveDelegates(currentDelegate, delegatee, delegatorBalance);\n    }\n\n    function _transferTokens(address src, address dst, uint96 amount) internal {\n        require(src != address(0), \"XVS::_transferTokens: cannot transfer from the zero address\");\n        require(dst != address(0), \"XVS::_transferTokens: cannot transfer to the zero address\");\n\n        balances[src] = sub96(balances[src], amount, \"XVS::_transferTokens: transfer amount exceeds balance\");\n        balances[dst] = add96(balances[dst], amount, \"XVS::_transferTokens: transfer amount overflows\");\n        emit Transfer(src, dst, amount);\n\n        _moveDelegates(delegates[src], delegates[dst], amount);\n    }\n\n    function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal {\n        if (srcRep != dstRep && amount > 0) {\n            if (srcRep != address(0)) {\n                uint32 srcRepNum = numCheckpoints[srcRep];\n                uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;\n                uint96 srcRepNew = sub96(srcRepOld, amount, \"XVS::_moveVotes: vote amount underflows\");\n                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);\n            }\n\n            if (dstRep != address(0)) {\n                uint32 dstRepNum = numCheckpoints[dstRep];\n                uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;\n                uint96 dstRepNew = add96(dstRepOld, amount, \"XVS::_moveVotes: vote amount overflows\");\n                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);\n            }\n        }\n    }\n\n    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal {\n        uint32 blockNumber = safe32(block.number, \"XVS::_writeCheckpoint: block number exceeds 32 bits\");\n\n        if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {\n            checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;\n        } else {\n            checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);\n            numCheckpoints[delegatee] = nCheckpoints + 1;\n        }\n\n        emit DelegateVotesChanged(delegatee, oldVotes, newVotes);\n    }\n\n    function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {\n        require(n < 2 ** 32, errorMessage);\n        return uint32(n);\n    }\n\n    function safe96(uint n, string memory errorMessage) internal pure returns (uint96) {\n        require(n < 2 ** 96, errorMessage);\n        return uint96(n);\n    }\n\n    function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {\n        uint96 c = a + b;\n        require(c >= a, errorMessage);\n        return c;\n    }\n\n    function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {\n        require(b <= a, errorMessage);\n        return a - b;\n    }\n\n    function getChainId() internal pure returns (uint) {\n        uint256 chainId;\n        assembly {\n            chainId := chainid()\n        }\n        return chainId;\n    }\n}\n"},"@venusprotocol/venus-protocol/contracts/Utils/Owned.sol":{"content":"pragma solidity ^0.5.16;\n\ncontract Owned {\n    address public owner;\n\n    event OwnershipTransferred(address indexed _from, address indexed _to);\n\n    constructor() public {\n        owner = msg.sender;\n    }\n\n    modifier onlyOwner() {\n        require(msg.sender == owner, \"Should be owner\");\n        _;\n    }\n\n    function transferOwnership(address newOwner) public onlyOwner {\n        owner = newOwner;\n        emit OwnershipTransferred(owner, newOwner);\n    }\n}\n"},"@venusprotocol/venus-protocol/contracts/Utils/Tokenlock.sol":{"content":"pragma solidity ^0.5.16;\n\nimport \"./Owned.sol\";\n\ncontract Tokenlock is Owned {\n    /// @notice Indicates if token is locked\n    uint8 internal isLocked = 0;\n\n    event Freezed();\n    event UnFreezed();\n\n    modifier validLock() {\n        require(isLocked == 0, \"Token is locked\");\n        _;\n    }\n\n    function freeze() public onlyOwner {\n        isLocked = 1;\n\n        emit Freezed();\n    }\n\n    function unfreeze() public onlyOwner {\n        isLocked = 0;\n\n        emit UnFreezed();\n    }\n}\n"},"contracts/hardhat-dependency-compiler/@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol';\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"outputSelection":{"*":{"*":["storageLayout","abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol","exportedSymbols":{"XVS":[969]},"id":970,"nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.5",".16"],"nodeType":"PragmaDirective","src":"0:24:0"},{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/Tokenlock.sol","file":"../../Utils/Tokenlock.sol","id":2,"nodeType":"ImportDirective","scope":970,"sourceUnit":1069,"src":"26:35:0","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":3,"name":"Tokenlock","nodeType":"UserDefinedTypeName","referencedDeclaration":1068,"src":"79:9:0","typeDescriptions":{"typeIdentifier":"t_contract$_Tokenlock_$1068","typeString":"contract Tokenlock"}},"id":4,"nodeType":"InheritanceSpecifier","src":"79:9:0"}],"contractDependencies":[1018,1068],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":969,"linearizedBaseContracts":[969,1068,1018],"name":"XVS","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":7,"name":"name","nodeType":"VariableDeclaration","scope":969,"src":"144:37:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string"},"typeName":{"id":5,"name":"string","nodeType":"ElementaryTypeName","src":"144:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"argumentTypes":null,"hexValue":"56656e7573","id":6,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"174:7:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_1a6875e3c24a024aa04a101518d25b2c59648a74ace83f8261f2a8e64025d85b","typeString":"literal_string \"Venus\""},"value":"Venus"},"visibility":"public"},{"constant":true,"id":10,"name":"symbol","nodeType":"VariableDeclaration","scope":969,"src":"239:37:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string"},"typeName":{"id":8,"name":"string","nodeType":"ElementaryTypeName","src":"239:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"argumentTypes":null,"hexValue":"585653","id":9,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"271:5:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_76e8c3a4e0bf6a403f16853d9a583f26097ecbfbbc77b1ec65fa370c98b12bf0","typeString":"literal_string \"XVS\""},"value":"XVS"},"visibility":"public"},{"constant":true,"id":13,"name":"decimals","nodeType":"VariableDeclaration","scope":969,"src":"336:35:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11,"name":"uint8","nodeType":"ElementaryTypeName","src":"336:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"argumentTypes":null,"hexValue":"3138","id":12,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"369:2:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"visibility":"public"},{"constant":true,"id":16,"name":"totalSupply","nodeType":"VariableDeclaration","scope":969,"src":"432:46:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14,"name":"uint","nodeType":"ElementaryTypeName","src":"432:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"3330303030303030653138","id":15,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"467:11:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_30000000000000000000000000_by_1","typeString":"int_const 30000000000000000000000000"},"value":"30000000e18"},"visibility":"public"},{"constant":false,"id":22,"name":"allowances","nodeType":"VariableDeclaration","scope":969,"src":"557:66:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$","typeString":"mapping(address => mapping(address => uint96))"},"typeName":{"id":21,"keyType":{"id":17,"name":"address","nodeType":"ElementaryTypeName","src":"565:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"557:46:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$","typeString":"mapping(address => mapping(address => uint96))"},"valueType":{"id":20,"keyType":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"584:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"576:26:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"},"valueType":{"id":19,"name":"uint96","nodeType":"ElementaryTypeName","src":"595:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}}},"value":null,"visibility":"internal"},{"constant":false,"id":26,"name":"balances","nodeType":"VariableDeclaration","scope":969,"src":"697:44:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"},"typeName":{"id":25,"keyType":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"705:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"697:26:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"},"valueType":{"id":24,"name":"uint96","nodeType":"ElementaryTypeName","src":"716:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}},"value":null,"visibility":"internal"},{"constant":false,"id":30,"name":"delegates","nodeType":"VariableDeclaration","scope":969,"src":"799:44:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":29,"keyType":{"id":27,"name":"address","nodeType":"ElementaryTypeName","src":"807:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"799:27:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":28,"name":"address","nodeType":"ElementaryTypeName","src":"818:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"value":null,"visibility":"public"},{"canonicalName":"XVS.Checkpoint","id":35,"members":[{"constant":false,"id":32,"name":"fromBlock","nodeType":"VariableDeclaration","scope":35,"src":"954:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":31,"name":"uint32","nodeType":"ElementaryTypeName","src":"954:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"},{"constant":false,"id":34,"name":"votes","nodeType":"VariableDeclaration","scope":35,"src":"980:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":33,"name":"uint96","nodeType":"ElementaryTypeName","src":"980:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"name":"Checkpoint","nodeType":"StructDefinition","scope":969,"src":"926:73:0","visibility":"public"},{"constant":false,"id":41,"name":"checkpoints","nodeType":"VariableDeclaration","scope":969,"src":"1078:68:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVS.Checkpoint))"},"typeName":{"id":40,"keyType":{"id":36,"name":"address","nodeType":"ElementaryTypeName","src":"1086:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1078:49:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVS.Checkpoint))"},"valueType":{"id":39,"keyType":{"id":37,"name":"uint32","nodeType":"ElementaryTypeName","src":"1105:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"1097:29:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$","typeString":"mapping(uint32 => struct XVS.Checkpoint)"},"valueType":{"contractScope":null,"id":38,"name":"Checkpoint","nodeType":"UserDefinedTypeName","referencedDeclaration":35,"src":"1115:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_storage_ptr","typeString":"struct XVS.Checkpoint"}}}},"value":null,"visibility":"public"},{"constant":false,"id":45,"name":"numCheckpoints","nodeType":"VariableDeclaration","scope":969,"src":"1212:48:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"},"typeName":{"id":44,"keyType":{"id":42,"name":"address","nodeType":"ElementaryTypeName","src":"1220:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1212:26:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"},"valueType":{"id":43,"name":"uint32","nodeType":"ElementaryTypeName","src":"1231:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}},"value":null,"visibility":"public"},{"constant":true,"id":50,"name":"DOMAIN_TYPEHASH","nodeType":"VariableDeclaration","scope":969,"src":"1330:130:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":46,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1330:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":48,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1390:69:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866","typeString":"literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866","typeString":"literal_string \"EIP712Domain(string name,uint256 chainId,address verifyingContract)\""}],"id":47,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"1380:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":49,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1380:80:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"id":55,"name":"DELEGATION_TYPEHASH","nodeType":"VariableDeclaration","scope":969,"src":"1551:125:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":51,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1551:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"44656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929","id":53,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1615:60:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_e48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf","typeString":"literal_string \"Delegation(address delegatee,uint256 nonce,uint256 expiry)\""},"value":"Delegation(address delegatee,uint256 nonce,uint256 expiry)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf","typeString":"literal_string \"Delegation(address delegatee,uint256 nonce,uint256 expiry)\""}],"id":52,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"1605:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1605:71:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"id":59,"name":"nonces","nodeType":"VariableDeclaration","scope":969,"src":"1754:38:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":58,"keyType":{"id":56,"name":"address","nodeType":"ElementaryTypeName","src":"1762:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1754:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":57,"name":"uint","nodeType":"ElementaryTypeName","src":"1773:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"anonymous":false,"documentation":"@notice An event thats emitted when an account changes its delegate","id":67,"name":"DelegateChanged","nodeType":"EventDefinition","parameters":{"id":66,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61,"indexed":true,"name":"delegator","nodeType":"VariableDeclaration","scope":67,"src":"1897:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60,"name":"address","nodeType":"ElementaryTypeName","src":"1897:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":63,"indexed":true,"name":"fromDelegate","nodeType":"VariableDeclaration","scope":67,"src":"1924:28:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62,"name":"address","nodeType":"ElementaryTypeName","src":"1924:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":65,"indexed":true,"name":"toDelegate","nodeType":"VariableDeclaration","scope":67,"src":"1954:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":64,"name":"address","nodeType":"ElementaryTypeName","src":"1954:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1896:85:0"},"src":"1875:107:0"},{"anonymous":false,"documentation":"@notice An event thats emitted when a delegate account's vote balance changes","id":75,"name":"DelegateVotesChanged","nodeType":"EventDefinition","parameters":{"id":74,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"indexed":true,"name":"delegate","nodeType":"VariableDeclaration","scope":75,"src":"2101:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"2101:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":71,"indexed":false,"name":"previousBalance","nodeType":"VariableDeclaration","scope":75,"src":"2127:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":70,"name":"uint","nodeType":"ElementaryTypeName","src":"2127:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":73,"indexed":false,"name":"newBalance","nodeType":"VariableDeclaration","scope":75,"src":"2149:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72,"name":"uint","nodeType":"ElementaryTypeName","src":"2149:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2100:65:0"},"src":"2074:92:0"},{"anonymous":false,"documentation":"@notice The standard BEP-20 transfer event","id":83,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77,"indexed":true,"name":"from","nodeType":"VariableDeclaration","scope":83,"src":"2238:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76,"name":"address","nodeType":"ElementaryTypeName","src":"2238:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":79,"indexed":true,"name":"to","nodeType":"VariableDeclaration","scope":83,"src":"2260:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78,"name":"address","nodeType":"ElementaryTypeName","src":"2260:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":81,"indexed":false,"name":"amount","nodeType":"VariableDeclaration","scope":83,"src":"2280:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80,"name":"uint256","nodeType":"ElementaryTypeName","src":"2280:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2237:58:0"},"src":"2223:73:0"},{"anonymous":false,"documentation":"@notice The standard BEP-20 approval event","id":91,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":90,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85,"indexed":true,"name":"owner","nodeType":"VariableDeclaration","scope":91,"src":"2368:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84,"name":"address","nodeType":"ElementaryTypeName","src":"2368:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":87,"indexed":true,"name":"spender","nodeType":"VariableDeclaration","scope":91,"src":"2391:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":86,"name":"address","nodeType":"ElementaryTypeName","src":"2391:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":89,"indexed":false,"name":"amount","nodeType":"VariableDeclaration","scope":91,"src":"2416:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88,"name":"uint256","nodeType":"ElementaryTypeName","src":"2416:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2367:64:0"},"src":"2353:79:0"},{"body":{"id":112,"nodeType":"Block","src":"2597:113:0","statements":[{"expression":{"argumentTypes":null,"id":102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":96,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"2607:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":98,"indexExpression":{"argumentTypes":null,"id":97,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":93,"src":"2616:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2607:17:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":100,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"2634:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":99,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2627:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":"uint96"},"id":101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2627:19:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"2607:39:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":103,"nodeType":"ExpressionStatement","src":"2607:39:0"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2678:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2670:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2670:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":108,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":93,"src":"2682:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":109,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"2691:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":104,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"2661:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2661:42:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":111,"nodeType":"EmitStatement","src":"2656:47:0"}]},"documentation":"@notice Construct a new XVS token\n@param account The initial account to grant all the tokens","id":113,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":94,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"name":"account","nodeType":"VariableDeclaration","scope":113,"src":"2573:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":92,"name":"address","nodeType":"ElementaryTypeName","src":"2573:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2572:17:0"},"returnParameters":{"id":95,"nodeType":"ParameterList","parameters":[],"src":"2597:0:0"},"scope":969,"src":"2561:149:0","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":128,"nodeType":"Block","src":"3088:52:0","statements":[{"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":122,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22,"src":"3105:10:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$","typeString":"mapping(address => mapping(address => uint96))"}},"id":124,"indexExpression":{"argumentTypes":null,"id":123,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115,"src":"3116:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3105:19:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":126,"indexExpression":{"argumentTypes":null,"id":125,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117,"src":"3125:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3105:28:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":121,"id":127,"nodeType":"Return","src":"3098:35:0"}]},"documentation":"@notice Get the number of tokens `spender` is approved to spend on behalf of `account`\n@param account The address of the account holding the funds\n@param spender The address of the account spending the funds\n@return The number of tokens approved","id":129,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":115,"name":"account","nodeType":"VariableDeclaration","scope":129,"src":"3025:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":114,"name":"address","nodeType":"ElementaryTypeName","src":"3025:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":117,"name":"spender","nodeType":"VariableDeclaration","scope":129,"src":"3042:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":116,"name":"address","nodeType":"ElementaryTypeName","src":"3042:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"3024:34:0"},"returnParameters":{"id":121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120,"name":"","nodeType":"VariableDeclaration","scope":129,"src":"3082:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":119,"name":"uint","nodeType":"ElementaryTypeName","src":"3082:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3081:6:0"},"scope":969,"src":"3006:134:0","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":{"id":184,"nodeType":"Block","src":"3599:332:0","statements":[{"assignments":[141],"declarations":[{"constant":false,"id":141,"name":"amount","nodeType":"VariableDeclaration","scope":184,"src":"3609:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":140,"name":"uint96","nodeType":"ElementaryTypeName","src":"3609:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":142,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"3609:13:0"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":143,"name":"rawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":133,"src":"3636:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":146,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3654:2:0","subExpression":{"argumentTypes":null,"hexValue":"31","id":145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3655:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3649:4:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":"uint"},"id":147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3649:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3636:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":164,"nodeType":"Block","src":"3709:91:0","statements":[{"expression":{"argumentTypes":null,"id":162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":157,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3723:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":159,"name":"rawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":133,"src":"3739:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"5856533a3a617070726f76653a20616d6f756e7420657863656564732039362062697473","id":160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3750:38:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8cd7b820d3f2aeef11c5505712f00610d19902d1eeec2434c7a048d5821cab58","typeString":"literal_string \"XVS::approve: amount exceeds 96 bits\""},"value":"XVS::approve: amount exceeds 96 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_8cd7b820d3f2aeef11c5505712f00610d19902d1eeec2434c7a048d5821cab58","typeString":"literal_string \"XVS::approve: amount exceeds 96 bits\""}],"id":158,"name":"safe96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"3732:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint256,string memory) pure returns (uint96)"}},"id":161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3732:57:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"3723:66:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":163,"nodeType":"ExpressionStatement","src":"3723:66:0"}]},"id":165,"nodeType":"IfStatement","src":"3632:168:0","trueBody":{"id":156,"nodeType":"Block","src":"3659:44:0","statements":[{"expression":{"argumentTypes":null,"id":154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":149,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3673:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3689:2:0","subExpression":{"argumentTypes":null,"hexValue":"31","id":151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3690:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3682:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":"uint96"},"id":153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3682:10:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"3673:19:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":155,"nodeType":"ExpressionStatement","src":"3673:19:0"}]}},{"expression":{"argumentTypes":null,"id":173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":166,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22,"src":"3810:10:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$","typeString":"mapping(address => mapping(address => uint96))"}},"id":170,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":167,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1086,"src":"3821:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3821:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3810:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":171,"indexExpression":{"argumentTypes":null,"id":169,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":131,"src":"3833:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3810:31:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":172,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3844:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"3810:40:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":174,"nodeType":"ExpressionStatement","src":"3810:40:0"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":176,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1086,"src":"3875:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3875:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":178,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":131,"src":"3887:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":179,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":141,"src":"3896:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":175,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91,"src":"3866:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3866:37:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":181,"nodeType":"EmitStatement","src":"3861:42:0"},{"expression":{"argumentTypes":null,"hexValue":"74727565","id":182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3920:4:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":139,"id":183,"nodeType":"Return","src":"3913:11:0"}]},"documentation":"@notice Approve `spender` to transfer up to `amount` from `src`\n@dev This will overwrite the approval amount for `spender`\n@param spender The address of the account which may transfer tokens\n@param rawAmount The number of tokens that are approved (2^256-1 means infinite)\n@return Whether or not the approval succeeded","id":185,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":136,"modifierName":{"argumentTypes":null,"id":135,"name":"validLock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"3574:9:0","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3574:9:0"}],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":131,"name":"spender","nodeType":"VariableDeclaration","scope":185,"src":"3532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":130,"name":"address","nodeType":"ElementaryTypeName","src":"3532:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":133,"name":"rawAmount","nodeType":"VariableDeclaration","scope":185,"src":"3549:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint","nodeType":"ElementaryTypeName","src":"3549:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3531:33:0"},"returnParameters":{"id":139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":138,"name":"","nodeType":"VariableDeclaration","scope":185,"src":"3593:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":137,"name":"bool","nodeType":"ElementaryTypeName","src":"3593:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"3592:6:0"},"scope":969,"src":"3515:416:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":196,"nodeType":"Block","src":"4192:41:0","statements":[{"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":192,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"4209:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":194,"indexExpression":{"argumentTypes":null,"id":193,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"4218:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4209:17:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":191,"id":195,"nodeType":"Return","src":"4202:24:0"}]},"documentation":"@notice Get the number of tokens held by the `account`\n@param account The address of the account to get the balance of\n@return The number of tokens held","id":197,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":187,"name":"account","nodeType":"VariableDeclaration","scope":197,"src":"4146:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":186,"name":"address","nodeType":"ElementaryTypeName","src":"4146:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"4145:17:0"},"returnParameters":{"id":191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":190,"name":"","nodeType":"VariableDeclaration","scope":197,"src":"4186:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":189,"name":"uint","nodeType":"ElementaryTypeName","src":"4186:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4185:6:0"},"scope":969,"src":"4127:106:0","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":{"id":224,"nodeType":"Block","src":"4570:162:0","statements":[{"assignments":[209],"declarations":[{"constant":false,"id":209,"name":"amount","nodeType":"VariableDeclaration","scope":224,"src":"4580:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":208,"name":"uint96","nodeType":"ElementaryTypeName","src":"4580:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":214,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":211,"name":"rawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":201,"src":"4603:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"5856533a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473","id":212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4614:39:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_47b3465ea31744f8f51e9eb019f35a094051ae83d58a83ecb341321f98a3690a","typeString":"literal_string \"XVS::transfer: amount exceeds 96 bits\""},"value":"XVS::transfer: amount exceeds 96 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_47b3465ea31744f8f51e9eb019f35a094051ae83d58a83ecb341321f98a3690a","typeString":"literal_string \"XVS::transfer: amount exceeds 96 bits\""}],"id":210,"name":"safe96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"4596:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint256,string memory) pure returns (uint96)"}},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4596:58:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"4580:74:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":216,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1086,"src":"4680:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4680:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":218,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":199,"src":"4692:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":219,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":209,"src":"4697:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":215,"name":"_transferTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":680,"src":"4664:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint96_$returns$__$","typeString":"function (address,address,uint96)"}},"id":220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4664:40:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":221,"nodeType":"ExpressionStatement","src":"4664:40:0"},{"expression":{"argumentTypes":null,"hexValue":"74727565","id":222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4721:4:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":207,"id":223,"nodeType":"Return","src":"4714:11:0"}]},"documentation":"@notice Transfer `amount` tokens from `msg.sender` to `dst`\n@param dst The address of the destination account\n@param rawAmount The number of tokens to transfer\n@return Whether or not the transfer succeeded","id":225,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":204,"modifierName":{"argumentTypes":null,"id":203,"name":"validLock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"4545:9:0","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4545:9:0"}],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":199,"name":"dst","nodeType":"VariableDeclaration","scope":225,"src":"4507:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":198,"name":"address","nodeType":"ElementaryTypeName","src":"4507:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":201,"name":"rawAmount","nodeType":"VariableDeclaration","scope":225,"src":"4520:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":200,"name":"uint","nodeType":"ElementaryTypeName","src":"4520:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4506:29:0"},"returnParameters":{"id":207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":206,"name":"","nodeType":"VariableDeclaration","scope":225,"src":"4564:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":205,"name":"bool","nodeType":"ElementaryTypeName","src":"4564:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"4563:6:0"},"scope":969,"src":"4489:243:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":300,"nodeType":"Block","src":"5131:630:0","statements":[{"assignments":[239],"declarations":[{"constant":false,"id":239,"name":"spender","nodeType":"VariableDeclaration","scope":300,"src":"5141:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":238,"name":"address","nodeType":"ElementaryTypeName","src":"5141:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":242,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":240,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1086,"src":"5159:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5159:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"5141:28:0"},{"assignments":[244],"declarations":[{"constant":false,"id":244,"name":"spenderAllowance","nodeType":"VariableDeclaration","scope":300,"src":"5179:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":243,"name":"uint96","nodeType":"ElementaryTypeName","src":"5179:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":250,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":245,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22,"src":"5205:10:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$","typeString":"mapping(address => mapping(address => uint96))"}},"id":247,"indexExpression":{"argumentTypes":null,"id":246,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"5216:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5205:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":249,"indexExpression":{"argumentTypes":null,"id":248,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"5221:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5205:24:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"5179:50:0"},{"assignments":[252],"declarations":[{"constant":false,"id":252,"name":"amount","nodeType":"VariableDeclaration","scope":300,"src":"5239:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":251,"name":"uint96","nodeType":"ElementaryTypeName","src":"5239:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":257,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":254,"name":"rawAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"5262:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"5856533a3a617070726f76653a20616d6f756e7420657863656564732039362062697473","id":255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5273:38:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8cd7b820d3f2aeef11c5505712f00610d19902d1eeec2434c7a048d5821cab58","typeString":"literal_string \"XVS::approve: amount exceeds 96 bits\""},"value":"XVS::approve: amount exceeds 96 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_8cd7b820d3f2aeef11c5505712f00610d19902d1eeec2434c7a048d5821cab58","typeString":"literal_string \"XVS::approve: amount exceeds 96 bits\""}],"id":253,"name":"safe96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"5255:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint256,string memory) pure returns (uint96)"}},"id":256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5255:57:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"5239:73:0"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":258,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"5327:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":259,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"5338:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5327:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":261,"name":"spenderAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"5345:16:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"5372:2:0","subExpression":{"argumentTypes":null,"hexValue":"31","id":263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5373:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5365:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":"uint96"},"id":265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5365:10:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"5345:30:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5327:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":291,"nodeType":"IfStatement","src":"5323:367:0","trueBody":{"id":290,"nodeType":"Block","src":"5377:313:0","statements":[{"assignments":[269],"declarations":[{"constant":false,"id":269,"name":"newAllowance","nodeType":"VariableDeclaration","scope":290,"src":"5391:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":268,"name":"uint96","nodeType":"ElementaryTypeName","src":"5391:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":275,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":271,"name":"spenderAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":244,"src":"5436:16:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":272,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"5470:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"hexValue":"5856533a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365","id":273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5494:62:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_0629ca96c0f38ede9e4dfe1869b4af7345ace847c94f57453b7c175798bbe4da","typeString":"literal_string \"XVS::transferFrom: transfer amount exceeds spender allowance\""},"value":"XVS::transferFrom: transfer amount exceeds spender allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_stringliteral_0629ca96c0f38ede9e4dfe1869b4af7345ace847c94f57453b7c175798bbe4da","typeString":"literal_string \"XVS::transferFrom: transfer amount exceeds spender allowance\""}],"id":270,"name":"sub96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"5413:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint96,uint96,string memory) pure returns (uint96)"}},"id":274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5413:157:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"5391:179:0"},{"expression":{"argumentTypes":null,"id":282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":276,"name":"allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22,"src":"5584:10:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint96_$_$","typeString":"mapping(address => mapping(address => uint96))"}},"id":279,"indexExpression":{"argumentTypes":null,"id":277,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"5595:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5584:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":280,"indexExpression":{"argumentTypes":null,"id":278,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"5600:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5584:24:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":281,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":269,"src":"5611:12:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"5584:39:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":283,"nodeType":"ExpressionStatement","src":"5584:39:0"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":285,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"5652:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":286,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":239,"src":"5657:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":287,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":269,"src":"5666:12:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":284,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91,"src":"5643:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5643:36:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":289,"nodeType":"EmitStatement","src":"5638:41:0"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":293,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"5716:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":294,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"5721:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":295,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"5726:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":292,"name":"_transferTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":680,"src":"5700:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint96_$returns$__$","typeString":"function (address,address,uint96)"}},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5700:33:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":297,"nodeType":"ExpressionStatement","src":"5700:33:0"},{"expression":{"argumentTypes":null,"hexValue":"74727565","id":298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5750:4:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":237,"id":299,"nodeType":"Return","src":"5743:11:0"}]},"documentation":"@notice Transfer `amount` tokens from `src` to `dst`\n@param src The address of the source account\n@param dst The address of the destination account\n@param rawAmount The number of tokens to transfer\n@return Whether or not the transfer succeeded","id":301,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":234,"modifierName":{"argumentTypes":null,"id":233,"name":"validLock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"5106:9:0","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"5106:9:0"}],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":227,"name":"src","nodeType":"VariableDeclaration","scope":301,"src":"5055:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":226,"name":"address","nodeType":"ElementaryTypeName","src":"5055:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":229,"name":"dst","nodeType":"VariableDeclaration","scope":301,"src":"5068:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":228,"name":"address","nodeType":"ElementaryTypeName","src":"5068:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":231,"name":"rawAmount","nodeType":"VariableDeclaration","scope":301,"src":"5081:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":230,"name":"uint","nodeType":"ElementaryTypeName","src":"5081:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5054:42:0"},"returnParameters":{"id":237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":236,"name":"","nodeType":"VariableDeclaration","scope":301,"src":"5125:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":235,"name":"bool","nodeType":"ElementaryTypeName","src":"5125:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"5124:6:0"},"scope":969,"src":"5033:728:0","stateMutability":"nonpayable","superFunction":null,"visibility":"external"},{"body":{"id":314,"nodeType":"Block","src":"5957:56:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":309,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1086,"src":"5984:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5984:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":311,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":303,"src":"5996:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"id":308,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"5974:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5974:32:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":307,"id":313,"nodeType":"Return","src":"5967:39:0"}]},"documentation":"@notice Delegate votes from `msg.sender` to `delegatee`\n@param delegatee The address to delegate votes to","id":315,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":306,"modifierName":{"argumentTypes":null,"id":305,"name":"validLock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"5947:9:0","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"5947:9:0"}],"name":"delegate","nodeType":"FunctionDefinition","parameters":{"id":304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":303,"name":"delegatee","nodeType":"VariableDeclaration","scope":315,"src":"5921:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":302,"name":"address","nodeType":"ElementaryTypeName","src":"5921:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"5920:19:0"},"returnParameters":{"id":307,"nodeType":"ParameterList","parameters":[],"src":"5957:0:0"},"scope":969,"src":"5903:110:0","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":414,"nodeType":"Block","src":"6551:694:0","statements":[{"assignments":[333],"declarations":[{"constant":false,"id":333,"name":"domainSeparator","nodeType":"VariableDeclaration","scope":414,"src":"6561:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":332,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6561:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":350,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":337,"name":"DOMAIN_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50,"src":"6621:15:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":340,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"6654:4:0","typeDescriptions":{"typeIdentifier":"t_string_memory","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory","typeString":"string memory"}],"id":339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6648:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":"bytes"},"id":341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6648:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":338,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"6638:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6638:22:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":343,"name":"getChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"6662:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint256_$","typeString":"function () pure returns (uint256)"}},"id":344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6662:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":346,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1104,"src":"6684:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_XVS_$969","typeString":"contract XVS"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_XVS_$969","typeString":"contract XVS"}],"id":345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6676:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6676:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":335,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1073,"src":"6610:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6610:10:0","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6610:80:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":334,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"6587:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6587:113:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6561:139:0"},{"assignments":[352],"declarations":[{"constant":false,"id":352,"name":"structHash","nodeType":"VariableDeclaration","scope":414,"src":"6710:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":351,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6710:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":362,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":356,"name":"DELEGATION_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55,"src":"6752:19:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":357,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":317,"src":"6773:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":358,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":319,"src":"6784:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":359,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"6791:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":354,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1073,"src":"6741:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6741:10:0","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6741:57:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":353,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"6731:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6731:68:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6710:89:0"},{"assignments":[364],"declarations":[{"constant":false,"id":364,"name":"digest","nodeType":"VariableDeclaration","scope":414,"src":"6809:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":363,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6809:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":373,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"1901","id":368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6853:10:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},"value":"\u0019\u0001"},{"argumentTypes":null,"id":369,"name":"domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":333,"src":"6865:15:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":370,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"6882:10:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":366,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1073,"src":"6836:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6836:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6836:57:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":365,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"6826:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6826:68:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6809:85:0"},{"assignments":[375],"declarations":[{"constant":false,"id":375,"name":"signatory","nodeType":"VariableDeclaration","scope":414,"src":"6904:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":374,"name":"address","nodeType":"ElementaryTypeName","src":"6904:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":382,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":377,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"6934:6:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":378,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":323,"src":"6942:1:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"argumentTypes":null,"id":379,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"6945:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":380,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"6948:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":376,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1078,"src":"6924:9:0","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6924:26:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6904:46:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":384,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"6968:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6989:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6981:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6981:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"6968:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5856533a3a64656c656761746542795369673a20696e76616c6964207369676e6174757265","id":389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6993:39:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_7f6730b4b5148b566b6d370119c3facc4d9c2fb223070d1498836c5b181e33b3","typeString":"literal_string \"XVS::delegateBySig: invalid signature\""},"value":"XVS::delegateBySig: invalid signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7f6730b4b5148b566b6d370119c3facc4d9c2fb223070d1498836c5b181e33b3","typeString":"literal_string \"XVS::delegateBySig: invalid signature\""}],"id":383,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1089,1090],"referencedDeclaration":1090,"src":"6960:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6960:73:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":391,"nodeType":"ExpressionStatement","src":"6960:73:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":393,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":319,"src":"7051:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7060:19:0","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":394,"name":"nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59,"src":"7060:6:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":396,"indexExpression":{"argumentTypes":null,"id":395,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"7067:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7060:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7051:28:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5856533a3a64656c656761746542795369673a20696e76616c6964206e6f6e6365","id":399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7081:35:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_51328b0860fd5caf40db82151d429d86c24b3e775e2ae62a20a91da186c108d4","typeString":"literal_string \"XVS::delegateBySig: invalid nonce\""},"value":"XVS::delegateBySig: invalid nonce"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51328b0860fd5caf40db82151d429d86c24b3e775e2ae62a20a91da186c108d4","typeString":"literal_string \"XVS::delegateBySig: invalid nonce\""}],"id":392,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1089,1090],"referencedDeclaration":1090,"src":"7043:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7043:74:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":401,"nodeType":"ExpressionStatement","src":"7043:74:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":403,"name":"now","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1088,"src":"7135:3:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":404,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"7142:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7135:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5856533a3a64656c656761746542795369673a207369676e61747572652065787069726564","id":406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7150:39:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8325ab48d3babd3e3b5658071ebcabdef7fa639672c588c2a6d32e285ed84340","typeString":"literal_string \"XVS::delegateBySig: signature expired\""},"value":"XVS::delegateBySig: signature expired"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8325ab48d3babd3e3b5658071ebcabdef7fa639672c588c2a6d32e285ed84340","typeString":"literal_string \"XVS::delegateBySig: signature expired\""}],"id":402,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1089,1090],"referencedDeclaration":1090,"src":"7127:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7127:63:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":408,"nodeType":"ExpressionStatement","src":"7127:63:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":410,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"7217:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":411,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":317,"src":"7228:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":409,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"7207:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7207:31:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":331,"id":413,"nodeType":"Return","src":"7200:38:0"}]},"documentation":"@notice Delegates votes from signatory to `delegatee`\n@param delegatee The address to delegate votes to\n@param nonce The contract state required to match the signature\n@param expiry The time at which to expire the signature\n@param v The recovery byte of the signature\n@param r Half of the ECDSA signature pair\n@param s Half of the ECDSA signature pair","id":415,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":330,"modifierName":{"argumentTypes":null,"id":329,"name":"validLock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"6541:9:0","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"6541:9:0"}],"name":"delegateBySig","nodeType":"FunctionDefinition","parameters":{"id":328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":317,"name":"delegatee","nodeType":"VariableDeclaration","scope":415,"src":"6459:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":316,"name":"address","nodeType":"ElementaryTypeName","src":"6459:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":319,"name":"nonce","nodeType":"VariableDeclaration","scope":415,"src":"6478:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":318,"name":"uint","nodeType":"ElementaryTypeName","src":"6478:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":321,"name":"expiry","nodeType":"VariableDeclaration","scope":415,"src":"6490:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":320,"name":"uint","nodeType":"ElementaryTypeName","src":"6490:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":323,"name":"v","nodeType":"VariableDeclaration","scope":415,"src":"6503:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":322,"name":"uint8","nodeType":"ElementaryTypeName","src":"6503:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":325,"name":"r","nodeType":"VariableDeclaration","scope":415,"src":"6512:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":324,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6512:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":327,"name":"s","nodeType":"VariableDeclaration","scope":415,"src":"6523:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":326,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6523:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"6458:75:0"},"returnParameters":{"id":331,"nodeType":"ParameterList","parameters":[],"src":"6551:0:0"},"scope":969,"src":"6436:809:0","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":442,"nodeType":"Block","src":"7512:146:0","statements":[{"assignments":[423],"declarations":[{"constant":false,"id":423,"name":"nCheckpoints","nodeType":"VariableDeclaration","scope":442,"src":"7522:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":422,"name":"uint32","nodeType":"ElementaryTypeName","src":"7522:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":427,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":424,"name":"numCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"7544:14:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"}},"id":426,"indexExpression":{"argumentTypes":null,"id":425,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"7559:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7544:23:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"7522:45:0"},{"expression":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":428,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":423,"src":"7584:12:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7599:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7584:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"hexValue":"30","id":439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7650:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7584:67:0","trueExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":431,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"7603:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVS.Checkpoint storage ref))"}},"id":433,"indexExpression":{"argumentTypes":null,"id":432,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"7615:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7603:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$","typeString":"mapping(uint32 => struct XVS.Checkpoint storage ref)"}},"id":437,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":434,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":423,"src":"7624:12:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7639:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7624:16:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7603:38:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_storage","typeString":"struct XVS.Checkpoint storage ref"}},"id":438,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":34,"src":"7603:44:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":421,"id":441,"nodeType":"Return","src":"7577:74:0"}]},"documentation":"@notice Gets the current votes balance for `account`\n@param account The address to get votes balance\n@return The number of current votes for `account`","id":443,"implemented":true,"kind":"function","modifiers":[],"name":"getCurrentVotes","nodeType":"FunctionDefinition","parameters":{"id":418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":417,"name":"account","nodeType":"VariableDeclaration","scope":443,"src":"7464:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":416,"name":"address","nodeType":"ElementaryTypeName","src":"7464:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"7463:17:0"},"returnParameters":{"id":421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":420,"name":"","nodeType":"VariableDeclaration","scope":443,"src":"7504:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":419,"name":"uint96","nodeType":"ElementaryTypeName","src":"7504:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"7503:8:0"},"scope":969,"src":"7439:219:0","stateMutability":"view","superFunction":null,"visibility":"external"},{"body":{"id":573,"nodeType":"Block","src":"8167:1098:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":453,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"8185:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":454,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1076,"src":"8199:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8199:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8185:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5856533a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564","id":457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8213:40:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9aa1ce3e5065528ee5db60ea855acf421b75ec300e04db99cf79ac1b709cf1a5","typeString":"literal_string \"XVS::getPriorVotes: not yet determined\""},"value":"XVS::getPriorVotes: not yet determined"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9aa1ce3e5065528ee5db60ea855acf421b75ec300e04db99cf79ac1b709cf1a5","typeString":"literal_string \"XVS::getPriorVotes: not yet determined\""}],"id":452,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1089,1090],"referencedDeclaration":1090,"src":"8177:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8177:77:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":459,"nodeType":"ExpressionStatement","src":"8177:77:0"},{"assignments":[461],"declarations":[{"constant":false,"id":461,"name":"nCheckpoints","nodeType":"VariableDeclaration","scope":573,"src":"8265:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":460,"name":"uint32","nodeType":"ElementaryTypeName","src":"8265:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":465,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":462,"name":"numCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"8287:14:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"}},"id":464,"indexExpression":{"argumentTypes":null,"id":463,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":445,"src":"8302:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8287:23:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"8265:45:0"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":466,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"8324:12:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8340:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8324:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":472,"nodeType":"IfStatement","src":"8320:56:0","trueBody":{"id":471,"nodeType":"Block","src":"8343:33:0","statements":[{"expression":{"argumentTypes":null,"hexValue":"30","id":469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8364:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":451,"id":470,"nodeType":"Return","src":"8357:8:0"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":473,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"8433:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVS.Checkpoint storage ref))"}},"id":475,"indexExpression":{"argumentTypes":null,"id":474,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":445,"src":"8445:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8433:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$","typeString":"mapping(uint32 => struct XVS.Checkpoint storage ref)"}},"id":479,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":476,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"8454:12:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8469:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8454:16:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8433:38:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_storage","typeString":"struct XVS.Checkpoint storage ref"}},"id":480,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fromBlock","nodeType":"MemberAccess","referencedDeclaration":32,"src":"8433:48:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":481,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"8485:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8433:63:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":493,"nodeType":"IfStatement","src":"8429:145:0","trueBody":{"id":492,"nodeType":"Block","src":"8498:76:0","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":483,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"8519:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVS.Checkpoint storage ref))"}},"id":485,"indexExpression":{"argumentTypes":null,"id":484,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":445,"src":"8531:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8519:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$","typeString":"mapping(uint32 => struct XVS.Checkpoint storage ref)"}},"id":489,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":486,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"8540:12:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8555:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8540:16:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8519:38:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_storage","typeString":"struct XVS.Checkpoint storage ref"}},"id":490,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":34,"src":"8519:44:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":451,"id":491,"nodeType":"Return","src":"8512:51:0"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":494,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"8632:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVS.Checkpoint storage ref))"}},"id":496,"indexExpression":{"argumentTypes":null,"id":495,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":445,"src":"8644:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8632:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$","typeString":"mapping(uint32 => struct XVS.Checkpoint storage ref)"}},"id":498,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8653:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8632:23:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_storage","typeString":"struct XVS.Checkpoint storage ref"}},"id":499,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fromBlock","nodeType":"MemberAccess","referencedDeclaration":32,"src":"8632:33:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":500,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"8668:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8632:47:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":505,"nodeType":"IfStatement","src":"8628:86:0","trueBody":{"id":504,"nodeType":"Block","src":"8681:33:0","statements":[{"expression":{"argumentTypes":null,"hexValue":"30","id":502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8702:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":451,"id":503,"nodeType":"Return","src":"8695:8:0"}]}},{"assignments":[507],"declarations":[{"constant":false,"id":507,"name":"lower","nodeType":"VariableDeclaration","scope":573,"src":"8724:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":506,"name":"uint32","nodeType":"ElementaryTypeName","src":"8724:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":509,"initialValue":{"argumentTypes":null,"hexValue":"30","id":508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8739:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8724:16:0"},{"assignments":[511],"declarations":[{"constant":false,"id":511,"name":"upper","nodeType":"VariableDeclaration","scope":573,"src":"8750:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":510,"name":"uint32","nodeType":"ElementaryTypeName","src":"8750:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":515,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":512,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"8765:12:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8780:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8765:16:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"8750:31:0"},{"body":{"id":564,"nodeType":"Block","src":"8813:396:0","statements":[{"assignments":[520],"declarations":[{"constant":false,"id":520,"name":"center","nodeType":"VariableDeclaration","scope":564,"src":"8827:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":519,"name":"uint32","nodeType":"ElementaryTypeName","src":"8827:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":529,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":521,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"8843:5:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":522,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"8852:5:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":523,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"8860:5:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"8852:13:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":525,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8851:15:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"hexValue":"32","id":526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8869:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"8851:19:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"8843:27:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"8827:43:0"},{"assignments":[531],"declarations":[{"constant":false,"id":531,"name":"cp","nodeType":"VariableDeclaration","scope":564,"src":"8911:20:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_memory_ptr","typeString":"struct XVS.Checkpoint"},"typeName":{"contractScope":null,"id":530,"name":"Checkpoint","nodeType":"UserDefinedTypeName","referencedDeclaration":35,"src":"8911:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_storage_ptr","typeString":"struct XVS.Checkpoint"}},"value":null,"visibility":"internal"}],"id":537,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":532,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"8934:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVS.Checkpoint storage ref))"}},"id":534,"indexExpression":{"argumentTypes":null,"id":533,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":445,"src":"8946:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8934:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$","typeString":"mapping(uint32 => struct XVS.Checkpoint storage ref)"}},"id":536,"indexExpression":{"argumentTypes":null,"id":535,"name":"center","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"8955:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8934:28:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_storage","typeString":"struct XVS.Checkpoint storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8911:51:0"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":538,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"8980:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_memory_ptr","typeString":"struct XVS.Checkpoint memory"}},"id":539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fromBlock","nodeType":"MemberAccess","referencedDeclaration":32,"src":"8980:12:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":540,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"8996:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8980:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":546,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"9067:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_memory_ptr","typeString":"struct XVS.Checkpoint memory"}},"id":547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fromBlock","nodeType":"MemberAccess","referencedDeclaration":32,"src":"9067:12:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":548,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"9082:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9067:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":561,"nodeType":"Block","src":"9148:51:0","statements":[{"expression":{"argumentTypes":null,"id":559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":555,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"9166:5:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":556,"name":"center","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"9174:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9183:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9174:10:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9166:18:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":560,"nodeType":"ExpressionStatement","src":"9166:18:0"}]},"id":562,"nodeType":"IfStatement","src":"9063:136:0","trueBody":{"id":554,"nodeType":"Block","src":"9095:47:0","statements":[{"expression":{"argumentTypes":null,"id":552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":550,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"9113:5:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":551,"name":"center","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"9121:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9113:14:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":553,"nodeType":"ExpressionStatement","src":"9113:14:0"}]}},"id":563,"nodeType":"IfStatement","src":"8976:223:0","trueBody":{"id":545,"nodeType":"Block","src":"9009:48:0","statements":[{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":542,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"9034:2:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_memory_ptr","typeString":"struct XVS.Checkpoint memory"}},"id":543,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":34,"src":"9034:8:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":451,"id":544,"nodeType":"Return","src":"9027:15:0"}]}}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":516,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"8798:5:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":517,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"8806:5:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"8798:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":565,"nodeType":"WhileStatement","src":"8791:418:0"},{"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":566,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"9225:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVS.Checkpoint storage ref))"}},"id":568,"indexExpression":{"argumentTypes":null,"id":567,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":445,"src":"9237:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9225:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$","typeString":"mapping(uint32 => struct XVS.Checkpoint storage ref)"}},"id":570,"indexExpression":{"argumentTypes":null,"id":569,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"9246:5:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9225:27:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_storage","typeString":"struct XVS.Checkpoint storage ref"}},"id":571,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":34,"src":"9225:33:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":451,"id":572,"nodeType":"Return","src":"9218:40:0"}]},"documentation":"@notice Determine the prior number of votes for an account as of a block number\n@dev Block number must be a finalized block or else this function will revert to prevent misinformation.\n@param account The address of the account to check\n@param blockNumber The block number to get the vote balance at\n@return The number of votes the account had as of the given block","id":574,"implemented":true,"kind":"function","modifiers":[],"name":"getPriorVotes","nodeType":"FunctionDefinition","parameters":{"id":448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":445,"name":"account","nodeType":"VariableDeclaration","scope":574,"src":"8103:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":444,"name":"address","nodeType":"ElementaryTypeName","src":"8103:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":447,"name":"blockNumber","nodeType":"VariableDeclaration","scope":574,"src":"8120:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint","nodeType":"ElementaryTypeName","src":"8120:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8102:35:0"},"returnParameters":{"id":451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":450,"name":"","nodeType":"VariableDeclaration","scope":574,"src":"8159:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":449,"name":"uint96","nodeType":"ElementaryTypeName","src":"8159:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"8158:8:0"},"scope":969,"src":"8080:1185:0","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":{"id":611,"nodeType":"Block","src":"9337:301:0","statements":[{"assignments":[582],"declarations":[{"constant":false,"id":582,"name":"currentDelegate","nodeType":"VariableDeclaration","scope":611,"src":"9347:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":581,"name":"address","nodeType":"ElementaryTypeName","src":"9347:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":586,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":583,"name":"delegates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"9373:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":585,"indexExpression":{"argumentTypes":null,"id":584,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"9383:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9373:20:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9347:46:0"},{"assignments":[588],"declarations":[{"constant":false,"id":588,"name":"delegatorBalance","nodeType":"VariableDeclaration","scope":611,"src":"9403:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":587,"name":"uint96","nodeType":"ElementaryTypeName","src":"9403:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":592,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":589,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"9429:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":591,"indexExpression":{"argumentTypes":null,"id":590,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"9438:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9429:19:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"9403:45:0"},{"expression":{"argumentTypes":null,"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":593,"name":"delegates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"9458:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":595,"indexExpression":{"argumentTypes":null,"id":594,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"9468:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9458:20:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":596,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"9481:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9458:32:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":598,"nodeType":"ExpressionStatement","src":"9458:32:0"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":600,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"9522:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":601,"name":"currentDelegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":582,"src":"9533:15:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":602,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"9550:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":599,"name":"DelegateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"9506:15:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address)"}},"id":603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9506:54:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":604,"nodeType":"EmitStatement","src":"9501:59:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":606,"name":"currentDelegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":582,"src":"9586:15:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":607,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"9603:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":608,"name":"delegatorBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":588,"src":"9614:16:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":605,"name":"_moveDelegates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":787,"src":"9571:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint96_$returns$__$","typeString":"function (address,address,uint96)"}},"id":609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9571:60:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":610,"nodeType":"ExpressionStatement","src":"9571:60:0"}]},"documentation":null,"id":612,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nodeType":"FunctionDefinition","parameters":{"id":579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":576,"name":"delegator","nodeType":"VariableDeclaration","scope":612,"src":"9290:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":575,"name":"address","nodeType":"ElementaryTypeName","src":"9290:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":578,"name":"delegatee","nodeType":"VariableDeclaration","scope":612,"src":"9309:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":577,"name":"address","nodeType":"ElementaryTypeName","src":"9309:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"9289:38:0"},"returnParameters":{"id":580,"nodeType":"ParameterList","parameters":[],"src":"9337:0:0"},"scope":969,"src":"9271:367:0","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":679,"nodeType":"Block","src":"9719:526:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":622,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":614,"src":"9737:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9752:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9744:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9744:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"9737:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5856533a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f2061646472657373","id":627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9756:61:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9eacff5f7900448bc217c2047ab076def1bd445b80ef2bb2a1bed24bdb751877","typeString":"literal_string \"XVS::_transferTokens: cannot transfer from the zero address\""},"value":"XVS::_transferTokens: cannot transfer from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9eacff5f7900448bc217c2047ab076def1bd445b80ef2bb2a1bed24bdb751877","typeString":"literal_string \"XVS::_transferTokens: cannot transfer from the zero address\""}],"id":621,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1089,1090],"referencedDeclaration":1090,"src":"9729:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9729:89:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":629,"nodeType":"ExpressionStatement","src":"9729:89:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":631,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"9836:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9851:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9843:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9843:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"9836:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5856533a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f2061646472657373","id":636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9855:59:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5fa45e2a6645501e344f6402adb2484452cd66419dfa1b66dab26feb6d0018eb","typeString":"literal_string \"XVS::_transferTokens: cannot transfer to the zero address\""},"value":"XVS::_transferTokens: cannot transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fa45e2a6645501e344f6402adb2484452cd66419dfa1b66dab26feb6d0018eb","typeString":"literal_string \"XVS::_transferTokens: cannot transfer to the zero address\""}],"id":630,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1089,1090],"referencedDeclaration":1090,"src":"9828:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9828:87:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":638,"nodeType":"ExpressionStatement","src":"9828:87:0"},{"expression":{"argumentTypes":null,"id":649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":639,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"9926:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":641,"indexExpression":{"argumentTypes":null,"id":640,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":614,"src":"9935:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9926:13:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":643,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"9948:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":645,"indexExpression":{"argumentTypes":null,"id":644,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":614,"src":"9957:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9948:13:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":646,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":618,"src":"9963:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"hexValue":"5856533a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365","id":647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9971:55:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_17f1c0d385910728631c0ffec1f59876c2830e9000a679be32225515fef25dca","typeString":"literal_string \"XVS::_transferTokens: transfer amount exceeds balance\""},"value":"XVS::_transferTokens: transfer amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_stringliteral_17f1c0d385910728631c0ffec1f59876c2830e9000a679be32225515fef25dca","typeString":"literal_string \"XVS::_transferTokens: transfer amount exceeds balance\""}],"id":642,"name":"sub96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"9942:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint96,uint96,string memory) pure returns (uint96)"}},"id":648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9942:85:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"9926:101:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":650,"nodeType":"ExpressionStatement","src":"9926:101:0"},{"expression":{"argumentTypes":null,"id":661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":651,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"10037:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":653,"indexExpression":{"argumentTypes":null,"id":652,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"10046:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10037:13:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":655,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"10059:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint96_$","typeString":"mapping(address => uint96)"}},"id":657,"indexExpression":{"argumentTypes":null,"id":656,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"10068:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10059:13:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":658,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":618,"src":"10074:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"hexValue":"5856533a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773","id":659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10082:49:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_a376b496bf37a7fbaecbf5dd06cf5f05ce6f202d9cc0b04e686d59fb9bd7583f","typeString":"literal_string \"XVS::_transferTokens: transfer amount overflows\""},"value":"XVS::_transferTokens: transfer amount overflows"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_stringliteral_a376b496bf37a7fbaecbf5dd06cf5f05ce6f202d9cc0b04e686d59fb9bd7583f","typeString":"literal_string \"XVS::_transferTokens: transfer amount overflows\""}],"id":654,"name":"add96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":933,"src":"10053:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint96,uint96,string memory) pure returns (uint96)"}},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10053:79:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"10037:95:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":662,"nodeType":"ExpressionStatement","src":"10037:95:0"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":664,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":614,"src":"10156:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":665,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"10161:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":666,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":618,"src":"10166:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":663,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"10147:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10147:26:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":668,"nodeType":"EmitStatement","src":"10142:31:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":670,"name":"delegates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"10199:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":672,"indexExpression":{"argumentTypes":null,"id":671,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":614,"src":"10209:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10199:14:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":673,"name":"delegates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"10215:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":675,"indexExpression":{"argumentTypes":null,"id":674,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"10225:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10215:14:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":676,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":618,"src":"10231:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":669,"name":"_moveDelegates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":787,"src":"10184:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint96_$returns$__$","typeString":"function (address,address,uint96)"}},"id":677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10184:54:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":678,"nodeType":"ExpressionStatement","src":"10184:54:0"}]},"documentation":null,"id":680,"implemented":true,"kind":"function","modifiers":[],"name":"_transferTokens","nodeType":"FunctionDefinition","parameters":{"id":619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":614,"name":"src","nodeType":"VariableDeclaration","scope":680,"src":"9669:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":613,"name":"address","nodeType":"ElementaryTypeName","src":"9669:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":616,"name":"dst","nodeType":"VariableDeclaration","scope":680,"src":"9682:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":615,"name":"address","nodeType":"ElementaryTypeName","src":"9682:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":618,"name":"amount","nodeType":"VariableDeclaration","scope":680,"src":"9695:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":617,"name":"uint96","nodeType":"ElementaryTypeName","src":"9695:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"9668:41:0"},"returnParameters":{"id":620,"nodeType":"ParameterList","parameters":[],"src":"9719:0:0"},"scope":969,"src":"9644:601:0","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":786,"nodeType":"Block","src":"10331:841:0","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":689,"name":"srcRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"10345:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":690,"name":"dstRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":684,"src":"10355:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10345:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":692,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"10365:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10374:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10365:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10345:30:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":785,"nodeType":"IfStatement","src":"10341:825:0","trueBody":{"id":784,"nodeType":"Block","src":"10377:789:0","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":696,"name":"srcRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"10395:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10413:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10405:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10405:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"10395:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":739,"nodeType":"IfStatement","src":"10391:376:0","trueBody":{"id":738,"nodeType":"Block","src":"10417:350:0","statements":[{"assignments":[702],"declarations":[{"constant":false,"id":702,"name":"srcRepNum","nodeType":"VariableDeclaration","scope":738,"src":"10435:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":701,"name":"uint32","nodeType":"ElementaryTypeName","src":"10435:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":706,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":703,"name":"numCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"10454:14:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"}},"id":705,"indexExpression":{"argumentTypes":null,"id":704,"name":"srcRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"10469:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10454:22:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"10435:41:0"},{"assignments":[708],"declarations":[{"constant":false,"id":708,"name":"srcRepOld","nodeType":"VariableDeclaration","scope":738,"src":"10494:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":707,"name":"uint96","nodeType":"ElementaryTypeName","src":"10494:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":722,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":709,"name":"srcRepNum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"10513:9:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10525:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10513:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"hexValue":"30","id":720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10572:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10513:60:0","trueExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":712,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"10529:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVS.Checkpoint storage ref))"}},"id":714,"indexExpression":{"argumentTypes":null,"id":713,"name":"srcRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"10541:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10529:19:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$","typeString":"mapping(uint32 => struct XVS.Checkpoint storage ref)"}},"id":718,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":715,"name":"srcRepNum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"10549:9:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10561:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10549:13:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10529:34:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_storage","typeString":"struct XVS.Checkpoint storage ref"}},"id":719,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":34,"src":"10529:40:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"10494:79:0"},{"assignments":[724],"declarations":[{"constant":false,"id":724,"name":"srcRepNew","nodeType":"VariableDeclaration","scope":738,"src":"10591:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":723,"name":"uint96","nodeType":"ElementaryTypeName","src":"10591:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":730,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":726,"name":"srcRepOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":708,"src":"10616:9:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":727,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"10627:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"hexValue":"5856533a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773","id":728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10635:41:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_203deaac0e3d899974ef5c4e5b19417630a0366f68a8c7b53dafecc837060d93","typeString":"literal_string \"XVS::_moveVotes: vote amount underflows\""},"value":"XVS::_moveVotes: vote amount underflows"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_stringliteral_203deaac0e3d899974ef5c4e5b19417630a0366f68a8c7b53dafecc837060d93","typeString":"literal_string \"XVS::_moveVotes: vote amount underflows\""}],"id":725,"name":"sub96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"10610:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint96,uint96,string memory) pure returns (uint96)"}},"id":729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10610:67:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"10591:86:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":732,"name":"srcRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"10712:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":733,"name":"srcRepNum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"10720:9:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"argumentTypes":null,"id":734,"name":"srcRepOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":708,"src":"10731:9:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":735,"name":"srcRepNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":724,"src":"10742:9:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":731,"name":"_writeCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"10695:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint32_$_t_uint96_$_t_uint96_$returns$__$","typeString":"function (address,uint32,uint96,uint96)"}},"id":736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10695:57:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":737,"nodeType":"ExpressionStatement","src":"10695:57:0"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":740,"name":"dstRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":684,"src":"10785:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10803:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10795:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10795:10:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"10785:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":783,"nodeType":"IfStatement","src":"10781:375:0","trueBody":{"id":782,"nodeType":"Block","src":"10807:349:0","statements":[{"assignments":[746],"declarations":[{"constant":false,"id":746,"name":"dstRepNum","nodeType":"VariableDeclaration","scope":782,"src":"10825:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":745,"name":"uint32","nodeType":"ElementaryTypeName","src":"10825:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":750,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":747,"name":"numCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"10844:14:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"}},"id":749,"indexExpression":{"argumentTypes":null,"id":748,"name":"dstRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":684,"src":"10859:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10844:22:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"10825:41:0"},{"assignments":[752],"declarations":[{"constant":false,"id":752,"name":"dstRepOld","nodeType":"VariableDeclaration","scope":782,"src":"10884:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":751,"name":"uint96","nodeType":"ElementaryTypeName","src":"10884:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":766,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":753,"name":"dstRepNum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"10903:9:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10915:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10903:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"hexValue":"30","id":764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10962:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10903:60:0","trueExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":756,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"10919:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVS.Checkpoint storage ref))"}},"id":758,"indexExpression":{"argumentTypes":null,"id":757,"name":"dstRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":684,"src":"10931:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10919:19:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$","typeString":"mapping(uint32 => struct XVS.Checkpoint storage ref)"}},"id":762,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":759,"name":"dstRepNum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"10939:9:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10951:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10939:13:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10919:34:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_storage","typeString":"struct XVS.Checkpoint storage ref"}},"id":763,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":34,"src":"10919:40:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"10884:79:0"},{"assignments":[768],"declarations":[{"constant":false,"id":768,"name":"dstRepNew","nodeType":"VariableDeclaration","scope":782,"src":"10981:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":767,"name":"uint96","nodeType":"ElementaryTypeName","src":"10981:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":774,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":770,"name":"dstRepOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"11006:9:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":771,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"11017:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"hexValue":"5856533a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773","id":772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11025:40:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_ab2df562bdfcb703065efea67113b874fc3a316c04d98d6c691321af00e57ff7","typeString":"literal_string \"XVS::_moveVotes: vote amount overflows\""},"value":"XVS::_moveVotes: vote amount overflows"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_stringliteral_ab2df562bdfcb703065efea67113b874fc3a316c04d98d6c691321af00e57ff7","typeString":"literal_string \"XVS::_moveVotes: vote amount overflows\""}],"id":769,"name":"add96","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":933,"src":"11000:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint96_$_t_uint96_$_t_string_memory_ptr_$returns$_t_uint96_$","typeString":"function (uint96,uint96,string memory) pure returns (uint96)"}},"id":773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11000:66:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"10981:85:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":776,"name":"dstRep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":684,"src":"11101:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":777,"name":"dstRepNum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"11109:9:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"argumentTypes":null,"id":778,"name":"dstRepOld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"11120:9:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":779,"name":"dstRepNew","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"11131:9:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":775,"name":"_writeCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"11084:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint32_$_t_uint96_$_t_uint96_$returns$__$","typeString":"function (address,uint32,uint96,uint96)"}},"id":780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11084:57:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":781,"nodeType":"ExpressionStatement","src":"11084:57:0"}]}}]}}]},"documentation":null,"id":787,"implemented":true,"kind":"function","modifiers":[],"name":"_moveDelegates","nodeType":"FunctionDefinition","parameters":{"id":687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":682,"name":"srcRep","nodeType":"VariableDeclaration","scope":787,"src":"10275:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":681,"name":"address","nodeType":"ElementaryTypeName","src":"10275:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":684,"name":"dstRep","nodeType":"VariableDeclaration","scope":787,"src":"10291:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":683,"name":"address","nodeType":"ElementaryTypeName","src":"10291:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":686,"name":"amount","nodeType":"VariableDeclaration","scope":787,"src":"10307:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":685,"name":"uint96","nodeType":"ElementaryTypeName","src":"10307:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"10274:47:0"},"returnParameters":{"id":688,"nodeType":"ParameterList","parameters":[],"src":"10331:0:0"},"scope":969,"src":"10251:921:0","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":859,"nodeType":"Block","src":"11287:524:0","statements":[{"assignments":[799],"declarations":[{"constant":false,"id":799,"name":"blockNumber","nodeType":"VariableDeclaration","scope":859,"src":"11297:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":798,"name":"uint32","nodeType":"ElementaryTypeName","src":"11297:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":805,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":801,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1076,"src":"11325:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11325:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"5856533a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473","id":803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11339:53:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_99b94747978bd9407886ef726e94b3f0e007f8ae371b5e18ce9cc5cf3048e8e0","typeString":"literal_string \"XVS::_writeCheckpoint: block number exceeds 32 bits\""},"value":"XVS::_writeCheckpoint: block number exceeds 32 bits"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_99b94747978bd9407886ef726e94b3f0e007f8ae371b5e18ce9cc5cf3048e8e0","typeString":"literal_string \"XVS::_writeCheckpoint: block number exceeds 32 bits\""}],"id":800,"name":"safe32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"11318:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint32_$","typeString":"function (uint256,string memory) pure returns (uint32)"}},"id":804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11318:75:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"11297:96:0"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":806,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":791,"src":"11408:12:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11423:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11408:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":809,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"11428:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVS.Checkpoint storage ref))"}},"id":811,"indexExpression":{"argumentTypes":null,"id":810,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":789,"src":"11440:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11428:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$","typeString":"mapping(uint32 => struct XVS.Checkpoint storage ref)"}},"id":815,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":812,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":791,"src":"11451:12:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11466:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11451:16:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11428:40:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_storage","typeString":"struct XVS.Checkpoint storage ref"}},"id":816,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"fromBlock","nodeType":"MemberAccess","referencedDeclaration":32,"src":"11428:50:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":817,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"11482:11:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"11428:65:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11408:85:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":851,"nodeType":"Block","src":"11583:155:0","statements":[{"expression":{"argumentTypes":null,"id":841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":832,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"11597:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVS.Checkpoint storage ref))"}},"id":835,"indexExpression":{"argumentTypes":null,"id":833,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":789,"src":"11609:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11597:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$","typeString":"mapping(uint32 => struct XVS.Checkpoint storage ref)"}},"id":836,"indexExpression":{"argumentTypes":null,"id":834,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":791,"src":"11620:12:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11597:36:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_storage","typeString":"struct XVS.Checkpoint storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":838,"name":"blockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"11647:11:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"argumentTypes":null,"id":839,"name":"newVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":795,"src":"11660:8:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":837,"name":"Checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"11636:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Checkpoint_$35_storage_ptr_$","typeString":"type(struct XVS.Checkpoint storage pointer)"}},"id":840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11636:33:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_memory","typeString":"struct XVS.Checkpoint memory"}},"src":"11597:72:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_storage","typeString":"struct XVS.Checkpoint storage ref"}},"id":842,"nodeType":"ExpressionStatement","src":"11597:72:0"},{"expression":{"argumentTypes":null,"id":849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":843,"name":"numCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"11683:14:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint32_$","typeString":"mapping(address => uint32)"}},"id":845,"indexExpression":{"argumentTypes":null,"id":844,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":789,"src":"11698:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11683:25:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":846,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":791,"src":"11711:12:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"31","id":847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11726:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11711:16:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"11683:44:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":850,"nodeType":"ExpressionStatement","src":"11683:44:0"}]},"id":852,"nodeType":"IfStatement","src":"11404:334:0","trueBody":{"id":831,"nodeType":"Block","src":"11495:82:0","statements":[{"expression":{"argumentTypes":null,"id":829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":820,"name":"checkpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"11509:11:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$_$","typeString":"mapping(address => mapping(uint32 => struct XVS.Checkpoint storage ref))"}},"id":825,"indexExpression":{"argumentTypes":null,"id":821,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":789,"src":"11521:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11509:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_struct$_Checkpoint_$35_storage_$","typeString":"mapping(uint32 => struct XVS.Checkpoint storage ref)"}},"id":826,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":822,"name":"nCheckpoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":791,"src":"11532:12:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11547:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11532:16:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11509:40:0","typeDescriptions":{"typeIdentifier":"t_struct$_Checkpoint_$35_storage","typeString":"struct XVS.Checkpoint storage ref"}},"id":827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"votes","nodeType":"MemberAccess","referencedDeclaration":34,"src":"11509:46:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":828,"name":"newVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":795,"src":"11558:8:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11509:57:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":830,"nodeType":"ExpressionStatement","src":"11509:57:0"}]}},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":854,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":789,"src":"11774:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":855,"name":"oldVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":793,"src":"11785:8:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"argumentTypes":null,"id":856,"name":"newVotes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":795,"src":"11795:8:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":853,"name":"DelegateVotesChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75,"src":"11753:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11753:51:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":858,"nodeType":"EmitStatement","src":"11748:56:0"}]},"documentation":null,"id":860,"implemented":true,"kind":"function","modifiers":[],"name":"_writeCheckpoint","nodeType":"FunctionDefinition","parameters":{"id":796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":789,"name":"delegatee","nodeType":"VariableDeclaration","scope":860,"src":"11204:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":788,"name":"address","nodeType":"ElementaryTypeName","src":"11204:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":791,"name":"nCheckpoints","nodeType":"VariableDeclaration","scope":860,"src":"11223:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":790,"name":"uint32","nodeType":"ElementaryTypeName","src":"11223:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"},{"constant":false,"id":793,"name":"oldVotes","nodeType":"VariableDeclaration","scope":860,"src":"11244:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":792,"name":"uint96","nodeType":"ElementaryTypeName","src":"11244:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"},{"constant":false,"id":795,"name":"newVotes","nodeType":"VariableDeclaration","scope":860,"src":"11261:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":794,"name":"uint96","nodeType":"ElementaryTypeName","src":"11261:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"11203:74:0"},"returnParameters":{"id":797,"nodeType":"ParameterList","parameters":[],"src":"11287:0:0"},"scope":969,"src":"11178:633:0","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":882,"nodeType":"Block","src":"11900:77:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":870,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":862,"src":"11918:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":873,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11922:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"argumentTypes":null,"hexValue":"3332","id":872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11927:2:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11922:7:0","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"11918:11:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":875,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":864,"src":"11931:12:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":869,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1089,1090],"referencedDeclaration":1090,"src":"11910:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11910:34:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":877,"nodeType":"ExpressionStatement","src":"11910:34:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":879,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":862,"src":"11968:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11961:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":"uint32"},"id":880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11961:9:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":868,"id":881,"nodeType":"Return","src":"11954:16:0"}]},"documentation":null,"id":883,"implemented":true,"kind":"function","modifiers":[],"name":"safe32","nodeType":"FunctionDefinition","parameters":{"id":865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":862,"name":"n","nodeType":"VariableDeclaration","scope":883,"src":"11833:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":861,"name":"uint","nodeType":"ElementaryTypeName","src":"11833:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":864,"name":"errorMessage","nodeType":"VariableDeclaration","scope":883,"src":"11841:26:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":863,"name":"string","nodeType":"ElementaryTypeName","src":"11841:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"11832:36:0"},"returnParameters":{"id":868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":867,"name":"","nodeType":"VariableDeclaration","scope":883,"src":"11892:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":866,"name":"uint32","nodeType":"ElementaryTypeName","src":"11892:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"src":"11891:8:0"},"scope":969,"src":"11817:160:0","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":905,"nodeType":"Block","src":"12066:77:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":893,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"12084:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_79228162514264337593543950336_by_1","typeString":"int_const 79228162514264337593543950336"},"id":896,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12088:1:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"argumentTypes":null,"hexValue":"3936","id":895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12093:2:0","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"12088:7:0","typeDescriptions":{"typeIdentifier":"t_rational_79228162514264337593543950336_by_1","typeString":"int_const 79228162514264337593543950336"}},"src":"12084:11:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":898,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":887,"src":"12097:12:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":892,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1089,1090],"referencedDeclaration":1090,"src":"12076:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12076:34:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":900,"nodeType":"ExpressionStatement","src":"12076:34:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":902,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"12134:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12127:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":"uint96"},"id":903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12127:9:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":891,"id":904,"nodeType":"Return","src":"12120:16:0"}]},"documentation":null,"id":906,"implemented":true,"kind":"function","modifiers":[],"name":"safe96","nodeType":"FunctionDefinition","parameters":{"id":888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":885,"name":"n","nodeType":"VariableDeclaration","scope":906,"src":"11999:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":884,"name":"uint","nodeType":"ElementaryTypeName","src":"11999:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":887,"name":"errorMessage","nodeType":"VariableDeclaration","scope":906,"src":"12007:26:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":886,"name":"string","nodeType":"ElementaryTypeName","src":"12007:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"11998:36:0"},"returnParameters":{"id":891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":890,"name":"","nodeType":"VariableDeclaration","scope":906,"src":"12058:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":889,"name":"uint96","nodeType":"ElementaryTypeName","src":"12058:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"12057:8:0"},"scope":969,"src":"11983:160:0","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":932,"nodeType":"Block","src":"12243:90:0","statements":[{"assignments":[918],"declarations":[{"constant":false,"id":918,"name":"c","nodeType":"VariableDeclaration","scope":932,"src":"12253:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":917,"name":"uint96","nodeType":"ElementaryTypeName","src":"12253:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"id":922,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":919,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":908,"src":"12264:1:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":920,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":910,"src":"12268:1:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"12264:5:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"12253:16:0"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":924,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":918,"src":"12287:1:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":925,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":908,"src":"12292:1:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"12287:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":927,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"12295:12:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":923,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1089,1090],"referencedDeclaration":1090,"src":"12279:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12279:29:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":929,"nodeType":"ExpressionStatement","src":"12279:29:0"},{"expression":{"argumentTypes":null,"id":930,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":918,"src":"12325:1:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":916,"id":931,"nodeType":"Return","src":"12318:8:0"}]},"documentation":null,"id":933,"implemented":true,"kind":"function","modifiers":[],"name":"add96","nodeType":"FunctionDefinition","parameters":{"id":913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":908,"name":"a","nodeType":"VariableDeclaration","scope":933,"src":"12164:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":907,"name":"uint96","nodeType":"ElementaryTypeName","src":"12164:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"},{"constant":false,"id":910,"name":"b","nodeType":"VariableDeclaration","scope":933,"src":"12174:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":909,"name":"uint96","nodeType":"ElementaryTypeName","src":"12174:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"},{"constant":false,"id":912,"name":"errorMessage","nodeType":"VariableDeclaration","scope":933,"src":"12184:26:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":911,"name":"string","nodeType":"ElementaryTypeName","src":"12184:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"12163:48:0"},"returnParameters":{"id":916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":915,"name":"","nodeType":"VariableDeclaration","scope":933,"src":"12235:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":914,"name":"uint96","nodeType":"ElementaryTypeName","src":"12235:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"12234:8:0"},"scope":969,"src":"12149:184:0","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":955,"nodeType":"Block","src":"12433:68:0","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":945,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":937,"src":"12451:1:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":946,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":935,"src":"12456:1:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"12451:6:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":948,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":939,"src":"12459:12:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":944,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1089,1090],"referencedDeclaration":1090,"src":"12443:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12443:29:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":950,"nodeType":"ExpressionStatement","src":"12443:29:0"},{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":951,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":935,"src":"12489:1:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":952,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":937,"src":"12493:1:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"12489:5:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":943,"id":954,"nodeType":"Return","src":"12482:12:0"}]},"documentation":null,"id":956,"implemented":true,"kind":"function","modifiers":[],"name":"sub96","nodeType":"FunctionDefinition","parameters":{"id":940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":935,"name":"a","nodeType":"VariableDeclaration","scope":956,"src":"12354:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":934,"name":"uint96","nodeType":"ElementaryTypeName","src":"12354:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"},{"constant":false,"id":937,"name":"b","nodeType":"VariableDeclaration","scope":956,"src":"12364:8:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":936,"name":"uint96","nodeType":"ElementaryTypeName","src":"12364:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"},{"constant":false,"id":939,"name":"errorMessage","nodeType":"VariableDeclaration","scope":956,"src":"12374:26:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":938,"name":"string","nodeType":"ElementaryTypeName","src":"12374:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"12353:48:0"},"returnParameters":{"id":943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":942,"name":"","nodeType":"VariableDeclaration","scope":956,"src":"12425:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":941,"name":"uint96","nodeType":"ElementaryTypeName","src":"12425:6:0","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"value":null,"visibility":"internal"}],"src":"12424:8:0"},"scope":969,"src":"12339:162:0","stateMutability":"pure","superFunction":null,"visibility":"internal"},{"body":{"id":967,"nodeType":"Block","src":"12558:118:0","statements":[{"assignments":[962],"declarations":[{"constant":false,"id":962,"name":"chainId","nodeType":"VariableDeclaration","scope":967,"src":"12568:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":961,"name":"uint256","nodeType":"ElementaryTypeName","src":"12568:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":963,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"12568:15:0"},{"externalReferences":[{"chainId":{"declaration":962,"isOffset":false,"isSlot":false,"src":"12616:7:0","valueSize":1}}],"id":964,"nodeType":"InlineAssembly","operations":"{ chainId := chainid() }","src":"12593:53:0"},{"expression":{"argumentTypes":null,"id":965,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"12662:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":960,"id":966,"nodeType":"Return","src":"12655:14:0"}]},"documentation":null,"id":968,"implemented":true,"kind":"function","modifiers":[],"name":"getChainId","nodeType":"FunctionDefinition","parameters":{"id":957,"nodeType":"ParameterList","parameters":[],"src":"12526:2:0"},"returnParameters":{"id":960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":959,"name":"","nodeType":"VariableDeclaration","scope":968,"src":"12552:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":958,"name":"uint","nodeType":"ElementaryTypeName","src":"12552:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"12551:6:0"},"scope":969,"src":"12507:169:0","stateMutability":"pure","superFunction":null,"visibility":"internal"}],"scope":970,"src":"63:12615:0"}],"src":"0:12679:0"},"id":0},"@venusprotocol/venus-protocol/contracts/Utils/Owned.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/Owned.sol","exportedSymbols":{"Owned":[1018]},"id":1019,"nodeType":"SourceUnit","nodes":[{"id":971,"literals":["solidity","^","0.5",".16"],"nodeType":"PragmaDirective","src":"0:24:1"},{"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":1018,"linearizedBaseContracts":[1018],"name":"Owned","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":973,"name":"owner","nodeType":"VariableDeclaration","scope":1018,"src":"47:20:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":972,"name":"address","nodeType":"ElementaryTypeName","src":"47:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"anonymous":false,"documentation":null,"id":979,"name":"OwnershipTransferred","nodeType":"EventDefinition","parameters":{"id":978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":975,"indexed":true,"name":"_from","nodeType":"VariableDeclaration","scope":979,"src":"101:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":974,"name":"address","nodeType":"ElementaryTypeName","src":"101:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":977,"indexed":true,"name":"_to","nodeType":"VariableDeclaration","scope":979,"src":"124:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":976,"name":"address","nodeType":"ElementaryTypeName","src":"124:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"100:44:1"},"src":"74:71:1"},{"body":{"id":987,"nodeType":"Block","src":"172:35:1","statements":[{"expression":{"argumentTypes":null,"id":985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":982,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":973,"src":"182:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":983,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1086,"src":"190:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"190:10:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"182:18:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":986,"nodeType":"ExpressionStatement","src":"182:18:1"}]},"documentation":null,"id":988,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":980,"nodeType":"ParameterList","parameters":[],"src":"162:2:1"},"returnParameters":{"id":981,"nodeType":"ParameterList","parameters":[],"src":"172:0:1"},"scope":1018,"src":"151:56:1","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":999,"nodeType":"Block","src":"234:75:1","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":991,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1086,"src":"252:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"252:10:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":993,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":973,"src":"266:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"252:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"53686f756c64206265206f776e6572","id":995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"273:17:1","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_6db0f684e35d21a4980c3fd1009b12bd90e0318a49a67ba68aa36efb131f78e1","typeString":"literal_string \"Should be owner\""},"value":"Should be owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6db0f684e35d21a4980c3fd1009b12bd90e0318a49a67ba68aa36efb131f78e1","typeString":"literal_string \"Should be owner\""}],"id":990,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1089,1090],"referencedDeclaration":1090,"src":"244:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"244:47:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":997,"nodeType":"ExpressionStatement","src":"244:47:1"},{"id":998,"nodeType":"PlaceholderStatement","src":"301:1:1"}]},"documentation":null,"id":1000,"name":"onlyOwner","nodeType":"ModifierDefinition","parameters":{"id":989,"nodeType":"ParameterList","parameters":[],"src":"231:2:1"},"src":"213:96:1","visibility":"internal"},{"body":{"id":1016,"nodeType":"Block","src":"377:85:1","statements":[{"expression":{"argumentTypes":null,"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1007,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":973,"src":"387:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":1008,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1002,"src":"395:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"387:16:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1010,"nodeType":"ExpressionStatement","src":"387:16:1"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1012,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":973,"src":"439:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1013,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1002,"src":"446:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1011,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"418:20:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"418:37:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1015,"nodeType":"EmitStatement","src":"413:42:1"}]},"documentation":null,"id":1017,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":1005,"modifierName":{"argumentTypes":null,"id":1004,"name":"onlyOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"367:9:1","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"367:9:1"}],"name":"transferOwnership","nodeType":"FunctionDefinition","parameters":{"id":1003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1002,"name":"newOwner","nodeType":"VariableDeclaration","scope":1017,"src":"342:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1001,"name":"address","nodeType":"ElementaryTypeName","src":"342:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"341:18:1"},"returnParameters":{"id":1006,"nodeType":"ParameterList","parameters":[],"src":"377:0:1"},"scope":1018,"src":"315:147:1","stateMutability":"nonpayable","superFunction":null,"visibility":"public"}],"scope":1019,"src":"26:438:1"}],"src":"0:465:1"},"id":1},"@venusprotocol/venus-protocol/contracts/Utils/Tokenlock.sol":{"ast":{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/Tokenlock.sol","exportedSymbols":{"Tokenlock":[1068]},"id":1069,"nodeType":"SourceUnit","nodes":[{"id":1020,"literals":["solidity","^","0.5",".16"],"nodeType":"PragmaDirective","src":"0:24:2"},{"absolutePath":"@venusprotocol/venus-protocol/contracts/Utils/Owned.sol","file":"./Owned.sol","id":1021,"nodeType":"ImportDirective","scope":1069,"sourceUnit":1019,"src":"26:21:2","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":1022,"name":"Owned","nodeType":"UserDefinedTypeName","referencedDeclaration":1018,"src":"71:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_Owned_$1018","typeString":"contract Owned"}},"id":1023,"nodeType":"InheritanceSpecifier","src":"71:5:2"}],"contractDependencies":[1018],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":1068,"linearizedBaseContracts":[1068,1018],"name":"Tokenlock","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":1026,"name":"isLocked","nodeType":"VariableDeclaration","scope":1068,"src":"128:27:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1024,"name":"uint8","nodeType":"ElementaryTypeName","src":"128:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"argumentTypes":null,"hexValue":"30","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"154:1:2","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"anonymous":false,"documentation":null,"id":1028,"name":"Freezed","nodeType":"EventDefinition","parameters":{"id":1027,"nodeType":"ParameterList","parameters":[],"src":"175:2:2"},"src":"162:16:2"},{"anonymous":false,"documentation":null,"id":1030,"name":"UnFreezed","nodeType":"EventDefinition","parameters":{"id":1029,"nodeType":"ParameterList","parameters":[],"src":"198:2:2"},"src":"183:18:2"},{"body":{"id":1040,"nodeType":"Block","src":"228:69:2","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1033,"name":"isLocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"246:8:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":1034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"258:1:2","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"246:13:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"546f6b656e206973206c6f636b6564","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"261:17:2","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_c155d8b557b639650aeb1688cea4d6667aacb37ade93a2b50026347958e229dc","typeString":"literal_string \"Token is locked\""},"value":"Token is locked"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c155d8b557b639650aeb1688cea4d6667aacb37ade93a2b50026347958e229dc","typeString":"literal_string \"Token is locked\""}],"id":1032,"name":"require","nodeType":"Identifier","overloadedDeclarations":[1089,1090],"referencedDeclaration":1090,"src":"238:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"238:41:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1038,"nodeType":"ExpressionStatement","src":"238:41:2"},{"id":1039,"nodeType":"PlaceholderStatement","src":"289:1:2"}]},"documentation":null,"id":1041,"name":"validLock","nodeType":"ModifierDefinition","parameters":{"id":1031,"nodeType":"ParameterList","parameters":[],"src":"225:2:2"},"src":"207:90:2","visibility":"internal"},{"body":{"id":1053,"nodeType":"Block","src":"338:54:2","statements":[{"expression":{"argumentTypes":null,"id":1048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1046,"name":"isLocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"348:8:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"31","id":1047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"359:1:2","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"348:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1049,"nodeType":"ExpressionStatement","src":"348:12:2"},{"eventCall":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":1050,"name":"Freezed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1028,"src":"376:7:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"376:9:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1052,"nodeType":"EmitStatement","src":"371:14:2"}]},"documentation":null,"id":1054,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":1044,"modifierName":{"argumentTypes":null,"id":1043,"name":"onlyOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"328:9:2","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"328:9:2"}],"name":"freeze","nodeType":"FunctionDefinition","parameters":{"id":1042,"nodeType":"ParameterList","parameters":[],"src":"318:2:2"},"returnParameters":{"id":1045,"nodeType":"ParameterList","parameters":[],"src":"338:0:2"},"scope":1068,"src":"303:89:2","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":1066,"nodeType":"Block","src":"435:56:2","statements":[{"expression":{"argumentTypes":null,"id":1061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1059,"name":"isLocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"445:8:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"30","id":1060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"456:1:2","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"445:12:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1062,"nodeType":"ExpressionStatement","src":"445:12:2"},{"eventCall":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":1063,"name":"UnFreezed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1030,"src":"473:9:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"473:11:2","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1065,"nodeType":"EmitStatement","src":"468:16:2"}]},"documentation":null,"id":1067,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":1057,"modifierName":{"argumentTypes":null,"id":1056,"name":"onlyOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"425:9:2","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"425:9:2"}],"name":"unfreeze","nodeType":"FunctionDefinition","parameters":{"id":1055,"nodeType":"ParameterList","parameters":[],"src":"415:2:2"},"returnParameters":{"id":1058,"nodeType":"ParameterList","parameters":[],"src":"435:0:2"},"scope":1068,"src":"398:93:2","stateMutability":"nonpayable","superFunction":null,"visibility":"public"}],"scope":1069,"src":"49:444:2"}],"src":"0:494:2"},"id":2},"contracts/hardhat-dependency-compiler/@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol":{"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol","exportedSymbols":{},"id":1072,"nodeType":"SourceUnit","nodes":[{"id":1070,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:3"},{"absolutePath":"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol","file":"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol","id":1071,"nodeType":"ImportDirective","scope":1072,"sourceUnit":970,"src":"63:68:3","symbolAliases":[],"unitAlias":""}],"src":"39:93:3"},"id":3}},"contracts":{"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol":{"XVS":{"abi":[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"Freezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[],"name":"UnFreezed","type":"event"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unfreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"devdoc":{"methods":{"allowance(address,address)":{"params":{"account":"The address of the account holding the funds","spender":"The address of the account spending the funds"},"return":"The number of tokens approved"},"approve(address,uint256)":{"details":"This will overwrite the approval amount for `spender`","params":{"rawAmount":"The number of tokens that are approved (2^256-1 means infinite)","spender":"The address of the account which may transfer tokens"},"return":"Whether or not the approval succeeded"},"balanceOf(address)":{"params":{"account":"The address of the account to get the balance of"},"return":"The number of tokens held"},"constructor":{"params":{"account":"The initial account to grant all the tokens"}},"delegate(address)":{"params":{"delegatee":"The address to delegate votes to"}},"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":{"params":{"delegatee":"The address to delegate votes to","expiry":"The time at which to expire the signature","nonce":"The contract state required to match the signature","r":"Half of the ECDSA signature pair","s":"Half of the ECDSA signature pair","v":"The recovery byte of the signature"}},"getCurrentVotes(address)":{"params":{"account":"The address to get votes balance"},"return":"The number of current votes for `account`"},"getPriorVotes(address,uint256)":{"details":"Block number must be a finalized block or else this function will revert to prevent misinformation.","params":{"account":"The address of the account to check","blockNumber":"The block number to get the vote balance at"},"return":"The number of votes the account had as of the given block"},"transfer(address,uint256)":{"params":{"dst":"The address of the destination account","rawAmount":"The number of tokens to transfer"},"return":"Whether or not the transfer succeeded"},"transferFrom(address,address,uint256)":{"params":{"dst":"The address of the destination account","rawAmount":"The number of tokens to transfer","src":"The address of the source account"},"return":"Whether or not the transfer succeeded"}}},"evm":{"bytecode":{"linkReferences":{},"object":"60806040526000805460ff60a01b1916905534801561001d57600080fd5b50604051611d00380380611d008339818101604052602081101561004057600080fd5b5051600080546001600160a01b031916331781556001600160a01b03821680825260026020908152604080842080546001600160601b0319166a18d0bf423c03d8de000000908117909155815190815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350611c30806100d06000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063b4b5ea571161007c578063b4b5ea571461040e578063c3cda52014610434578063dd62ed3e1461047b578063e7a324dc146104a9578063f1127ed8146104b1578063f2fde38b1461050b5761014d565b806370a082311461033e578063782d6fe1146103645780637ecebe00146103ac5780638da5cb5b146103d257806395d89b41146103da578063a9059cbb146103e25761014d565b8063313ce56711610115578063313ce56714610267578063587cde1e146102855780635c19a95c146102c757806362a5af3b146102ef5780636a28f000146102f75780636fcfff45146102ff5761014d565b806306fdde0314610152578063095ea7b3146101cf57806318160ddd1461020f57806320606b701461022957806323b872dd14610231575b600080fd5b61015a610531565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b038135169060200135610552565b604080519115158252519081900360200190f35b610217610661565b60408051918252519081900360200190f35b610217610670565b6101fb6004803603606081101561024757600080fd5b506001600160a01b0381358116916020810135909116906040013561068b565b61026f610820565b6040805160ff9092168252519081900360200190f35b6102ab6004803603602081101561029b57600080fd5b50356001600160a01b0316610825565b604080516001600160a01b039092168252519081900360200190f35b6102ed600480360360208110156102dd57600080fd5b50356001600160a01b0316610840565b005b6102ed61089e565b6102ed61092b565b6103256004803603602081101561031557600080fd5b50356001600160a01b03166109b2565b6040805163ffffffff9092168252519081900360200190f35b6102176004803603602081101561035457600080fd5b50356001600160a01b03166109ca565b6103906004803603604081101561037a57600080fd5b506001600160a01b0381351690602001356109ee565b604080516001600160601b039092168252519081900360200190f35b610217600480360360208110156103c257600080fd5b50356001600160a01b0316610c1b565b6102ab610c2d565b61015a610c3c565b6101fb600480360360408110156103f857600080fd5b506001600160a01b038135169060200135610c5b565b6103906004803603602081101561042457600080fd5b50356001600160a01b0316610ce8565b6102ed600480360360c081101561044a57600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610d59565b6102176004803603604081101561049157600080fd5b506001600160a01b0381358116916020013516611050565b610217611084565b6104e3600480360360408110156104c757600080fd5b5080356001600160a01b0316906020013563ffffffff1661109f565b6040805163ffffffff90931683526001600160601b0390911660208301528051918290030190f35b6102ed6004803603602081101561052157600080fd5b50356001600160a01b03166110d4565b6040518060400160405280600581526020016456656e757360d81b81525081565b60008054600160a01b900460ff16156105a4576040805162461bcd60e51b815260206004820152600f60248201526e151bdad95b881a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b60006000198314156105b957506000196105de565b6105db83604051806060016040528060248152602001611ab560249139611173565b90505b3360008181526001602090815260408083206001600160a01b0389168085529083529281902080546001600160601b0319166001600160601b038716908117909155815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a360019150505b92915050565b6a18d0bf423c03d8de00000081565b604051806043611a7282396043019050604051809103902081565b60008054600160a01b900460ff16156106dd576040805162461bcd60e51b815260206004820152600f60248201526e151bdad95b881a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b6001600160a01b03841660009081526001602090815260408083203380855290835281842054825160608101909352602480845291946001600160601b03909116939092610733928892611ab590830139611173565b9050866001600160a01b0316836001600160a01b03161415801561076057506001600160601b0382811614155b1561080857600061078a83836040518060600160405280603c8152602001611911603c913961120d565b6001600160a01b038981166000818152600160209081526040808320948a168084529482529182902080546001600160601b0319166001600160601b03871690811790915582519081529151949550929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a3505b61081387878361127a565b5060019695505050505050565b601281565b6003602052600090815260409020546001600160a01b031681565b600054600160a01b900460ff1615610891576040805162461bcd60e51b815260206004820152600f60248201526e151bdad95b881a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b61089b338261145f565b50565b6000546001600160a01b031633146108ef576040805162461bcd60e51b815260206004820152600f60248201526e29b437bab6321031329037bbb732b960891b604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b1781556040517f962a6139ca22015759d0878e2cf5d770dcb8152e1d5ba08e46a969dd9b154a9c9190a1565b6000546001600160a01b0316331461097c576040805162461bcd60e51b815260206004820152600f60248201526e29b437bab6321031329037bbb732b960891b604482015290519081900360640190fd5b6000805460ff60a01b191681556040517ff0daac2271a735ea786b9adf80dfcbd6a3cbd52f3cab0a78337114692d5faf5d9190a1565b60056020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600260205260409020546001600160601b031690565b6000438210610a2e5760405162461bcd60e51b8152600401808060200182810382526026815260200180611b0c6026913960400191505060405180910390fd5b6001600160a01b03831660009081526005602052604090205463ffffffff1680610a5c57600091505061065b565b6001600160a01b038416600090815260046020908152604080832063ffffffff600019860181168552925290912054168310610ad8576001600160a01b03841660009081526004602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b0316905061065b565b6001600160a01b038416600090815260046020908152604080832083805290915290205463ffffffff16831015610b1357600091505061065b565b600060001982015b8163ffffffff168163ffffffff161115610bd657600282820363ffffffff16048103610b456118f9565b506001600160a01b038716600090815260046020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415610bb15760200151945061065b9350505050565b805163ffffffff16871115610bc857819350610bcf565b6001820392505b5050610b1b565b506001600160a01b038516600090815260046020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b60066020526000908152604090205481565b6000546001600160a01b031681565b6040518060400160405280600381526020016258565360e81b81525081565b60008054600160a01b900460ff1615610cad576040805162461bcd60e51b815260206004820152600f60248201526e151bdad95b881a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b6000610cd1836040518060600160405280602581526020016119a960259139611173565b9050610cde33858361127a565b5060019392505050565b6001600160a01b03811660009081526005602052604081205463ffffffff1680610d13576000610d52565b6001600160a01b0383166000908152600460209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03165b9392505050565b600054600160a01b900460ff1615610daa576040805162461bcd60e51b815260206004820152600f60248201526e151bdad95b881a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b60006040518080611a726043913960408051918290036043018220828201909152600582526456656e757360d81b60209092019190915290507f1a6875e3c24a024aa04a101518d25b2c59648a74ace83f8261f2a8e64025d85b610e0c6114e9565b3060405160200180858152602001848152602001838152602001826001600160a01b03166001600160a01b0316815260200194505050505060405160208183030381529060405280519060200120905060006040518080611bc2603a91396040805191829003603a0182206020808401919091526001600160a01b038c1683830152606083018b905260808084018b90528251808503909101815260a08401835280519082012061190160f01b60c085015260c2840187905260e2808501829052835180860390910181526101028501808552815191840191909120600091829052610122860180865281905260ff8c1661014287015261016286018b905261018286018a9052935191965092945091926001926101a28083019392601f198301929081900390910190855afa158015610f4a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610f9c5760405162461bcd60e51b8152600401808060200182810382526025815260200180611a286025913960400191505060405180910390fd5b6001600160a01b03811660009081526006602052604090208054600181019091558914610ffa5760405162461bcd60e51b81526004018080602001828103825260218152602001806119ce6021913960400191505060405180910390fd5b874211156110395760405162461bcd60e51b8152600401808060200182810382526025815260200180611a4d6025913960400191505060405180910390fd5b611043818b61145f565b505050505b505050505050565b6001600160a01b0391821660009081526001602090815260408083209390941682529190915220546001600160601b031690565b60405180603a611bc28239603a019050604051809103902081565b600460209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b6000546001600160a01b03163314611125576040805162461bcd60e51b815260206004820152600f60248201526e29b437bab6321031329037bbb732b960891b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600081600160601b84106112055760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111ca5781810151838201526020016111b2565b50505050905090810190601f1680156111f75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b6000836001600160601b0316836001600160601b0316111582906112725760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156111ca5781810151838201526020016111b2565b505050900390565b6001600160a01b0383166112bf5760405162461bcd60e51b815260040180806020018281038252603b815260200180611b32603b913960400191505060405180910390fd5b6001600160a01b0382166113045760405162461bcd60e51b81526004018080602001828103825260398152602001806119ef6039913960400191505060405180910390fd5b6001600160a01b03831660009081526002602090815260409182902054825160608101909352603580845261134f936001600160601b03909216928592919061194d9083013961120d565b6001600160a01b03848116600090815260026020908152604080832080546001600160601b0319166001600160601b0396871617905592861682529082902054825160608101909352602f8084526113b79491909116928592909190611b6d908301396114ed565b6001600160a01b0383811660008181526002602090815260409182902080546001600160601b0319166001600160601b039687161790558151948616855290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a36001600160a01b0380841660009081526003602052604080822054858416835291205461145a92918216911683611557565b505050565b6001600160a01b03808316600081815260036020818152604080842080546002845282862054949093528787166001600160a01b031984168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46114e3828483611557565b50505050565b4690565b6000838301826001600160601b03808716908316101561154e5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156111ca5781810151838201526020016111b2565b50949350505050565b816001600160a01b0316836001600160a01b03161415801561158257506000816001600160601b0316115b1561145a576001600160a01b0383161561163a576001600160a01b03831660009081526005602052604081205463ffffffff1690816115c2576000611601565b6001600160a01b0385166000908152600460209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b9050600061162882856040518060600160405280602781526020016119826027913961120d565b9050611636868484846116e5565b5050505b6001600160a01b0382161561145a576001600160a01b03821660009081526005602052604081205463ffffffff1690816116755760006116b4565b6001600160a01b0384166000908152600460209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b905060006116db8285604051806060016040528060268152602001611b9c602691396114ed565b9050611048858484845b600061170943604051806060016040528060338152602001611ad9603391396118a4565b905060008463ffffffff1611801561175257506001600160a01b038516600090815260046020908152604080832063ffffffff6000198901811685529252909120548282169116145b156117b1576001600160a01b0385166000908152600460209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff000000001916600160201b6001600160601b03851602179055611850565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600483528781208c871682528352878120965187549451909516600160201b026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600590935292909220805460018801909316929091169190911790555b604080516001600160601b0380861682528416602082015281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b600081600160201b84106112055760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156111ca5781810151838201526020016111b2565b60408051808201909152600080825260208201529056fe5856533a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e63655856533a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e63655856533a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f77735856533a3a7472616e736665723a20616d6f756e74206578636565647320393620626974735856533a3a64656c656761746542795369673a20696e76616c6964206e6f6e63655856533a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f20616464726573735856533a3a64656c656761746542795369673a20696e76616c6964207369676e61747572655856533a3a64656c656761746542795369673a207369676e61747572652065787069726564454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374295856533a3a617070726f76653a20616d6f756e74206578636565647320393620626974735856533a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974735856533a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e65645856533a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f20616464726573735856533a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77735856533a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777344656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929a265627a7a72315820c6b814eb12e6d363e1cf304f45dedabd1946429e0d81024b3b28662f8588eb4a64736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1D00 CODESIZE SUB DUP1 PUSH2 0x1D00 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP1 DUP3 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH11 0x18D0BF423C03D8DE000000 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH2 0x1C30 DUP1 PUSH2 0xD0 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xB4B5EA57 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xB4B5EA57 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xC3CDA520 EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x47B JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0xF1127ED8 EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x50B JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x33E JUMPI DUP1 PUSH4 0x782D6FE1 EQ PUSH2 0x364 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3D2 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x3E2 JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0x587CDE1E EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x62A5AF3B EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0x6A28F000 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x6FCFFF45 EQ PUSH2 0x2FF JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x229 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x231 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15A PUSH2 0x531 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x194 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x552 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x217 PUSH2 0x661 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x217 PUSH2 0x670 JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x68B JUMP JUMPDEST PUSH2 0x26F PUSH2 0x820 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2AB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x825 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x840 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2ED PUSH2 0x89E JUMP JUMPDEST PUSH2 0x2ED PUSH2 0x92B JUMP JUMPDEST PUSH2 0x325 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9B2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x217 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9CA JUMP JUMPDEST PUSH2 0x390 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x217 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC1B JUMP JUMPDEST PUSH2 0x2AB PUSH2 0xC2D JUMP JUMPDEST PUSH2 0x15A PUSH2 0xC3C JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC5B JUMP JUMPDEST PUSH2 0x390 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCE8 JUMP JUMPDEST PUSH2 0x2ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0xD59 JUMP JUMPDEST PUSH2 0x217 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1050 JUMP JUMPDEST PUSH2 0x217 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x4E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x109F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x2ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10D4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x56656E7573 PUSH1 0xD8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x151BDAD95B881A5CC81B1BD8DAD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP4 EQ ISZERO PUSH2 0x5B9 JUMPI POP PUSH1 0x0 NOT PUSH2 0x5DE JUMP JUMPDEST PUSH2 0x5DB DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1AB5 PUSH1 0x24 SWAP2 CODECOPY PUSH2 0x1173 JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH11 0x18D0BF423C03D8DE000000 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x43 PUSH2 0x1A72 DUP3 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6DD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x151BDAD95B881A5CC81B1BD8DAD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x24 DUP1 DUP5 MSTORE SWAP2 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND SWAP4 SWAP1 SWAP3 PUSH2 0x733 SWAP3 DUP9 SWAP3 PUSH2 0x1AB5 SWAP1 DUP4 ADD CODECOPY PUSH2 0x1173 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x760 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 DUP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x808 JUMPI PUSH1 0x0 PUSH2 0x78A DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1911 PUSH1 0x3C SWAP2 CODECOPY PUSH2 0x120D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP11 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD SWAP5 SWAP6 POP SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP JUMPDEST PUSH2 0x813 DUP8 DUP8 DUP4 PUSH2 0x127A JUMP JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x891 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x151BDAD95B881A5CC81B1BD8DAD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x89B CALLER DUP3 PUSH2 0x145F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x8EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x29B437BAB6321031329037BBB732B9 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x962A6139CA22015759D0878E2CF5D770DCB8152E1D5BA08E46A969DD9B154A9C SWAP2 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x97C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x29B437BAB6321031329037BBB732B9 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xF0DAAC2271A735EA786B9ADF80DFCBD6A3CBD52F3CAB0A78337114692D5FAF5D SWAP2 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 NUMBER DUP3 LT PUSH2 0xA2E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B0C PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0xA5C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x65B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0xAD8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x65B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0xB13 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x65B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0xBD6 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0xB45 PUSH2 0x18F9 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0xBB1 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x65B SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0xBC8 JUMPI DUP2 SWAP4 POP PUSH2 0xBCF JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0xB1B JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x585653 PUSH1 0xE8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xCAD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x151BDAD95B881A5CC81B1BD8DAD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCD1 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x19A9 PUSH1 0x25 SWAP2 CODECOPY PUSH2 0x1173 JUMP JUMPDEST SWAP1 POP PUSH2 0xCDE CALLER DUP6 DUP4 PUSH2 0x127A JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0xD13 JUMPI PUSH1 0x0 PUSH2 0xD52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP6 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xDAA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x151BDAD95B881A5CC81B1BD8DAD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH2 0x1A72 PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x43 ADD DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP3 MSTORE PUSH5 0x56656E7573 PUSH1 0xD8 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 POP PUSH32 0x1A6875E3C24A024AA04A101518D25B2C59648A74ACE83F8261F2A8E64025D85B PUSH2 0xE0C PUSH2 0x14E9 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH2 0x1BC2 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x3A ADD DUP3 KECCAK256 PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP4 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD DUP12 SWAP1 MSTORE PUSH1 0x80 DUP1 DUP5 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA0 DUP5 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xC2 DUP5 ADD DUP8 SWAP1 MSTORE PUSH1 0xE2 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH2 0x102 DUP6 ADD DUP1 DUP6 MSTORE DUP2 MLOAD SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP2 DUP3 SWAP1 MSTORE PUSH2 0x122 DUP7 ADD DUP1 DUP7 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP13 AND PUSH2 0x142 DUP8 ADD MSTORE PUSH2 0x162 DUP7 ADD DUP12 SWAP1 MSTORE PUSH2 0x182 DUP7 ADD DUP11 SWAP1 MSTORE SWAP4 MLOAD SWAP2 SWAP7 POP SWAP3 SWAP5 POP SWAP2 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x1A2 DUP1 DUP4 ADD SWAP4 SWAP3 PUSH1 0x1F NOT DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xF9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A28 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP10 EQ PUSH2 0xFFA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19CE PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP8 TIMESTAMP GT ISZERO PUSH2 0x1039 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A4D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1043 DUP2 DUP12 PUSH2 0x145F JUMP JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x3A PUSH2 0x1BC2 DUP3 CODECOPY PUSH1 0x3A ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1125 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x29B437BAB6321031329037BBB732B9 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x60 SHL DUP5 LT PUSH2 0x1205 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11B2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11F7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO DUP3 SWAP1 PUSH2 0x1272 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11B2 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x12BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B32 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1304 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19EF PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x35 DUP1 DUP5 MSTORE PUSH2 0x134F SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND SWAP3 DUP6 SWAP3 SWAP2 SWAP1 PUSH2 0x194D SWAP1 DUP4 ADD CODECOPY PUSH2 0x120D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP7 DUP8 AND OR SWAP1 SSTORE SWAP3 DUP7 AND DUP3 MSTORE SWAP1 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x2F DUP1 DUP5 MSTORE PUSH2 0x13B7 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x1B6D SWAP1 DUP4 ADD CODECOPY PUSH2 0x14ED JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP7 DUP8 AND OR SWAP1 SSTORE DUP2 MLOAD SWAP5 DUP7 AND DUP6 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP5 AND DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH2 0x145A SWAP3 SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH2 0x1557 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH1 0x2 DUP5 MSTORE DUP3 DUP7 KECCAK256 SLOAD SWAP5 SWAP1 SWAP4 MSTORE DUP8 DUP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP5 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP6 AND SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND SWAP4 SWAP2 SWAP3 DUP6 SWAP3 SWAP2 PUSH32 0x3134E8A2E6D97E929A7E54011EA5485D7D196DD5F0BA4D4EF95803E8E3FC257F SWAP2 SWAP1 LOG4 PUSH2 0x14E3 DUP3 DUP5 DUP4 PUSH2 0x1557 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0x154E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11B2 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x1582 JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0x145A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x163A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0x15C2 JUMPI PUSH1 0x0 PUSH2 0x1601 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP7 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1628 DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1982 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x120D JUMP JUMPDEST SWAP1 POP PUSH2 0x1636 DUP7 DUP5 DUP5 DUP5 PUSH2 0x16E5 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO PUSH2 0x145A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0x1675 JUMPI PUSH1 0x0 PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP7 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16DB DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B9C PUSH1 0x26 SWAP2 CODECOPY PUSH2 0x14ED JUMP JUMPDEST SWAP1 POP PUSH2 0x1048 DUP6 DUP5 DUP5 DUP5 JUMPDEST PUSH1 0x0 PUSH2 0x1709 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1AD9 PUSH1 0x33 SWAP2 CODECOPY PUSH2 0x18A4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x1752 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP10 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x17B1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFF00000000 NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0x1850 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP13 DUP8 AND DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SLOAD SWAP5 MLOAD SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFF00000000 NOT SWAP6 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP6 DUP7 AND OR SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP6 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x5 SWAP1 SWAP4 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP9 ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP7 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP3 PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x20 SHL DUP5 LT PUSH2 0x1205 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11B2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP INVALID PC JUMP MSTORE8 GASPRICE GASPRICE PUSH21 0x72616E7366657246726F6D3A207472616E73666572 KECCAK256 PUSH2 0x6D6F PUSH22 0x6E742065786365656473207370656E64657220616C6C PUSH16 0x77616E63655856533A3A5F7472616E73 PUSH7 0x6572546F6B656E PUSH20 0x3A207472616E7366657220616D6F756E74206578 PUSH4 0x65656473 KECCAK256 PUSH3 0x616C61 PUSH15 0x63655856533A3A5F6D6F7665566F74 PUSH6 0x733A20766F74 PUSH6 0x20616D6F756E PUSH21 0x20756E646572666C6F77735856533A3A7472616E73 PUSH7 0x65723A20616D6F PUSH22 0x6E74206578636565647320393620626974735856533A GASPRICE PUSH5 0x656C656761 PUSH21 0x6542795369673A20696E76616C6964206E6F6E6365 PC JUMP MSTORE8 GASPRICE GASPRICE 0x5F PUSH21 0x72616E73666572546F6B656E733A2063616E6E6F74 KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 PC JUMP MSTORE8 GASPRICE GASPRICE PUSH5 0x656C656761 PUSH21 0x6542795369673A20696E76616C6964207369676E61 PUSH21 0x7572655856533A3A64656C65676174654279536967 GASPRICE KECCAK256 PUSH20 0x69676E6174757265206578706972656445495037 BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH22 0x696E7432353620636861696E49642C61646472657373 KECCAK256 PUSH23 0x6572696679696E67436F6E7472616374295856533A3A61 PUSH17 0x70726F76653A20616D6F756E7420657863 PUSH6 0x656473203936 KECCAK256 PUSH3 0x697473 PC JUMP MSTORE8 GASPRICE GASPRICE 0x5F PUSH24 0x72697465436865636B706F696E743A20626C6F636B206E75 PUSH14 0x6265722065786365656473203332 KECCAK256 PUSH3 0x697473 PC JUMP MSTORE8 GASPRICE GASPRICE PUSH8 0x65745072696F7256 PUSH16 0x7465733A206E6F742079657420646574 PUSH6 0x726D696E6564 PC JUMP MSTORE8 GASPRICE GASPRICE 0x5F PUSH21 0x72616E73666572546F6B656E733A2063616E6E6F74 KECCAK256 PUSH21 0x72616E736665722066726F6D20746865207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x6573735856533A3A5F7472616E73666572546F PUSH12 0x656E733A207472616E736665 PUSH19 0x20616D6F756E74206F766572666C6F77735856 MSTORE8 GASPRICE GASPRICE 0x5F PUSH14 0x6F7665566F7465733A20766F7465 KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206F766572666C6F777344656C65676174696F6E 0x28 PUSH2 0x6464 PUSH19 0x6573732064656C6567617465652C75696E7432 CALLDATALOAD CALLDATASIZE KECCAK256 PUSH15 0x6F6E63652C75696E74323536206578 PUSH17 0x69727929A265627A7A72315820C6B814EB SLT 0xE6 0xD3 PUSH4 0xE1CF304F GASLIMIT 0xDE 0xDA 0xBD NOT CHAINID TIMESTAMP SWAP15 0xD DUP2 MUL 0x4B EXTCODESIZE 0x28 PUSH7 0x2F8588EB4A6473 PUSH16 0x6C634300051000320000000000000000 ","sourceMap":"63:12615:0:-;;;154:1:2;128:27;;-1:-1:-1;;;;128:27:2;;;2561:149:0;5:2:-1;;;;30:1;27;20:12;5:2;2561:149:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2561:149:0;182:5:1;:18;;-1:-1:-1;;;;;;182:18:1;190:10;182:18;;;-1:-1:-1;;;;;2607:17:0;;;;;:8;2561:149;2607:17;;;;;;;:39;;-1:-1:-1;;;;;;2607:39:0;467:11;2607:39;;;;;;2661:42;;;;;;;2607:17;;182:5:1;2661:42:0;;;;;;;;;;;2561:149;63:12615;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063b4b5ea571161007c578063b4b5ea571461040e578063c3cda52014610434578063dd62ed3e1461047b578063e7a324dc146104a9578063f1127ed8146104b1578063f2fde38b1461050b5761014d565b806370a082311461033e578063782d6fe1146103645780637ecebe00146103ac5780638da5cb5b146103d257806395d89b41146103da578063a9059cbb146103e25761014d565b8063313ce56711610115578063313ce56714610267578063587cde1e146102855780635c19a95c146102c757806362a5af3b146102ef5780636a28f000146102f75780636fcfff45146102ff5761014d565b806306fdde0314610152578063095ea7b3146101cf57806318160ddd1461020f57806320606b701461022957806323b872dd14610231575b600080fd5b61015a610531565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b038135169060200135610552565b604080519115158252519081900360200190f35b610217610661565b60408051918252519081900360200190f35b610217610670565b6101fb6004803603606081101561024757600080fd5b506001600160a01b0381358116916020810135909116906040013561068b565b61026f610820565b6040805160ff9092168252519081900360200190f35b6102ab6004803603602081101561029b57600080fd5b50356001600160a01b0316610825565b604080516001600160a01b039092168252519081900360200190f35b6102ed600480360360208110156102dd57600080fd5b50356001600160a01b0316610840565b005b6102ed61089e565b6102ed61092b565b6103256004803603602081101561031557600080fd5b50356001600160a01b03166109b2565b6040805163ffffffff9092168252519081900360200190f35b6102176004803603602081101561035457600080fd5b50356001600160a01b03166109ca565b6103906004803603604081101561037a57600080fd5b506001600160a01b0381351690602001356109ee565b604080516001600160601b039092168252519081900360200190f35b610217600480360360208110156103c257600080fd5b50356001600160a01b0316610c1b565b6102ab610c2d565b61015a610c3c565b6101fb600480360360408110156103f857600080fd5b506001600160a01b038135169060200135610c5b565b6103906004803603602081101561042457600080fd5b50356001600160a01b0316610ce8565b6102ed600480360360c081101561044a57600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610d59565b6102176004803603604081101561049157600080fd5b506001600160a01b0381358116916020013516611050565b610217611084565b6104e3600480360360408110156104c757600080fd5b5080356001600160a01b0316906020013563ffffffff1661109f565b6040805163ffffffff90931683526001600160601b0390911660208301528051918290030190f35b6102ed6004803603602081101561052157600080fd5b50356001600160a01b03166110d4565b6040518060400160405280600581526020016456656e757360d81b81525081565b60008054600160a01b900460ff16156105a4576040805162461bcd60e51b815260206004820152600f60248201526e151bdad95b881a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b60006000198314156105b957506000196105de565b6105db83604051806060016040528060248152602001611ab560249139611173565b90505b3360008181526001602090815260408083206001600160a01b0389168085529083529281902080546001600160601b0319166001600160601b038716908117909155815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a360019150505b92915050565b6a18d0bf423c03d8de00000081565b604051806043611a7282396043019050604051809103902081565b60008054600160a01b900460ff16156106dd576040805162461bcd60e51b815260206004820152600f60248201526e151bdad95b881a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b6001600160a01b03841660009081526001602090815260408083203380855290835281842054825160608101909352602480845291946001600160601b03909116939092610733928892611ab590830139611173565b9050866001600160a01b0316836001600160a01b03161415801561076057506001600160601b0382811614155b1561080857600061078a83836040518060600160405280603c8152602001611911603c913961120d565b6001600160a01b038981166000818152600160209081526040808320948a168084529482529182902080546001600160601b0319166001600160601b03871690811790915582519081529151949550929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a3505b61081387878361127a565b5060019695505050505050565b601281565b6003602052600090815260409020546001600160a01b031681565b600054600160a01b900460ff1615610891576040805162461bcd60e51b815260206004820152600f60248201526e151bdad95b881a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b61089b338261145f565b50565b6000546001600160a01b031633146108ef576040805162461bcd60e51b815260206004820152600f60248201526e29b437bab6321031329037bbb732b960891b604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b1781556040517f962a6139ca22015759d0878e2cf5d770dcb8152e1d5ba08e46a969dd9b154a9c9190a1565b6000546001600160a01b0316331461097c576040805162461bcd60e51b815260206004820152600f60248201526e29b437bab6321031329037bbb732b960891b604482015290519081900360640190fd5b6000805460ff60a01b191681556040517ff0daac2271a735ea786b9adf80dfcbd6a3cbd52f3cab0a78337114692d5faf5d9190a1565b60056020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600260205260409020546001600160601b031690565b6000438210610a2e5760405162461bcd60e51b8152600401808060200182810382526026815260200180611b0c6026913960400191505060405180910390fd5b6001600160a01b03831660009081526005602052604090205463ffffffff1680610a5c57600091505061065b565b6001600160a01b038416600090815260046020908152604080832063ffffffff600019860181168552925290912054168310610ad8576001600160a01b03841660009081526004602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b0316905061065b565b6001600160a01b038416600090815260046020908152604080832083805290915290205463ffffffff16831015610b1357600091505061065b565b600060001982015b8163ffffffff168163ffffffff161115610bd657600282820363ffffffff16048103610b456118f9565b506001600160a01b038716600090815260046020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415610bb15760200151945061065b9350505050565b805163ffffffff16871115610bc857819350610bcf565b6001820392505b5050610b1b565b506001600160a01b038516600090815260046020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b60066020526000908152604090205481565b6000546001600160a01b031681565b6040518060400160405280600381526020016258565360e81b81525081565b60008054600160a01b900460ff1615610cad576040805162461bcd60e51b815260206004820152600f60248201526e151bdad95b881a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b6000610cd1836040518060600160405280602581526020016119a960259139611173565b9050610cde33858361127a565b5060019392505050565b6001600160a01b03811660009081526005602052604081205463ffffffff1680610d13576000610d52565b6001600160a01b0383166000908152600460209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03165b9392505050565b600054600160a01b900460ff1615610daa576040805162461bcd60e51b815260206004820152600f60248201526e151bdad95b881a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b60006040518080611a726043913960408051918290036043018220828201909152600582526456656e757360d81b60209092019190915290507f1a6875e3c24a024aa04a101518d25b2c59648a74ace83f8261f2a8e64025d85b610e0c6114e9565b3060405160200180858152602001848152602001838152602001826001600160a01b03166001600160a01b0316815260200194505050505060405160208183030381529060405280519060200120905060006040518080611bc2603a91396040805191829003603a0182206020808401919091526001600160a01b038c1683830152606083018b905260808084018b90528251808503909101815260a08401835280519082012061190160f01b60c085015260c2840187905260e2808501829052835180860390910181526101028501808552815191840191909120600091829052610122860180865281905260ff8c1661014287015261016286018b905261018286018a9052935191965092945091926001926101a28083019392601f198301929081900390910190855afa158015610f4a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610f9c5760405162461bcd60e51b8152600401808060200182810382526025815260200180611a286025913960400191505060405180910390fd5b6001600160a01b03811660009081526006602052604090208054600181019091558914610ffa5760405162461bcd60e51b81526004018080602001828103825260218152602001806119ce6021913960400191505060405180910390fd5b874211156110395760405162461bcd60e51b8152600401808060200182810382526025815260200180611a4d6025913960400191505060405180910390fd5b611043818b61145f565b505050505b505050505050565b6001600160a01b0391821660009081526001602090815260408083209390941682529190915220546001600160601b031690565b60405180603a611bc28239603a019050604051809103902081565b600460209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b6000546001600160a01b03163314611125576040805162461bcd60e51b815260206004820152600f60248201526e29b437bab6321031329037bbb732b960891b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600081600160601b84106112055760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111ca5781810151838201526020016111b2565b50505050905090810190601f1680156111f75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509192915050565b6000836001600160601b0316836001600160601b0316111582906112725760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156111ca5781810151838201526020016111b2565b505050900390565b6001600160a01b0383166112bf5760405162461bcd60e51b815260040180806020018281038252603b815260200180611b32603b913960400191505060405180910390fd5b6001600160a01b0382166113045760405162461bcd60e51b81526004018080602001828103825260398152602001806119ef6039913960400191505060405180910390fd5b6001600160a01b03831660009081526002602090815260409182902054825160608101909352603580845261134f936001600160601b03909216928592919061194d9083013961120d565b6001600160a01b03848116600090815260026020908152604080832080546001600160601b0319166001600160601b0396871617905592861682529082902054825160608101909352602f8084526113b79491909116928592909190611b6d908301396114ed565b6001600160a01b0383811660008181526002602090815260409182902080546001600160601b0319166001600160601b039687161790558151948616855290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a36001600160a01b0380841660009081526003602052604080822054858416835291205461145a92918216911683611557565b505050565b6001600160a01b03808316600081815260036020818152604080842080546002845282862054949093528787166001600160a01b031984168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46114e3828483611557565b50505050565b4690565b6000838301826001600160601b03808716908316101561154e5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156111ca5781810151838201526020016111b2565b50949350505050565b816001600160a01b0316836001600160a01b03161415801561158257506000816001600160601b0316115b1561145a576001600160a01b0383161561163a576001600160a01b03831660009081526005602052604081205463ffffffff1690816115c2576000611601565b6001600160a01b0385166000908152600460209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b9050600061162882856040518060600160405280602781526020016119826027913961120d565b9050611636868484846116e5565b5050505b6001600160a01b0382161561145a576001600160a01b03821660009081526005602052604081205463ffffffff1690816116755760006116b4565b6001600160a01b0384166000908152600460209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b905060006116db8285604051806060016040528060268152602001611b9c602691396114ed565b9050611048858484845b600061170943604051806060016040528060338152602001611ad9603391396118a4565b905060008463ffffffff1611801561175257506001600160a01b038516600090815260046020908152604080832063ffffffff6000198901811685529252909120548282169116145b156117b1576001600160a01b0385166000908152600460209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff000000001916600160201b6001600160601b03851602179055611850565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600483528781208c871682528352878120965187549451909516600160201b026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600590935292909220805460018801909316929091169190911790555b604080516001600160601b0380861682528416602082015281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b600081600160201b84106112055760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156111ca5781810151838201526020016111b2565b60408051808201909152600080825260208201529056fe5856533a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e63655856533a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e63655856533a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f77735856533a3a7472616e736665723a20616d6f756e74206578636565647320393620626974735856533a3a64656c656761746542795369673a20696e76616c6964206e6f6e63655856533a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f20616464726573735856533a3a64656c656761746542795369673a20696e76616c6964207369676e61747572655856533a3a64656c656761746542795369673a207369676e61747572652065787069726564454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374295856533a3a617070726f76653a20616d6f756e74206578636565647320393620626974735856533a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974735856533a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e65645856533a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f20616464726573735856533a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77735856533a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777344656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929a265627a7a72315820c6b814eb12e6d363e1cf304f45dedabd1946429e0d81024b3b28662f8588eb4a64736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xB4B5EA57 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xB4B5EA57 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xC3CDA520 EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x47B JUMPI DUP1 PUSH4 0xE7A324DC EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0xF1127ED8 EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x50B JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x33E JUMPI DUP1 PUSH4 0x782D6FE1 EQ PUSH2 0x364 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3D2 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x3E2 JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0x587CDE1E EQ PUSH2 0x285 JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x62A5AF3B EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0x6A28F000 EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x6FCFFF45 EQ PUSH2 0x2FF JUMPI PUSH2 0x14D JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1CF JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x229 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x231 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15A PUSH2 0x531 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x194 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x552 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x217 PUSH2 0x661 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x217 PUSH2 0x670 JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x68B JUMP JUMPDEST PUSH2 0x26F PUSH2 0x820 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2AB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x825 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x840 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2ED PUSH2 0x89E JUMP JUMPDEST PUSH2 0x2ED PUSH2 0x92B JUMP JUMPDEST PUSH2 0x325 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9B2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x217 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x9CA JUMP JUMPDEST PUSH2 0x390 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9EE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x217 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC1B JUMP JUMPDEST PUSH2 0x2AB PUSH2 0xC2D JUMP JUMPDEST PUSH2 0x15A PUSH2 0xC3C JUMP JUMPDEST PUSH2 0x1FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC5B JUMP JUMPDEST PUSH2 0x390 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xCE8 JUMP JUMPDEST PUSH2 0x2ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0xD59 JUMP JUMPDEST PUSH2 0x217 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1050 JUMP JUMPDEST PUSH2 0x217 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x4E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH4 0xFFFFFFFF AND PUSH2 0x109F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x2ED PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10D4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x56656E7573 PUSH1 0xD8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x5A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x151BDAD95B881A5CC81B1BD8DAD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP4 EQ ISZERO PUSH2 0x5B9 JUMPI POP PUSH1 0x0 NOT PUSH2 0x5DE JUMP JUMPDEST PUSH2 0x5DB DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1AB5 PUSH1 0x24 SWAP2 CODECOPY PUSH2 0x1173 JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH11 0x18D0BF423C03D8DE000000 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x43 PUSH2 0x1A72 DUP3 CODECOPY PUSH1 0x43 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6DD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x151BDAD95B881A5CC81B1BD8DAD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x24 DUP1 DUP5 MSTORE SWAP2 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP2 AND SWAP4 SWAP1 SWAP3 PUSH2 0x733 SWAP3 DUP9 SWAP3 PUSH2 0x1AB5 SWAP1 DUP4 ADD CODECOPY PUSH2 0x1173 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x760 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP3 DUP2 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x808 JUMPI PUSH1 0x0 PUSH2 0x78A DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1911 PUSH1 0x3C SWAP2 CODECOPY PUSH2 0x120D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP11 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP8 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD SWAP5 SWAP6 POP SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP JUMPDEST PUSH2 0x813 DUP8 DUP8 DUP4 PUSH2 0x127A JUMP JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x891 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x151BDAD95B881A5CC81B1BD8DAD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x89B CALLER DUP3 PUSH2 0x145F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x8EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x29B437BAB6321031329037BBB732B9 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x962A6139CA22015759D0878E2CF5D770DCB8152E1D5BA08E46A969DD9B154A9C SWAP2 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x97C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x29B437BAB6321031329037BBB732B9 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xF0DAAC2271A735EA786B9ADF80DFCBD6A3CBD52F3CAB0A78337114692D5FAF5D SWAP2 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 NUMBER DUP3 LT PUSH2 0xA2E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B0C PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0xA5C JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x65B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP7 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD AND DUP4 LT PUSH2 0xAD8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT SWAP5 SWAP1 SWAP5 ADD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 POP PUSH2 0x65B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 DUP1 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP4 LT ISZERO PUSH2 0xB13 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x65B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0xBD6 JUMPI PUSH1 0x2 DUP3 DUP3 SUB PUSH4 0xFFFFFFFF AND DIV DUP2 SUB PUSH2 0xB45 PUSH2 0x18F9 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF DUP6 DUP2 AND DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE SLOAD SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP8 EQ ISZERO PUSH2 0xBB1 JUMPI PUSH1 0x20 ADD MLOAD SWAP5 POP PUSH2 0x65B SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF AND DUP8 GT ISZERO PUSH2 0xBC8 JUMPI DUP2 SWAP4 POP PUSH2 0xBCF JUMP JUMPDEST PUSH1 0x1 DUP3 SUB SWAP3 POP JUMPDEST POP POP PUSH2 0xB1B JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB PUSH1 0x1 PUSH1 0x20 SHL SWAP1 SWAP2 DIV AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x585653 PUSH1 0xE8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xCAD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x151BDAD95B881A5CC81B1BD8DAD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCD1 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x19A9 PUSH1 0x25 SWAP2 CODECOPY PUSH2 0x1173 JUMP JUMPDEST SWAP1 POP PUSH2 0xCDE CALLER DUP6 DUP4 PUSH2 0x127A JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND DUP1 PUSH2 0xD13 JUMPI PUSH1 0x0 PUSH2 0xD52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP6 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xDAA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x151BDAD95B881A5CC81B1BD8DAD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH2 0x1A72 PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x43 ADD DUP3 KECCAK256 DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP3 MSTORE PUSH5 0x56656E7573 PUSH1 0xD8 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 POP PUSH32 0x1A6875E3C24A024AA04A101518D25B2C59648A74ACE83F8261F2A8E64025D85B PUSH2 0xE0C PUSH2 0x14E9 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH2 0x1BC2 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x3A ADD DUP3 KECCAK256 PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP4 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD DUP12 SWAP1 MSTORE PUSH1 0x80 DUP1 DUP5 ADD DUP12 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA0 DUP5 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xC2 DUP5 ADD DUP8 SWAP1 MSTORE PUSH1 0xE2 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH2 0x102 DUP6 ADD DUP1 DUP6 MSTORE DUP2 MLOAD SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP2 DUP3 SWAP1 MSTORE PUSH2 0x122 DUP7 ADD DUP1 DUP7 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP13 AND PUSH2 0x142 DUP8 ADD MSTORE PUSH2 0x162 DUP7 ADD DUP12 SWAP1 MSTORE PUSH2 0x182 DUP7 ADD DUP11 SWAP1 MSTORE SWAP4 MLOAD SWAP2 SWAP7 POP SWAP3 SWAP5 POP SWAP2 SWAP3 PUSH1 0x1 SWAP3 PUSH2 0x1A2 DUP1 DUP4 ADD SWAP4 SWAP3 PUSH1 0x1F NOT DUP4 ADD SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xF9C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A28 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP10 EQ PUSH2 0xFFA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19CE PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP8 TIMESTAMP GT ISZERO PUSH2 0x1039 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A4D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1043 DUP2 DUP12 PUSH2 0x145F JUMP JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x3A PUSH2 0x1BC2 DUP3 CODECOPY PUSH1 0x3A ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP3 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1125 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x29B437BAB6321031329037BBB732B9 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x60 SHL DUP5 LT PUSH2 0x1205 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11B2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11F7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT ISZERO DUP3 SWAP1 PUSH2 0x1272 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11B2 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x12BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B32 PUSH1 0x3B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1304 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19EF PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x35 DUP1 DUP5 MSTORE PUSH2 0x134F SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND SWAP3 DUP6 SWAP3 SWAP2 SWAP1 PUSH2 0x194D SWAP1 DUP4 ADD CODECOPY PUSH2 0x120D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP7 DUP8 AND OR SWAP1 SSTORE SWAP3 DUP7 AND DUP3 MSTORE SWAP1 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP4 MSTORE PUSH1 0x2F DUP1 DUP5 MSTORE PUSH2 0x13B7 SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 DUP6 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x1B6D SWAP1 DUP4 ADD CODECOPY PUSH2 0x14ED JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP7 DUP8 AND OR SWAP1 SSTORE DUP2 MLOAD SWAP5 DUP7 AND DUP6 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP5 AND DUP4 MSTORE SWAP2 KECCAK256 SLOAD PUSH2 0x145A SWAP3 SWAP2 DUP3 AND SWAP2 AND DUP4 PUSH2 0x1557 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH1 0x2 DUP5 MSTORE DUP3 DUP7 KECCAK256 SLOAD SWAP5 SWAP1 SWAP4 MSTORE DUP8 DUP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP5 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP6 AND SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB SWAP1 SWAP3 AND SWAP4 SWAP2 SWAP3 DUP6 SWAP3 SWAP2 PUSH32 0x3134E8A2E6D97E929A7E54011EA5485D7D196DD5F0BA4D4EF95803E8E3FC257F SWAP2 SWAP1 LOG4 PUSH2 0x14E3 DUP3 DUP5 DUP4 PUSH2 0x1557 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP8 AND SWAP1 DUP4 AND LT ISZERO PUSH2 0x154E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11B2 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO DUP1 ISZERO PUSH2 0x1582 JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0x145A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x163A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0x15C2 JUMPI PUSH1 0x0 PUSH2 0x1601 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP7 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1628 DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1982 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x120D JUMP JUMPDEST SWAP1 POP PUSH2 0x1636 DUP7 DUP5 DUP5 DUP5 PUSH2 0x16E5 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO PUSH2 0x145A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH2 0x1675 JUMPI PUSH1 0x0 PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP7 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x20 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x16DB DUP3 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B9C PUSH1 0x26 SWAP2 CODECOPY PUSH2 0x14ED JUMP JUMPDEST SWAP1 POP PUSH2 0x1048 DUP6 DUP5 DUP5 DUP5 JUMPDEST PUSH1 0x0 PUSH2 0x1709 NUMBER PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1AD9 PUSH1 0x33 SWAP2 CODECOPY PUSH2 0x18A4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND GT DUP1 ISZERO PUSH2 0x1752 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH4 0xFFFFFFFF PUSH1 0x0 NOT DUP10 ADD DUP2 AND DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ JUMPDEST ISZERO PUSH2 0x17B1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x0 NOT DUP9 ADD PUSH4 0xFFFFFFFF AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFF00000000 NOT AND PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0x1850 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP5 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 DUP4 MSTORE DUP8 DUP2 KECCAK256 DUP13 DUP8 AND DUP3 MSTORE DUP4 MSTORE DUP8 DUP2 KECCAK256 SWAP7 MLOAD DUP8 SLOAD SWAP5 MLOAD SWAP1 SWAP6 AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFF00000000 NOT SWAP6 DUP8 AND PUSH4 0xFFFFFFFF NOT SWAP6 DUP7 AND OR SWAP6 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP6 SSTORE SWAP4 DUP3 MSTORE PUSH1 0x5 SWAP1 SWAP4 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP9 ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB DUP1 DUP7 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP3 PUSH32 0xDEC2BACDD2F05B59DE34DA9B523DFF8BE42E5E38E818C82FDB0BAE774387A724 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x20 SHL DUP5 LT PUSH2 0x1205 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x11CA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11B2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP INVALID PC JUMP MSTORE8 GASPRICE GASPRICE PUSH21 0x72616E7366657246726F6D3A207472616E73666572 KECCAK256 PUSH2 0x6D6F PUSH22 0x6E742065786365656473207370656E64657220616C6C PUSH16 0x77616E63655856533A3A5F7472616E73 PUSH7 0x6572546F6B656E PUSH20 0x3A207472616E7366657220616D6F756E74206578 PUSH4 0x65656473 KECCAK256 PUSH3 0x616C61 PUSH15 0x63655856533A3A5F6D6F7665566F74 PUSH6 0x733A20766F74 PUSH6 0x20616D6F756E PUSH21 0x20756E646572666C6F77735856533A3A7472616E73 PUSH7 0x65723A20616D6F PUSH22 0x6E74206578636565647320393620626974735856533A GASPRICE PUSH5 0x656C656761 PUSH21 0x6542795369673A20696E76616C6964206E6F6E6365 PC JUMP MSTORE8 GASPRICE GASPRICE 0x5F PUSH21 0x72616E73666572546F6B656E733A2063616E6E6F74 KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 PC JUMP MSTORE8 GASPRICE GASPRICE PUSH5 0x656C656761 PUSH21 0x6542795369673A20696E76616C6964207369676E61 PUSH21 0x7572655856533A3A64656C65676174654279536967 GASPRICE KECCAK256 PUSH20 0x69676E6174757265206578706972656445495037 BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH22 0x696E7432353620636861696E49642C61646472657373 KECCAK256 PUSH23 0x6572696679696E67436F6E7472616374295856533A3A61 PUSH17 0x70726F76653A20616D6F756E7420657863 PUSH6 0x656473203936 KECCAK256 PUSH3 0x697473 PC JUMP MSTORE8 GASPRICE GASPRICE 0x5F PUSH24 0x72697465436865636B706F696E743A20626C6F636B206E75 PUSH14 0x6265722065786365656473203332 KECCAK256 PUSH3 0x697473 PC JUMP MSTORE8 GASPRICE GASPRICE PUSH8 0x65745072696F7256 PUSH16 0x7465733A206E6F742079657420646574 PUSH6 0x726D696E6564 PC JUMP MSTORE8 GASPRICE GASPRICE 0x5F PUSH21 0x72616E73666572546F6B656E733A2063616E6E6F74 KECCAK256 PUSH21 0x72616E736665722066726F6D20746865207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x6573735856533A3A5F7472616E73666572546F PUSH12 0x656E733A207472616E736665 PUSH19 0x20616D6F756E74206F766572666C6F77735856 MSTORE8 GASPRICE GASPRICE 0x5F PUSH14 0x6F7665566F7465733A20766F7465 KECCAK256 PUSH2 0x6D6F PUSH22 0x6E74206F766572666C6F777344656C65676174696F6E 0x28 PUSH2 0x6464 PUSH19 0x6573732064656C6567617465652C75696E7432 CALLDATALOAD CALLDATASIZE KECCAK256 PUSH15 0x6F6E63652C75696E74323536206578 PUSH17 0x69727929A265627A7A72315820C6B814EB SLT 0xE6 0xD3 PUSH4 0xE1CF304F GASLIMIT 0xDE 0xDA 0xBD NOT CHAINID TIMESTAMP SWAP15 0xD DUP2 MUL 0x4B EXTCODESIZE 0x28 PUSH7 0x2F8588EB4A6473 PUSH16 0x6C634300051000320000000000000000 ","sourceMap":"63:12615:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;63:12615:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;144:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;144:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3515:416;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3515:416:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;432:46;;;:::i;:::-;;;;;;;;;;;;;;;;1330:130;;;:::i;5033:728::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5033:728:0;;;;;;;;;;;;;;;;;:::i;336:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;799:44;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;799:44:0;-1:-1:-1;;;;;799:44:0;;:::i;:::-;;;;-1:-1:-1;;;;;799:44:0;;;;;;;;;;;;;;5903:110;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5903:110:0;-1:-1:-1;;;;;5903:110:0;;:::i;:::-;;303:89:2;;;:::i;398:93::-;;;:::i;1212:48:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1212:48:0;-1:-1:-1;;;;;1212:48:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;4127:106;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4127:106:0;-1:-1:-1;;;;;4127:106:0;;:::i;8080:1185::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8080:1185:0;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;8080:1185:0;;;;;;;;;;;;;;1754:38;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1754:38:0;-1:-1:-1;;;;;1754:38:0;;:::i;47:20:1:-;;;:::i;239:37:0:-;;;:::i;4489:243::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4489:243:0;;;;;;;;:::i;7439:219::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7439:219:0;-1:-1:-1;;;;;7439:219:0;;:::i;6436:809::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;6436:809:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3006:134::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3006:134:0;;;;;;;;;;:::i;1551:125::-;;;:::i;1078:68::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1078:68:0;;-1:-1:-1;;;;;1078:68:0;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;1078:68:0;;;;;;;;;;;;;;;;315:147:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;315:147:1;-1:-1:-1;;;;;315:147:1;;:::i;144:37:0:-;;;;;;;;;;;;;;-1:-1:-1;;;144:37:0;;;;:::o;3515:416::-;3593:4;246:8:2;;-1:-1:-1;;;246:8:2;;;;:13;238:41;;;;;-1:-1:-1;;;238:41:2;;;;;;;;;;;;-1:-1:-1;;;238:41:2;;;;;;;;;;;;;;;3609:13:0;-1:-1:-1;;3636:9:0;:21;3632:168;;;-1:-1:-1;;;3632:168:0;;;3732:57;3739:9;3732:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;3723:66;;3632:168;3821:10;3810:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;3810:31:0;;;;;;;;;;;;:40;;-1:-1:-1;;;;;;3810:40:0;-1:-1:-1;;;;;3810:40:0;;;;;;;;3866:37;;;;;;;3810:31;;3821:10;3866:37;;;;;;;;;;;3920:4;3913:11;;;289:1:2;3515:416:0;;;;:::o;432:46::-;467:11;432:46;:::o;1330:130::-;1380:80;;;;;;;;;;;;;;;;;;1330:130;:::o;5033:728::-;5125:4;246:8:2;;-1:-1:-1;;;246:8:2;;;;:13;238:41;;;;;-1:-1:-1;;;238:41:2;;;;;;;;;;;;-1:-1:-1;;;238:41:2;;;;;;;;;;;;;;;-1:-1:-1;;;;;5205:15:0;;5141;5205;;;:10;:15;;;;;;;;5159:10;5205:24;;;;;;;;;;5255:57;;;;;;;;;;;;5159:10;;-1:-1:-1;;;;;5205:24:0;;;;5141:15;;5255:57;;5262:9;;5255:57;;;;;:6;:57::i;:::-;5239:73;;5338:3;-1:-1:-1;;;;;5327:14:0;:7;-1:-1:-1;;;;;5327:14:0;;;:48;;;;-1:-1:-1;;;;;;5345:30:0;;;;;5327:48;5323:367;;;5391:19;5413:157;5436:16;5470:6;5413:157;;;;;;;;;;;;;;;;;:5;:157::i;:::-;-1:-1:-1;;;;;5584:15:0;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;:39;;-1:-1:-1;;;;;;5584:39:0;-1:-1:-1;;;;;5584:39:0;;;;;;;;5643:36;;;;;;;5584:39;;-1:-1:-1;5584:24:0;;:15;;5643:36;;;;;;;;;5323:367;;5700:33;5716:3;5721;5726:6;5700:15;:33::i;:::-;-1:-1:-1;5750:4:0;;5033:728;-1:-1:-1;;;;;;5033:728:0:o;336:35::-;369:2;336:35;:::o;799:44::-;;;;;;;;;;;;-1:-1:-1;;;;;799:44:0;;:::o;5903:110::-;246:8:2;;-1:-1:-1;;;246:8:2;;;;:13;238:41;;;;;-1:-1:-1;;;238:41:2;;;;;;;;;;;;-1:-1:-1;;;238:41:2;;;;;;;;;;;;;;;5974:32:0;5984:10;5996:9;5974;:32::i;:::-;5903:110;:::o;303:89:2:-;266:5:1;;-1:-1:-1;;;;;266:5:1;252:10;:19;244:47;;;;;-1:-1:-1;;;244:47:1;;;;;;;;;;;;-1:-1:-1;;;244:47:1;;;;;;;;;;;;;;;348:8:2;:12;;-1:-1:-1;;;;348:12:2;-1:-1:-1;;;348:12:2;;;376:9;;;;348:8;376:9;303:89::o;398:93::-;266:5:1;;-1:-1:-1;;;;;266:5:1;252:10;:19;244:47;;;;;-1:-1:-1;;;244:47:1;;;;;;;;;;;;-1:-1:-1;;;244:47:1;;;;;;;;;;;;;;;456:1:2;445:12;;-1:-1:-1;;;;445:12:2;;;473:11;;;;456:1;473:11;398:93::o;1212:48:0:-;;;;;;;;;;;;;;;:::o;4127:106::-;-1:-1:-1;;;;;4209:17:0;4186:4;4209:17;;;:8;:17;;;;;;-1:-1:-1;;;;;4209:17:0;;4127:106::o;8080:1185::-;8159:6;8199:12;8185:11;:26;8177:77;;;;-1:-1:-1;;;8177:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8287:23:0;;8265:19;8287:23;;;:14;:23;;;;;;;;8324:17;8320:56;;8364:1;8357:8;;;;;8320:56;-1:-1:-1;;;;;8433:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;8454:16:0;;8433:38;;;;;;;;;:48;;:63;-1:-1:-1;8429:145:0;;-1:-1:-1;;;;;8519:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;8540:16:0;;;;8519:38;;;;;;;;:44;-1:-1:-1;;;8519:44:0;;-1:-1:-1;;;;;8519:44:0;;-1:-1:-1;8512:51:0;;8429:145;-1:-1:-1;;;;;8632:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;8628:86:0;;;8702:1;8695:8;;;;;8628:86;8724:12;-1:-1:-1;;8765:16:0;;8791:418;8806:5;8798:13;;:5;:13;;;8791:418;;;8869:1;8852:13;;;8851:19;;;8843:27;;8911:20;;:::i;:::-;-1:-1:-1;;;;;;8934:20:0;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;8911:51;;;;;;;;;;;;;;;-1:-1:-1;;;8911:51:0;;;-1:-1:-1;;;;;8911:51:0;;;;;;;;;8980:27;;8976:223;;;9034:8;;;;-1:-1:-1;9027:15:0;;-1:-1:-1;;;;9027:15:0;8976:223;9067:12;;:26;;;-1:-1:-1;9063:136:0;;;9121:6;9113:14;;9063:136;;;9183:1;9174:6;:10;9166:18;;9063:136;8791:418;;;;;-1:-1:-1;;;;;;9225:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;-1:-1:-1;;;;;;;;9225:33:0;;;;;-1:-1:-1;;8080:1185:0;;;;:::o;1754:38::-;;;;;;;;;;;;;:::o;47:20:1:-;;;-1:-1:-1;;;;;47:20:1;;:::o;239:37:0:-;;;;;;;;;;;;;;-1:-1:-1;;;239:37:0;;;;:::o;4489:243::-;4564:4;246:8:2;;-1:-1:-1;;;246:8:2;;;;:13;238:41;;;;;-1:-1:-1;;;238:41:2;;;;;;;;;;;;-1:-1:-1;;;238:41:2;;;;;;;;;;;;;;;4580:13:0;4596:58;4603:9;4596:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;4580:74;;4664:40;4680:10;4692:3;4697:6;4664:15;:40::i;:::-;-1:-1:-1;4721:4:0;;4489:243;-1:-1:-1;;;4489:243:0:o;7439:219::-;-1:-1:-1;;;;;7544:23:0;;7504:6;7544:23;;;:14;:23;;;;;;;;7584:16;:67;;7650:1;7584:67;;;-1:-1:-1;;;;;7603:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;7624:16:0;;7603:38;;;;;;;;;:44;-1:-1:-1;;;7603:44:0;;-1:-1:-1;;;;;7603:44:0;7584:67;7577:74;7439:219;-1:-1:-1;;;7439:219:0:o;6436:809::-;246:8:2;;-1:-1:-1;;;246:8:2;;;;:13;238:41;;;;;-1:-1:-1;;;238:41:2;;;;;;;;;;;;-1:-1:-1;;;238:41:2;;;;;;;;;;;;;;;6561:23:0;1380:80;;;;;;;;;;;;;;;;;;;6654:4;;;;;;;;;-1:-1:-1;;;6654:4:0;;;;;;;;1380:80;-1:-1:-1;6638:22:0;6662:12;:10;:12::i;:::-;6684:4;6610:80;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6610:80:0;-1:-1:-1;;;;;6610:80:0;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6610:80:0;;;6587:113;;;;;;6561:139;;6710:18;1605:71;;;;;;;;;;;;;;;;;;;6741:57;;;;;;;;-1:-1:-1;;;;;6741:57:0;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6741:57:0;;;;;6731:68;;;;;;-1:-1:-1;;;6836:57:0;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6836:57:0;;;;;;6826:68;;;;;;;;;-1:-1:-1;6924:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6731:68;;-1:-1:-1;6826:68:0;;-1:-1:-1;;;6924:26:0;;;;;;;6741:57;-1:-1:-1;;6924:26:0;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;6924:26:0;;-1:-1:-1;;6924:26:0;;;-1:-1:-1;;;;;;;6968:23:0;;6960:73;;;;-1:-1:-1;;;6960:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7060:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;7051:28;;7043:74;;;;-1:-1:-1;;;7043:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7142:6;7135:3;:13;;7127:63;;;;-1:-1:-1;;;7127:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7207:31;7217:9;7228;7207;:31::i;:::-;7200:38;;;;289:1:2;6436:809:0;;;;;;:::o;3006:134::-;-1:-1:-1;;;;;3105:19:0;;;3082:4;3105:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;-1:-1:-1;;;;;3105:28:0;;3006:134::o;1551:125::-;1605:71;;;;;;;;;;;;;;;;;;1551:125;:::o;1078:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1078:68:0;;-1:-1:-1;;;;;1078:68:0;;:::o;315:147:1:-;266:5;;-1:-1:-1;;;;;266:5:1;252:10;:19;244:47;;;;;-1:-1:-1;;;244:47:1;;;;;;;;;;;;-1:-1:-1;;;244:47:1;;;;;;;;;;;;;;;387:5;:16;;-1:-1:-1;;;;;;387:16:1;-1:-1:-1;;;;;387:16:1;;;;;;;;;418:37;;387:16;;439:5;;;418:37;;387:5;418:37;315:147;:::o;11983:160:0:-;12058:6;12097:12;-1:-1:-1;;;12084:11:0;;12076:34;;;;-1:-1:-1;;;12076:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12076:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12134:1:0;;11983:160;-1:-1:-1;;11983:160:0:o;12339:162::-;12425:6;12456:1;-1:-1:-1;;;;;12451:6:0;:1;-1:-1:-1;;;;;12451:6:0;;;12459:12;12443:29;;;;;-1:-1:-1;;;12443:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;12443:29:0;-1:-1:-1;;;12489:5:0;;;12339:162::o;9644:601::-;-1:-1:-1;;;;;9737:17:0;;9729:89;;;;-1:-1:-1;;;9729:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9836:17:0;;9828:87;;;;-1:-1:-1;;;9828:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9948:13:0;;;;;;:8;:13;;;;;;;;;;9942:85;;;;;;;;;;;;;;-1:-1:-1;;;;;9948:13:0;;;;9963:6;;9942:85;;;;;;;:5;:85::i;:::-;-1:-1:-1;;;;;9926:13:0;;;;;;;:8;:13;;;;;;;;:101;;-1:-1:-1;;;;;;9926:101:0;-1:-1:-1;;;;;9926:101:0;;;;;;10059:13;;;;;;;;;;10053:79;;;;;;;;;;;;;;10059:13;;;;;10074:6;;10053:79;;;;;;;;:5;:79::i;:::-;-1:-1:-1;;;;;10037:13:0;;;;;;;:8;:13;;;;;;;;;:95;;-1:-1:-1;;;;;;10037:95:0;-1:-1:-1;;;;;10037:95:0;;;;;;10147:26;;;;;;;;;10037:13;;10147:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;10199:14:0;;;;;;;:9;:14;;;;;;;10215;;;;;;;;10184:54;;10199:14;;;;10215;10231:6;10184:14;:54::i;:::-;9644:601;;;:::o;9271:367::-;-1:-1:-1;;;;;9373:20:0;;;9347:23;9373:20;;;:9;:20;;;;;;;;;;9429:8;:19;;;;;;9458:20;;;;:32;;;-1:-1:-1;;;;;;9458:32:0;;;;;;;9506:54;;9373:20;;;;;-1:-1:-1;;;;;9429:19:0;;;;9458:32;;9373:20;;;9506:54;;9347:23;9506:54;9571:60;9586:15;9603:9;9614:16;9571:14;:60::i;:::-;9271:367;;;;:::o;12507:169::-;12627:9;12507:169;:::o;12149:184::-;12235:6;12264:5;;;12295:12;-1:-1:-1;;;;;12287:6:0;;;;;;;;12279:29;;;;-1:-1:-1;;;12279:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;12279:29:0;-1:-1:-1;12325:1:0;12149:184;-1:-1:-1;;;;12149:184:0:o;10251:921::-;10355:6;-1:-1:-1;;;;;10345:16:0;:6;-1:-1:-1;;;;;10345:16:0;;;:30;;;;;10374:1;10365:6;-1:-1:-1;;;;;10365:10:0;;10345:30;10341:825;;;-1:-1:-1;;;;;10395:20:0;;;10391:376;;-1:-1:-1;;;;;10454:22:0;;10435:16;10454:22;;;:14;:22;;;;;;;;;10513:13;:60;;10572:1;10513:60;;;-1:-1:-1;;;;;10529:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;10549:13:0;;10529:34;;;;;;;;;:40;-1:-1:-1;;;10529:40:0;;-1:-1:-1;;;;;10529:40:0;10513:60;10494:79;;10591:16;10610:67;10616:9;10627:6;10610:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;10591:86;;10695:57;10712:6;10720:9;10731;10742;10695:16;:57::i;:::-;10391:376;;;;-1:-1:-1;;;;;10785:20:0;;;10781:375;;-1:-1:-1;;;;;10844:22:0;;10825:16;10844:22;;;:14;:22;;;;;;;;;10903:13;:60;;10962:1;10903:60;;;-1:-1:-1;;;;;10919:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;10939:13:0;;10919:34;;;;;;;;;:40;-1:-1:-1;;;10919:40:0;;-1:-1:-1;;;;;10919:40:0;10903:60;10884:79;;10981:16;11000:66;11006:9;11017:6;11000:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;10981:85;;11084:57;11101:6;11109:9;11120;11131;11178:633;11297:18;11318:75;11325:12;11318:75;;;;;;;;;;;;;;;;;:6;:75::i;:::-;11297:96;;11423:1;11408:12;:16;;;:85;;;;-1:-1:-1;;;;;;11428:22:0;;;;;;:11;:22;;;;;;;;:65;-1:-1:-1;;11451:16:0;;11428:40;;;;;;;;;:50;:65;;;:50;;:65;11408:85;11404:334;;;-1:-1:-1;;;;;11509:22:0;;;;;;:11;:22;;;;;;;;-1:-1:-1;;11532:16:0;;11509:40;;;;;;;;;:57;;-1:-1:-1;;11509:57:0;-1:-1:-1;;;;;;;;11509:57:0;;;;;;11404:334;;;11636:33;;;;;;;;;;;;;;-1:-1:-1;;;;;11636:33:0;;;;;;;;;;-1:-1:-1;;;;;11597:22:0;;-1:-1:-1;11597:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;-1:-1:-1;;;11597:72:0;-1:-1:-1;;11597:72:0;;;-1:-1:-1;;11597:72:0;;;;;;;;;;;;;;;11683:25;;;:14;:25;;;;;;;:44;;11597:72;11711:16;;11683:44;;;;;;;;;;;;;11404:334;11753:51;;;-1:-1:-1;;;;;11753:51:0;;;;;;;;;;;;;-1:-1:-1;;;;;11753:51:0;;;;;;;;;;;11178:633;;;;;:::o;11817:160::-;11892:6;11931:12;-1:-1:-1;;;11918:11:0;;11910:34;;;;-1:-1:-1;;;11910:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;63:12615:0;;;;;;;;;;-1:-1:-1;63:12615:0;;;;;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"1443200","executionCost":"infinite","totalCost":"infinite"},"external":{"DELEGATION_TYPEHASH()":"infinite","DOMAIN_TYPEHASH()":"infinite","allowance(address,address)":"1334","approve(address,uint256)":"infinite","balanceOf(address)":"1183","checkpoints(address,uint32)":"1422","decimals()":"230","delegate(address)":"infinite","delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":"infinite","delegates(address)":"1208","freeze()":"22674","getCurrentVotes(address)":"2233","getPriorVotes(address,uint256)":"infinite","name()":"infinite","nonces(address)":"1191","numCheckpoints(address)":"1272","owner()":"1126","symbol()":"infinite","totalSupply()":"266","transfer(address,uint256)":"infinite","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"23574","unfreeze()":"22684"},"internal":{"_delegate(address,address)":"infinite","_moveDelegates(address,address,uint96)":"infinite","_transferTokens(address,address,uint96)":"infinite","_writeCheckpoint(address,uint32,uint96,uint96)":"infinite","add96(uint96,uint96,string memory)":"infinite","getChainId()":"14","safe32(uint256,string memory)":"infinite","safe96(uint256,string memory)":"infinite","sub96(uint96,uint96,string memory)":"infinite"}},"methodIdentifiers":{"DELEGATION_TYPEHASH()":"e7a324dc","DOMAIN_TYPEHASH()":"20606b70","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","checkpoints(address,uint32)":"f1127ed8","decimals()":"313ce567","delegate(address)":"5c19a95c","delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":"c3cda520","delegates(address)":"587cde1e","freeze()":"62a5af3b","getCurrentVotes(address)":"b4b5ea57","getPriorVotes(address,uint256)":"782d6fe1","name()":"06fdde03","nonces(address)":"7ecebe00","numCheckpoints(address)":"6fcfff45","owner()":"8da5cb5b","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","unfreeze()":"6a28f000"}},"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\"}],\"name\":\"DelegateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"DelegateVotesChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Freezed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UnFreezed\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DELEGATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rawAmount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"checkpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"fromBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"votes\",\"type\":\"uint96\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"delegate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"delegateBySig\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"freeze\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getCurrentVotes\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getPriorVotes\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"numCheckpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rawAmount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rawAmount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unfreeze\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"params\":{\"account\":\"The address of the account holding the funds\",\"spender\":\"The address of the account spending the funds\"},\"return\":\"The number of tokens approved\"},\"approve(address,uint256)\":{\"details\":\"This will overwrite the approval amount for `spender`\",\"params\":{\"rawAmount\":\"The number of tokens that are approved (2^256-1 means infinite)\",\"spender\":\"The address of the account which may transfer tokens\"},\"return\":\"Whether or not the approval succeeded\"},\"balanceOf(address)\":{\"params\":{\"account\":\"The address of the account to get the balance of\"},\"return\":\"The number of tokens held\"},\"constructor\":{\"params\":{\"account\":\"The initial account to grant all the tokens\"}},\"delegate(address)\":{\"params\":{\"delegatee\":\"The address to delegate votes to\"}},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"delegatee\":\"The address to delegate votes to\",\"expiry\":\"The time at which to expire the signature\",\"nonce\":\"The contract state required to match the signature\",\"r\":\"Half of the ECDSA signature pair\",\"s\":\"Half of the ECDSA signature pair\",\"v\":\"The recovery byte of the signature\"}},\"getCurrentVotes(address)\":{\"params\":{\"account\":\"The address to get votes balance\"},\"return\":\"The number of current votes for `account`\"},\"getPriorVotes(address,uint256)\":{\"details\":\"Block number must be a finalized block or else this function will revert to prevent misinformation.\",\"params\":{\"account\":\"The address of the account to check\",\"blockNumber\":\"The block number to get the vote balance at\"},\"return\":\"The number of votes the account had as of the given block\"},\"transfer(address,uint256)\":{\"params\":{\"dst\":\"The address of the destination account\",\"rawAmount\":\"The number of tokens to transfer\"},\"return\":\"Whether or not the transfer succeeded\"},\"transferFrom(address,address,uint256)\":{\"params\":{\"dst\":\"The address of the destination account\",\"rawAmount\":\"The number of tokens to transfer\",\"src\":\"The address of the source account\"},\"return\":\"Whether or not the transfer succeeded\"}}},\"userdoc\":{\"methods\":{\"allowance(address,address)\":{\"notice\":\"Get the number of tokens `spender` is approved to spend on behalf of `account`\"},\"approve(address,uint256)\":{\"notice\":\"Approve `spender` to transfer up to `amount` from `src`\"},\"balanceOf(address)\":{\"notice\":\"Get the number of tokens held by the `account`\"},\"constructor\":\"Construct a new XVS token\",\"delegate(address)\":{\"notice\":\"Delegate votes from `msg.sender` to `delegatee`\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Delegates votes from signatory to `delegatee`\"},\"getCurrentVotes(address)\":{\"notice\":\"Gets the current votes balance for `account`\"},\"getPriorVotes(address,uint256)\":{\"notice\":\"Determine the prior number of votes for an account as of a block number\"},\"transfer(address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `msg.sender` to `dst`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfer `amount` tokens from `src` to `dst`\"}}}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol\":\"XVS\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol\":{\"content\":\"pragma solidity ^0.5.16;\\n\\nimport \\\"../../Utils/Tokenlock.sol\\\";\\n\\ncontract XVS is Tokenlock {\\n    /// @notice BEP-20 token name for this token\\n    string public constant name = \\\"Venus\\\";\\n\\n    /// @notice BEP-20 token symbol for this token\\n    string public constant symbol = \\\"XVS\\\";\\n\\n    /// @notice BEP-20 token decimals for this token\\n    uint8 public constant decimals = 18;\\n\\n    /// @notice Total number of tokens in circulation\\n    uint public constant totalSupply = 30000000e18; // 30 million XVS\\n\\n    /// @notice Allowance amounts on behalf of others\\n    mapping(address => mapping(address => uint96)) internal allowances;\\n\\n    /// @notice Official record of token balances for each account\\n    mapping(address => uint96) internal balances;\\n\\n    /// @notice A record of each accounts delegate\\n    mapping(address => address) public delegates;\\n\\n    /// @notice A checkpoint for marking number of votes from a given block\\n    struct Checkpoint {\\n        uint32 fromBlock;\\n        uint96 votes;\\n    }\\n\\n    /// @notice A record of votes checkpoints for each account, by index\\n    mapping(address => mapping(uint32 => Checkpoint)) public checkpoints;\\n\\n    /// @notice The number of checkpoints for each account\\n    mapping(address => uint32) public numCheckpoints;\\n\\n    /// @notice The EIP-712 typehash for the contract's domain\\n    bytes32 public constant DOMAIN_TYPEHASH =\\n        keccak256(\\\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\\\");\\n\\n    /// @notice The EIP-712 typehash for the delegation struct used by the contract\\n    bytes32 public constant DELEGATION_TYPEHASH =\\n        keccak256(\\\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\\\");\\n\\n    /// @notice A record of states for signing / validating signatures\\n    mapping(address => uint) public nonces;\\n\\n    /// @notice An event thats emitted when an account changes its delegate\\n    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);\\n\\n    /// @notice An event thats emitted when a delegate account's vote balance changes\\n    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);\\n\\n    /// @notice The standard BEP-20 transfer event\\n    event Transfer(address indexed from, address indexed to, uint256 amount);\\n\\n    /// @notice The standard BEP-20 approval event\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n\\n    /**\\n     * @notice Construct a new XVS token\\n     * @param account The initial account to grant all the tokens\\n     */\\n    constructor(address account) public {\\n        balances[account] = uint96(totalSupply);\\n        emit Transfer(address(0), account, totalSupply);\\n    }\\n\\n    /**\\n     * @notice Get the number of tokens `spender` is approved to spend on behalf of `account`\\n     * @param account The address of the account holding the funds\\n     * @param spender The address of the account spending the funds\\n     * @return The number of tokens approved\\n     */\\n    function allowance(address account, address spender) external view returns (uint) {\\n        return allowances[account][spender];\\n    }\\n\\n    /**\\n     * @notice Approve `spender` to transfer up to `amount` from `src`\\n     * @dev This will overwrite the approval amount for `spender`\\n     * @param spender The address of the account which may transfer tokens\\n     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)\\n     * @return Whether or not the approval succeeded\\n     */\\n    function approve(address spender, uint rawAmount) external validLock returns (bool) {\\n        uint96 amount;\\n        if (rawAmount == uint(-1)) {\\n            amount = uint96(-1);\\n        } else {\\n            amount = safe96(rawAmount, \\\"XVS::approve: amount exceeds 96 bits\\\");\\n        }\\n\\n        allowances[msg.sender][spender] = amount;\\n\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @notice Get the number of tokens held by the `account`\\n     * @param account The address of the account to get the balance of\\n     * @return The number of tokens held\\n     */\\n    function balanceOf(address account) external view returns (uint) {\\n        return balances[account];\\n    }\\n\\n    /**\\n     * @notice Transfer `amount` tokens from `msg.sender` to `dst`\\n     * @param dst The address of the destination account\\n     * @param rawAmount The number of tokens to transfer\\n     * @return Whether or not the transfer succeeded\\n     */\\n    function transfer(address dst, uint rawAmount) external validLock returns (bool) {\\n        uint96 amount = safe96(rawAmount, \\\"XVS::transfer: amount exceeds 96 bits\\\");\\n        _transferTokens(msg.sender, dst, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @notice Transfer `amount` tokens from `src` to `dst`\\n     * @param src The address of the source account\\n     * @param dst The address of the destination account\\n     * @param rawAmount The number of tokens to transfer\\n     * @return Whether or not the transfer succeeded\\n     */\\n    function transferFrom(address src, address dst, uint rawAmount) external validLock returns (bool) {\\n        address spender = msg.sender;\\n        uint96 spenderAllowance = allowances[src][spender];\\n        uint96 amount = safe96(rawAmount, \\\"XVS::approve: amount exceeds 96 bits\\\");\\n\\n        if (spender != src && spenderAllowance != uint96(-1)) {\\n            uint96 newAllowance = sub96(\\n                spenderAllowance,\\n                amount,\\n                \\\"XVS::transferFrom: transfer amount exceeds spender allowance\\\"\\n            );\\n            allowances[src][spender] = newAllowance;\\n\\n            emit Approval(src, spender, newAllowance);\\n        }\\n\\n        _transferTokens(src, dst, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @notice Delegate votes from `msg.sender` to `delegatee`\\n     * @param delegatee The address to delegate votes to\\n     */\\n    function delegate(address delegatee) public validLock {\\n        return _delegate(msg.sender, delegatee);\\n    }\\n\\n    /**\\n     * @notice Delegates votes from signatory to `delegatee`\\n     * @param delegatee The address to delegate votes to\\n     * @param nonce The contract state required to match the signature\\n     * @param expiry The time at which to expire the signature\\n     * @param v The recovery byte of the signature\\n     * @param r Half of the ECDSA signature pair\\n     * @param s Half of the ECDSA signature pair\\n     */\\n    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public validLock {\\n        bytes32 domainSeparator = keccak256(\\n            abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))\\n        );\\n        bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));\\n        bytes32 digest = keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", domainSeparator, structHash));\\n        address signatory = ecrecover(digest, v, r, s);\\n        require(signatory != address(0), \\\"XVS::delegateBySig: invalid signature\\\");\\n        require(nonce == nonces[signatory]++, \\\"XVS::delegateBySig: invalid nonce\\\");\\n        require(now <= expiry, \\\"XVS::delegateBySig: signature expired\\\");\\n        return _delegate(signatory, delegatee);\\n    }\\n\\n    /**\\n     * @notice Gets the current votes balance for `account`\\n     * @param account The address to get votes balance\\n     * @return The number of current votes for `account`\\n     */\\n    function getCurrentVotes(address account) external view returns (uint96) {\\n        uint32 nCheckpoints = numCheckpoints[account];\\n        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;\\n    }\\n\\n    /**\\n     * @notice Determine the prior number of votes for an account as of a block number\\n     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.\\n     * @param account The address of the account to check\\n     * @param blockNumber The block number to get the vote balance at\\n     * @return The number of votes the account had as of the given block\\n     */\\n    function getPriorVotes(address account, uint blockNumber) public view returns (uint96) {\\n        require(blockNumber < block.number, \\\"XVS::getPriorVotes: not yet determined\\\");\\n\\n        uint32 nCheckpoints = numCheckpoints[account];\\n        if (nCheckpoints == 0) {\\n            return 0;\\n        }\\n\\n        // First check most recent balance\\n        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {\\n            return checkpoints[account][nCheckpoints - 1].votes;\\n        }\\n\\n        // Next check implicit zero balance\\n        if (checkpoints[account][0].fromBlock > blockNumber) {\\n            return 0;\\n        }\\n\\n        uint32 lower = 0;\\n        uint32 upper = nCheckpoints - 1;\\n        while (upper > lower) {\\n            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow\\n            Checkpoint memory cp = checkpoints[account][center];\\n            if (cp.fromBlock == blockNumber) {\\n                return cp.votes;\\n            } else if (cp.fromBlock < blockNumber) {\\n                lower = center;\\n            } else {\\n                upper = center - 1;\\n            }\\n        }\\n        return checkpoints[account][lower].votes;\\n    }\\n\\n    function _delegate(address delegator, address delegatee) internal {\\n        address currentDelegate = delegates[delegator];\\n        uint96 delegatorBalance = balances[delegator];\\n        delegates[delegator] = delegatee;\\n\\n        emit DelegateChanged(delegator, currentDelegate, delegatee);\\n\\n        _moveDelegates(currentDelegate, delegatee, delegatorBalance);\\n    }\\n\\n    function _transferTokens(address src, address dst, uint96 amount) internal {\\n        require(src != address(0), \\\"XVS::_transferTokens: cannot transfer from the zero address\\\");\\n        require(dst != address(0), \\\"XVS::_transferTokens: cannot transfer to the zero address\\\");\\n\\n        balances[src] = sub96(balances[src], amount, \\\"XVS::_transferTokens: transfer amount exceeds balance\\\");\\n        balances[dst] = add96(balances[dst], amount, \\\"XVS::_transferTokens: transfer amount overflows\\\");\\n        emit Transfer(src, dst, amount);\\n\\n        _moveDelegates(delegates[src], delegates[dst], amount);\\n    }\\n\\n    function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal {\\n        if (srcRep != dstRep && amount > 0) {\\n            if (srcRep != address(0)) {\\n                uint32 srcRepNum = numCheckpoints[srcRep];\\n                uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;\\n                uint96 srcRepNew = sub96(srcRepOld, amount, \\\"XVS::_moveVotes: vote amount underflows\\\");\\n                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);\\n            }\\n\\n            if (dstRep != address(0)) {\\n                uint32 dstRepNum = numCheckpoints[dstRep];\\n                uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;\\n                uint96 dstRepNew = add96(dstRepOld, amount, \\\"XVS::_moveVotes: vote amount overflows\\\");\\n                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);\\n            }\\n        }\\n    }\\n\\n    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal {\\n        uint32 blockNumber = safe32(block.number, \\\"XVS::_writeCheckpoint: block number exceeds 32 bits\\\");\\n\\n        if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {\\n            checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;\\n        } else {\\n            checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);\\n            numCheckpoints[delegatee] = nCheckpoints + 1;\\n        }\\n\\n        emit DelegateVotesChanged(delegatee, oldVotes, newVotes);\\n    }\\n\\n    function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {\\n        require(n < 2 ** 32, errorMessage);\\n        return uint32(n);\\n    }\\n\\n    function safe96(uint n, string memory errorMessage) internal pure returns (uint96) {\\n        require(n < 2 ** 96, errorMessage);\\n        return uint96(n);\\n    }\\n\\n    function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {\\n        uint96 c = a + b;\\n        require(c >= a, errorMessage);\\n        return c;\\n    }\\n\\n    function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {\\n        require(b <= a, errorMessage);\\n        return a - b;\\n    }\\n\\n    function getChainId() internal pure returns (uint) {\\n        uint256 chainId;\\n        assembly {\\n            chainId := chainid()\\n        }\\n        return chainId;\\n    }\\n}\\n\",\"keccak256\":\"0x3f49a827ff4b36c07ad573116306a303f6531bd78fc1aa9494be58156e1250ee\"},\"@venusprotocol/venus-protocol/contracts/Utils/Owned.sol\":{\"content\":\"pragma solidity ^0.5.16;\\n\\ncontract Owned {\\n    address public owner;\\n\\n    event OwnershipTransferred(address indexed _from, address indexed _to);\\n\\n    constructor() public {\\n        owner = msg.sender;\\n    }\\n\\n    modifier onlyOwner() {\\n        require(msg.sender == owner, \\\"Should be owner\\\");\\n        _;\\n    }\\n\\n    function transferOwnership(address newOwner) public onlyOwner {\\n        owner = newOwner;\\n        emit OwnershipTransferred(owner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x1564e2130341a86ccc19f26e017eb4ccc6bb090200985f3cd74b72dc8de1daa5\"},\"@venusprotocol/venus-protocol/contracts/Utils/Tokenlock.sol\":{\"content\":\"pragma solidity ^0.5.16;\\n\\nimport \\\"./Owned.sol\\\";\\n\\ncontract Tokenlock is Owned {\\n    /// @notice Indicates if token is locked\\n    uint8 internal isLocked = 0;\\n\\n    event Freezed();\\n    event UnFreezed();\\n\\n    modifier validLock() {\\n        require(isLocked == 0, \\\"Token is locked\\\");\\n        _;\\n    }\\n\\n    function freeze() public onlyOwner {\\n        isLocked = 1;\\n\\n        emit Freezed();\\n    }\\n\\n    function unfreeze() public onlyOwner {\\n        isLocked = 0;\\n\\n        emit UnFreezed();\\n    }\\n}\\n\",\"keccak256\":\"0x2fa851e9baece8d2ed1a985688d3f9ecfe44f6975728d809683594ebf00f6e47\"}},\"version\":1}","storageLayout":{"storage":[{"astId":973,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol:XVS","label":"owner","offset":0,"slot":"0","type":"t_address"},{"astId":1026,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol:XVS","label":"isLocked","offset":20,"slot":"0","type":"t_uint8"},{"astId":22,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol:XVS","label":"allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint96))"},{"astId":26,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol:XVS","label":"balances","offset":0,"slot":"2","type":"t_mapping(t_address,t_uint96)"},{"astId":30,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol:XVS","label":"delegates","offset":0,"slot":"3","type":"t_mapping(t_address,t_address)"},{"astId":41,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol:XVS","label":"checkpoints","offset":0,"slot":"4","type":"t_mapping(t_address,t_mapping(t_uint32,t_struct(Checkpoint)35_storage))"},{"astId":45,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol:XVS","label":"numCheckpoints","offset":0,"slot":"5","type":"t_mapping(t_address,t_uint32)"},{"astId":59,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol:XVS","label":"nonces","offset":0,"slot":"6","type":"t_mapping(t_address,t_uint256)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_address)":{"encoding":"mapping","key":"t_address","label":"mapping(address => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_address,t_mapping(t_address,t_uint96))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint96))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint96)"},"t_mapping(t_address,t_mapping(t_uint32,t_struct(Checkpoint)35_storage))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint32 => struct XVS.Checkpoint))","numberOfBytes":"32","value":"t_mapping(t_uint32,t_struct(Checkpoint)35_storage)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_address,t_uint32)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint32)","numberOfBytes":"32","value":"t_uint32"},"t_mapping(t_address,t_uint96)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint96)","numberOfBytes":"32","value":"t_uint96"},"t_mapping(t_uint32,t_struct(Checkpoint)35_storage)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => struct XVS.Checkpoint)","numberOfBytes":"32","value":"t_struct(Checkpoint)35_storage"},"t_struct(Checkpoint)35_storage":{"encoding":"inplace","label":"struct XVS.Checkpoint","members":[{"astId":32,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol:XVS","label":"fromBlock","offset":0,"slot":"0","type":"t_uint32"},{"astId":34,"contract":"@venusprotocol/venus-protocol/contracts/Tokens/XVS/XVS.sol:XVS","label":"votes","offset":4,"slot":"0","type":"t_uint96"}],"numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"},"t_uint96":{"encoding":"inplace","label":"uint96","numberOfBytes":"12"}}},"userdoc":{"methods":{"allowance(address,address)":{"notice":"Get the number of tokens `spender` is approved to spend on behalf of `account`"},"approve(address,uint256)":{"notice":"Approve `spender` to transfer up to `amount` from `src`"},"balanceOf(address)":{"notice":"Get the number of tokens held by the `account`"},"constructor":"Construct a new XVS token","delegate(address)":{"notice":"Delegate votes from `msg.sender` to `delegatee`"},"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)":{"notice":"Delegates votes from signatory to `delegatee`"},"getCurrentVotes(address)":{"notice":"Gets the current votes balance for `account`"},"getPriorVotes(address,uint256)":{"notice":"Determine the prior number of votes for an account as of a block number"},"transfer(address,uint256)":{"notice":"Transfer `amount` tokens from `msg.sender` to `dst`"},"transferFrom(address,address,uint256)":{"notice":"Transfer `amount` tokens from `src` to `dst`"}}}}},"@venusprotocol/venus-protocol/contracts/Utils/Owned.sol":{"Owned":{"abi":[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"devdoc":{"methods":{}},"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600080546001600160a01b0319163317905561016a806100326000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80638da5cb5b1461003b578063f2fde38b1461005f575b600080fd5b610043610087565b604080516001600160a01b039092168252519081900360200190f35b6100856004803603602081101561007557600080fd5b50356001600160a01b0316610096565b005b6000546001600160a01b031681565b6000546001600160a01b031633146100e7576040805162461bcd60e51b815260206004820152600f60248201526e29b437bab6321031329037bbb732b960891b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35056fea265627a7a72315820769e0700fe48f70fa4ba07348fa103ed72cf6fea6eb670740e37b3aca594f6f964736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x16A DUP1 PUSH2 0x32 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x5F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x87 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x85 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x96 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x29B437BAB6321031329037BBB732B9 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH23 0x9E0700FE48F70FA4BA07348FA103ED72CF6FEA6EB67074 0xE CALLDATACOPY 0xB3 0xAC 0xA5 SWAP5 0xF6 0xF9 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ","sourceMap":"26:438:1:-;;;151:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;182:5:1;:18;;-1:-1:-1;;;;;;182:18:1;190:10;182:18;;;26:438;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c80638da5cb5b1461003b578063f2fde38b1461005f575b600080fd5b610043610087565b604080516001600160a01b039092168252519081900360200190f35b6100856004803603602081101561007557600080fd5b50356001600160a01b0316610096565b005b6000546001600160a01b031681565b6000546001600160a01b031633146100e7576040805162461bcd60e51b815260206004820152600f60248201526e29b437bab6321031329037bbb732b960891b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35056fea265627a7a72315820769e0700fe48f70fa4ba07348fa103ed72cf6fea6eb670740e37b3aca594f6f964736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x5F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x87 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x85 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x96 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xE7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x29B437BAB6321031329037BBB732B9 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH23 0x9E0700FE48F70FA4BA07348FA103ED72CF6FEA6EB67074 0xE CALLDATACOPY 0xB3 0xAC 0xA5 SWAP5 0xF6 0xF9 PUSH5 0x736F6C6343 STOP SDIV LT STOP ORIGIN ","sourceMap":"26:438:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26:438:1;;;;;;;;;;;;;;;;;;;;;;;;47:20;;;:::i;:::-;;;;-1:-1:-1;;;;;47:20:1;;;;;;;;;;;;;;315:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;315:147:1;-1:-1:-1;;;;;315:147:1;;:::i;:::-;;47:20;;;-1:-1:-1;;;;;47:20:1;;:::o;315:147::-;266:5;;-1:-1:-1;;;;;266:5:1;252:10;:19;244:47;;;;;-1:-1:-1;;;244:47:1;;;;;;;;;;;;-1:-1:-1;;;244:47:1;;;;;;;;;;;;;;;387:5;:16;;-1:-1:-1;;;;;;387:16:1;-1:-1:-1;;;;;387:16:1;;;;;;;;;418:37;;387:16;;439:5;;;418:37;;387:5;418:37;315:147;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"72400","executionCost":"20958","totalCost":"93358"},"external":{"owner()":"1015","transferOwnership(address)":"23442"}},"methodIdentifiers":{"owner()":"8da5cb5b","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/Utils/Owned.sol\":\"Owned\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Utils/Owned.sol\":{\"content\":\"pragma solidity ^0.5.16;\\n\\ncontract Owned {\\n    address public owner;\\n\\n    event OwnershipTransferred(address indexed _from, address indexed _to);\\n\\n    constructor() public {\\n        owner = msg.sender;\\n    }\\n\\n    modifier onlyOwner() {\\n        require(msg.sender == owner, \\\"Should be owner\\\");\\n        _;\\n    }\\n\\n    function transferOwnership(address newOwner) public onlyOwner {\\n        owner = newOwner;\\n        emit OwnershipTransferred(owner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x1564e2130341a86ccc19f26e017eb4ccc6bb090200985f3cd74b72dc8de1daa5\"}},\"version\":1}","storageLayout":{"storage":[{"astId":973,"contract":"@venusprotocol/venus-protocol/contracts/Utils/Owned.sol:Owned","label":"owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"methods":{}}}},"@venusprotocol/venus-protocol/contracts/Utils/Tokenlock.sol":{"Tokenlock":{"abi":[{"anonymous":false,"inputs":[],"name":"Freezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"UnFreezed","type":"event"},{"constant":false,"inputs":[],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unfreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"devdoc":{"methods":{}},"evm":{"bytecode":{"linkReferences":{},"object":"6080604052600080546001600160a81b031916331790556102a4806100256000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806362a5af3b146100515780636a28f0001461005b5780638da5cb5b14610063578063f2fde38b14610087575b600080fd5b6100596100ad565b005b61005961013a565b61006b6101c1565b604080516001600160a01b039092168252519081900360200190f35b6100596004803603602081101561009d57600080fd5b50356001600160a01b03166101d0565b6000546001600160a01b031633146100fe576040805162461bcd60e51b815260206004820152600f60248201526e29b437bab6321031329037bbb732b960891b604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b1781556040517f962a6139ca22015759d0878e2cf5d770dcb8152e1d5ba08e46a969dd9b154a9c9190a1565b6000546001600160a01b0316331461018b576040805162461bcd60e51b815260206004820152600f60248201526e29b437bab6321031329037bbb732b960891b604482015290519081900360640190fd5b6000805460ff60a01b191681556040517ff0daac2271a735ea786b9adf80dfcbd6a3cbd52f3cab0a78337114692d5faf5d9190a1565b6000546001600160a01b031681565b6000546001600160a01b03163314610221576040805162461bcd60e51b815260206004820152600f60248201526e29b437bab6321031329037bbb732b960891b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35056fea265627a7a723158207359e83ecb4aa0b7c628d9b08c6a97bf0c604547d85a4e3ad8d1c813cd5b680064736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x2A4 DUP1 PUSH2 0x25 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x62A5AF3B EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x6A28F000 EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x63 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x87 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xAD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x59 PUSH2 0x13A JUMP JUMPDEST PUSH2 0x6B PUSH2 0x1C1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D0 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xFE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x29B437BAB6321031329037BBB732B9 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x962A6139CA22015759D0878E2CF5D770DCB8152E1D5BA08E46A969DD9B154A9C SWAP2 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x18B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x29B437BAB6321031329037BBB732B9 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xF0DAAC2271A735EA786B9ADF80DFCBD6A3CBD52F3CAB0A78337114692D5FAF5D SWAP2 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x221 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x29B437BAB6321031329037BBB732B9 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH20 0x59E83ECB4AA0B7C628D9B08C6A97BF0C604547D8 GAS 0x4E GASPRICE 0xD8 0xD1 0xC8 SGT 0xCD JUMPDEST PUSH9 0x64736F6C63430005 LT STOP ORIGIN ","sourceMap":"49:444:2:-;;;154:1;128:27;;-1:-1:-1;;;;;;182:18:1;190:10;182:18;;;49:444:2;;;;;;"},"deployedBytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061004c5760003560e01c806362a5af3b146100515780636a28f0001461005b5780638da5cb5b14610063578063f2fde38b14610087575b600080fd5b6100596100ad565b005b61005961013a565b61006b6101c1565b604080516001600160a01b039092168252519081900360200190f35b6100596004803603602081101561009d57600080fd5b50356001600160a01b03166101d0565b6000546001600160a01b031633146100fe576040805162461bcd60e51b815260206004820152600f60248201526e29b437bab6321031329037bbb732b960891b604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b1781556040517f962a6139ca22015759d0878e2cf5d770dcb8152e1d5ba08e46a969dd9b154a9c9190a1565b6000546001600160a01b0316331461018b576040805162461bcd60e51b815260206004820152600f60248201526e29b437bab6321031329037bbb732b960891b604482015290519081900360640190fd5b6000805460ff60a01b191681556040517ff0daac2271a735ea786b9adf80dfcbd6a3cbd52f3cab0a78337114692d5faf5d9190a1565b6000546001600160a01b031681565b6000546001600160a01b03163314610221576040805162461bcd60e51b815260206004820152600f60248201526e29b437bab6321031329037bbb732b960891b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35056fea265627a7a723158207359e83ecb4aa0b7c628d9b08c6a97bf0c604547d85a4e3ad8d1c813cd5b680064736f6c63430005100032","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x62A5AF3B EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x6A28F000 EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x63 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x87 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xAD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x59 PUSH2 0x13A JUMP JUMPDEST PUSH2 0x6B PUSH2 0x1C1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D0 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xFE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x29B437BAB6321031329037BBB732B9 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x962A6139CA22015759D0878E2CF5D770DCB8152E1D5BA08E46A969DD9B154A9C SWAP2 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x18B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x29B437BAB6321031329037BBB732B9 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xF0DAAC2271A735EA786B9ADF80DFCBD6A3CBD52F3CAB0A78337114692D5FAF5D SWAP2 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x221 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x29B437BAB6321031329037BBB732B9 PUSH1 0x89 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR DUP1 DUP5 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 SWAP2 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH20 0x59E83ECB4AA0B7C628D9B08C6A97BF0C604547D8 GAS 0x4E GASPRICE 0xD8 0xD1 0xC8 SGT 0xCD JUMPDEST PUSH9 0x64736F6C63430005 LT STOP ORIGIN ","sourceMap":"49:444:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;49:444:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;303:89;;;:::i;:::-;;398:93;;;:::i;47:20:1:-;;;:::i;:::-;;;;-1:-1:-1;;;;;47:20:1;;;;;;;;;;;;;;315:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;315:147:1;-1:-1:-1;;;;;315:147:1;;:::i;303:89:2:-;266:5:1;;-1:-1:-1;;;;;266:5:1;252:10;:19;244:47;;;;;-1:-1:-1;;;244:47:1;;;;;;;;;;;;-1:-1:-1;;;244:47:1;;;;;;;;;;;;;;;348:8:2;:12;;-1:-1:-1;;;;348:12:2;-1:-1:-1;;;348:12:2;;;376:9;;;;348:8;376:9;303:89::o;398:93::-;266:5:1;;-1:-1:-1;;;;;266:5:1;252:10;:19;244:47;;;;;-1:-1:-1;;;244:47:1;;;;;;;;;;;;-1:-1:-1;;;244:47:1;;;;;;;;;;;;;;;456:1:2;445:12;;-1:-1:-1;;;;445:12:2;;;473:11;;;;456:1;473:11;398:93::o;47:20:1:-;;;-1:-1:-1;;;;;47:20:1;;:::o;315:147::-;266:5;;-1:-1:-1;;;;;266:5:1;252:10;:19;244:47;;;;;-1:-1:-1;;;244:47:1;;;;;;;;;;;;-1:-1:-1;;;244:47:1;;;;;;;;;;;;;;;387:5;:16;;-1:-1:-1;;;;;;387:16:1;-1:-1:-1;;;;;387:16:1;;;;;;;;;418:37;;387:16;;439:5;;;418:37;;387:5;418:37;315:147;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"135200","executionCost":"20994","totalCost":"156194"},"external":{"freeze()":"22563","owner()":"1059","transferOwnership(address)":"23486","unfreeze()":"22573"}},"methodIdentifiers":{"freeze()":"62a5af3b","owner()":"8da5cb5b","transferOwnership(address)":"f2fde38b","unfreeze()":"6a28f000"}},"metadata":"{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[],\"name\":\"Freezed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UnFreezed\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[],\"name\":\"freeze\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unfreeze\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@venusprotocol/venus-protocol/contracts/Utils/Tokenlock.sol\":\"Tokenlock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@venusprotocol/venus-protocol/contracts/Utils/Owned.sol\":{\"content\":\"pragma solidity ^0.5.16;\\n\\ncontract Owned {\\n    address public owner;\\n\\n    event OwnershipTransferred(address indexed _from, address indexed _to);\\n\\n    constructor() public {\\n        owner = msg.sender;\\n    }\\n\\n    modifier onlyOwner() {\\n        require(msg.sender == owner, \\\"Should be owner\\\");\\n        _;\\n    }\\n\\n    function transferOwnership(address newOwner) public onlyOwner {\\n        owner = newOwner;\\n        emit OwnershipTransferred(owner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x1564e2130341a86ccc19f26e017eb4ccc6bb090200985f3cd74b72dc8de1daa5\"},\"@venusprotocol/venus-protocol/contracts/Utils/Tokenlock.sol\":{\"content\":\"pragma solidity ^0.5.16;\\n\\nimport \\\"./Owned.sol\\\";\\n\\ncontract Tokenlock is Owned {\\n    /// @notice Indicates if token is locked\\n    uint8 internal isLocked = 0;\\n\\n    event Freezed();\\n    event UnFreezed();\\n\\n    modifier validLock() {\\n        require(isLocked == 0, \\\"Token is locked\\\");\\n        _;\\n    }\\n\\n    function freeze() public onlyOwner {\\n        isLocked = 1;\\n\\n        emit Freezed();\\n    }\\n\\n    function unfreeze() public onlyOwner {\\n        isLocked = 0;\\n\\n        emit UnFreezed();\\n    }\\n}\\n\",\"keccak256\":\"0x2fa851e9baece8d2ed1a985688d3f9ecfe44f6975728d809683594ebf00f6e47\"}},\"version\":1}","storageLayout":{"storage":[{"astId":973,"contract":"@venusprotocol/venus-protocol/contracts/Utils/Tokenlock.sol:Tokenlock","label":"owner","offset":0,"slot":"0","type":"t_address"},{"astId":1026,"contract":"@venusprotocol/venus-protocol/contracts/Utils/Tokenlock.sol:Tokenlock","label":"isLocked","offset":20,"slot":"0","type":"t_uint8"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"methods":{}}}}}}}