UNPKG

@hypernetlabs/objects

Version:
597 lines 51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = { _format: "hh-sol-artifact-1", contractName: "Hypertoken", sourceName: "contracts/governance/Hypertoken.sol", abi: [ { 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: "from", type: "address", }, { indexed: true, internalType: "address", name: "to", type: "address", }, { indexed: false, internalType: "uint256", name: "value", type: "uint256", }, ], name: "Transfer", 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: "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: [ { 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: "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: "address", name: "recipient", type: "address", }, { internalType: "uint256", name: "amount", type: "uint256", }, ], name: "transfer", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "sender", type: "address", }, { internalType: "address", name: "recipient", type: "address", }, { internalType: "uint256", name: "amount", type: "uint256", }, ], name: "transferFrom", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "nonpayable", type: "function", }, ], bytecode: "0x6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610120523480156200003757600080fd5b506040518060400160405280600a815260200169243cb832b93a37b5b2b760b11b81525080604051806040016040528060018152602001603160f81b8152506040518060400160405280600a815260200169243cb832b93a37b5b2b760b11b815250604051806040016040528060018152602001600960fb1b8152508160039080519060200190620000cb929190620007c2565b508051620000e1906004906020840190620007c2565b5050825160209384012082519284019290922060c083815260e08290524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818a01819052818301989098526060810195909552608080860193909352308583015280518086039092018252939092019092528051940193909320909252610100525062000198905033620001826012600a620008c2565b62000192906305f5e10062000981565b6200019e565b62000a10565b620001b58282620001b960201b62000ad81760201c565b5050565b620001d082826200027060201b62000b681760201c565b6001600160e01b03620001e46200035f8216565b1115620002515760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084015b60405180910390fd5b6200026a600862000c536200036560201b17836200037c565b50505050565b6001600160a01b038216620002c85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000248565b8060026000828254620002dc91906200085e565b90915550506001600160a01b038216600090815260208190526040812080548392906200030b9084906200085e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620001b56000838362000557565b60025490565b60006200037382846200085e565b90505b92915050565b825460009081908015620003da578562000398600183620009a3565b81548110620003b757634e487b7160e01b600052603260045260246000fd5b60009182526020909120015464010000000090046001600160e01b0316620003dd565b60005b6001600160e01b03169250620003f483858760201c565b9150600081118015620004445750438662000411600184620009a3565b815481106200043057634e487b7160e01b600052603260045260246000fd5b60009182526020909120015463ffffffff16145b15620004c45762000460826200056f60201b62000c5f1760201c565b866200046e600184620009a3565b815481106200048d57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b0316021790555062000549565b856040518060400160405280620004e643620005de60201b62000ccc1760201c565b63ffffffff16815260200162000507856200056f60201b62000c5f1760201c565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b505050565b620005528383836200064560201b62000d311760201c565b60006001600160e01b03821115620005da5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840162000248565b5090565b600063ffffffff821115620005da5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840162000248565b6200065d8383836200055260201b62000d631760201c565b6001600160a01b0383811660009081526006602052604080822054858416835291205462000552929182169116838183148015906200069c5750600081115b1562000552576001600160a01b0383161562000729576001600160a01b038316600090815260076020908152604082208291620006e69190620007b4901b62000d6817856200037c565b91509150846001600160a01b0316600080516020620026b983398151915283836040516200071e929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161562000552576001600160a01b0382166000908152600760209081526040822082916200076d919062000365901b62000c5317856200037c565b91509150836001600160a01b0316600080516020620026b98339815191528383604051620007a5929190918252602082015260400190565b60405180910390a25050505050565b6000620003738284620009a3565b828054620007d090620009bd565b90600052602060002090601f016020900481019282620007f457600085556200083f565b82601f106200080f57805160ff19168380011785556200083f565b828001600101855582156200083f579182015b828111156200083f57825182559160200191906001019062000822565b50620005da9291505b80821115620005da576000815560010162000848565b60008219821115620008745762000874620009fa565b500190565b600181815b80851115620008ba5781600019048211156200089e576200089e620009fa565b80851615620008ac57918102915b93841c93908002906200087e565b509250929050565b60006200037360ff841683600082620008de5750600162000376565b81620008ed5750600062000376565b8160018114620009065760028114620009115762000931565b600191505062000376565b60ff841115620009255762000925620009fa565b50506001821b62000376565b5060208310610133831016604e8410600b841016171562000956575081810a62000376565b62000962838362000879565b8060001904821115620009795762000979620009fa565b029392505050565b60008160001904831182151516156200099e576200099e620009fa565b500290565b600082821015620009b857620009b8620009fa565b500390565b600181811c90821680620009d257607f821691505b60208210811415620009f457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160a05160c05160e0516101005161012051611c5962000a606000396000610936015260006110c201526000611111015260006110ec01526000611070015260006110990152611c596000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102d5578063a9059cbb146102e8578063c3cda520146102fb578063d505accf1461030e578063dd62ed3e14610321578063f1127ed81461035a57600080fd5b806370a082311461026b5780637ecebe00146102945780638e539e8c146102a757806395d89b41146102ba5780639ab24eb0146102c257600080fd5b80633644e5151161010a5780633644e515146101bc57806339509351146101c45780633a46b1a8146101d7578063587cde1e146101ea5780635c19a95c1461022e5780636fcfff451461024357600080fd5b806306fdde0314610147578063095ea7b31461016557806318160ddd1461018857806323b872dd1461019a578063313ce567146101ad575b600080fd5b61014f610397565b60405161015c9190611b36565b60405180910390f35b610178610173366004611a60565b610429565b604051901515815260200161015c565b6002545b60405190815260200161015c565b6101786101a83660046119bc565b61043f565b6040516012815260200161015c565b61018c6104ee565b6101786101d2366004611a60565b6104fd565b61018c6101e5366004611a60565b610539565b6102166101f8366004611970565b6001600160a01b039081166000908152600660205260409020541690565b6040516001600160a01b03909116815260200161015c565b61024161023c366004611970565b6105b3565b005b610256610251366004611970565b6105c0565b60405163ffffffff909116815260200161015c565b61018c610279366004611970565b6001600160a01b031660009081526020819052604090205490565b61018c6102a2366004611970565b6105e8565b61018c6102b5366004611b1e565b610606565b61014f610662565b61018c6102d0366004611970565b610671565b6101786102e3366004611a60565b610706565b6101786102f6366004611a60565b61079f565b610241610309366004611a89565b6107ac565b61024161031c3660046119f7565b6108e2565b61018c61032f36600461198a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61036d610368366004611ae0565b610a46565b60408051825163ffffffff1681526020928301516001600160e01b0316928101929092520161015c565b6060600380546103a690611bd8565b80601f01602080910402602001604051908101604052809291908181526020018280546103d290611bd8565b801561041f5780601f106103f45761010080835404028352916020019161041f565b820191906000526020600020905b81548152906001019060200180831161040257829003601f168201915b5050505050905090565b6000610436338484610d74565b50600192915050565b600061044c848484610e98565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156104d65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6104e38533858403610d74565b506001949350505050565b60006104f861106c565b905090565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610436918590610534908690611b89565b610d74565b600043821061058a5760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064016104cd565b6001600160a01b03831660009081526007602052604090206105ac908361115f565b9392505050565b6105bd3382611238565b50565b6001600160a01b0381166000908152600760205260408120546105e290610ccc565b92915050565b6001600160a01b0381166000908152600560205260408120546105e2565b60004382106106575760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064016104cd565b6105e260088361115f565b6060600480546103a690611bd8565b6001600160a01b03811660009081526007602052604081205480156106f3576001600160a01b03831660009081526007602052604090206106b3600183611bc1565b815481106106d157634e487b7160e01b600052603260045260246000fd5b60009182526020909120015464010000000090046001600160e01b03166106f6565b60005b6001600160e01b03169392505050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156107885760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104cd565b6107953385858403610d74565b5060019392505050565b6000610436338484610e98565b834211156107fc5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016104cd565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108769061086e9060a001604051602081830303815290604052805190602001206112b1565b8585856112ff565b905061088181611327565b86146108cf5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016104cd565b6108d98188611238565b50505050505050565b834211156109325760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016104cd565b60007f00000000000000000000000000000000000000000000000000000000000000008888886109618c611327565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109bc826112b1565b905060006109cc828787876112ff565b9050896001600160a01b0316816001600160a01b031614610a2f5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016104cd565b610a3a8a8a8a610d74565b50505050505050505050565b60408051808201909152600080825260208201526001600160a01b0383166000908152600760205260409020805463ffffffff8416908110610a9857634e487b7160e01b600052603260045260246000fd5b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b610ae28282610b68565b6002546001600160e01b031015610b545760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016104cd565b610b626008610c538361134f565b50505050565b6001600160a01b038216610bbe5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104cd565b8060026000828254610bd09190611b89565b90915550506001600160a01b03821660009081526020819052604081208054839290610bfd908490611b89565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3610c4f600083836114f2565b5050565b60006105ac8284611b89565b60006001600160e01b03821115610cc85760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016104cd565b5090565b600063ffffffff821115610cc85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016104cd565b6001600160a01b03838116600090815260066020526040808220548584168352912054610d63929182169116836114fd565b505050565b60006105ac8284611bc1565b6001600160a01b038316610dd65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104cd565b6001600160a01b038216610e375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104cd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610efc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104cd565b6001600160a01b038216610f5e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104cd565b6001600160a01b03831660009081526020819052604090205481811015610fd65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104cd565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061100d908490611b89565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161105991815260200190565b60405180910390a3610b628484846114f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156110bb57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b8154600090815b818110156111d157600061117a828461163a565b90508486828154811061119d57634e487b7160e01b600052603260045260246000fd5b60009182526020909120015463ffffffff1611156111bd578092506111cb565b6111c8816001611b89565b91505b50611166565b811561122357846111e3600184611bc1565b8154811061120157634e487b7160e01b600052603260045260246000fd5b60009182526020909120015464010000000090046001600160e01b0316611226565b60005b6001600160e01b031695945050505050565b6001600160a01b038281166000818152600660208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610b628284836114fd565b60006105e26112be61106c565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061131087878787611655565b9150915061131d81611742565b5095945050505050565b6001600160a01b03811660009081526005602052604090208054600181018255905b50919050565b8254600090819080156113a85785611368600183611bc1565b8154811061138657634e487b7160e01b600052603260045260246000fd5b60009182526020909120015464010000000090046001600160e01b03166113ab565b60005b6001600160e01b031692506113c483858763ffffffff16565b9150600081118015611410575043866113de600184611bc1565b815481106113fc57634e487b7160e01b600052603260045260246000fd5b60009182526020909120015463ffffffff16145b1561147e5761141e82610c5f565b8661142a600184611bc1565b8154811061144857634e487b7160e01b600052603260045260246000fd5b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b031602179055506114e9565b85604051806040016040528061149343610ccc565b63ffffffff1681526020016114a785610c5f565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b610d63838383610d31565b816001600160a01b0316836001600160a01b03161415801561151f5750600081115b15610d63576001600160a01b038316156115ad576001600160a01b0383166000908152600760205260408120819061155a90610d688561134f565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516115a2929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610d63576001600160a01b038216600090815260076020526040812081906115e390610c538561134f565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161162b929190918252602082015260400190565b60405180910390a25050505050565b60006116496002848418611ba1565b6105ac90848416611b89565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561168c5750600090506003611739565b8460ff16601b141580156116a457508460ff16601c14155b156116b55750600090506004611739565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611709573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661173257600060019250925050611739565b9150600090505b94509492505050565b600081600481111561176457634e487b7160e01b600052602160045260246000fd5b141561176d5750565b600181600481111561178f57634e487b7160e01b600052602160045260246000fd5b14156117dd5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104cd565b60028160048111156117ff57634e487b7160e01b600052602160045260246000fd5b141561184d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104cd565b600381600481111561186f57634e487b7160e01b600052602160045260246000fd5b14156118c85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104cd565b60048160048111156118ea57634e487b7160e01b600052602160045260246000fd5b14156105bd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016104cd565b80356001600160a01b038116811461195a57600080fd5b919050565b803560ff8116811461195a57600080fd5b600060208284031215611981578081fd5b6105ac82611943565b6000806040838503121561199c578081fd5b6119a583611943565b91506119b360208401611943565b90509250929050565b6000806000606084860312156119d0578081fd5b6119d984611943565b92506119e760208501611943565b9150604084013590509250925092565b600080600080600080600060e0888a031215611a11578283fd5b611a1a88611943565b9650611a2860208901611943565b95506040880135945060608801359350611a446080890161195f565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611a72578182fd5b611a7b83611943565b946020939093013593505050565b60008060008060008060c08789031215611aa1578182fd5b611aaa87611943565b95506020870135945060408701359350611ac66060880161195f565b92506080870135915060a087013590509295509295509295565b60008060408385031215611af2578182fd5b611afb83611943565b9150602083013563ffffffff81168114611b13578182fd5b809150509250929050565b600060208284031215611b2f578081fd5b5035919050565b6000602080835283518082850152825b81811015611b6257858101830151858201604001528201611b46565b81811115611b735783604083870101525b50601f01601f1916929092016040019392505050565b60008219821115611b9c57611b9c611c0d565b500190565b600082611bbc57634e487b7160e01b81526012600452602481fd5b500490565b600082821015611bd357611bd3611c0d565b500390565b600181811c90821680611bec57607f821691505b6020821081141561134957634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fdfea264697066735822122030bb23f63f1454878bccfc19a2f2bfe068e8fd686cdaa8c2831e80228cf0bce964736f6c63430008040033dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724", deployedBytecode: "0x608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102d5578063a9059cbb146102e8578063c3cda520146102fb578063d505accf1461030e578063dd62ed3e14610321578063f1127ed81461035a57600080fd5b806370a082311461026b5780637ecebe00146102945780638e539e8c146102a757806395d89b41146102ba5780639ab24eb0146102c257600080fd5b80633644e5151161010a5780633644e515146101bc57806339509351146101c45780633a46b1a8146101d7578063587cde1e146101ea5780635c19a95c1461022e5780636fcfff451461024357600080fd5b806306fdde0314610147578063095ea7b31461016557806318160ddd1461018857806323b872dd1461019a578063313ce567146101ad575b600080fd5b61014f610397565b60405161015c9190611b36565b60405180910390f35b610178610173366004611a60565b610429565b604051901515815260200161015c565b6002545b60405190815260200161015c565b6101786101a83660046119bc565b61043f565b6040516012815260200161015c565b61018c6104ee565b6101786101d2366004611a60565b6104fd565b61018c6101e5366004611a60565b610539565b6102166101f8366004611970565b6001600160a01b039081166000908152600660205260409020541690565b6040516001600160a01b03909116815260200161015c565b61024161023c366004611970565b6105b3565b005b610256610251366004611970565b6105c0565b60405163ffffffff909116815260200161015c565b61018c610279366004611970565b6001600160a01b031660009081526020819052604090205490565b61018c6102a2366004611970565b6105e8565b61018c6102b5366004611b1e565b610606565b61014f610662565b61018c6102d0366004611970565b610671565b6101786102e3366004611a60565b610706565b6101786102f6366004611a60565b61079f565b610241610309366004611a89565b6107ac565b61024161031c3660046119f7565b6108e2565b61018c61032f36600461198a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61036d610368366004611ae0565b610a46565b60408051825163ffffffff1681526020928301516001600160e01b0316928101929092520161015c565b6060600380546103a690611bd8565b80601f01602080910402602001604051908101604052809291908181526020018280546103d290611bd8565b801561041f5780601f106103f45761010080835404028352916020019161041f565b820191906000526020600020905b81548152906001019060200180831161040257829003601f168201915b5050505050905090565b6000610436338484610d74565b50600192915050565b600061044c848484610e98565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156104d65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6104e38533858403610d74565b506001949350505050565b60006104f861106c565b905090565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610436918590610534908690611b89565b610d74565b600043821061058a5760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064016104cd565b6001600160a01b03831660009081526007602052604090206105ac908361115f565b9392505050565b6105bd3382611238565b50565b6001600160a01b0381166000908152600760205260408120546105e290610ccc565b92915050565b6001600160a01b0381166000908152600560205260408120546105e2565b60004382106106575760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064016104cd565b6105e260088361115f565b6060600480546103a690611bd8565b6001600160a01b03811660009081526007602052604081205480156106f3576001600160a01b03831660009081526007602052604090206106b3600183611bc1565b815481106106d157634e487b7160e01b600052603260045260246000fd5b60009182526020909120015464010000000090046001600160e01b03166106f6565b60005b6001600160e01b03169392505050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156107885760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104cd565b6107953385858403610d74565b5060019392505050565b6000610436338484610e98565b834211156107fc5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016104cd565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108769061086e9060a001604051602081830303815290604052805190602001206112b1565b8585856112ff565b905061088181611327565b86146108cf5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016104cd565b6108d98188611238565b50505050505050565b834211156109325760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016104cd565b60007f00000000000000000000000000000000000000000000000000000000000000008888886109618c611327565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109bc826112b1565b905060006109cc828787876112ff565b9050896001600160a01b0316816001600160a01b031614610a2f5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016104cd565b610a3a8a8a8a610d74565b50505050505050505050565b60408051808201909152600080825260208201526001600160a01b0383166000908152600760205260409020805463ffffffff8416908110610a9857634e487b7160e01b600052603260045260246000fd5b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b610ae28282610b68565b6002546001600160e01b031015610b545760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016104cd565b610b626008610c538361134f565b50505050565b6001600160a01b038216610bbe5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104cd565b8060026000828254610bd09190611b89565b90915550506001600160a01b03821660009081526020819052604081208054839290610bfd908490611b89565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3610c4f600083836114f2565b5050565b60006105ac8284611b89565b60006001600160e01b03821115610cc85760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016104cd565b5090565b600063ffffffff821115610cc85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016104cd565b6001600160a01b03838116600090815260066020526040808220548584168352912054610d63929182169116836114fd565b505050565b60006105ac8284611bc1565b6001600160a01b038316610dd65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104cd565b6001600160a01b038216610e375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104cd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610efc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104cd565b6001600160a01b038216610f5e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104cd565b6001600160a01b03831660009081526020819052604090205481811015610fd65760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104cd565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061100d908490611b89565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161105991815260200190565b60405180910390a3610b628484846114f2565b60007f00000000000000000000000000000000000000000000000000000000000000004614156110bb57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b8154600090815b818110156111d157600061117a828461163a565b90508486828154811061119d57634e487b7160e01b600052603260045260246000fd5b60009182526020909120015463ffffffff1611156111bd578092506111cb565b6111c8816001611b89565b91505b50611166565b811561122357846111e3600184611bc1565b8154811061120157634e487b7160e01b600052603260045260246000fd5b60009182526020909120015464010000000090046001600160e01b0316611226565b60005b6001600160e01b031695945050505050565b6001600160a01b038281166000818152600660208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610b628284836114fd565b60006105e26112be61106c565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061131087878787611655565b9150915061131d81611742565b5095945050505050565b6001600160a01b03811660009081526005602052604090208054600181018255905b50919050565b8254600090819080156113a85785611368600183611bc1565b8154811061138657634e487b7160e01b600052603260045260246000fd5b60009182526020909120015464010000000090046001600160e01b03166113ab565b60005b6001600160e01b031692506113c483858763ffffffff16565b9150600081118015611410575043866113de600184611bc1565b815481106113fc57634e487b7160e01b600052603260045260246000fd5b60009182526020909120015463ffffffff16145b1561147e5761141e82610c5f565b8661142a600184611bc1565b8154811061144857634e487b7160e01b600052603260045260246000fd5b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b031602179055506114e9565b85604051806040016040528061149343610ccc565b63ffffffff1681526020016114a785610c5f565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b610d63838383610d31565b816001600160a01b0316836001600160a01b03161415801561151f5750600081115b15610d63576001600160a01b038316156115ad576001600160a01b0383166000908152600760205260408120819061155a90610d688561134f565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516115a2929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610d63576001600160a01b038216600090815260076020526040812081906115e390610c538561134f565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161162b929190918252602082015260400190565b60405180910390a25050505050565b60006116496002848418611ba1565b6105ac90848416611b89565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561168c5750600090506003611739565b8460ff16601b141580156116a457508460ff16601c14155b156116b55750600090506004611739565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611709573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661173257600060019250925050611739565b9150600090505b94509492505050565b600081600481111561176457634e487b7160e01b600052602160045260246000fd5b141561176d5750565b600181600481111561178f57634e487b7160e01b600052602160045260246000fd5b14156117dd5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104cd565b60028160048111156117ff57634e487b7160e01b600052602160045260246000fd5b141561184d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104cd565b600381600481111561186f57634e487b7160e01b600052602160045260246000fd5b14156118c85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016104cd565b60048160048111156118ea57634e487b7160e01b600052602160045260246000fd5b14156105bd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016104cd565b80356001600160a01b038116811461195a57600080fd5b919050565b803560ff8116811461195a57600080fd5b600060208284031215611981578081fd5b6105ac82611943565b6000806040838503121561199c578081fd5b6119a583611943565b91506119b360208401611943565b90509250929050565b6000806000606084860312156119d0578081fd5b6119d984611943565b92506119e760208501611943565b9150604084013590509250925092565b600080600080600080600060e0888a031215611a11578283fd5b611a1a88611943565b9650611a2860208901611943565b95506040880135945060608801359350611a446080890161195f565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611a72578182fd5b611a7b83611943565b9460209390