[ { "inputs": [ { "internalType": "contract IPool", "name": "pool", "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": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "fromUser", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toUser", "type": "address" }, { "indexed": true, "internalType": "address", "name": "asset", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "BorrowAllowanceDelegated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "target", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "balanceIncrease", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "underlyingAsset", "type": "address" }, { "indexed": true, "internalType": "address", "name": "pool", "type": "address" }, { "indexed": false, "internalType": "address", "name": "incentivesController", "type": "address" }, { "indexed": false, "internalType": "uint8", "name": "debtTokenDecimals", "type": "uint8" }, { "indexed": false, "internalType": "string", "name": "debtTokenName", "type": "string" }, { "indexed": false, "internalType": "string", "name": "debtTokenSymbol", "type": "string" }, { "indexed": false, "internalType": "bytes", "name": "params", "type": "bytes" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "onBehalfOf", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "balanceIncrease", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "Mint", "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": "DEBT_TOKEN_REVISION", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DELEGATION_WITH_SIG_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "EIP712_REVISION", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "POOL", "outputs": [ { "internalType": "contract IPool", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UNDERLYING_ASSET_ADDRESS", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approveDelegation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "fromUser", "type": "address" }, { "internalType": "address", "name": "toUser", "type": "address" } ], "name": "borrowAllowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "burn", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegator", "type": "address" }, { "internalType": "address", "name": "delegatee", "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": "delegationWithSig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getIncentivesController", "outputs": [ { "internalType": "contract IAaveIncentivesController", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getPreviousIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getScaledUserBalanceAndSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IPool", "name": "initializingPool", "type": "address" }, { "internalType": "address", "name": "underlyingAsset", "type": "address" }, { "internalType": "contract IAaveIncentivesController", "name": "incentivesController", "type": "address" }, { "internalType": "uint8", "name": "debtTokenDecimals", "type": "uint8" }, { "internalType": "string", "name": "debtTokenName", "type": "string" }, { "internalType": "string", "name": "debtTokenSymbol", "type": "string" }, { "internalType": "bytes", "name": "params", "type": "bytes" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "address", "name": "onBehalfOf", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "user", "type": "address" } ], "name": "scaledBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "scaledTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IAaveIncentivesController", "name": "controller", "type": "address" } ], "name": "setIncentivesController", "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": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
60e0604052600080553480156200001557600080fd5b506040516200252838038062002528833981016040819052620000389162000191565b806040518060400160405280601881526020017f5641524941424c455f444542545f544f4b454e5f494d504c00000000000000008152506040518060400160405280601881526020017f5641524941424c455f444542545f544f4b454e5f494d504c0000000000000000815250600083838383838383834660808181525050836001600160a01b0316630542975c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200011c919062000191565b6001600160a01b031660a052603b6200013684826200025d565b50603c6200014583826200025d565b50603d805460ff191660ff9290921691909117905550506001600160a01b031660c0525062000329975050505050505050565b6001600160a01b03811681146200018e57600080fd5b50565b600060208284031215620001a457600080fd5b8151620001b18162000178565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001e357607f821691505b6020821081036200020457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200025857600081815260208120601f850160051c81016020861015620002335750805b601f850160051c820191505b8181101562000254578281556001016200023f565b5050505b505050565b81516001600160401b03811115620002795762000279620001b8565b62000291816200028a8454620001ce565b846200020a565b602080601f831160018114620002c95760008415620002b05750858301515b600019600386901b1c1916600185901b17855562000254565b600085815260208120601f198616915b82811015620002fa57888601518255948401946001909101908401620002d9565b5085821015620003195787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c0516121a5620003836000396000818161032f015281816108e601528181610a4501528181610b1401528181610c7d01528181610d97015261101c01526000610e490152600061099701526121a56000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637ecebe0011610104578063b9a7b622116100a2578063e075398611610071578063e07539861461046b578063e655dbd8146104ba578063f3bfc738146104cd578063f5298aca146104f457600080fd5b8063b9a7b6221461042f578063c04a8a1014610437578063c222ec8a1461044a578063dd62ed3e1461045d57600080fd5b8063a9059cbb116100de578063a9059cbb146101fd578063b16a19de146103ec578063b1bf962d146103fd578063b3f1c93d1461040557600080fd5b80637ecebe00146103bb57806395d89b41146103e4578063a457c2d7146101fd57600080fd5b8063313ce5671161017c57806370a082311161014b57806370a08231146103175780637535d2461461032a57806375d2641314610369578063781603761461037f57600080fd5b8063313ce567146102c15780633644e515146102d657806339509351146101fd5780636bd76d24146102de57600080fd5b80630b52d558116101b85780630b52d5581461027557806318160ddd1461028a5780631da24f3e146102a057806323b872dd146102b357600080fd5b806306fdde03146101df578063095ea7b3146101fd5780630afbcdc914610220575b600080fd5b6101e7610507565b6040516101f49190611a2a565b60405180910390f35b61021061020b366004611a65565b610599565b60405190151581526020016101f4565b61026061022e366004611a91565b6001600160a01b0316600090815260386020526040902054603a546fffffffffffffffffffffffffffffffff90911691565b604080519283526020830191909152016101f4565b610288610283366004611abf565b6105ef565b005b6102926108a4565b6040519081526020016101f4565b6102926102ae366004611a91565b610961565b61021061020b366004611b2d565b603d5460405160ff90911681526020016101f4565b610292610993565b6102926102ec366004611b6e565b6001600160a01b03918216600090815260366020908152604080832093909416825291909152205490565b610292610325366004611a91565b6109cb565b6103517f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101f4565b603d5461010090046001600160a01b0316610351565b6101e76040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b6102926103c9366004611a91565b6001600160a01b031660009081526034602052604090205490565b6101e7610abe565b6037546001600160a01b0316610351565b610292610acd565b610418610413366004611ba7565b610ad8565b6040805192151583526020830191909152016101f4565b610292600181565b610288610445366004611a65565b610ba0565b610288610458366004611d10565b610baf565b61029261020b366004611b6e565b610292610479366004611a91565b6001600160a01b031660009081526038602052604090205470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690565b6102886104c8366004611a91565b610e45565b6102927f323db0410fecc107e39e2af5908671f4c8d106123b35a51501bb805c5fa36aa081565b610292610502366004611de5565b610fe2565b6060603b805461051690611e1a565b80601f016020809104026020016040519081016040528092919081815260200182805461054290611e1a565b801561058f5780601f106105645761010080835404028352916020019161058f565b820191906000526020600020905b81548152906001019060200180831161057257829003601f168201915b5050505050905090565b604080518082018252600281527f38300000000000000000000000000000000000000000000000000000000000006020820152905162461bcd60e51b81526000916105e691600401611a2a565b60405180910390fd5b60408051808201909152600281527f373700000000000000000000000000000000000000000000000000000000000060208201526001600160a01b03881661064a5760405162461bcd60e51b81526004016105e69190611a2a565b50834211156040518060400160405280600281526020017f3738000000000000000000000000000000000000000000000000000000000000815250906106a35760405162461bcd60e51b81526004016105e69190611a2a565b506001600160a01b038716600090815260346020526040812054906106c6610993565b604080517f323db0410fecc107e39e2af5908671f4c8d106123b35a51501bb805c5fa36aa060208201526001600160a01b038b1691810191909152606081018990526080810184905260a0810188905260c001604051602081830303815290604052805190602001206040516020016107719291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201206000845290830180835281905260ff8816918301919091526060820186905260808201859052915060019060a0016020604051602081039080840390855afa1580156107f7573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b0316146040518060400160405280600281526020017f3739000000000000000000000000000000000000000000000000000000000000815250906108695760405162461bcd60e51b81526004016105e69190611a2a565b50610875826001611e9c565b6001600160a01b038a16600090815260346020526040902055610899898989611080565b505050505050505050565b6037546040517f386497fd0000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009161095c917f00000000000000000000000000000000000000000000000000000000000000009091169063386497fd90602401602060405180830381865afa15801561092f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109539190611eaf565b603a54906110ea565b905090565b6001600160a01b0381166000908152603860205260408120546fffffffffffffffffffffffffffffffff165b92915050565b60007f000000000000000000000000000000000000000000000000000000000000000046036109c3575060355490565b61095c611141565b6001600160a01b0381166000908152603860205260408120546fffffffffffffffffffffffffffffffff16808203610a065750600092915050565b6037546040517f386497fd0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152610ab7917f0000000000000000000000000000000000000000000000000000000000000000169063386497fd90602401602060405180830381865afa158015610a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab09190611eaf565b82906110ea565b9392505050565b6060603c805461051690611e1a565b600061095c603a5490565b60408051808201909152600281527f323300000000000000000000000000000000000000000000000000000000000060208201526000908190337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610b5a5760405162461bcd60e51b81526004016105e69190611a2a565b50846001600160a01b0316866001600160a01b031614610b7f57610b7f858786611206565b610b8b868686866112ac565b610b93610acd565b9150915094509492505050565b610bab338383611080565b5050565b6001805460ff1680610bc05750303b155b80610bcc575060005481115b610c3e5760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201527f656e20696e697469616c697a656400000000000000000000000000000000000060648201526084016105e6565b60015460ff16158015610c7b57600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168117905560008290555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168a6001600160a01b0316146040518060400160405280600281526020017f383700000000000000000000000000000000000000000000000000000000000081525090610d045760405162461bcd60e51b81526004016105e69190611a2a565b50610d0e86611492565b610d178561149e565b603d8054603780546001600160a01b038d81167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179091558a16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090911660ff8a1617179055610d8f611141565b6035819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03167f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c8a8a8a8a8a8a604051610e0296959493929190611ec8565b60405180910390a38015610e3957600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190611f5b565b6040517f7be53ca10000000000000000000000000000000000000000000000000000000081523360048201529091506001600160a01b03821690637be53ca190602401602060405180830381865afa158015610f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4d9190611f78565b6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090610fa15760405162461bcd60e51b81526004016105e69190611a2a565b5050603d80546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60408051808201909152600281527f32330000000000000000000000000000000000000000000000000000000000006020820152600090337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146110625760405162461bcd60e51b81526004016105e69190611a2a565b5061107084600085856114aa565b611078610acd565b949350505050565b6001600160a01b0383811660008181526036602090815260408083208786168085529083529281902086905560375490518681529416939192917fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1910160405180910390a4505050565b600081157ffffffffffffffffffffffffffffffffffffffffffe6268e1b017bfe18bffffff8390048411151761111f57600080fd5b506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61116c611745565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b038084166000908152603660209081526040808320938616835292905290812054611239908390611f9a565b6001600160a01b03808616600081815260366020908152604080832089861680855292529182902085905560375491519495509216927fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e19061129e9086815260200190565b60405180910390a450505050565b6000806112b9848461174f565b60408051808201909152600281527f323400000000000000000000000000000000000000000000000000000000000060208201529091508161130e5760405162461bcd60e51b81526004016105e69190611a2a565b506001600160a01b0385166000908152603860205260408120546fffffffffffffffffffffffffffffffff808216929161135e9184917001000000000000000000000000000000009004166110ea565b61136883876110ea565b6113729190611f9a565b905061137d8561178e565b6001600160a01b038816600090815260386020526040902080546fffffffffffffffffffffffffffffffff9283167001000000000000000000000000000000000292169190911790556113d8876113d38561178e565b61181a565b60006113e48288611e9c565b9050876001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161142c91815260200190565b60405180910390a360408051828152602081018490529081018790526001600160a01b03808a1691908b16907f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969060600160405180910390a35050159695505050505050565b603b610bab8282611ffc565b603c610bab8282611ffc565b60006114b6838361174f565b60408051808201909152600281527f323500000000000000000000000000000000000000000000000000000000000060208201529091508161150b5760405162461bcd60e51b81526004016105e69190611a2a565b506001600160a01b0385166000908152603860205260408120546fffffffffffffffffffffffffffffffff808216929161155b9184917001000000000000000000000000000000009004166110ea565b61156583866110ea565b61156f9190611f9a565b905061157a8461178e565b6001600160a01b038816600090815260386020526040902080546fffffffffffffffffffffffffffffffff9283167001000000000000000000000000000000000292169190911790556115d5876115d08561178e565b61196f565b8481111561168d5760006115e98683611f9a565b9050876001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161163191815260200190565b60405180910390a360408051828152602081018490529081018690526001600160a01b0389169081907f458f5fa412d0f69b08dd84872b0215675cc67bc1d5b6fd93300a1c3878b861969060600160405180910390a35061173c565b60006116998287611f9a565b905060006001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116e191815260200190565b60405180910390a360408051828152602081018490529081018690526001600160a01b0380891691908a16907f4cf25bc1d991c17529c25213d3cc0cda295eeaad5f13f361969b12ea48015f909060600160405180910390a3505b50505050505050565b606061095c610507565b600081156b033b2e3c9fd0803ce80000006002840419048411171561177357600080fd5b506b033b2e3c9fd0803ce80000009190910260028204010490565b60006fffffffffffffffffffffffffffffffff8211156118165760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f323820626974730000000000000000000000000000000000000000000000000060648201526084016105e6565b5090565b603a546118396fffffffffffffffffffffffffffffffff831682611e9c565b603a556001600160a01b0383166000908152603860205260409020546fffffffffffffffffffffffffffffffff166118718382612116565b6001600160a01b03858116600090815260386020526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9390931692909217909155603d546101009004168015611968576040517f31873e2e0000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018590526fffffffffffffffffffffffffffffffff841660448301528216906331873e2e90606401600060405180830381600087803b15801561195457600080fd5b505af1158015610899573d6000803e3d6000fd5b5050505050565b603a5461198e6fffffffffffffffffffffffffffffffff831682611f9a565b603a556001600160a01b0383166000908152603860205260409020546fffffffffffffffffffffffffffffffff166118718382612146565b6000815180845260005b818110156119ec576020818501810151868301820152016119d0565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610ab760208301846119c6565b6001600160a01b0381168114611a5257600080fd5b50565b8035611a6081611a3d565b919050565b60008060408385031215611a7857600080fd5b8235611a8381611a3d565b946020939093013593505050565b600060208284031215611aa357600080fd5b8135610ab781611a3d565b803560ff81168114611a6057600080fd5b600080600080600080600060e0888a031215611ada57600080fd5b8735611ae581611a3d565b96506020880135611af581611a3d565b95506040880135945060608801359350611b1160808901611aae565b925060a0880135915060c0880135905092959891949750929550565b600080600060608486031215611b4257600080fd5b8335611b4d81611a3d565b92506020840135611b5d81611a3d565b929592945050506040919091013590565b60008060408385031215611b8157600080fd5b8235611b8c81611a3d565b91506020830135611b9c81611a3d565b809150509250929050565b60008060008060808587031215611bbd57600080fd5b8435611bc881611a3d565b93506020850135611bd881611a3d565b93969395505050506040820135916060013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112611c2d57600080fd5b813567ffffffffffffffff80821115611c4857611c48611bed565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611c8e57611c8e611bed565b81604052838152866020858801011115611ca757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008083601f840112611cd957600080fd5b50813567ffffffffffffffff811115611cf157600080fd5b602083019150836020828501011115611d0957600080fd5b9250929050565b60008060008060008060008060e0898b031215611d2c57600080fd5b8835611d3781611a3d565b97506020890135611d4781611a3d565b9650611d5560408a01611a55565b9550611d6360608a01611aae565b9450608089013567ffffffffffffffff80821115611d8057600080fd5b611d8c8c838d01611c1c565b955060a08b0135915080821115611da257600080fd5b611dae8c838d01611c1c565b945060c08b0135915080821115611dc457600080fd5b50611dd18b828c01611cc7565b999c989b5096995094979396929594505050565b600080600060608486031215611dfa57600080fd5b8335611e0581611a3d565b95602085013595506040909401359392505050565b600181811c90821680611e2e57607f821691505b602082108103611e67577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561098d5761098d611e6d565b600060208284031215611ec157600080fd5b5051919050565b6001600160a01b038716815260ff8616602082015260a060408201526000611ef360a08301876119c6565b8281036060840152611f0581876119c6565b905082810360808401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f860116820101915050979650505050505050565b600060208284031215611f6d57600080fd5b8151610ab781611a3d565b600060208284031215611f8a57600080fd5b81518015158114610ab757600080fd5b8181038181111561098d5761098d611e6d565b601f821115611ff757600081815260208120601f850160051c81016020861015611fd45750805b601f850160051c820191505b81811015611ff357828155600101611fe0565b5050505b505050565b815167ffffffffffffffff81111561201657612016611bed565b61202a816120248454611e1a565b84611fad565b602080601f83116001811461207d57600084156120475750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611ff3565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156120ca578886015182559484019460019091019084016120ab565b508582101561210657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b6fffffffffffffffffffffffffffffffff81811683821601908082111561213f5761213f611e6d565b5092915050565b6fffffffffffffffffffffffffffffffff82811682821603908082111561213f5761213f611e6d56fea2646970667358221220a7cca1ff9ef4d645a44fe1615696c702a6f0a805808178136bb718a28c1ae5e964736f6c634300081500330000000000000000000000004ab85bf9ea548410023b25a13031e91b4c4f3b91