[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fromDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toDelegate", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "previousBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newBalance", "type": "uint256" } ], "name": "DelegateVotesChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "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" }, { "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": "uint32", "name": "pos", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "components": [ { "internalType": "uint32", "name": "fromBlock", "type": "uint32" }, { "internalType": "uint224", "name": "votes", "type": "uint224" } ], "internalType": "struct ERC20Votes.Checkpoint", "name": "", "type": "tuple" } ], "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": "account", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getVotes", "outputs": [ { "internalType": "uint256", "name": "", "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": [], "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": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "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": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "snapshot", "outputs": [], "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" } ]
6101406040523480156200001257600080fd5b506040518060400160405280600981526020016829b7bb32b932b4b3b760b91b81525080604051806040016040528060018152602001603160f81b8152506040518060400160405280600981526020016829b7bb32b932b4b3b760b91b8152506040518060400160405280600381526020016229ab2160e91b8152508160039080519060200190620000a6929190620009ff565b508051620000bc906004906020840190620009ff565b505050620000d9620000d3620001a560201b60201c565b620001a9565b6009805460ff60a01b19169055815160209283012081519183019190912060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818801819052818301969096526060810194909452608080850193909352308483018190528151808603909301835260c09485019091528151919095012090529190915261012052506200019f33620001896012600a62000bae565b62000199906305f5e10062000bbf565b620001fb565b62000c69565b3390565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200021282826200021660201b62000d091760201c565b5050565b6200022d8282620002cd60201b62000d991760201c565b6001600160e01b0362000241620003ca8216565b1115620002ae5760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084015b60405180910390fd5b620002c7600e62000e90620003d060201b1783620003e7565b50505050565b6001600160a01b038216620003255760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620002a5565b620003336000838362000599565b806002600082825462000347919062000be1565b90915550506001600160a01b038216600090815260208190526040812080548392906200037690849062000be1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362000212600083836200060c565b60025490565b6000620003de828462000be1565b90505b92915050565b8254600090819080156200043957856200040360018362000bfc565b8154811062000416576200041662000c16565b60009182526020909120015464010000000090046001600160e01b03166200043c565b60005b6001600160e01b031692506200045383858760201c565b915060008111801562000497575043866200047060018462000bfc565b8154811062000483576200048362000c16565b60009182526020909120015463ffffffff16145b156200050b57620004b3826200062460201b62000e9c1760201c565b86620004c160018462000bfc565b81548110620004d457620004d462000c16565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b0316021790555062000590565b8560405180604001604052806200052d436200069360201b62000f091760201c565b63ffffffff1681526020016200054e856200062460201b62000e9c1760201c565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b620005ad600954600160a01b900460ff1690565b15620005ef5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401620002a5565b62000607838383620006fa60201b62000f6e1760201c565b505050565b620006078383836200076660201b62000fbb1760201c565b60006001600160e01b038211156200068f5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401620002a5565b5090565b600063ffffffff8211156200068f5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401620002a5565b620007128383836200060760201b62000f8d1760201c565b6001600160a01b03831662000736576200072c82620007b2565b62000607620007ea565b6001600160a01b03821662000750576200072c83620007b2565b6200075b83620007b2565b6200060782620007b2565b6200077e8383836200060760201b62000f8d1760201c565b6001600160a01b038381166000908152600c60205260408082205485841683529120546200060792918216911683620007fc565b6001600160a01b03811660009081526005602090815260408083209183905290912054620007e7919062000937565b62000937565b50565b620007fa6006620007e160025490565b565b816001600160a01b0316836001600160a01b0316141580156200081f5750600081115b1562000607576001600160a01b03831615620008ac576001600160a01b0383166000908152600d602090815260408220829162000869919062000986901b62000fed1785620003e7565b91509150846001600160a01b0316600080516020620030eb8339815191528383604051620008a1929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161562000607576001600160a01b0382166000908152600d6020908152604082208291620008f09190620003d0901b62000e901785620003e7565b91509150836001600160a01b0316600080516020620030eb833981519152838360405162000928929190918252602082015260400190565b60405180910390a25050505050565b60006200094362000994565b9050806200095184620009b2565b101562000607578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b6000620003de828462000bfc565b6000620009ad6008620009fb60201b62000ff91760201c565b905090565b8054600090620009c457506000919050565b81548290620009d69060019062000bfc565b81548110620009e957620009e962000c16565b90600052602060002001549050919050565b5490565b82805462000a0d9062000c2c565b90600052602060002090601f01602090048101928262000a31576000855562000a7c565b82601f1062000a4c57805160ff191683800117855562000a7c565b8280016001018555821562000a7c579182015b8281111562000a7c57825182559160200191906001019062000a5f565b506200068f9291505b808211156200068f576000815560010162000a85565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000af257816000190482111562000ad65762000ad662000a9b565b8085161562000ae457918102915b93841c939080029062000ab6565b509250929050565b60008262000b0b57506001620003e1565b8162000b1a57506000620003e1565b816001811462000b33576002811462000b3e5762000b5e565b6001915050620003e1565b60ff84111562000b525762000b5262000a9b565b50506001821b620003e1565b5060208310610133831016604e8410600b841016171562000b83575081810a620003e1565b62000b8f838362000ab1565b806000190482111562000ba65762000ba662000a9b565b029392505050565b6000620003de60ff84168362000afa565b600081600019048311821515161562000bdc5762000bdc62000a9b565b500290565b6000821982111562000bf75762000bf762000a9b565b500190565b60008282101562000c115762000c1162000a9b565b500390565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168062000c4157607f821691505b6020821081141562000c6357634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e051610100516101205161243262000cb960003960006113fe0152600061144d0152600061142801526000611381015260006113ab015260006113d501526124326000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063715018a61161010f5780639ab24eb0116100a2578063d505accf11610071578063d505accf1461041a578063dd62ed3e1461042d578063f1127ed814610440578063f2fde38b1461047d57600080fd5b80639ab24eb0146103ce578063a457c2d7146103e1578063a9059cbb146103f4578063c3cda5201461040757600080fd5b80638e539e8c116100de5780638e539e8c1461039857806395d89b41146103ab5780639711715a146103b3578063981b24d0146103bb57600080fd5b8063715018a6146103645780637ecebe001461036c5780638456cb591461037f5780638da5cb5b1461038757600080fd5b80633a46b1a8116101875780635c19a95c116101565780635c19a95c146102ee5780635c975abb146103015780636fcfff451461031357806370a082311461033b57600080fd5b80633a46b1a81461027a5780633f4ba83a1461028d5780634ee2cd7e14610297578063587cde1e146102aa57600080fd5b806323b872dd116101c357806323b872dd1461023d578063313ce567146102505780633644e5151461025f578063395093511461026757600080fd5b806306fdde03146101ea578063095ea7b31461020857806318160ddd1461022b575b600080fd5b6101f2610490565b6040516101ff91906120b3565b60405180910390f35b61021b61021636600461211f565b610522565b60405190151581526020016101ff565b6002545b6040519081526020016101ff565b61021b61024b366004612149565b61053c565b604051601281526020016101ff565b61022f610560565b61021b61027536600461211f565b61056f565b61022f61028836600461211f565b610591565b610295610610565b005b61022f6102a536600461211f565b610644565b6102d66102b8366004612185565b6001600160a01b039081166000908152600c60205260409020541690565b6040516001600160a01b0390911681526020016101ff565b6102956102fc366004612185565b61069d565b600954600160a01b900460ff1661021b565b610326610321366004612185565b6106aa565b60405163ffffffff90911681526020016101ff565b61022f610349366004612185565b6001600160a01b031660009081526020819052604090205490565b6102956106cc565b61022f61037a366004612185565b610700565b61029561071e565b6009546001600160a01b03166102d6565b61022f6103a63660046121a0565b610750565b6101f26107ac565b6102956107bb565b61022f6103c93660046121a0565b6107ed565b61022f6103dc366004612185565b610818565b61021b6103ef36600461211f565b61089f565b61021b61040236600461211f565b61091a565b6102956104153660046121ca565b610928565b610295610428366004612222565b610a5e565b61022f61043b36600461228c565b610bc2565b61045361044e3660046122bf565b610bed565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016101ff565b61029561048b366004612185565b610c71565b60606003805461049f906122ff565b80601f01602080910402602001604051908101604052809291908181526020018280546104cb906122ff565b80156105185780601f106104ed57610100808354040283529160200191610518565b820191906000526020600020905b8154815290600101906020018083116104fb57829003601f168201915b5050505050905090565b600033610530818585610ffd565b60019150505b92915050565b60003361054a858285611121565b610555858585611195565b506001949350505050565b600061056a611374565b905090565b6000336105308185856105828383610bc2565b61058c919061234a565b610ffd565b60004382106105e75760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064015b60405180910390fd5b6001600160a01b0383166000908152600d60205260409020610609908361149b565b9392505050565b6009546001600160a01b0316331461063a5760405162461bcd60e51b81526004016105de90612362565b610642611558565b565b6001600160a01b03821660009081526005602052604081208190819061066b9085906115f5565b9150915081610692576001600160a01b038516600090815260208190526040902054610694565b805b95945050505050565b6106a733826116ec565b50565b6001600160a01b0381166000908152600d602052604081205461053690610f09565b6009546001600160a01b031633146106f65760405162461bcd60e51b81526004016105de90612362565b6106426000611765565b6001600160a01b0381166000908152600a6020526040812054610536565b6009546001600160a01b031633146107485760405162461bcd60e51b81526004016105de90612362565b6106426117b7565b60004382106107a15760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064016105de565b610536600e8361149b565b60606004805461049f906122ff565b6009546001600160a01b031633146107e55760405162461bcd60e51b81526004016105de90612362565b6106a761183f565b60008060006107fd8460066115f5565b915091508161080e57600254610810565b805b949350505050565b6001600160a01b0381166000908152600d6020526040812054801561088c576001600160a01b0383166000908152600d6020526040902061085a600183612397565b8154811061086a5761086a6123ae565b60009182526020909120015464010000000090046001600160e01b031661088f565b60005b6001600160e01b03169392505050565b600033816108ad8286610bc2565b90508381101561090d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105de565b6105558286868403610ffd565b600033610530818585611195565b834211156109785760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016105de565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906109f2906109ea9060a00160405160208183030381529060405280519060200120611899565b8585856118e7565b90506109fd8161190f565b8614610a4b5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016105de565b610a5581886116ec565b50505050505050565b83421115610aae5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016105de565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610add8c61190f565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610b3882611899565b90506000610b48828787876118e7565b9050896001600160a01b0316816001600160a01b031614610bab5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016105de565b610bb68a8a8a610ffd565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60408051808201909152600080825260208201526001600160a01b0383166000908152600d60205260409020805463ffffffff8416908110610c3157610c316123ae565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b6009546001600160a01b03163314610c9b5760405162461bcd60e51b81526004016105de90612362565b6001600160a01b038116610d005760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105de565b6106a781611765565b610d138282610d99565b6002546001600160e01b031015610d855760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016105de565b610d93600e610e9083611937565b50505050565b6001600160a01b038216610def5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105de565b610dfb60008383611ab0565b8060026000828254610e0d919061234a565b90915550506001600160a01b03821660009081526020819052604081208054839290610e3a90849061234a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3610e8c60008383611b08565b5050565b6000610609828461234a565b60006001600160e01b03821115610f055760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016105de565b5090565b600063ffffffff821115610f055760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105de565b6001600160a01b038316610f9257610f8582611b13565b610f8d611b45565b505050565b6001600160a01b038216610fa957610f8583611b13565b610fb283611b13565b610f8d82611b13565b6001600160a01b038381166000908152600c6020526040808220548584168352912054610f8d92918216911683611b53565b60006106098284612397565b5490565b6001600160a01b03831661105f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105de565b6001600160a01b0382166110c05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105de565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061112d8484610bc2565b90506000198114610d9357818110156111885760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105de565b610d938484848403610ffd565b6001600160a01b0383166111f95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105de565b6001600160a01b03821661125b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105de565b611266838383611ab0565b6001600160a01b038316600090815260208190526040902054818110156112de5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105de565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061131590849061234a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161136191815260200190565b60405180910390a3610d93848484611b08565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156113cd57507f000000000000000000000000000000000000000000000000000000000000000046145b156113f757507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b8154600090815b818110156114ff5760006114b68284611c90565b9050848682815481106114cb576114cb6123ae565b60009182526020909120015463ffffffff1611156114eb578092506114f9565b6114f681600161234a565b91505b506114a2565b81156115435784611511600184612397565b81548110611521576115216123ae565b60009182526020909120015464010000000090046001600160e01b0316611546565b60005b6001600160e01b031695945050505050565b600954600160a01b900460ff166115a85760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105de565b6009805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080600084116116415760405162461bcd60e51b815260206004820152601660248201527504552433230536e617073686f743a20696420697320360541b60448201526064016105de565b611649611cab565b8411156116985760405162461bcd60e51b815260206004820152601d60248201527f4552433230536e617073686f743a206e6f6e6578697374656e7420696400000060448201526064016105de565b60006116a48486611cb6565b84549091508114156116bd5760008092509250506116e5565b60018460010182815481106116d4576116d46123ae565b906000526020600020015492509250505b9250929050565b6001600160a01b038281166000818152600c60208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610d93828483611b53565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600954600160a01b900460ff16156118045760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105de565b6009805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586115d83390565b600061184f600880546001019055565b6000611859611cab565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb678160405161188c91815260200190565b60405180910390a1919050565b60006105366118a6611374565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006118f887878787611d79565b9150915061190581611e66565b5095945050505050565b6001600160a01b0381166000908152600a602052604090208054600181018255905b50919050565b8254600090819080156119825785611950600183612397565b81548110611960576119606123ae565b60009182526020909120015464010000000090046001600160e01b0316611985565b60005b6001600160e01b0316925061199e83858763ffffffff16565b91506000811180156119dc575043866119b8600184612397565b815481106119c8576119c86123ae565b60009182526020909120015463ffffffff16145b15611a3c576119ea82610e9c565b866119f6600184612397565b81548110611a0657611a066123ae565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550611aa7565b856040518060400160405280611a5143610f09565b63ffffffff168152602001611a6585610e9c565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b600954600160a01b900460ff1615611afd5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105de565b610f8d838383610f6e565b610f8d838383610fbb565b6001600160a01b038116600090815260056020908152604080832091839052909120546106a79190612021565b612021565b6106426006611b4060025490565b816001600160a01b0316836001600160a01b031614158015611b755750600081115b15610f8d576001600160a01b03831615611c03576001600160a01b0383166000908152600d602052604081208190611bb090610fed85611937565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611bf8929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610f8d576001600160a01b0382166000908152600d602052604081208190611c3990610e9085611937565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611c81929190918252602082015260400190565b60405180910390a25050505050565b6000611c9f60028484186123c4565b6106099084841661234a565b600061056a60085490565b8154600090611cc757506000610536565b82546000905b80821015611d23576000611ce18383611c90565b905084868281548110611cf657611cf66123ae565b90600052602060002001541115611d0f57809150611d1d565b611d1a81600161234a565b92505b50611ccd565b600082118015611d5857508385611d3b600185612397565b81548110611d4b57611d4b6123ae565b9060005260206000200154145b15611d7157611d68600183612397565b92505050610536565b509050610536565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611db05750600090506003611e5d565b8460ff16601b14158015611dc857508460ff16601c14155b15611dd95750600090506004611e5d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611e2d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611e5657600060019250925050611e5d565b9150600090505b94509492505050565b6000816004811115611e7a57611e7a6123e6565b1415611e835750565b6001816004811115611e9757611e976123e6565b1415611ee55760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016105de565b6002816004811115611ef957611ef96123e6565b1415611f475760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105de565b6003816004811115611f5b57611f5b6123e6565b1415611fb45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105de565b6004816004811115611fc857611fc86123e6565b14156106a75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016105de565b600061202b611cab565b9050806120378461206b565b1015610f8d578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b805460009061207c57506000919050565b8154829061208c90600190612397565b8154811061209c5761209c6123ae565b90600052602060002001549050919050565b919050565b600060208083528351808285015260005b818110156120e0578581018301518582016040015282016120c4565b818111156120f2576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146120ae57600080fd5b6000806040838503121561213257600080fd5b61213b83612108565b946020939093013593505050565b60008060006060848603121561215e57600080fd5b61216784612108565b925061217560208501612108565b9150604084013590509250925092565b60006020828403121561219757600080fd5b61060982612108565b6000602082840312156121b257600080fd5b5035919050565b803560ff811681146120ae57600080fd5b60008060008060008060c087890312156121e357600080fd5b6121ec87612108565b95506020870135945060408701359350612208606088016121b9565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561223d57600080fd5b61224688612108565b965061225460208901612108565b95506040880135945060608801359350612270608089016121b9565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561229f57600080fd5b6122a883612108565b91506122b660208401612108565b90509250929050565b600080604083850312156122d257600080fd5b6122db83612108565b9150602083013563ffffffff811681146122f457600080fd5b809150509250929050565b600181811c9082168061231357607f821691505b6020821081141561193157634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561235d5761235d612334565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000828210156123a9576123a9612334565b500390565b634e487b7160e01b600052603260045260246000fd5b6000826123e157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220942ee71e36d35e37c077118e2fb0ff989650abcafa122bd0d8f79adc9ffd464564736f6c634300080b0033dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724