[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "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": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "Snapshot", "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": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "snapshotId", "type": "uint256" } ], "name": "balanceOfAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "checkpoints", "outputs": [ { "internalType": "uint32", "name": "fromTimePoint", "type": "uint32" }, { "internalType": "uint256", "name": "votes", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" } ], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "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": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "delegationNonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" }, { "internalType": "uint256", "name": "nCheckpoints", "type": "uint256" } ], "name": "getCheckpoint", "outputs": [ { "components": [ { "internalType": "uint32", "name": "fromTimePoint", "type": "uint32" }, { "internalType": "uint256", "name": "votes", "type": "uint256" } ], "internalType": "struct BaalVotes.Checkpoint", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCurrentSnapshotId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "timePoint", "type": "uint256" } ], "name": "getPastVotes", "outputs": [ { "internalType": "uint256", "name": "votes", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getVotes", "outputs": [ { "internalType": "uint256", "name": "votes", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "now", "outputs": [ { "internalType": "uint256", "name": "timePoint", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "name": "setUp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "snapshot", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "snapshotId", "type": "uint256" } ], "name": "totalSupplyAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60a06040523060601b6080523480156200001857600080fd5b506200002362000029565b620000eb565b600054610100900460ff1615620000965760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e9576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805160601c6133ef6200012660003960008181610891015281816108da01528181610c1801528181610c580152610ce701526133ef6000f3fe60806040526004361061023b5760003560e01c80635c19a95c1161012e5780639711715a116100ab578063a9059cbb1161006f578063a9059cbb14610705578063c3cda52014610725578063d505accf14610745578063dd62ed3e14610765578063f2fde38b1461078557600080fd5b80639711715a14610670578063981b24d0146106855780639ab24eb0146106a55780639dc29fac146106c5578063a457c2d7146106e557600080fd5b80637ecebe00116100f25780637ecebe00146105f45780638456cb59146106145780638abe09f2146106295780638da5cb5b1461063c57806395d89b411461065b57600080fd5b80635c19a95c146105425780635c975abb146105625780636fcfff451461057b57806370a08231146105a9578063715018a6146105df57600080fd5b80633a46b1a8116101bc5780634f1ef286116101805780634f1ef2861461049657806352d1902d146104a95780635439ad86146104be578063562d190d146104d3578063587cde1e146104f357600080fd5b80633a46b1a8146103e05780633f4ba83a1461040057806340c10f191461041557806347f761f5146104355780634ee2cd7e1461047657600080fd5b806323b872dd1161020357806323b872dd1461034d578063313ce5671461036d5780633644e515146103895780633659cfe61461039e57806339509351146103c057600080fd5b806303c8a3c61461024057806306fdde0314610281578063095ea7b3146102a35780630cdfebfa146102d357806318160ddd14610338575b600080fd5b34801561024c57600080fd5b5061026e61025b366004612eb7565b6101036020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561028d57600080fd5b506102966107a5565b6040516102789190613137565b3480156102af57600080fd5b506102c36102be36600461300d565b610837565b6040519015158152602001610278565b3480156102df57600080fd5b5061031c6102ee36600461300d565b6101006020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff9093168352602083019190915201610278565b34801561034457600080fd5b5060355461026e565b34801561035957600080fd5b506102c3610368366004612f05565b610851565b34801561037957600080fd5b5060405160128152602001610278565b34801561039557600080fd5b5061026e610877565b3480156103aa57600080fd5b506103be6103b9366004612eb7565b610886565b005b3480156103cc57600080fd5b506102c36103db36600461300d565b61096f565b3480156103ec57600080fd5b5061026e6103fb36600461300d565b610991565b34801561040c57600080fd5b506103be610ad2565b34801561042157600080fd5b506103be61043036600461300d565b610ae4565b34801561044157600080fd5b5061045561045036600461300d565b610b60565b60408051825163ffffffff1681526020928301519281019290925201610278565b34801561048257600080fd5b5061026e61049136600461300d565b610bb3565b6103be6104a4366004612fab565b610c0d565b3480156104b557600080fd5b5061026e610cda565b3480156104ca57600080fd5b5061026e610d8d565b3480156104df57600080fd5b506103be6104ee3660046130a8565b610d97565b3480156104ff57600080fd5b5061052a61050e366004612eb7565b610102602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610278565b34801561054e57600080fd5b506103be61055d366004612eb7565b610fa2565b34801561056e57600080fd5b506101685460ff166102c3565b34801561058757600080fd5b5061026e610596366004612eb7565b6101016020526000908152604090205481565b3480156105b557600080fd5b5061026e6105c4366004612eb7565b6001600160a01b031660009081526033602052604090205490565b3480156105eb57600080fd5b506103be610fac565b34801561060057600080fd5b5061026e61060f366004612eb7565b610fbe565b34801561062057600080fd5b506103be610fdc565b34801561063557600080fd5b504261026e565b34801561064857600080fd5b50610136546001600160a01b031661052a565b34801561066757600080fd5b50610296610fec565b34801561067c57600080fd5b5061026e610ffb565b34801561069157600080fd5b5061026e6106a0366004613102565b61100d565b3480156106b157600080fd5b5061026e6106c0366004612eb7565b611039565b3480156106d157600080fd5b506103be6106e036600461300d565b611077565b3480156106f157600080fd5b506102c361070036600461300d565b611089565b34801561071157600080fd5b506102c361072036600461300d565b61110f565b34801561073157600080fd5b506103be610740366004613037565b61111d565b34801561075157600080fd5b506103be610760366004612f41565b611313565b34801561077157600080fd5b5061026e610780366004612ed2565b611477565b34801561079157600080fd5b506103be6107a0366004612eb7565b6114a2565b6060603680546107b4906132ca565b80601f01602080910402602001604051908101604052809291908181526020018280546107e0906132ca565b801561082d5780601f106108025761010080835404028352916020019161082d565b820191906000526020600020905b81548152906001019060200180831161081057829003601f168201915b5050505050905090565b600033610845818585611518565b60019150505b92915050565b60003361085f85828561163c565b61086a8585856116b6565b60019150505b9392505050565b600061088161186c565b905090565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156108d85760405162461bcd60e51b81526004016108cf9061316a565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610921600080516020613373833981519152546001600160a01b031690565b6001600160a01b0316146109475760405162461bcd60e51b81526004016108cf906131b6565b610950816118a3565b6040805160008082526020820190925261096c918391906118ab565b50565b6000336108458185856109828383611477565b61098c919061324d565b611518565b60004282106109d05760405162461bcd60e51b815260206004820152600b60248201526a0859195d195c9b5a5b995960aa1b60448201526064016108cf565b6001600160a01b03831660009081526101016020526040902054806109f957600091505061084b565b82610a078560018403610b60565b5163ffffffff1611610a2c57610a208460018303610b60565b6020015191505061084b565b82610a38856000610b60565b5163ffffffff161115610a4f57600091505061084b565b600060001982015b81811115610aba5760028282030481036000610a738883610b60565b805190915063ffffffff16871415610a955760200151945061084b9350505050565b805163ffffffff16871115610aac57819350610ab3565b6001820392505b5050610a57565b610ac48683610b60565b602001519695505050505050565b610ada611a25565b610ae2611a80565b565b610aec611a25565b610af96002600019613265565b81610b0360355490565b610b0d919061324d565b1115610b525760405162461bcd60e51b81526020600482015260146024820152731cda185c995cce8818d85c08195e18d95959195960621b60448201526064016108cf565b610b5c8282611ad3565b5050565b604080518082018252600080825260209182018190526001600160a01b039490941684526101008152818420928452918252918290208251808401909352805463ffffffff168352600101549082015290565b6001600160a01b03821660009081526101046020526040812081908190610bdb908590611ba0565b9150915081610c02576001600160a01b038516600090815260336020526040902054610c04565b805b95945050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610c565760405162461bcd60e51b81526004016108cf9061316a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c9f600080516020613373833981519152546001600160a01b031690565b6001600160a01b031614610cc55760405162461bcd60e51b81526004016108cf906131b6565b610cce826118a3565b610b5c828260016118ab565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d7a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108cf565b5060008051602061337383398151915290565b6000610881611c97565b600054610100900460ff1615808015610db75750600054600160ff909116105b80610dd15750303b158015610dd1575060005460ff166001145b610e345760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108cf565b6000805460ff191660011790558015610e57576000805461ff0019166101001790555b8251610e9a5760405162461bcd60e51b81526020600482015260126024820152717368617265733a206e616d6520656d70747960701b60448201526064016108cf565b8151610edf5760405162461bcd60e51b81526020600482015260146024820152737368617265733a2073796d626f6c20656d70747960601b60448201526064016108cf565b610ee98383611ca3565b610ef283611cd4565b610efa611d1e565b610f02611d4d565b610f0a611d74565b610f12611d4d565b610f576040518060400160405280600a8152602001693232b632b3b0ba34b7b760b11b815250604051806040016040528060018152602001600d60fa1b815250611da3565b8015610f9d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61096c3382611dd4565b610fb4611a25565b610ae26000611ecb565b6001600160a01b03811660009081526099602052604081205461084b565b610fe4611a25565b610ae2611f1e565b6060603780546107b4906132ca565b6000611005611a25565b610881611f5c565b600080600061101e84610105611ba0565b915091508161102f57603554611031565b805b949350505050565b6001600160a01b038116600090815261010160205260408120548061105f576000610870565b61106c8360018303610b60565b602001519392505050565b61107f611a25565b610b5c8282611fb7565b600033816110978286611477565b9050838110156110f75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108cf565b6111048286868403611518565b506001949350505050565b6000336108458185856116b6565b8342111561116d5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016108cf565b600061121661120e7f0e3bc21ca2be03aeeee0e614bfe98f970c96a05a768f627c50ab81764cb5026861119e6107a5565b6040516020016111ae919061311b565b60408051601f198184030181528282528051602091820120908301939093528101919091526001600160a01b038a1660608201526080810189905260a0810188905260c001604051602081830303815290604052805190602001206120f7565b858585612145565b90506001600160a01b03811661126e5760405162461bcd60e51b815260206004820181905260248201527f4552433230566f7465733a20696e76616c6964207369676e657220283078302960448201526064016108cf565b6001600160a01b0381166000908152610103602052604090205486146112d65760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016108cf565b6001600160a01b0381166000908152610103602052604081208054916112fb836132ff565b919050555061130a8188611dd4565b50505050505050565b834211156113635760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016108cf565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886113928c61216d565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006113ed82612195565b905060006113fd82878787612145565b9050896001600160a01b0316816001600160a01b0316146114605760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016108cf565b61146b8a8a8a611518565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6114aa611a25565b6001600160a01b03811661150f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108cf565b61096c81611ecb565b6001600160a01b03831661157a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108cf565b6001600160a01b0382166115db5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108cf565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006116488484611477565b905060001981146116b057818110156116a35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108cf565b6116b08484848403611518565b50505050565b6001600160a01b03831661171a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108cf565b6001600160a01b03821661177c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108cf565b6117878383836121a2565b6001600160a01b038316600090815260336020526040902054818110156117ff5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108cf565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061185f9086815260200190565b60405180910390a36116b0565b60006108817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61189b60655490565b606654612233565b61096c611a25565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156118de57610f9d8361227c565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561191757600080fd5b505afa925050508015611947575060408051601f3d908101601f191682019092526119449181019061308f565b60015b6119aa5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108cf565b6000805160206133738339815191528114611a195760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108cf565b50610f9d838383612318565b610136546001600160a01b03163314610ae25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108cf565b611a8861233d565b610168805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216611b295760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016108cf565b611b35600083836121a2565b8060356000828254611b47919061324d565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60008060008411611bec5760405162461bcd60e51b815260206004820152601660248201527504552433230536e617073686f743a20696420697320360541b60448201526064016108cf565b611bf4611c97565b841115611c435760405162461bcd60e51b815260206004820152601d60248201527f4552433230536e617073686f743a206e6f6e6578697374656e7420696400000060448201526064016108cf565b6000611c4f8486612387565b8454909150811415611c68576000809250925050611c90565b6001846001018281548110611c7f57611c7f613346565b906000526020600020015492509250505b9250929050565b60006108816101075490565b600054610100900460ff16611cca5760405162461bcd60e51b81526004016108cf90613202565b610b5c8282612432565b600054610100900460ff16611cfb5760405162461bcd60e51b81526004016108cf90613202565b61096c81604051806040016040528060018152602001603160f81b815250612480565b600054610100900460ff16611d455760405162461bcd60e51b81526004016108cf90613202565b610ae26124c1565b600054610100900460ff16610ae25760405162461bcd60e51b81526004016108cf90613202565b600054610100900460ff16611d9b5760405162461bcd60e51b81526004016108cf90613202565b610ae26124f5565b600054610100900460ff16611dca5760405162461bcd60e51b81526004016108cf90613202565b610b5c8282612525565b6001600160a01b03821660009081526033602052604081205411611e245760405162461bcd60e51b81526020600482015260076024820152662173686172657360c81b60448201526064016108cf565b6001600160a01b0380831660009081526101026020526040902080548383166001600160a01b031982161790915516611e7c8183611e77866001600160a01b031660009081526033602052604090205490565b612566565b816001600160a01b0316816001600160a01b0316846001600160a01b03167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4505050565b61013680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611f2661264a565b610168805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611ab63390565b6000611f6d61010780546001019055565b6000611f77611c97565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb6781604051611faa91815260200190565b60405180910390a1919050565b6001600160a01b0382166120175760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108cf565b612023826000836121a2565b6001600160a01b038216600090815260336020526040902054818110156120975760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108cf565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600061084b612104612691565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000612156878787876126c8565b915091506121638161278c565b5095945050505050565b6001600160a01b03811660009081526099602052604090208054600181018255905b50919050565b600061084b61210461186c565b6121ad8383836128da565b6001600160a01b03831615806121e05750610136546001600160a01b0316331480156121e057506001600160a01b038216155b806121ef57506101685460ff16155b610f9d5760405162461bcd60e51b81526020600482015260156024820152747368617265733a20217472616e7366657261626c6560581b60448201526064016108cf565b6040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6001600160a01b0381163b6122e95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108cf565b60008051602061337383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6123218361292d565b60008251118061232e5750805b15610f9d576116b0838361296d565b6101685460ff16610ae25760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016108cf565b81546000906123985750600061084b565b82546000905b808210156123e55760006123b28383612a58565b600087815260209020909150859082015411156123d1578091506123df565b6123dc81600161324d565b92505b5061239e565b60008211801561241157508361240e86612400600186613287565b600091825260209091200190565b54145b1561242a57612421600183613287565b9250505061084b565b50905061084b565b600054610100900460ff166124595760405162461bcd60e51b81526004016108cf90613202565b815161246c906036906020850190612d60565b508051610f9d906037906020840190612d60565b600054610100900460ff166124a75760405162461bcd60e51b81526004016108cf90613202565b815160209283012081519190920120606591909155606655565b600054610100900460ff166124e85760405162461bcd60e51b81526004016108cf90613202565b610168805460ff19169055565b600054610100900460ff1661251c5760405162461bcd60e51b81526004016108cf90613202565b610ae233611ecb565b600054610100900460ff1661254c5760405162461bcd60e51b81526004016108cf90613202565b81516020928301208151919092012060cc9190915560cd55565b816001600160a01b0316836001600160a01b03161415801561258757508015155b15610f9d576001600160a01b038316156125e9576001600160a01b0383166000908152610101602052604081205490816125c25760006125d4565b6125cf8560018403610b60565b602001515b90508281036125e586848484612a73565b5050505b6001600160a01b03821615610f9d576001600160a01b03821660009081526101016020526040812054908161261f576000612631565b61262c8460018403610b60565b602001515b905082810161264285848484612a73565b505050505050565b6101685460ff1615610ae25760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016108cf565b60006108817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6126c060cc5490565b60cd54612233565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156126ff5750600090506003612783565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612753573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661277c57600060019250925050612783565b9150600090505b94509492505050565b60008160048111156127a0576127a0613330565b14156127a95750565b60018160048111156127bd576127bd613330565b141561280b5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016108cf565b600281600481111561281f5761281f613330565b141561286d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016108cf565b600381600481111561288157612881613330565b141561096c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016108cf565b6128e5838383612b9c565b6001600160a01b038316612904576128fc82612c48565b610f9d612c7c565b6001600160a01b03821661291b576128fc83612c48565b61292483612c48565b610f9d82612c48565b6129368161227c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6129d55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108cf565b600080846001600160a01b0316846040516129f0919061311b565b600060405180830381855af49150503d8060008114612a2b576040519150601f19603f3d011682016040523d82523d6000602084013e612a30565b606091505b5091509150610c04828260405180606001604052806027815260200161339360279139612c8b565b6000612a676002848418613265565b6108709084841661324d565b428315801590612ab357506001600160a01b0385166000908152610100602090815260408083206000198801845290915290205463ffffffff8281169116145b15612aeb576001600160a01b038516600090815261010060209081526040808320600019880184529091529020600101829055612b51565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a16600081815261010084528681208b825284528681209551865463ffffffff191695169490941785559051600194850155825261010190529190912090850190555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b6001600160a01b038216600090815260336020526040902054158015612bd957506001600160a01b03821660009081526101016020526040902054155b8015612be55750600081115b15612c15576001600160a01b03821660008181526101026020526040902080546001600160a01b03191690911790555b6001600160a01b0380841660009081526101026020526040808220548584168352912054610f9d92918216911683612566565b6001600160a01b03811660009081526101046020908152604080832060339092529091205461096c9190612ca4565b612ca4565b610ae2610105612c7760355490565b60608315612c9a575081610870565b6108708383612cee565b6000612cae611c97565b905080612cba84612d18565b1015610f9d578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b815115612cfe5781518083602001fd5b8060405162461bcd60e51b81526004016108cf9190613137565b8054600090612d2957506000919050565b81548290612d3990600190613287565b81548110612d4957612d49613346565b90600052602060002001549050919050565b919050565b828054612d6c906132ca565b90600052602060002090601f016020900481019282612d8e5760008555612dd4565b82601f10612da757805160ff1916838001178555612dd4565b82800160010185558215612dd4579182015b82811115612dd4578251825591602001919060010190612db9565b50612de0929150612de4565b5090565b5b80821115612de05760008155600101612de5565b600067ffffffffffffffff80841115612e1457612e1461335c565b604051601f8501601f19908116603f01168101908282118183101715612e3c57612e3c61335c565b81604052809350858152868686011115612e5557600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114612d5b57600080fd5b600082601f830112612e9757600080fd5b61087083833560208501612df9565b803560ff81168114612d5b57600080fd5b600060208284031215612ec957600080fd5b61087082612e6f565b60008060408385031215612ee557600080fd5b612eee83612e6f565b9150612efc60208401612e6f565b90509250929050565b600080600060608486031215612f1a57600080fd5b612f2384612e6f565b9250612f3160208501612e6f565b9150604084013590509250925092565b600080600080600080600060e0888a031215612f5c57600080fd5b612f6588612e6f565b9650612f7360208901612e6f565b95506040880135945060608801359350612f8f60808901612ea6565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215612fbe57600080fd5b612fc783612e6f565b9150602083013567ffffffffffffffff811115612fe357600080fd5b8301601f81018513612ff457600080fd5b61300385823560208401612df9565b9150509250929050565b6000806040838503121561302057600080fd5b61302983612e6f565b946020939093013593505050565b60008060008060008060c0878903121561305057600080fd5b61305987612e6f565b9550602087013594506040870135935061307560608801612ea6565b92506080870135915060a087013590509295509295509295565b6000602082840312156130a157600080fd5b5051919050565b600080604083850312156130bb57600080fd5b823567ffffffffffffffff808211156130d357600080fd5b6130df86838701612e86565b935060208501359150808211156130f557600080fd5b5061300385828601612e86565b60006020828403121561311457600080fd5b5035919050565b6000825161312d81846020870161329e565b9190910192915050565b602081526000825180602084015261315681604085016020870161329e565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082198211156132605761326061331a565b500190565b60008261328257634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156132995761329961331a565b500390565b60005b838110156132b95781810151838201526020016132a1565b838111156116b05750506000910152565b600181811c908216806132de57607f821691505b6020821081141561218f57634e487b7160e01b600052602260045260246000fd5b60006000198214156133135761331361331a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200d1020c104d072d10e2125586128096b7567b61064dc9301fdd4980fc317d26464736f6c63430008070033