Voting Controller

VotingController.vy #

vyper: 0.2.10

Events #

Vote

  • reaper : address, notIndexed
  • coin : address, notIndexed
  • account : address, notIndexed
  • amount : uint256, notIndexed

Unvote

  • reaper : address, notIndexed
  • coin : address, notIndexed
  • account : address, notIndexed
  • amount : uint256, notIndexed

VoteApproval

  • reaper : address, notIndexed
  • coin : address, notIndexed
  • ownerAccount : address, notIndexed
  • voterAccount : address, notIndexed
  • canVote : bool, notIndexed

CommitOwnership

  • admin : address, notIndexed

ApplyOwnership

  • admin : address, notIndexed

Methods #

snapshot #

type: nonpayable function

Makes a snapshot and fixes voting result per voting period, also updates historical reaper vote integrals

Only possible to call it once per voting period

snapshot #

type: nonpayable function

Only possible to call it once per voting period

vote #

type: nonpayable function

Vote for reaper _reaper using tokens _coin with amount _amount for user _account

Arguments:

  • _reaper: - Reaper to vote for

  • _coin: - Coin which is used to vote

  • _amount: - Amount which is used to vote

vote #

type: nonpayable function

Arguments:

  • _reaper: - Reaper to vote for

  • _coin: - Coin which is used to vote

  • _amount: - Amount which is used to vote

unvote #

type: nonpayable function

Unvote for reaper _reaper and withdraw tokens _coin with amount _amount for _account

Only possible with unlocked amount

Arguments:

  • _reaper: - Reaper to unvote for

  • _coin: - Coin which is used to unvote

  • _amount: - Amount which is used to unvote

unvote #

type: nonpayable function

Only possible with unlocked amount

Arguments:

  • _reaper: - Reaper to unvote for

  • _coin: - Coin which is used to unvote

  • _amount: - Amount which is used to unvote

availableToUnvote #

type: view function gas: 3077

Check for available withdrawal amount from reaper _reaper for tokens _coin for account _account

Arguments:

  • _reaper: - Reaper to unvote for

  • _coin: - Coin which is used to unvote

  • _account: - Account who is unvoting

Returns:

  • _0 - Unlocked amount to withdraw

voteIntegral #

type: view function gas: 4963

Returns current vote integral for reaper _reaper multiplied on 1e18

Arguments:

  • _reaper: - Reaper to get its vote integral for

Returns:

  • _0 - Vote integral multiplied on 1e18

reaperVotePower #

type: view function gas: 8972

Returns current vote power for reaper _reaper

Arguments:

  • _reaper: - Reaper to get its vote power for

Returns:

  • _0 - Vote power

accountVotePower #

type: view function gas: 9587

Returns vote power for account _account for reaper _reaper

Arguments:

  • _reaper: - Reaper to get its vote power for

  • _account: - Account to get its vote power for

Returns:

  • _0 - Vote power

transferOwnership #

type: nonpayable function gas: 37861

Sets new future owner address

Callable by owner only

Arguments:

  • _futureOwner: - New future owner address

applyOwnership #

type: nonpayable function gas: 38717

Applies new future owner address as current owner

Callable by owner only

init #

type: nonpayable constructor

Contract constructor

ABI #

