Transactions
Token Transfers
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- VoteDelegate
- Optimization enabled
- true
- Compiler version
- v0.6.12+commit.27d51765
- Optimization runs
- 200
- EVM Version
- istanbul
- Verified at
- 2026-04-22T13:27:39.026604Z
Constructor Arguments
0000000000000000000000000a3f6849f78076aefadf113f5bed87720274ddc0000000000000000000000000d3a9fe267852281a1e6307a1c37cdfd76d39b133000000000000000000000000e5c80a7963c0d8f4ab9c0bb8d854e47594cf9394
Arg [0] (address) : 0x0a3f6849f78076aefadf113f5bed87720274ddc0
Arg [1] (address) : 0xd3a9fe267852281a1e6307a1c37cdfd76d39b133
Arg [2] (address) : 0xe5c80a7963c0d8f4ab9c0bb8d854e47594cf9394
VoteDelegate.sol
// SPDX-License-Identifier: AGPL-3.0-or-later
// Copyright (C) 2021 Dai Foundation
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
// VoteDelegate - delegate your vote
pragma solidity 0.6.12;
interface TokenLike {
function approve(address, uint256) external returns (bool);
function pull(address, uint256) external;
function push(address, uint256) external;
}
interface ChiefLike {
function GOV() external view returns (TokenLike);
function IOU() external view returns (TokenLike);
function lock(uint256) external;
function free(uint256) external;
function vote(address[] calldata) external returns (bytes32);
function vote(bytes32) external;
}
interface PollingLike {
function withdrawPoll(uint256) external;
function vote(uint256, uint256) external;
function withdrawPoll(uint256[] calldata) external;
function vote(uint256[] calldata, uint256[] calldata) external;
}
contract VoteDelegate {
mapping(address => uint256) public stake;
address public immutable delegate;
TokenLike public immutable gov;
TokenLike public immutable iou;
ChiefLike public immutable chief;
PollingLike public immutable polling;
uint256 public immutable expiration;
event Lock(address indexed usr, uint256 wad);
event Free(address indexed usr, uint256 wad);
constructor(address _chief, address _polling, address _delegate) public {
chief = ChiefLike(_chief);
polling = PollingLike(_polling);
delegate = _delegate;
expiration = block.timestamp + 365 days;
TokenLike _gov = gov = ChiefLike(_chief).GOV();
TokenLike _iou = iou = ChiefLike(_chief).IOU();
_gov.approve(_chief, type(uint256).max);
_iou.approve(_chief, type(uint256).max);
}
function add(uint256 x, uint256 y) internal pure returns (uint256 z) {
require((z = x + y) >= x, "VoteDelegate/add-overflow");
}
modifier delegate_auth() {
require(msg.sender == delegate, "VoteDelegate/sender-not-delegate");
_;
}
modifier live() {
require(block.timestamp < expiration, "VoteDelegate/delegation-contract-expired");
_;
}
function lock(uint256 wad) external live {
stake[msg.sender] = add(stake[msg.sender], wad);
gov.pull(msg.sender, wad);
chief.lock(wad);
iou.push(msg.sender, wad);
emit Lock(msg.sender, wad);
}
function free(uint256 wad) external {
require(stake[msg.sender] >= wad, "VoteDelegate/insufficient-stake");
stake[msg.sender] -= wad;
iou.pull(msg.sender, wad);
chief.free(wad);
gov.push(msg.sender, wad);
emit Free(msg.sender, wad);
}
function vote(address[] memory yays) external delegate_auth live returns (bytes32 result) {
result = chief.vote(yays);
}
function vote(bytes32 slate) external delegate_auth live {
chief.vote(slate);
}
// Polling vote
function votePoll(uint256 pollId, uint256 optionId) external delegate_auth live {
polling.vote(pollId, optionId);
}
function votePoll(uint256[] calldata pollIds, uint256[] calldata optionIds) external delegate_auth live {
polling.vote(pollIds, optionIds);
}
}
Compiler Settings
{"remappings":[],"optimizer":{"runs":200,"enabled":true},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"istanbul","compilationTarget":{"VoteDelegate.sol":"VoteDelegate"}}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_chief","internalType":"address"},{"type":"address","name":"_polling","internalType":"address"},{"type":"address","name":"_delegate","internalType":"address"}]},{"type":"event","name":"Free","inputs":[{"type":"address","name":"usr","internalType":"address","indexed":true},{"type":"uint256","name":"wad","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Lock","inputs":[{"type":"address","name":"usr","internalType":"address","indexed":true},{"type":"uint256","name":"wad","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract ChiefLike"}],"name":"chief","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"delegate","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"expiration","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"free","inputs":[{"type":"uint256","name":"wad","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract TokenLike"}],"name":"gov","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract TokenLike"}],"name":"iou","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"lock","inputs":[{"type":"uint256","name":"wad","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract PollingLike"}],"name":"polling","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"stake","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"vote","inputs":[{"type":"bytes32","name":"slate","internalType":"bytes32"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bytes32","name":"result","internalType":"bytes32"}],"name":"vote","inputs":[{"type":"address[]","name":"yays","internalType":"address[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"votePoll","inputs":[{"type":"uint256[]","name":"pollIds","internalType":"uint256[]"},{"type":"uint256[]","name":"optionIds","internalType":"uint256[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"votePoll","inputs":[{"type":"uint256","name":"pollId","internalType":"uint256"},{"type":"uint256","name":"optionId","internalType":"uint256"}]}]
Contract Creation Code
0x61014060405234801561001157600080fd5b506040516112a63803806112a68339818101604052606081101561003457600080fd5b5080516020808301516040938401516001600160601b0319606085811b821660e05283811b82166101005282901b166080526301e13380420161012052845163180cb47f60e01b815294519394919390926000926001600160a01b0387169263180cb47f92600480840193919291829003018186803b1580156100b657600080fd5b505afa1580156100ca573d6000803e3d6000fd5b505050506040513d60208110156100e057600080fd5b50516001600160601b0319606082901b1660a0526040805163046c472f60e01b815290516001600160a01b03928316935060009287169163046c472f916004808301926020929190829003018186803b15801561013c57600080fd5b505afa158015610150573d6000803e3d6000fd5b505050506040513d602081101561016657600080fd5b50516001600160601b0319606082901b1660c0526040805163095ea7b360e01b81526001600160a01b0388811660048301526000196024830152915192821693509084169163095ea7b3916044808201926020929091908290030181600087803b1580156101d357600080fd5b505af11580156101e7573d6000803e3d6000fd5b505050506040513d60208110156101fd57600080fd5b50506040805163095ea7b360e01b81526001600160a01b038781166004830152600019602483015291519183169163095ea7b3916044808201926020929091908290030181600087803b15801561025357600080fd5b505af1158015610267573d6000803e3d6000fd5b505050506040513d602081101561027d57600080fd5b5050505050505060805160601c60a05160601c60c05160601c60e05160601c6101005160601c61012051610f6b61033b600039806103a6528061051d52806105f4528061099c5280610a845280610d3c525080610404528061054152806109fa52508061065252806107f45280610b925280610dc15280610e6d525080610565528061078e5280610c335250806104e752806108955280610b2d525080610344528061059252806106d3528061093a5280610cda5250610f6b6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063a69beaba1161008c578063dcb0578d11610066578063dcb0578d1461024e578063dd46706414610271578063ed0813291461028e578063ffd864d314610331576100cf565b8063a69beaba1461020c578063c89e436114610229578063d8ccd0f314610231576100cf565b806311fa447b146100d457806312d43a511461019857806326476204146101bc5780634665096d146101f457806354717496146101fc578063a2fca6b314610204575b600080fd5b610196600480360360408110156100ea57600080fd5b81019060208101813564010000000081111561010557600080fd5b82018360208201111561011757600080fd5b8035906020019184602083028401116401000000008311171561013957600080fd5b91939092909160208101903564010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184602083028401116401000000008311171561018b57600080fd5b509092509050610339565b005b6101a06104e5565b604080516001600160a01b039092168252519081900360200190f35b6101e2600480360360208110156101d257600080fd5b50356001600160a01b0316610509565b60408051918252519081900360200190f35b6101e261051b565b6101a061053f565b6101a0610563565b6101966004803603602081101561022257600080fd5b5035610587565b6101a06106d1565b6101966004803603602081101561024757600080fd5b50356106f5565b6101966004803603604081101561026457600080fd5b508035906020013561092f565b6101966004803603602081101561028757600080fd5b5035610a82565b6101e2600480360360208110156102a457600080fd5b8101906020810181356401000000008111156102bf57600080fd5b8201836020820111156102d157600080fd5b803590602001918460208302840111640100000000831117156102f357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610ccd945050505050565b6101a0610e6b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103a4576040805162461bcd60e51b81526020600482018190526024820152600080516020610f16833981519152604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000042106104025760405162461bcd60e51b8152600401808060200182810382526028815260200180610eee6028913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638733ece7858585856040518563ffffffff1660e01b81526004018080602001806020018381038352878782818152602001925060200280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006020819052908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105f2576040805162461bcd60e51b81526020600482018190526024820152600080516020610f16833981519152604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000042106106505760405162461bcd60e51b8152600401808060200182810382526028815260200180610eee6028913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a69beaba826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156106b657600080fd5b505af11580156106ca573d6000803e3d6000fd5b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b33600090815260208190526040902054811115610759576040805162461bcd60e51b815260206004820152601f60248201527f566f746544656c65676174652f696e73756666696369656e742d7374616b6500604482015290519081900360640190fd5b3360008181526020819052604080822080548590039055805163f2d5d56b60e01b8152600481019390935260248301849052517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263f2d5d56b92604480830193919282900301818387803b1580156107da57600080fd5b505af11580156107ee573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d8ccd0f3826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561085857600080fd5b505af115801561086c573d6000803e3d6000fd5b505060408051632dd4ea6360e21b81523360048201526024810185905290516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016935063b753a98c9250604480830192600092919082900301818387803b1580156108de57600080fd5b505af11580156108f2573d6000803e3d6000fd5b50506040805184815290513393507fce6c5af8fd109993cb40da4d5dc9e4dd8e61bc2e48f1e3901472141e4f56f29392509081900360200190a250565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461099a576040805162461bcd60e51b81526020600482018190526024820152600080516020610f16833981519152604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000042106109f85760405162461bcd60e51b8152600401808060200182810382526028815260200180610eee6028913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b384abef83836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015610a6657600080fd5b505af1158015610a7a573d6000803e3d6000fd5b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000004210610ae05760405162461bcd60e51b8152600401808060200182810382526028815260200180610eee6028913960400191505060405180910390fd5b33600090815260208190526040902054610afa9082610e8f565b3360008181526020819052604080822093909355825163f2d5d56b60e01b815260048101929092526024820184905291517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263f2d5d56b926044808201939182900301818387803b158015610b7857600080fd5b505af1158015610b8c573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dd467064826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610bf657600080fd5b505af1158015610c0a573d6000803e3d6000fd5b505060408051632dd4ea6360e21b81523360048201526024810185905290516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016935063b753a98c9250604480830192600092919082900301818387803b158015610c7c57600080fd5b505af1158015610c90573d6000803e3d6000fd5b50506040805184815290513393507f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d42792509081900360200190a250565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d3a576040805162461bcd60e51b81526020600482018190526024820152600080516020610f16833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000004210610d985760405162461bcd60e51b8152600401808060200182810382526028815260200180610eee6028913960400191505060405180910390fd5b60405163ed08132960e01b81526020600482018181528451602484015284516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169363ed08132993879392839260440191808601910280838360005b83811015610e14578181015183820152602001610dfc565b5050505090500192505050602060405180830381600087803b158015610e3957600080fd5b505af1158015610e4d573d6000803e3d6000fd5b505050506040513d6020811015610e6357600080fd5b505192915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b80820182811015610ee7576040805162461bcd60e51b815260206004820152601960248201527f566f746544656c65676174652f6164642d6f766572666c6f7700000000000000604482015290519081900360640190fd5b9291505056fe566f746544656c65676174652f64656c65676174696f6e2d636f6e74726163742d65787069726564566f746544656c65676174652f73656e6465722d6e6f742d64656c6567617465a264697066735822122050aec0f24081032eeea71f5eb8e1b14b320c7acf1fc482c4b3803efa91704fc964736f6c634300060c00330000000000000000000000000a3f6849f78076aefadf113f5bed87720274ddc0000000000000000000000000d3a9fe267852281a1e6307a1c37cdfd76d39b133000000000000000000000000e5c80a7963c0d8f4ab9c0bb8d854e47594cf9394
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063a69beaba1161008c578063dcb0578d11610066578063dcb0578d1461024e578063dd46706414610271578063ed0813291461028e578063ffd864d314610331576100cf565b8063a69beaba1461020c578063c89e436114610229578063d8ccd0f314610231576100cf565b806311fa447b146100d457806312d43a511461019857806326476204146101bc5780634665096d146101f457806354717496146101fc578063a2fca6b314610204575b600080fd5b610196600480360360408110156100ea57600080fd5b81019060208101813564010000000081111561010557600080fd5b82018360208201111561011757600080fd5b8035906020019184602083028401116401000000008311171561013957600080fd5b91939092909160208101903564010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184602083028401116401000000008311171561018b57600080fd5b509092509050610339565b005b6101a06104e5565b604080516001600160a01b039092168252519081900360200190f35b6101e2600480360360208110156101d257600080fd5b50356001600160a01b0316610509565b60408051918252519081900360200190f35b6101e261051b565b6101a061053f565b6101a0610563565b6101966004803603602081101561022257600080fd5b5035610587565b6101a06106d1565b6101966004803603602081101561024757600080fd5b50356106f5565b6101966004803603604081101561026457600080fd5b508035906020013561092f565b6101966004803603602081101561028757600080fd5b5035610a82565b6101e2600480360360208110156102a457600080fd5b8101906020810181356401000000008111156102bf57600080fd5b8201836020820111156102d157600080fd5b803590602001918460208302840111640100000000831117156102f357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610ccd945050505050565b6101a0610e6b565b336001600160a01b037f000000000000000000000000e5c80a7963c0d8f4ab9c0bb8d854e47594cf939416146103a4576040805162461bcd60e51b81526020600482018190526024820152600080516020610f16833981519152604482015290519081900360640190fd5b7f0000000000000000000000000000000000000000000000000000000065375ad742106104025760405162461bcd60e51b8152600401808060200182810382526028815260200180610eee6028913960400191505060405180910390fd5b7f000000000000000000000000d3a9fe267852281a1e6307a1c37cdfd76d39b1336001600160a01b0316638733ece7858585856040518563ffffffff1660e01b81526004018080602001806020018381038352878782818152602001925060200280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b5050505050505050565b7f0000000000000000000000009f8f72aa9304c8b593d555f12ef6589cc3a579a281565b60006020819052908152604090205481565b7f0000000000000000000000000000000000000000000000000000000065375ad781565b7f000000000000000000000000d3a9fe267852281a1e6307a1c37cdfd76d39b13381565b7f000000000000000000000000a618e54de493ec29432ebd2ca7f14efbf6ac17f781565b336001600160a01b037f000000000000000000000000e5c80a7963c0d8f4ab9c0bb8d854e47594cf939416146105f2576040805162461bcd60e51b81526020600482018190526024820152600080516020610f16833981519152604482015290519081900360640190fd5b7f0000000000000000000000000000000000000000000000000000000065375ad742106106505760405162461bcd60e51b8152600401808060200182810382526028815260200180610eee6028913960400191505060405180910390fd5b7f0000000000000000000000000a3f6849f78076aefadf113f5bed87720274ddc06001600160a01b031663a69beaba826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156106b657600080fd5b505af11580156106ca573d6000803e3d6000fd5b5050505050565b7f000000000000000000000000e5c80a7963c0d8f4ab9c0bb8d854e47594cf939481565b33600090815260208190526040902054811115610759576040805162461bcd60e51b815260206004820152601f60248201527f566f746544656c65676174652f696e73756666696369656e742d7374616b6500604482015290519081900360640190fd5b3360008181526020819052604080822080548590039055805163f2d5d56b60e01b8152600481019390935260248301849052517f000000000000000000000000a618e54de493ec29432ebd2ca7f14efbf6ac17f76001600160a01b03169263f2d5d56b92604480830193919282900301818387803b1580156107da57600080fd5b505af11580156107ee573d6000803e3d6000fd5b505050507f0000000000000000000000000a3f6849f78076aefadf113f5bed87720274ddc06001600160a01b031663d8ccd0f3826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561085857600080fd5b505af115801561086c573d6000803e3d6000fd5b505060408051632dd4ea6360e21b81523360048201526024810185905290516001600160a01b037f0000000000000000000000009f8f72aa9304c8b593d555f12ef6589cc3a579a216935063b753a98c9250604480830192600092919082900301818387803b1580156108de57600080fd5b505af11580156108f2573d6000803e3d6000fd5b50506040805184815290513393507fce6c5af8fd109993cb40da4d5dc9e4dd8e61bc2e48f1e3901472141e4f56f29392509081900360200190a250565b336001600160a01b037f000000000000000000000000e5c80a7963c0d8f4ab9c0bb8d854e47594cf9394161461099a576040805162461bcd60e51b81526020600482018190526024820152600080516020610f16833981519152604482015290519081900360640190fd5b7f0000000000000000000000000000000000000000000000000000000065375ad742106109f85760405162461bcd60e51b8152600401808060200182810382526028815260200180610eee6028913960400191505060405180910390fd5b7f000000000000000000000000d3a9fe267852281a1e6307a1c37cdfd76d39b1336001600160a01b031663b384abef83836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015610a6657600080fd5b505af1158015610a7a573d6000803e3d6000fd5b505050505050565b7f0000000000000000000000000000000000000000000000000000000065375ad74210610ae05760405162461bcd60e51b8152600401808060200182810382526028815260200180610eee6028913960400191505060405180910390fd5b33600090815260208190526040902054610afa9082610e8f565b3360008181526020819052604080822093909355825163f2d5d56b60e01b815260048101929092526024820184905291517f0000000000000000000000009f8f72aa9304c8b593d555f12ef6589cc3a579a26001600160a01b03169263f2d5d56b926044808201939182900301818387803b158015610b7857600080fd5b505af1158015610b8c573d6000803e3d6000fd5b505050507f0000000000000000000000000a3f6849f78076aefadf113f5bed87720274ddc06001600160a01b031663dd467064826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610bf657600080fd5b505af1158015610c0a573d6000803e3d6000fd5b505060408051632dd4ea6360e21b81523360048201526024810185905290516001600160a01b037f000000000000000000000000a618e54de493ec29432ebd2ca7f14efbf6ac17f716935063b753a98c9250604480830192600092919082900301818387803b158015610c7c57600080fd5b505af1158015610c90573d6000803e3d6000fd5b50506040805184815290513393507f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d42792509081900360200190a250565b6000336001600160a01b037f000000000000000000000000e5c80a7963c0d8f4ab9c0bb8d854e47594cf93941614610d3a576040805162461bcd60e51b81526020600482018190526024820152600080516020610f16833981519152604482015290519081900360640190fd5b7f0000000000000000000000000000000000000000000000000000000065375ad74210610d985760405162461bcd60e51b8152600401808060200182810382526028815260200180610eee6028913960400191505060405180910390fd5b60405163ed08132960e01b81526020600482018181528451602484015284516001600160a01b037f0000000000000000000000000a3f6849f78076aefadf113f5bed87720274ddc0169363ed08132993879392839260440191808601910280838360005b83811015610e14578181015183820152602001610dfc565b5050505090500192505050602060405180830381600087803b158015610e3957600080fd5b505af1158015610e4d573d6000803e3d6000fd5b505050506040513d6020811015610e6357600080fd5b505192915050565b7f0000000000000000000000000a3f6849f78076aefadf113f5bed87720274ddc081565b80820182811015610ee7576040805162461bcd60e51b815260206004820152601960248201527f566f746544656c65676174652f6164642d6f766572666c6f7700000000000000604482015290519081900360640190fd5b9291505056fe566f746544656c65676174652f64656c65676174696f6e2d636f6e74726163742d65787069726564566f746544656c65676174652f73656e6465722d6e6f742d64656c6567617465a264697066735822122050aec0f24081032eeea71f5eb8e1b14b320c7acf1fc482c4b3803efa91704fc964736f6c634300060c0033