{
  "address": "0xA7B401926A53b83E2E6094F0E0F1323bbC353C44",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_pair",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_bar",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_joe",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_chef",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "transactionHash": "0xc7bbff07fd1e2b2bf3d25aed2e7624d741937b151e970e147052f08104d29daf",
  "receipt": {
    "to": null,
    "from": "0x5D3e4C0FE11e0aE4c32F0FF74B4544C49538AC61",
    "contractAddress": "0xA7B401926A53b83E2E6094F0E0F1323bbC353C44",
    "transactionIndex": 0,
    "gasUsed": "666536",
    "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "blockHash": "0xe5ed3e0a395d162e27e5ac06533298e66661482378b451dc2ec339aff135cf64",
    "transactionHash": "0xc7bbff07fd1e2b2bf3d25aed2e7624d741937b151e970e147052f08104d29daf",
    "logs": [],
    "blockNumber": 8769118,
    "cumulativeGasUsed": "666536",
    "status": 1,
    "byzantium": true
  },
  "args": [
    "0xab9ba8c7e7b00381027061a8506d895e8938060b",
    "0xd7FeB56CAc77d610b0ab006eF2a0511b7EbF4a3E",
    "0x4bCa851F272B1a3DAdb077e86AFa94910160d03E",
    "0x30e112880b60Cc8046653B246b147EB681BC2D79",
    0
  ],
  "solcInputHash": "d8e6b5ed1356916151fab472a3ed0a01",
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pair\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_bar\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_joe\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_chef\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/JoeVote.sol\":\"JoeVote\"},\"evmVersion\":\"istanbul\",\"libraries\":{\"__CACHE_BREAKER__\":\"0x00000000d41867734bbee4c6863d9255b2b06ac1\"},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.6.0 <0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\\n * checks.\\n *\\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\\n * in bugs, because programmers usually assume that an overflow raises an\\n * error, which is the standard behavior in high level programming languages.\\n * `SafeMath` restores this intuition by reverting the transaction when an\\n * operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n */\\nlibrary SafeMath {\\n    /**\\n     * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        uint256 c = a + b;\\n        if (c < a) return (false, 0);\\n        return (true, c);\\n    }\\n\\n    /**\\n     * @dev Returns the substraction of two unsigned integers, with an overflow flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        if (b > a) return (false, 0);\\n        return (true, a - b);\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n        // benefit is lost if 'b' is also tested.\\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n        if (a == 0) return (true, 0);\\n        uint256 c = a * b;\\n        if (c / a != b) return (false, 0);\\n        return (true, c);\\n    }\\n\\n    /**\\n     * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        if (b == 0) return (false, 0);\\n        return (true, a / b);\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        if (b == 0) return (false, 0);\\n        return (true, a % b);\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two unsigned integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n        uint256 c = a + b;\\n        require(c >= a, \\\"SafeMath: addition overflow\\\");\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, reverting on\\n     * overflow (when the result is negative).\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        require(b <= a, \\\"SafeMath: subtraction overflow\\\");\\n        return a - b;\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        if (a == 0) return 0;\\n        uint256 c = a * b;\\n        require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n        return c;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two unsigned integers, reverting on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n        require(b > 0, \\\"SafeMath: division by zero\\\");\\n        return a / b;\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n     * reverting when dividing by zero.\\n     *\\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\\n     * invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n        require(b > 0, \\\"SafeMath: modulo by zero\\\");\\n        return a % b;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n     * overflow (when the result is negative).\\n     *\\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\\n     * message unnecessarily. For custom revert reasons use {trySub}.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        require(b <= a, errorMessage);\\n        return a - b;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\\n     * message unnecessarily. For custom revert reasons use {tryDiv}.\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        require(b > 0, errorMessage);\\n        return a / b;\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n     * reverting with custom message when dividing by zero.\\n     *\\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\\n     * message unnecessarily. For custom revert reasons use {tryMod}.\\n     *\\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\\n     * invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        require(b > 0, errorMessage);\\n        return a % b;\\n    }\\n}\\n\",\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\"},\"contracts/JoeVote.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\n\\nimport \\\"@openzeppelin/contracts/math/SafeMath.sol\\\";\\nimport \\\"./interfaces/IPair.sol\\\";\\nimport \\\"./interfaces/IBar.sol\\\";\\n\\ninterface IMasterChef {\\n    function userInfo(uint256 pid, address owner)\\n        external\\n        view\\n        returns (uint256, uint256);\\n}\\n\\ncontract JoeVote {\\n    using SafeMath for uint256;\\n\\n    IPair pair; // JOE-AVAX LP\\n    IBar bar;\\n    IERC20 joe;\\n    IMasterChef chef;\\n    uint256 pid; // Pool ID of the JOE-AVAX LP in MasterChefV2\\n\\n    function name() public pure returns (string memory) {\\n        return \\\"JoeVote\\\";\\n    }\\n\\n    function symbol() public pure returns (string memory) {\\n        return \\\"JOEVOTE\\\";\\n    }\\n\\n    function decimals() public pure returns (uint8) {\\n        return 18;\\n    }\\n\\n    constructor(\\n        address _pair,\\n        address _bar,\\n        address _joe,\\n        address _chef,\\n        uint256 _pid\\n    ) public {\\n        pair = IPair(_pair);\\n        bar = IBar(_bar);\\n        joe = IERC20(_joe);\\n        chef = IMasterChef(_chef);\\n        pid = _pid;\\n    }\\n\\n    function totalSupply() public view returns (uint256) {\\n        (uint256 lp_totalJoe, , ) = pair.getReserves();\\n        uint256 xjoe_totalJoe = joe.balanceOf(address(bar));\\n\\n        return lp_totalJoe.mul(2).add(xjoe_totalJoe);\\n    }\\n\\n    function balanceOf(address owner) public view returns (uint256) {\\n        //////////////////////////\\n        // Get balance from LPs //\\n        //////////////////////////\\n        uint256 lp_totalJoe = joe.balanceOf(address(pair));\\n        uint256 lp_total = pair.totalSupply();\\n        uint256 lp_balance = pair.balanceOf(owner);\\n\\n        // Add staked balance\\n        (uint256 lp_stakedBalance, ) = chef.userInfo(pid, owner);\\n        lp_balance = lp_balance.add(lp_stakedBalance);\\n\\n        // LP voting power is 2x the users JOE share in the pool.\\n        uint256 lp_powah = lp_totalJoe.mul(lp_balance).div(lp_total).mul(2);\\n\\n        ///////////////////////////\\n        // Get balance from xJOE //\\n        ///////////////////////////\\n\\n        uint256 xjoe_balance = bar.balanceOf(owner);\\n        uint256 xjoe_total = bar.totalSupply();\\n        uint256 xjoe_totalJoe = joe.balanceOf(address(bar));\\n\\n        // xJOE voting power is the users JOE share in the bar\\n        uint256 xjoe_powah = xjoe_totalJoe.mul(xjoe_balance).div(xjoe_total);\\n\\n        //////////////////////////\\n        // Get balance from JOE //\\n        //////////////////////////\\n\\n        uint256 joe_balance = joe.balanceOf(owner);\\n\\n        return lp_powah.add(xjoe_powah).add(joe_balance);\\n    }\\n\\n    function allowance(address, address) public pure returns (uint256) {\\n        return 0;\\n    }\\n\\n    function transfer(address, uint256) public pure returns (bool) {\\n        return false;\\n    }\\n\\n    function approve(address, uint256) public pure returns (bool) {\\n        return false;\\n    }\\n\\n    function transferFrom(\\n        address,\\n        address,\\n        uint256\\n    ) public pure returns (bool) {\\n        return false;\\n    }\\n}\\n\",\"keccak256\":\"0xee457bdc9a13ae11a7d901010b300317b51f6a63f9ac09e85fccf7088ab859af\",\"license\":\"MIT\"},\"contracts/interfaces/IBar.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\n\\ninterface IBar {\\n    function totalSupply() external view returns (uint256);\\n\\n    function balanceOf(address account) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xacf14cf37cf1c230143e03d18b8c37fa2a0a41bb6ab7a6656ba74cb8578d0a49\",\"license\":\"MIT\"},\"contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\n\\ninterface IERC20 {\\n    function totalSupply() external view returns (uint256);\\n\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    function allowance(address owner, address spender)\\n        external\\n        view\\n        returns (uint256);\\n\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n    event Approval(\\n        address indexed owner,\\n        address indexed spender,\\n        uint256 value\\n    );\\n\\n    // EIP 2612\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 value,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x69d98987b34e1c4489410f3f5ffebfec3db42ace81cc5dcc338110f9b91deebe\",\"license\":\"MIT\"},\"contracts/interfaces/IPair.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity 0.6.12;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"./IERC20.sol\\\";\\n\\ninterface IPair is IERC20 {\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function getReserves()\\n        external\\n        view\\n        returns (\\n            uint112,\\n            uint112,\\n            uint32\\n        );\\n}\\n\",\"keccak256\":\"0x1bc285286f1a4846801abf0792862c1491a08c860ac41e52c35880e8410322bb\",\"license\":\"MIT\"}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50604051610a13380380610a13833981810160405260a081101561003357600080fd5b508051602082015160408301516060840151608090940151600080546001600160a01b039586166001600160a01b0319918216179091556001805494861694821694909417909355600280549285169284169290921790915560038054939094169290911691909117909155600455610962806100b16000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce567146101a557806370a08231146101c357806395d89b41146101e9578063a9059cbb14610115578063dd62ed3e146101f157610093565b806306fdde0314610098578063095ea7b31461011557806318160ddd1461015557806323b872dd1461016f575b600080fd5b6100a061021f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100da5781810151838201526020016100c2565b50505050905090810190601f1680156101075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101416004803603604081101561012b57600080fd5b506001600160a01b038135169060200135610240565b604080519115158252519081900360200190f35b61015d610249565b60408051918252519081900360200190f35b6101416004803603606081101561018557600080fd5b506001600160a01b0381358116916020810135909116906040013561036b565b6101ad610374565b6040805160ff9092168252519081900360200190f35b61015d600480360360208110156101d957600080fd5b50356001600160a01b0316610379565b6100a06107c9565b61015d6004803603604081101561020757600080fd5b506001600160a01b0381358116916020013516610240565b6040805180820190915260078152664a6f65566f746560c81b602082015290565b60005b92915050565b6000805460408051630240bc6b60e21b8152905183926001600160a01b031691630902f1ac916004808301926060929190829003018186803b15801561028e57600080fd5b505afa1580156102a2573d6000803e3d6000fd5b505050506040513d60608110156102b857600080fd5b5051600254600154604080516370a0823160e01b81526001600160a01b03928316600482015290516dffffffffffffffffffffffffffff909416945060009391909216916370a08231916024808301926020929190829003018186803b15801561032157600080fd5b505afa158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b505190506103648161035e8460026107ea565b9061084a565b9250505090565b60009392505050565b601290565b60025460008054604080516370a0823160e01b81526001600160a01b0392831660048201529051929384939216916370a0823191602480820192602092909190829003018186803b1580156103cd57600080fd5b505afa1580156103e1573d6000803e3d6000fd5b505050506040513d60208110156103f757600080fd5b505160008054604080516318160ddd60e01b8152905193945091926001600160a01b03909116916318160ddd916004808301926020929190829003018186803b15801561044357600080fd5b505afa158015610457573d6000803e3d6000fd5b505050506040513d602081101561046d57600080fd5b505160008054604080516370a0823160e01b81526001600160a01b038981166004830152915194955092939116916370a08231916024808301926020929190829003018186803b1580156104c057600080fd5b505afa1580156104d4573d6000803e3d6000fd5b505050506040513d60208110156104ea57600080fd5b505160035460048054604080516393f1a40b60e01b8152928301919091526001600160a01b03898116602484015281519495506000949316926393f1a40b926044808201939291829003018186803b15801561054557600080fd5b505afa158015610559573d6000803e3d6000fd5b505050506040513d604081101561056f57600080fd5b5051905061057d828261084a565b915060006105a0600261059a8661059489886107ea565b906108a4565b906107ea565b600154604080516370a0823160e01b81526001600160a01b038b81166004830152915193945060009391909216916370a08231916024808301926020929190829003018186803b1580156105f357600080fd5b505afa158015610607573d6000803e3d6000fd5b505050506040513d602081101561061d57600080fd5b5051600154604080516318160ddd60e01b815290519293506000926001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561066a57600080fd5b505afa15801561067e573d6000803e3d6000fd5b505050506040513d602081101561069457600080fd5b5051600254600154604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009391909216916370a08231916024808301926020929190829003018186803b1580156106ec57600080fd5b505afa158015610700573d6000803e3d6000fd5b505050506040513d602081101561071657600080fd5b50519050600061072a8361059484876107ea565b600254604080516370a0823160e01b81526001600160a01b038f81166004830152915193945060009391909216916370a08231916024808301926020929190829003018186803b15801561077d57600080fd5b505afa158015610791573d6000803e3d6000fd5b505050506040513d60208110156107a757600080fd5b505190506107b98161035e888561084a565b9c9b505050505050505050505050565b6040805180820190915260078152664a4f45564f544560c81b602082015290565b6000826107f957506000610243565b8282028284828161080657fe5b04146108435760405162461bcd60e51b815260040180806020018281038252602181526020018061090c6021913960400191505060405180910390fd5b9392505050565b600082820183811015610843576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008082116108fa576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161090357fe5b04939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220436feb6f68310a96b267d62717db735cdfc2ef9ce5bdd70fd99a386722a2eef964736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce567146101a557806370a08231146101c357806395d89b41146101e9578063a9059cbb14610115578063dd62ed3e146101f157610093565b806306fdde0314610098578063095ea7b31461011557806318160ddd1461015557806323b872dd1461016f575b600080fd5b6100a061021f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100da5781810151838201526020016100c2565b50505050905090810190601f1680156101075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101416004803603604081101561012b57600080fd5b506001600160a01b038135169060200135610240565b604080519115158252519081900360200190f35b61015d610249565b60408051918252519081900360200190f35b6101416004803603606081101561018557600080fd5b506001600160a01b0381358116916020810135909116906040013561036b565b6101ad610374565b6040805160ff9092168252519081900360200190f35b61015d600480360360208110156101d957600080fd5b50356001600160a01b0316610379565b6100a06107c9565b61015d6004803603604081101561020757600080fd5b506001600160a01b0381358116916020013516610240565b6040805180820190915260078152664a6f65566f746560c81b602082015290565b60005b92915050565b6000805460408051630240bc6b60e21b8152905183926001600160a01b031691630902f1ac916004808301926060929190829003018186803b15801561028e57600080fd5b505afa1580156102a2573d6000803e3d6000fd5b505050506040513d60608110156102b857600080fd5b5051600254600154604080516370a0823160e01b81526001600160a01b03928316600482015290516dffffffffffffffffffffffffffff909416945060009391909216916370a08231916024808301926020929190829003018186803b15801561032157600080fd5b505afa158015610335573d6000803e3d6000fd5b505050506040513d602081101561034b57600080fd5b505190506103648161035e8460026107ea565b9061084a565b9250505090565b60009392505050565b601290565b60025460008054604080516370a0823160e01b81526001600160a01b0392831660048201529051929384939216916370a0823191602480820192602092909190829003018186803b1580156103cd57600080fd5b505afa1580156103e1573d6000803e3d6000fd5b505050506040513d60208110156103f757600080fd5b505160008054604080516318160ddd60e01b8152905193945091926001600160a01b03909116916318160ddd916004808301926020929190829003018186803b15801561044357600080fd5b505afa158015610457573d6000803e3d6000fd5b505050506040513d602081101561046d57600080fd5b505160008054604080516370a0823160e01b81526001600160a01b038981166004830152915194955092939116916370a08231916024808301926020929190829003018186803b1580156104c057600080fd5b505afa1580156104d4573d6000803e3d6000fd5b505050506040513d60208110156104ea57600080fd5b505160035460048054604080516393f1a40b60e01b8152928301919091526001600160a01b03898116602484015281519495506000949316926393f1a40b926044808201939291829003018186803b15801561054557600080fd5b505afa158015610559573d6000803e3d6000fd5b505050506040513d604081101561056f57600080fd5b5051905061057d828261084a565b915060006105a0600261059a8661059489886107ea565b906108a4565b906107ea565b600154604080516370a0823160e01b81526001600160a01b038b81166004830152915193945060009391909216916370a08231916024808301926020929190829003018186803b1580156105f357600080fd5b505afa158015610607573d6000803e3d6000fd5b505050506040513d602081101561061d57600080fd5b5051600154604080516318160ddd60e01b815290519293506000926001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561066a57600080fd5b505afa15801561067e573d6000803e3d6000fd5b505050506040513d602081101561069457600080fd5b5051600254600154604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009391909216916370a08231916024808301926020929190829003018186803b1580156106ec57600080fd5b505afa158015610700573d6000803e3d6000fd5b505050506040513d602081101561071657600080fd5b50519050600061072a8361059484876107ea565b600254604080516370a0823160e01b81526001600160a01b038f81166004830152915193945060009391909216916370a08231916024808301926020929190829003018186803b15801561077d57600080fd5b505afa158015610791573d6000803e3d6000fd5b505050506040513d60208110156107a757600080fd5b505190506107b98161035e888561084a565b9c9b505050505050505050505050565b6040805180820190915260078152664a4f45564f544560c81b602082015290565b6000826107f957506000610243565b8282028284828161080657fe5b04146108435760405162461bcd60e51b815260040180806020018281038252602181526020018061090c6021913960400191505060405180910390fd5b9392505050565b600082820183811015610843576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008082116108fa576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161090357fe5b04939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220436feb6f68310a96b267d62717db735cdfc2ef9ce5bdd70fd99a386722a2eef964736f6c634300060c0033",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  },
  "storageLayout": {
    "storage": [
      {
        "astId": 5208,
        "contract": "contracts/JoeVote.sol:JoeVote",
        "label": "pair",
        "offset": 0,
        "slot": "0",
        "type": "t_contract(IPair)13970"
      },
      {
        "astId": 5210,
        "contract": "contracts/JoeVote.sol:JoeVote",
        "label": "bar",
        "offset": 0,
        "slot": "1",
        "type": "t_contract(IBar)13011"
      },
      {
        "astId": 5212,
        "contract": "contracts/JoeVote.sol:JoeVote",
        "label": "joe",
        "offset": 0,
        "slot": "2",
        "type": "t_contract(IERC20)13468"
      },
      {
        "astId": 5214,
        "contract": "contracts/JoeVote.sol:JoeVote",
        "label": "chef",
        "offset": 0,
        "slot": "3",
        "type": "t_contract(IMasterChef)5203"
      },
      {
        "astId": 5216,
        "contract": "contracts/JoeVote.sol:JoeVote",
        "label": "pid",
        "offset": 0,
        "slot": "4",
        "type": "t_uint256"
      }
    ],
    "types": {
      "t_contract(IBar)13011": {
        "encoding": "inplace",
        "label": "contract IBar",
        "numberOfBytes": "20"
      },
      "t_contract(IERC20)13468": {
        "encoding": "inplace",
        "label": "contract IERC20",
        "numberOfBytes": "20"
      },
      "t_contract(IMasterChef)5203": {
        "encoding": "inplace",
        "label": "contract IMasterChef",
        "numberOfBytes": "20"
      },
      "t_contract(IPair)13970": {
        "encoding": "inplace",
        "label": "contract IPair",
        "numberOfBytes": "20"
      },
      "t_uint256": {
        "encoding": "inplace",
        "label": "uint256",
        "numberOfBytes": "32"
      }
    }
  }
}