[
  {
    "name": "Vote",
    "inputs": [
      {
        "name": "reaper",
        "type": "address",
        "indexed": false
      },
      {
        "name": "coin",
        "type": "address",
        "indexed": false
      },
      {
        "name": "account",
        "type": "address",
        "indexed": false
      },
      {
        "name": "amount",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false,
    "type": "event"
  },
  {
    "name": "Unvote",
    "inputs": [
      {
        "name": "reaper",
        "type": "address",
        "indexed": false
      },
      {
        "name": "coin",
        "type": "address",
        "indexed": false
      },
      {
        "name": "account",
        "type": "address",
        "indexed": false
      },
      {
        "name": "amount",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false,
    "type": "event"
  },
  {
    "name": "VoteApproval",
    "inputs": [
      {
        "name": "reaper",
        "type": "address",
        "indexed": false
      },
      {
        "name": "coin",
        "type": "address",
        "indexed": false
      },
      {
        "name": "ownerAccount",
        "type": "address",
        "indexed": false
      },
      {
        "name": "voterAccount",
        "type": "address",
        "indexed": false
      },
      {
        "name": "canVote",
        "type": "bool",
        "indexed": false
      }
    ],
    "anonymous": false,
    "type": "event"
  },
  {
    "name": "CommitOwnership",
    "inputs": [
      {
        "name": "admin",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false,
    "type": "event"
  },
  {
    "name": "ApplyOwnership",
    "inputs": [
      {
        "name": "admin",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false,
    "type": "event"
  },
  {
    "stateMutability": "nonpayable",
    "type": "constructor",
    "inputs": [
      {
        "name": "_controller",
        "type": "address"
      },
      {
        "name": "_gasTokenCheckList",
        "type": "address"
      },
      {
        "name": "_farmToken",
        "type": "address"
      }
    ],
    "outputs": []
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "snapshot",
    "inputs": [],
    "outputs": []
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "snapshot",
    "inputs": [
      {
        "name": "_gasToken",
        "type": "address"
      }
    ],
    "outputs": []
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "vote",
    "inputs": [
      {
        "name": "_reaper",
        "type": "address"
      },
      {
        "name": "_coin",
        "type": "address"
      },
      {
        "name": "_amount",
        "type": "uint256"
      }
    ],
    "outputs": []
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "vote",
    "inputs": [
      {
        "name": "_reaper",
        "type": "address"
      },
      {
        "name": "_coin",
        "type": "address"
      },
      {
        "name": "_amount",
        "type": "uint256"
      },
      {
        "name": "_gasToken",
        "type": "address"
      }
    ],
    "outputs": []
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "unvote",
    "inputs": [
      {
        "name": "_reaper",
        "type": "address"
      },
      {
        "name": "_coin",
        "type": "address"
      },
      {
        "name": "_amount",
        "type": "uint256"
      }
    ],
    "outputs": []
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "unvote",
    "inputs": [
      {
        "name": "_reaper",
        "type": "address"
      },
      {
        "name": "_coin",
        "type": "address"
      },
      {
        "name": "_amount",
        "type": "uint256"
      },
      {
        "name": "_gasToken",
        "type": "address"
      }
    ],
    "outputs": []
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "availableToUnvote",
    "inputs": [
      {
        "name": "_reaper",
        "type": "address"
      },
      {
        "name": "_coin",
        "type": "address"
      },
      {
        "name": "_account",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3077
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "voteIntegral",
    "inputs": [
      {
        "name": "_reaper",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 4963
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "reaperVotePower",
    "inputs": [
      {
        "name": "_reaper",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 8972
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "totalVotePower",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 7425
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "accountVotePower",
    "inputs": [
      {
        "name": "_reaper",
        "type": "address"
      },
      {
        "name": "_account",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 9587
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "transferOwnership",
    "inputs": [
      {
        "name": "_futureOwner",
        "type": "address"
      }
    ],
    "outputs": [],
    "gas": 37861
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "applyOwnership",
    "inputs": [],
    "outputs": [],
    "gas": 38717
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "setVotingToken",
    "inputs": [
      {
        "name": "_votingToken",
        "type": "address"
      }
    ],
    "outputs": [],
    "gas": 37593
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "owner",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "gas": 1418
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "futureOwner",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "gas": 1448
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "farmToken",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "gas": 1478
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "votingToken",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "gas": 1508
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "controller",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "gas": 1538
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "gasTokenCheckList",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "gas": 1568
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "balances",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "address"
      },
      {
        "name": "arg2",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 2243
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "balancesUnlockTimestamp",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "address"
      },
      {
        "name": "arg2",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 2273
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "reaperBalances",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 2088
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "lastVotes",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 1903
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "reaperIntegratedVotes",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 1933
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "lastSnapshotTimestamp",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 1748
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "lastSnapshotIndex",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 1778
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "snapshots",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "reaper",
        "type": "address"
      },
      {
        "name": "votes",
        "type": "uint256"
      },
      {
        "name": "share",
        "type": "uint256"
      }
    ],
    "gas": 4242
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "coinBalances",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 2053
  }
]

Byte code #

0x6060611e60610140396020611e6060c03960c05160a01c1561002057600080fd5b60206020611e600160c03960c05160a01c1561003b57600080fd5b60206040611e600160c03960c05160a01c1561005657600080fd5b600061014051141515156100a9576308c379a06101a05260206101c05260156101e0527f636f6e74726f6c6c6572206973206e6f74207365740000000000000000000000610200526101e05060646101bcfd5b600061016051141515156100fc576308c379a06101a05260206101c052601c6101e0527f676173546f6b656e436865636b4c697374206973206e6f742073657400000000610200526101e05060646101bcfd5b6000610180511415151561014f576308c379a06101a05260206101c05260146101e0527f6661726d546f6b656e206973206e6f7420736574000000000000000000000000610200526101e05060646101bcfd5b61014051600455610160516005556101805160025533600055611e4856600436101561000d57611b4b565b600035601c52600051341561002157600080fd5b639711715a81141561003857600061014052610069565b63265121608114156100645760043560a01c1561005457600080fd5b6020600461014037600050610069565b6107db565b600f541561007657600080fd5b6001600f5542600b5462093a8081818301101561009257600080fd5b808201905090501015156100e5576308c379a06101605260206101805260136101a0527f616c726561647920736e617073686f74746564000000000000000000000000006101c0526101a050606461017cfd5b5a61016052600454610180526020610220600463df0b97fd6101c0526101dc610180515afa61011357600080fd5b601f3d1161012057600080fd5b600050610220516101a052600b546101c0526101c05115156102ae576101a0516101e052635fed148042635fed14808082101561015c57600080fd5b8082039050905062093a808082049050905062093a80808202821582848304141761018657600080fd5b8090509050905081818301101561019c57600080fd5b80820190509050600b556102006001670de0b6b3a763ffff818352015b6101a0516102005111156101cc576102a1565b60206102c06024639fc71c0661024052610200516102605261025c610180515afa6101f657600080fd5b601f3d1161020357600080fd5b6000506102c05161022052670de0b6b3a76400006101e051808061022657600080fd5b8204905090506102405261020051670de0b6b3a7640000811061024857600080fd5b600d60c052602060c02060c052602060c0200160c052602060c02061022051815560016001820155610240516002820155506102405160096102205160e05260c052604060c020555b81516001018083528114156101b9575b50506000600f5560006000f35b4262093a808082049050905062093a8080820282158284830414176102d257600080fd5b809050905090506101e052600c54610200526101e0516101c051808210156102f957600080fd5b80820390509050610220526101e051600b5561020051600181818301101561032057600080fd5b80820190509050600c556002546102405260035461026052600e6102405160e05260c052604060c0205461028052600e6102605160e05260c052604060c020546102a0526040366102c0376000610280516102a05181818301101561038457600080fd5b80820190509050111561049657671bc16d674ec80000671bc16d674ec800006102805180820282158284830414176103bb57600080fd5b80905090509050610280516102a0518181830110156103d957600080fd5b8082019050905080806103eb57600080fd5b82049050905081818301101561040057600080fd5b808201905090506102e052600e6102605160e05260c052604060c020546102e051808202821582848304141761043557600080fd5b80905090509050670de0b6b3a764000080820490509050600e6102405160e05260c052604060c020546001808202821582848304141761047457600080fd5b8090509050905081818301101561048a57600080fd5b808201905090506102c0525b6103006001670de0b6b3a763ffff818352015b6101a0516103005111156104bc57610746565b60206103c06024639fc71c0661034052610300516103605261035c610180515afa6104e657600080fd5b601f3d116104f357600080fd5b6000506103c051610320526000610340526000610280516102a05181818301101561051d57600080fd5b8082019050905011156105d35760086103205160e05260c052604060c0206102605160e05260c052604060c020546102e051808202821582848304141761056357600080fd5b80905090509050670de0b6b3a76400008082049050905060086103205160e05260c052604060c0206102405160e05260c052604060c02054600180820282158284830414176105b157600080fd5b809050905090508181830110156105c757600080fd5b80820190509050610340525b61030051670de0b6b3a764000081106105eb57600080fd5b61020051600181818301101561060057600080fd5b80820190509050670de0b6b3a7640000811061061b57600080fd5b600d60c052602060c0200160c052602060c0200160c052602060c02061032051815561034051600182015561034051670de0b6b3a7640000808202821582848304141761066757600080fd5b809050905090506102c051808061067d57600080fd5b820490509050600282015550600a6103205160e05260c052604060c020805460096103205160e05260c052604060c020546102205180820282158284830414176106c657600080fd5b809050905090508181830110156106dc57600080fd5b8082019050905081555061034051670de0b6b3a7640000808202821582848304141761070757600080fd5b809050905090506102c051808061071d57600080fd5b82049050905060096103205160e05260c052604060c020555b81516001018083528114156104a9575b5050610140610300525b6103005151602061030051016103005261030061030051101561077257610750565b6101405161032052336103405261016051610360526024610380526103805161036051610340516103205160065801611b51565b6102e0610300525b61030051526020610300510361030052610140610300511015156107d1576107ae565b6000506000600f55005b63efa5d4318114156107f257600061014052610823565b630a134cfd81141561081e5760643560a01c1561080e57600080fd5b6020606461014037600050610823565b610b35565b600f541561083057600080fd5b6001600f5560043560a01c1561084557600080fd5b60243560a01c1561085557600080fd5b5a61016052600060206102006024637a993685610180526004356101a05261019c6004545afa61088457600080fd5b601f3d1161089157600080fd5b600050610200511115156108e4576308c379a061022052602061024052600e610260527f696e76616c6964207265617065720000000000000000000000000000000000006102805261026050606461023cfd5b60025460243514156108f7576001610912565b600354602435141561090f5760006024351415610912565b60005b151561095d576308c379a06101805260206101a052600c6101c0527f696e76616c696420636f696e00000000000000000000000000000000000000006101e0526101c050606461019cfd5b600660043560e05260c052604060c02060243560e05260c052604060c0203360e05260c052604060c020805460443581818301101561099b57600080fd5b808201905090508155504262093a808181830110156109b957600080fd5b80820190509050600760043560e05260c052604060c02060243560e05260c052604060c0203360e05260c052604060c02055600860043560e05260c052604060c02060243560e05260c052604060c0208054604435818183011015610a1d57600080fd5b80820190509050815550600e60243560e05260c052604060c0208054604435818183011015610a4b57600080fd5b80820190509050815550602061024060646323b872dd61018052336101a052306101c0526044356101e05261019c60006024355af1610a8957600080fd5b601f3d11610a9657600080fd5b60005061024051610aa657600080fd5b600435610180526024356101a052336101c0526044356101e0527f71a31f2aca7a03b16f9dcf63adec04f56a716023d8dc2a959a5f3cdd51a9ccfd6080610180a161014051610160516101405161020052336102205261016051610240526084610260526102605161024051610220516102005160065801611b51565b61016052610140526000506000600f55005b639f040826811415610b4c57600061014052610b7d565b6371dfd87f811415610b785760643560a01c15610b6857600080fd5b6020606461014037600050610b7d565b610db3565b600f5415610b8a57600080fd5b6001600f5560043560a01c15610b9f57600080fd5b60243560a01c15610baf57600080fd5b5a6101605242600760043560e05260c052604060c02060243560e05260c052604060c0203360e05260c052604060c02054101515610c2c576308c379a06101805260206101a05260116101c0527f746f6b656e7320617265206c6f636b65640000000000000000000000000000006101e0526101c050606461019cfd5b600660043560e05260c052604060c02060243560e05260c052604060c0203360e05260c052604060c020805460443580821015610c6857600080fd5b80820390509050815550600860043560e05260c052604060c02060243560e05260c052604060c020805460443580821015610ca257600080fd5b80820390509050815550600e60243560e05260c052604060c020805460443580821015610cce57600080fd5b808203905090508155506020610220604463a9059cbb61018052336101a0526044356101c05261019c60006024355af1610d0757600080fd5b601f3d11610d1457600080fd5b60005061022051610d2457600080fd5b600435610180526024356101a052336101c0526044356101e0527f38be53377ba734a1b4e396f2ac500fbcb0ab37e0d40ea7a25abb4092453da7716080610180a161014051610160516101405161020052336102205261016051610240526084610260526102605161024051610220516102005160065801611b51565b61016052610140526000506000600f55005b6333ded4db811415610e655760043560a01c15610dcf57600080fd5b60243560a01c15610ddf57600080fd5b60443560a01c15610def57600080fd5b42600760043560e05260c052604060c02060243560e05260c052604060c02060443560e05260c052604060c02054101515610e2f57600060005260206000f35b600660043560e05260c052604060c02060243560e05260c052604060c02060443560e05260c052604060c0205460005260206000f35b631bd88eab811415610f7f5760043560a01c15610e8157600080fd5b600060206101c06024637a993685610140526004356101605261015c6004545afa610eab57600080fd5b601f3d11610eb857600080fd5b6000506101c051111515610f0b576308c379a06101e052602061020052600e610220527f696e76616c696420726561706572000000000000000000000000000000000000610240526102205060646101fcfd5b600a60043560e05260c052604060c02054600960043560e05260c052604060c0205442600b5480821015610f3e57600080fd5b808203905090508082028215828483041417610f5957600080fd5b80905090509050818183011015610f6f57600080fd5b8082019050905060005260206000f35b631870d8e88114156111b35760043560a01c15610f9b57600080fd5b600060206101c06024637a993685610140526004356101605261015c6004545afa610fc557600080fd5b601f3d11610fd257600080fd5b6000506101c051111515611025576308c379a06101e052602061020052600e610220527f696e76616c696420726561706572000000000000000000000000000000000000610240526102205060646101fcfd5b6002546101405260035461016052600e6101405160e05260c052604060c0205461018052600e6101605160e05260c052604060c020546101a052610180516101a05181818301101561107657600080fd5b80820190509050151561108e57600060005260206000f35b671bc16d674ec80000671bc16d674ec800006101805180820282158284830414176110b857600080fd5b80905090509050610180516101a0518181830110156110d657600080fd5b8082019050905080806110e857600080fd5b8204905090508181830110156110fd57600080fd5b808201905090506101c052600860043560e05260c052604060c0206101605160e05260c052604060c020546101c051808202821582848304141761114057600080fd5b80905090509050670de0b6b3a764000080820490509050600860043560e05260c052604060c0206101405160e05260c052604060c020546001808202821582848304141761118d57600080fd5b809050905090508181830110156111a357600080fd5b8082019050905060005260206000f35b63f5f3d4f7811415611331576002546101405260035461016052600e6101405160e05260c052604060c0205461018052600e6101605160e05260c052604060c020546101a052610180516101a05181818301101561121057600080fd5b80820190509050151561122857600060005260206000f35b671bc16d674ec80000671bc16d674ec8000061018051808202821582848304141761125257600080fd5b80905090509050610180516101a05181818301101561127057600080fd5b80820190509050808061128257600080fd5b82049050905081818301101561129757600080fd5b808201905090506101c052600e6101605160e05260c052604060c020546101c05180820282158284830414176112cc57600080fd5b80905090509050670de0b6b3a764000080820490509050600e6101405160e05260c052604060c020546001808202821582848304141761130b57600080fd5b8090509050905081818301101561132157600080fd5b8082019050905060005260206000f35b6361acc6898114156115655760043560a01c1561134d57600080fd5b60243560a01c1561135d57600080fd5b60025461014052600354610160526101605115156113c957600660043560e05260c052604060c0206101405160e05260c052604060c02060243560e05260c052604060c02054600180820282158284830414176113b957600080fd5b8090509050905060005260206000f35b600e6101405160e05260c052604060c0205461018052600e6101605160e05260c052604060c020546101a052610180516101a05181818301101561140c57600080fd5b80820190509050151561142457600060005260206000f35b671bc16d674ec80000671bc16d674ec8000061018051808202821582848304141761144e57600080fd5b80905090509050610180516101a05181818301101561146c57600080fd5b80820190509050808061147e57600080fd5b82049050905081818301101561149357600080fd5b808201905090506101c052600660043560e05260c052604060c0206101605160e05260c052604060c02060243560e05260c052604060c020546101c05180820282158284830414176114e457600080fd5b80905090509050670de0b6b3a764000080820490509050600660043560e05260c052604060c0206101405160e05260c052604060c02060243560e05260c052604060c020546001808202821582848304141761153f57600080fd5b8090509050905081818301101561155557600080fd5b8082019050905060005260206000f35b63f2fde38b8114156116075760043560a01c1561158157600080fd5b600054331415156115d1576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b600435600155600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b63011902078114156116f55760005433141515611663576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b60015461014052600061014051141515156116bd576308c379a061016052602061018052600d6101a0527f6f776e6572206e6f7420736574000000000000000000000000000000000000006101c0526101a050606461017cfd5b6101405160005561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b63e2d7462881141561180a5760043560a01c1561171157600080fd5b60005433141515611761576308c379a061014052602061016052600a610180527f6f776e6572206f6e6c79000000000000000000000000000000000000000000006101a05261018050606461015cfd5b6000600435141515156117b3576308c379a061014052602061016052600c610180527f7a65726f206164647265737300000000000000000000000000000000000000006101a05261018050606461015cfd5b600354151515611802576308c379a061014052602061016052600d610180527f736574206f6e6c79206f6e6365000000000000000000000000000000000000006101a05261018050606461015cfd5b600435600355005b638da5cb5b8114156118225760005460005260206000f35b63b9e9d1aa81141561183a5760015460005260206000f35b63c2442f938114156118525760025460005260206000f35b63b034012381141561186a5760035460005260206000f35b63f77c47918114156118825760045460005260206000f35b63382807d481141561189a5760055460005260206000f35b63ba0b7dee81141561190c5760043560a01c156118b657600080fd5b60243560a01c156118c657600080fd5b60443560a01c156118d657600080fd5b600660043560e05260c052604060c02060243560e05260c052604060c02060443560e05260c052604060c0205460005260206000f35b639ddb64b681141561197e5760043560a01c1561192857600080fd5b60243560a01c1561193857600080fd5b60443560a01c1561194857600080fd5b600760043560e05260c052604060c02060243560e05260c052604060c02060443560e05260c052604060c0205460005260206000f35b637602c4e78114156119d25760043560a01c1561199a57600080fd5b60243560a01c156119aa57600080fd5b600860043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b63b333ee19811415611a085760043560a01c156119ee57600080fd5b600960043560e05260c052604060c0205460005260206000f35b6302cb92db811415611a3e5760043560a01c15611a2457600080fd5b600a60043560e05260c052604060c0205460005260206000f35b636f660492811415611a5657600b5460005260206000f35b63fcf7a3d5811415611a6e57600c5460005260206000f35b63a35cbf6c811415611b1357602435670de0b6b3a76400008110611a9157600080fd5b600435670de0b6b3a76400008110611aa857600080fd5b600d60c052602060c0200160c052602060c020016101408080808460c052602060c0205481525050602081019050808060018560c052602060c020015481525050602081019050808060028560c052602060c02001548152505060609050905060c05260c051610140f35b63613b0c03811415611b495760043560a01c15611b2f57600080fd5b600e60043560e05260c052604060c0205460005260206000f35b505b60006000fd5b6101c0526101405261016052610180526101a052610140511515611b75576101c051565b6020610260602463c2bc2efc6101e05261014051610200526101fc6005545afa611b9e57600080fd5b601f3d11611bab57600080fd5b600050610260511515611bfd576308c379a06102805260206102a05260156102c0527f756e737570706f727465642067617320746f6b656e00000000000000000000006102e0526102c050606461029cfd5b61520861018051818183011015611c1357600080fd5b808201905090505a80821015611c2857600080fd5b8082039050905060106101a0518082028215828483041417611c4957600080fd5b80905090509050818183011015611c5f57600080fd5b808201905090506101e05260206102a0604463079d229f6102005261016051610220526101e05161374a818183011015611c9857600080fd5b8082019050905061a0aa808204905090506102405261021c6000610140515af1611cc157600080fd5b601f3d11611cce57600080fd5b6000506102a0506101c051565b61016d611e480361016d60003961016d611e48036000f3