[ { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "dyson", "type": "address" } ], "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": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "vaultOwner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "Migrate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "vaultOwner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "dysonAmountAdded", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sDysonAmountAdded", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "time", "type": "uint256" } ], "name": "Restake", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "vaultOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "depositor", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sDysonAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "time", "type": "uint256" } ], "name": "Stake", "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": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "TransferOwnership", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "vaultOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sDysonAmount", "type": "uint256" } ], "name": "Unstake", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "Dyson", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_minter", "type": "address" } ], "name": "addMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "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": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "currentModel", "outputs": [ { "internalType": "contract StakingRateModel", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "dysonAmountStaked", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "lockDuration", "type": "uint256" } ], "name": "getStakingRate", "outputs": [ { "internalType": "uint256", "name": "rate", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "migrate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "migration", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "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": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_spender", "type": "address" }, { "internalType": "uint256", "name": "_amount", "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": [ { "internalType": "address", "name": "_minter", "type": "address" } ], "name": "removeMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "rescueERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "lockDuration", "type": "uint256" } ], "name": "restake", "outputs": [ { "internalType": "uint256", "name": "sDysonAmountAdded", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_migration", "type": "address" } ], "name": "setMigration", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newModel", "type": "address" } ], "name": "setStakingRateModel", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "int256", "name": "_unbackedSupplyCap", "type": "int256" } ], "name": "setUnbackedSupplyCap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "lockDuration", "type": "uint256" } ], "name": "stake", "outputs": [ { "internalType": "uint256", "name": "sDysonAmount", "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": "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": "_owner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unbackedSupply", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unbackedSupplyCap", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "uint256", "name": "sDysonAmount", "type": "uint256" } ], "name": "unstake", "outputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "vaultCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "vaults", "outputs": [ { "internalType": "uint256", "name": "dysonAmount", "type": "uint256" }, { "internalType": "uint256", "name": "sDysonAmount", "type": "uint256" }, { "internalType": "uint256", "name": "unlockTime", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "votingPower", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
60c06040523480156200001157600080fd5b506040516200220438038062002204833981016040819052620000349162000212565b6001600160a01b038216620000905760405162461bcd60e51b815260206004820152601460248201527f6f776e65722063616e6e6f74206265207a65726f00000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b038116620000e85760405162461bcd60e51b815260206004820152601460248201527f6479736f6e2063616e6e6f74206265207a65726f000000000000000000000000604482015260640162000087565b600080546001600160a01b0319166001600160a01b039384161790551660a0908152604080518082018252601381527f5365616c6564204479736f6e20537068657265000000000000000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fcabe06b4a655adb0e7cc058ca86732e01882c50fe55237ea18e7384246737cf4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808083019190915230828601528351808303909501855260c0909101909252825192019190912090526200024a565b80516001600160a01b03811681146200020d57600080fd5b919050565b600080604083850312156200022657600080fd5b6200023183620001f5565b91506200024160208401620001f5565b90509250929050565b60805160a051611f6a6200029a600039600081816105b90152818161082901528181610caa01528181610fc601528181611069015261128a0152600081816103ac01526113e70152611f6a6000f3fe608060405234801561001057600080fd5b50600436106102315760003560e01c80637ecebe0011610130578063a9059cbb116100b8578063ce733e6d1161007c578063ce733e6d146105db578063d0b1ad85146105ee578063d505accf14610601578063dd62ed3e14610614578063f2fde38b1461063f57600080fd5b8063a9059cbb1461054b578063aa271e1a1461055e578063b2118a8d14610581578063c07473f614610594578063c3cf2956146105b457600080fd5b806395d89b41116100ff57806395d89b41146104ef578063983b2d5614610513578063a2bc66be14610526578063a692db6e14610539578063a7635a4e1461054257600080fd5b80637ecebe001461047c57806385f408941461049c5780638da5cb5b146104bc5780639038ff80146104cf57600080fd5b80633092afd5116101be57806340c10f191161018257806340c10f19146103ce57806342966c68146103e1578063454b0608146103f457806370a08231146104075780637bbfc69e1461042757600080fd5b80633092afd51461034057806330adf81f14610353578063313ce5671461037a578063351a5f7b146103945780633644e515146103a757600080fd5b80630f2ad452116102055780630f2ad452146102d15780631705a3bd146102e657806318160ddd1461031157806323ac136d1461031a57806323b872dd1461032d57600080fd5b80629a97561461023657806306fdde031461025c578063095ea7b31461029b5780630c51b88f146102be575b600080fd5b610249610244366004611ba1565b610652565b6040519081526020015b60405180910390f35b61028e604051806040016040528060138152602001725365616c6564204479736f6e2053706865726560681b81525081565b6040516102539190611bde565b6102ae6102a9366004611c2d565b6106c6565b6040519015158152602001610253565b6102496102cc366004611c57565b6106dc565b6102e46102df366004611c8a565b6108a8565b005b6001546102f9906001600160a01b031681565b6040516001600160a01b039091168152602001610253565b61024960025481565b6102e4610328366004611c8a565b6108f4565b6102ae61033b366004611ca5565b610940565b6102e461034e366004611c8a565b6109b8565b6102497f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610382601281565b60405160ff9091168152602001610253565b6005546102f9906001600160a01b031681565b6102497f000000000000000000000000000000000000000000000000000000000000000081565b6102ae6103dc366004611c2d565b610a03565b6102ae6103ef366004611ba1565b610b00565b6102e4610402366004611ba1565b610b68565b610249610415366004611c8a565b60076020526000908152604090205481565b610461610435366004611c2d565b600960209081526000928352604080842090915290825290208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610253565b61024961048a366004611c8a565b600d6020526000908152604090205481565b6102496104aa366004611c8a565b600b6020526000908152604090205481565b6000546102f9906001600160a01b031681565b6102496104dd366004611c8a565b600a6020526000908152604090205481565b61028e6040518060400160405280600581526020016439a22ca9a760d91b81525081565b6102e4610521366004611c8a565b610ddc565b610249610534366004611c57565b610e2a565b61024960045481565b61024960035481565b6102ae610559366004611c2d565b611030565b6102ae61056c366004611c8a565b60066020526000908152604090205460ff1681565b6102e461058f366004611ca5565b61103d565b6102496105a2366004611c8a565b600c6020526000908152604090205481565b6102f97f000000000000000000000000000000000000000000000000000000000000000081565b6102496105e9366004611ce1565b6110be565b6102e46105fc366004611ba1565b611306565b6102e461060f366004611d0d565b611335565b610249610622366004611d80565b600860209081526000928352604080842090915290825290205481565b6102e461064d366004611c8a565b611599565b6005546040516380a537d960e01b8152600481018390526000916001600160a01b0316906380a537d990602401602060405180830381865afa15801561069c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c09190611db3565b92915050565b60006106d3338484611664565b50600192915050565b6001600160a01b0383166000908152600960209081526040808320600a83528184205484529091528120670de0b6b3a76400008461071985610652565b6107239190611de2565b61072d9190611df9565b9150600082116107755760405162461bcd60e51b815260206004820152600e60248201526d0696e76616c6964206c6f636b75760941b60448201526064015b60405180910390fd5b838155600181018290556107898342611e1b565b60028201556001600160a01b0385166000908152600b6020526040812080548692906107b6908490611e1b565b90915550506001600160a01b0385166000908152600c6020526040812080548492906107e3908490611e1b565b90915550506001600160a01b0385166000908152600a6020526040812080549161080c83611e2e565b919050555061081b8583611788565b506108516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308761181b565b604080518581526020810184905290810184905233906001600160a01b038716907f4b22ccaaeb4846ec98072623a51a9070bf1f01c75ac1f8119035f373df852a0c906060015b60405180910390a3509392505050565b6000546001600160a01b031633146108d25760405162461bcd60e51b815260040161076c90611e47565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461091e5760405162461bcd60e51b815260040161076c90611e47565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600860209081526040808320338452909152812054600019146109a5576001600160a01b03841660009081526008602090815260408083203384529091528120805484929061099f908490611e6a565b90915550505b6109b084848461194b565b949350505050565b6000546001600160a01b031633146109e25760405162461bcd60e51b815260040161076c90611e47565b6001600160a01b03166000908152600660205260409020805460ff19169055565b3360009081526006602052604081205460ff1680610a2b57506000546001600160a01b031633145b610a475760405162461bcd60e51b815260040161076c90611e47565b600160ff1b8210610a8b5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015260640161076c565b60045482600354610a9c9190611e7d565b1315610ad75760405162461bcd60e51b815260206004820152600a6024820152690657863656564206361760b41b604482015260640161076c565b8160036000828254610ae99190611e7d565b90915550610af990508383611788565b9392505050565b6000600160ff1b8210610b465760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015260640161076c565b8160036000828254610b589190611ea5565b909155506106c090503383611a00565b6001546001600160a01b0316610bb15760405162461bcd60e51b815260206004820152600e60248201526d63616e6e6f74206d69677261746560901b604482015260640161076c565b336000908152600960209081526040808320848452909152902080546001820154600283015480610c145760405162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081d985d5b1d609a1b604482015260640161076c565b336000818152600960209081526040808320898452825280832083815560018101849055600201839055928252600b90529081208054859290610c58908490611e6a565b9091555050336000908152600c602052604081208054849290610c7c908490611e6a565b9091555050600154610c999033906001600160a01b031684611664565b600154610cd3906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911685611a86565b600154604051636a7d8bc960e11b808252336004830152602482018690526044820185905260648201849052916001600160a01b03169063d4fb1792906084016020604051808303816000875af1158015610d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d569190611ecc565b6001600160e01b03191614610da05760405162461bcd60e51b815260206004820152601060248201526f1b5a59dc985d1a5bdb8819985a5b195960821b604482015260640161076c565b60405185815233907fa59785389b00cbd19745afbe8d59b28e3161395c6b1e3525861a2b0dede0b90d9060200160405180910390a25050505050565b6000546001600160a01b03163314610e065760405162461bcd60e51b815260040161076c90611e47565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000808211610e725760405162461bcd60e51b81526020600482015260146024820152731a5b9d985b1a59081a5b9c1d5d08185b5bdd5b9d60621b604482015260640161076c565b33600090815260096020908152604080832086845290915290206002810154421015610ec95760405162461bcd60e51b81526020600482015260066024820152651b1bd8dad95960d21b604482015260640161076c565b8060010154831115610f145760405162461bcd60e51b8152602060048201526014602482015273195e18d95959081b1bd8dad95908185b5bdd5b9d60621b604482015260640161076c565b60018101548154610f259085611de2565b610f2f9190611df9565b915081816000016000828254610f459190611e6a565b9250508190555082816001016000828254610f609190611e6a565b9091555050336000908152600b602052604081208054849290610f84908490611e6a565b9091555050336000908152600c602052604081208054859290610fa8908490611e6a565b90915550610fb890503384611a00565b50610fed6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168684611a86565b60408051838152602081018590526001600160a01b0387169133917f18edd09e80386cd99df397e2e0d87d2bb259423eae08645e776321a36fe680ef9101610898565b6000610af933848461194b565b6000546001600160a01b031633146110675760405162461bcd60e51b815260040161076c90611e47565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036110a557600080fd5b6110b96001600160a01b0384168383611a86565b505050565b336000908152600a6020526040812054841061110c5760405162461bcd60e51b815260206004820152600d60248201526c0d2dcecc2d8d2c840d2dcc8caf609b1b604482015260640161076c565b33600090815260096020908152604080832087845290915290206111308342611e1b565b81600201541061116b5760405162461bcd60e51b81526020600482015260066024820152651b1bd8dad95960d21b604482015260640161076c565b60018101546000670de0b6b3a764000061118486610652565b8454611191908990611e1b565b61119b9190611de2565b6111a59190611df9565b9050600081116111e85760405162461bcd60e51b815260206004820152600e60248201526d0696e76616c6964206c6f636b75760941b604482015260640161076c565b6111f28282611e6a565b9350858360000160008282546112089190611e1b565b90915550506001830181905561121e8542611e1b565b6002840155336000908152600b602052604081208054889290611242908490611e1b565b9091555050336000908152600c602052604081208054869290611266908490611e1b565b9091555061127690503385611788565b5085156112b2576112b26001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308961181b565b60408051888152602081018890529081018590526060810186905233907fbc25936f61d661553dca1fb2bd2c968321f2a2f3061dc7511941bad73f2aa0639060800160405180910390a25050509392505050565b6000546001600160a01b031633146113305760405162461bcd60e51b815260040161076c90611e47565b600455565b6001600160a01b03871661137a5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640161076c565b8342111580611387575083155b6113c75760405162461bcd60e51b81526020600482015260116024820152701c195c9b5a5d081a5cc8195e1c1a5c9959607a1b604482015260640161076c565b6001600160a01b0387166000908152600d602052604081208054611901917f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918c918c918c91908861143a83611e2e565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810188905260e001604051602081830303815290604052805190602001206040516020016114be9392919060f09390931b6001600160f01b03191683526002830191909152602282015260420190565b60408051601f1981840301815282825280516020918201206000845290830180835281905260ff8716918301919091526060820185905260808201849052915060019060a0016020604051602081039080840390855afa158015611526573d6000803e3d6000fd5b505050602060405103516001600160a01b0316886001600160a01b0316146115845760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015260640161076c565b61158f888888611664565b5050505050505050565b6000546001600160a01b031633146115c35760405162461bcd60e51b815260040161076c90611e47565b6001600160a01b0381166116105760405162461bcd60e51b81526020600482015260146024820152736f776e65722063616e6e6f74206265207a65726f60601b604482015260640161076c565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a49060200160405180910390a150565b6001600160a01b0383166116c65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161076c565b6001600160a01b0382166117275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161076c565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166000908152600760205260408120805483919083906117b2908490611e1b565b9250508190555081600260008282546117cb9190611e1b565b90915550506040518281526001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350600192915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b179052915160009283929088169161187f9190611ef6565b6000604051808303816000865af19150503d80600081146118bc576040519150601f19603f3d011682016040523d82523d6000602084013e6118c1565b606091505b50915091508180156118eb5750805115806118eb5750808060200190518101906118eb9190611f12565b6119435760405162461bcd60e51b815260206004820152602360248201527f7472616e7366657248656c7065723a207472616e7366657246726f6d206661696044820152621b195960ea1b606482015260840161076c565b505050505050565b6001600160a01b038316600090815260076020526040812080548391908390611975908490611e6a565b90915550506001600160a01b038316600090815260076020526040812080548492906119a2908490611e1b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119ee91815260200190565b60405180910390a35060019392505050565b6001600160a01b038216600090815260076020526040812080548391908390611a2a908490611e6a565b925050819055508160026000828254611a439190611e6a565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161180a565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691611ae29190611ef6565b6000604051808303816000865af19150503d8060008114611b1f576040519150601f19603f3d011682016040523d82523d6000602084013e611b24565b606091505b5091509150818015611b4e575080511580611b4e575080806020019051810190611b4e9190611f12565b611b9a5760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657248656c7065723a207472616e73666572206661696c656400604482015260640161076c565b5050505050565b600060208284031215611bb357600080fd5b5035919050565b60005b83811015611bd5578181015183820152602001611bbd565b50506000910152565b6020815260008251806020840152611bfd816040850160208701611bba565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114611c2857600080fd5b919050565b60008060408385031215611c4057600080fd5b611c4983611c11565b946020939093013593505050565b600080600060608486031215611c6c57600080fd5b611c7584611c11565b95602085013595506040909401359392505050565b600060208284031215611c9c57600080fd5b610af982611c11565b600080600060608486031215611cba57600080fd5b611cc384611c11565b9250611cd160208501611c11565b9150604084013590509250925092565b600080600060608486031215611cf657600080fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a031215611d2857600080fd5b611d3188611c11565b9650611d3f60208901611c11565b95506040880135945060608801359350608088013560ff81168114611d6357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611d9357600080fd5b611d9c83611c11565b9150611daa60208401611c11565b90509250929050565b600060208284031215611dc557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106c0576106c0611dcc565b600082611e1657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156106c0576106c0611dcc565b600060018201611e4057611e40611dcc565b5060010190565b6020808252600990820152683337b93134b23232b760b91b604082015260600190565b818103818111156106c0576106c0611dcc565b8082018281126000831280158216821582161715611e9d57611e9d611dcc565b505092915050565b8181036000831280158383131683831282161715611ec557611ec5611dcc565b5092915050565b600060208284031215611ede57600080fd5b81516001600160e01b031981168114610af957600080fd5b60008251611f08818460208701611bba565b9190910192915050565b600060208284031215611f2457600080fd5b81518015158114610af957600080fdfea264697066735822122069b16c2dffe6e81a438b657e29cb2897194f907138f0c2dcfb7aef09e6834c7c64736f6c63430008110033000000000000000000000000d87764fcb9067bf36e2da3adad601c4ad86902e1000000000000000000000000f278ec0ca4f640c21fee73e3993783a67996954b