[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }, { "indexed": false, "internalType": "string", "name": "reason", "type": "string" } ], "name": "AddressScreenContractUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "proceedTokenAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "proceed", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "bondTokenAmountReceived", "type": "uint256" } ], "name": "RolloverSuccessful", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldAsset", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newAsset", "type": "address" } ], "name": "VaultAssetUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [], "name": "addressScreen", "outputs": [ { "internalType": "contract IAddressScreen", "name": "", "type": "address" } ], "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": [], "name": "asset", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "convertToAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "convertToShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "asset_", "type": "address" }, { "internalType": "string", "name": "shareName_", "type": "string" }, { "internalType": "string", "name": "shareSymbol_", "type": "string" }, { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "address", "name": "addressScreenAddress_", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAssetAddress_", "type": "address" } ], "name": "rollover", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAddress", "type": "address" }, { "internalType": "string", "name": "reason", "type": "string" } ], "name": "setAddressScreenContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "vaultType", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "vaultVersion", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612f2680620000f36000396000f3fe60806040526004361061023f5760003560e01c80636e553f651161012e578063b460af94116100ab578063d905777e1161006f578063d905777e146106cd578063dd62ed3e146106ed578063ef8b30f71461068d578063f2fde38b1461070d578063fbf99afd1461072d57600080fd5b8063b460af941461064d578063ba0876521461066d578063c63d75b61461048e578063c6e6f5921461068d578063ce96cb77146106ad57600080fd5b806394bf804d116100f257806394bf804d146105b857806395d89b41146105d8578063a457c2d7146105ed578063a9059cbb1461060d578063b3d7f6b91461062d57600080fd5b80636e553f651461051a57806370a082311461053a578063715018a6146105705780638456cb59146105855780638da5cb5b1461059a57600080fd5b8063313ce567116101bc5780634ac032be116101805780634ac032be146104b05780634cdad506146103245780634e7adf2c146104c75780635c975abb146104e25780636cf1dbed146104fa57600080fd5b8063313ce5671461041457806338d52e0f1461043b57806339509351146104595780633f4ba83a14610479578063402d267d1461048e57600080fd5b80630a28a477116102035780630a28a4771461036457806318160ddd146103845780631a5bb098146103995780631b5c0d14146103bb57806323b872dd146103f457600080fd5b806301e1d114146102aa57806301ffc9a7146102d257806306fdde031461030257806307a2d13a14610324578063095ea7b31461034457600080fd5b366102a55760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f742073656e64204574686572206469726563746c7920746f20746860448201526a1a5cc818dbdb9d1c9858dd60aa1b60648201526084015b60405180910390fd5b600080fd5b3480156102b657600080fd5b506102bf61074d565b6040519081526020015b60405180910390f35b3480156102de57600080fd5b506102f26102ed3660046127a1565b6107bf565b60405190151581526020016102c9565b34801561030e57600080fd5b50610317610811565b6040516102c991906127f7565b34801561033057600080fd5b506102bf61033f36600461282a565b6108a3565b34801561035057600080fd5b506102f261035f366004612858565b6108b0565b34801561037057600080fd5b506102bf61037f36600461282a565b6108c8565b34801561039057600080fd5b5060cb546102bf565b3480156103a557600080fd5b506103b96103b4366004612884565b6108d5565b005b3480156103c757600080fd5b5061012d546103dc906001600160a01b031681565b6040516001600160a01b0390911681526020016102c9565b34801561040057600080fd5b506102f261040f3660046128a1565b610c2f565b34801561042057600080fd5b50610429610c55565b60405160ff90911681526020016102c9565b34801561044757600080fd5b5060fb546001600160a01b03166103dc565b34801561046557600080fd5b506102f2610474366004612858565b610c6f565b34801561048557600080fd5b506103b9610c91565b34801561049a57600080fd5b506102bf6104a9366004612884565b5060001990565b3480156104bc57600080fd5b506102bf61012e5481565b3480156104d357600080fd5b5061012f546104299060ff1681565b3480156104ee57600080fd5b5060975460ff166102f2565b34801561050657600080fd5b506103b9610515366004612985565b610ca3565b34801561052657600080fd5b506102bf610535366004612a23565b611032565b34801561054657600080fd5b506102bf610555366004612884565b6001600160a01b0316600090815260c9602052604090205490565b34801561057c57600080fd5b506103b961104c565b34801561059157600080fd5b506103b961105e565b3480156105a657600080fd5b506065546001600160a01b03166103dc565b3480156105c457600080fd5b506102bf6105d3366004612a23565b61106e565b3480156105e457600080fd5b50610317611088565b3480156105f957600080fd5b506102f2610608366004612858565b611097565b34801561061957600080fd5b506102f2610628366004612858565b61111d565b34801561063957600080fd5b506102bf61064836600461282a565b61112b565b34801561065957600080fd5b506102bf610668366004612a53565b611138565b34801561067957600080fd5b506102bf610688366004612a53565b6111b4565b34801561069957600080fd5b506102bf6106a836600461282a565b611228565b3480156106b957600080fd5b506102bf6106c8366004612884565b611235565b3480156106d957600080fd5b506102bf6106e8366004612884565b611259565b3480156106f957600080fd5b506102bf610708366004612a95565b611277565b34801561071957600080fd5b506103b9610728366004612884565b6112a2565b34801561073957600080fd5b506103b9610748366004612ac3565b61131b565b60fb546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610796573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ba9190612b48565b905090565b60006001600160e01b0319821663313ce56760e01b14806107f057506001600160e01b031982166338d52e0f60e01b145b8061080b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060cc805461082090612b61565b80601f016020809104026020016040519081016040528092919081815260200182805461084c90612b61565b80156108995780601f1061086e57610100808354040283529160200191610899565b820191906000526020600020905b81548152906001019060200180831161087c57829003601f168201915b5050505050905090565b600061080b826000611368565b6000336108be8185856113a2565b5060019392505050565b600061080b8260016114c6565b6108dd6114f6565b6001600160a01b0381166109445760405162461bcd60e51b815260206004820152602860248201527f4e657720617373657420616464726573732063616e6e6f742062652061646472604482015267657373207a65726f60c01b606482015260840161029c565b61095e6001600160a01b03821663313ce56760e01b611550565b6109b45760405162461bcd60e51b815260206004820152602160248201527f4e65772061737365742061646472657373206973206e6f7420616e20455243326044820152600360fc1b606482015260840161029c565b6109ce6001600160a01b0382166312d658e160e21b611550565b610a285760405162461bcd60e51b815260206004820152602560248201527f4e65772061737365742061646472657373206973206e6f7420526f6c6c6f76656044820152647261626c6560d81b606482015260840161029c565b60fb80546001600160a01b038381166001600160a01b031983168117909355604080516312ca870960e01b81529051919092169260009283928392916312ca8709916004808301926060929190829003018187875af1158015610a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab39190612b9b565b6040516370a0823160e01b815230600482015292955090935091506000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b269190612b48565b90506000866001600160a01b0316635993e48d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8c9190612bd2565b9050610ba26001600160a01b038716828461156c565b60408051858152602081018590526001600160a01b038716917f4fa205c6cea61e57c7f5146b0c777191717d39bb6a46726d9d2b6696277093b1910160405180910390a2866001600160a01b0316866001600160a01b03167febc36d0f3f7530b6faeb4aab01a5607ccf0a27d828e476ec314c9a7db7ef5b9c60405160405180910390a350505050505050565b600033610c3d8582856115cf565b610c48858585611649565b60019150505b9392505050565b60008060fb546107ba9190600160a01b900460ff16612c05565b6000336108be818585610c828383611277565b610c8c9190612c2a565b6113a2565b610c996114f6565b610ca16117ff565b565b600054610100900460ff1615808015610cc35750600054600160ff909116105b80610cdd5750303b158015610cdd575060005460ff166001145b610d405760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161029c565b6000805460ff191660011790558015610d63576000805461ff0019166101001790555b6001600160a01b038616610db95760405162461bcd60e51b815260206004820152601c60248201527f41737365742063616e6e6f742062652061646472657373207a65726f00000000604482015260640161029c565b6001600160a01b038316610e0f5760405162461bcd60e51b815260206004820152601c60248201527f4f776e65722063616e6e6f742062652061646472657373207a65726f00000000604482015260640161029c565b71109bdb9914195c9c195d1d585b15985d5b1d60721b61012e5561012f805460ff1916600117905560408051808201909152600a815269496e697469616c697a6560b01b602082015261013090610e669082612c88565b50610e718585611851565b610e79611886565b610e82836118ad565b610e9c6001600160a01b03871663313ce56760e01b611550565b610ee05760405162461bcd60e51b815260206004820152601560248201527404173736574206973206e6f7420616e20455243323605c1b604482015260640161029c565b610efa6001600160a01b0387166312d658e160e21b611550565b610f465760405162461bcd60e51b815260206004820152601960248201527f4173736574206973206e6f7420526f6c6c6f76657261626c6500000000000000604482015260640161029c565b610f4f866118ff565b610fe4826101308054610f6190612b61565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8d90612b61565b8015610fda5780601f10610faf57610100808354040283529160200191610fda565b820191906000526020600020905b815481529060010190602001808311610fbd57829003601f168201915b505050505061192f565b801561102a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60008061103e84611228565b9050610c4e33848684611af8565b6110546114f6565b610ca160006118ad565b6110666114f6565b610ca1611b76565b60008061107a8461112b565b9050610c4e33848387611af8565b606060cd805461082090612b61565b600033816110a58286611277565b9050838110156111055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161029c565b61111282868684036113a2565b506001949350505050565b6000336108be818585611649565b600061080b826001611368565b600061114382611235565b8411156111925760405162461bcd60e51b815260206004820152601f60248201527f455243343632363a207769746864726177206d6f7265207468616e206d617800604482015260640161029c565b600061119d856108c8565b90506111ac3385858885611bb3565b949350505050565b60006111bf82611259565b84111561120e5760405162461bcd60e51b815260206004820152601d60248201527f455243343632363a2072656465656d206d6f7265207468616e206d6178000000604482015260640161029c565b6000611219856108a3565b90506111ac3385858489611bb3565b600061080b8260006114c6565b6001600160a01b038116600090815260c9602052604081205461080b906000611368565b6001600160a01b038116600090815260c9602052604081205461080b565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b6112aa6114f6565b6001600160a01b03811661130f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161029c565b611318816118ad565b50565b6113236114f6565b6113638383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061192f92505050565b505050565b6000610c4e61137561074d565b611380906001612c2a565b61138c6000600a612e2c565b60cb546113999190612c2a565b85919085611c5f565b6001600160a01b0383166114045760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161029c565b6001600160a01b0382166114655760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161029c565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610c4e6114d682600a612e2c565b60cb546114e39190612c2a565b6114eb61074d565b611399906001612c2a565b6065546001600160a01b03163314610ca15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161029c565b600061155b83611cbc565b8015610c4e5750610c4e8383611cef565b6040516001600160a01b03831660248201526044810182905261136390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611d78565b60006115db8484611277565b9050600019811461164357818110156116365760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161029c565b61164384848484036113a2565b50505050565b6001600160a01b0383166116ad5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161029c565b6001600160a01b03821661170f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161029c565b61171a838383611e4d565b6001600160a01b038316600090815260c96020526040902054818110156117925760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161029c565b6001600160a01b03808516600081815260c9602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117f29086815260200190565b60405180910390a3611643565b6118076120ca565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff166118785760405162461bcd60e51b815260040161029c90612e3b565b6118828282612113565b5050565b600054610100900460ff16610ca15760405162461bcd60e51b815260040161029c90612e3b565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166119265760405162461bcd60e51b815260040161029c90612e3b565b61131881612153565b6001600160a01b03821661199b5760405162461bcd60e51b815260206004820152602d60248201527f416464726573732073637265656e20616464726573732063616e6e6f7420626560448201526c2061646472657373207a65726f60981b606482015260840161029c565b6001600160a01b0382163b6119f25760405162461bcd60e51b815260206004820181905260248201527f416464726573732073637265656e206973206e6f74206120636f6e7472616374604482015260640161029c565b61012d546001600160a01b0390811690831603611a9d5760405162461bcd60e51b815260206004820152605760248201527f4e657720616464726573732073637265656e20636f6e7472616374206d75737460448201527f20626520646966666572656e742066726f6d20746865206578697374696e672060648201527f616464726573732073637265656e20636f6e7472616374000000000000000000608482015260a40161029c565b61012d80546001600160a01b0319166001600160a01b0384169081179091556040517f8d71a1b9b2a596f7a3176794f3f146a0bf13e760c18698e3ffe425614030077e90611aec9084906127f7565b60405180910390a25050565b60fb54611b10906001600160a01b03168530856121d8565b611b1a8382612210565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051611b68929190918252602082015260400190565b60405180910390a350505050565b611b7e6122dd565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586118343390565b826001600160a01b0316856001600160a01b031614611bd757611bd78386836115cf565b611be18382612323565b60fb54611bf8906001600160a01b0316858461156c565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051611c50929190918252602082015260400190565b60405180910390a45050505050565b600080611c6d868686612463565b90506001836002811115611c8357611c83612e86565b148015611ca0575060008480611c9b57611c9b612e9c565b868809115b15611cb357611cb0600182612c2a565b90505b95945050505050565b6000611ccf826301ffc9a760e01b611cef565b801561080b5750611ce8826001600160e01b0319611cef565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611d61575060208210155b8015611d6d5750600081115b979650505050505050565b6000611dcd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661254d9092919063ffffffff16565b9050805160001480611dee575080806020019051810190611dee9190612eb2565b6113635760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161029c565b611e556122dd565b61012d54604051636f1095c760e01b81526001600160a01b03858116600483015290911690636f1095c790602401602060405180830381865afa158015611ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec49190612eb2565b15611f1f5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e2073656e646572206d757374206e6f74206265206f6e2064656e79604482015264081b1a5cdd60da1b606482015260840161029c565b61012d54604051636f1095c760e01b81526001600160a01b03848116600483015290911690636f1095c790602401602060405180830381865afa158015611f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8e9190612eb2565b15611feb5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e207265636569766572206d757374206e6f74206265206f6e2064656044820152661b9e481b1a5cdd60ca1b606482015260840161029c565b61012d546001600160a01b0316636f1095c7336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015612042573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120669190612eb2565b156113635760405162461bcd60e51b815260206004820152602e60248201527f5472616e73616374696f6e20696e69746961746f72206d757374206e6f74206260448201526d19481bdb8819195b9e481b1a5cdd60921b606482015260840161029c565b60975460ff16610ca15760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161029c565b600054610100900460ff1661213a5760405162461bcd60e51b815260040161029c90612e3b565b60cc6121468382612c88565b5060cd6113638282612c88565b600054610100900460ff1661217a5760405162461bcd60e51b815260040161029c90612e3b565b6000806121868361255c565b9150915081612196576012612198565b805b60fb80546001600160a01b039095166001600160a01b031960ff93909316600160a01b02929092166001600160a81b031990951694909417179092555050565b6040516001600160a01b03808516602483015283166044820152606481018290526116439085906323b872dd60e01b90608401611598565b6001600160a01b0382166122665760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161029c565b61227260008383611e4d565b8060cb60008282546122849190612c2a565b90915550506001600160a01b038216600081815260c960209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60975460ff1615610ca15760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161029c565b6001600160a01b0382166123835760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161029c565b61238f82600083611e4d565b6001600160a01b038216600090815260c96020526040902054818110156124035760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161029c565b6001600160a01b038316600081815260c960209081526040808320868603905560cb80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600080806000198587098587029250828110838203039150508060000361249d5783828161249357612493612e9c565b0492505050610c4e565b8084116124e45760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b604482015260640161029c565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60606111ac8484600085612638565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b038716916125a391612ed4565b600060405180830381855afa9150503d80600081146125de576040519150601f19603f3d011682016040523d82523d6000602084013e6125e3565b606091505b50915091508180156125f757506020815110155b1561262b576000818060200190518101906126129190612b48565b905060ff8111612629576001969095509350505050565b505b5060009485945092505050565b6060824710156126995760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161029c565b600080866001600160a01b031685876040516126b59190612ed4565b60006040518083038185875af1925050503d80600081146126f2576040519150601f19603f3d011682016040523d82523d6000602084013e6126f7565b606091505b5091509150611d6d878383876060831561277257825160000361276b576001600160a01b0385163b61276b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161029c565b50816111ac565b6111ac83838151156127875781518083602001fd5b8060405162461bcd60e51b815260040161029c91906127f7565b6000602082840312156127b357600080fd5b81356001600160e01b031981168114610c4e57600080fd5b60005b838110156127e65781810151838201526020016127ce565b838111156116435750506000910152565b60208152600082518060208401526128168160408501602087016127cb565b601f01601f19169190910160400192915050565b60006020828403121561283c57600080fd5b5035919050565b6001600160a01b038116811461131857600080fd5b6000806040838503121561286b57600080fd5b823561287681612843565b946020939093013593505050565b60006020828403121561289657600080fd5b8135610c4e81612843565b6000806000606084860312156128b657600080fd5b83356128c181612843565b925060208401356128d181612843565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261290957600080fd5b813567ffffffffffffffff80821115612924576129246128e2565b604051601f8301601f19908116603f0116810190828211818310171561294c5761294c6128e2565b8160405283815286602085880101111561296557600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561299d57600080fd5b85356129a881612843565b9450602086013567ffffffffffffffff808211156129c557600080fd5b6129d189838a016128f8565b955060408801359150808211156129e757600080fd5b506129f4888289016128f8565b9350506060860135612a0581612843565b91506080860135612a1581612843565b809150509295509295909350565b60008060408385031215612a3657600080fd5b823591506020830135612a4881612843565b809150509250929050565b600080600060608486031215612a6857600080fd5b833592506020840135612a7a81612843565b91506040840135612a8a81612843565b809150509250925092565b60008060408385031215612aa857600080fd5b8235612ab381612843565b91506020830135612a4881612843565b600080600060408486031215612ad857600080fd5b8335612ae381612843565b9250602084013567ffffffffffffffff80821115612b0057600080fd5b818601915086601f830112612b1457600080fd5b813581811115612b2357600080fd5b876020828501011115612b3557600080fd5b6020830194508093505050509250925092565b600060208284031215612b5a57600080fd5b5051919050565b600181811c90821680612b7557607f821691505b602082108103612b9557634e487b7160e01b600052602260045260246000fd5b50919050565b600080600060608486031215612bb057600080fd5b8351612bbb81612843565b602085015160409095015190969495509392505050565b600060208284031215612be457600080fd5b8151610c4e81612843565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168060ff03821115612c2257612c22612bef565b019392505050565b60008219821115612c3d57612c3d612bef565b500190565b601f82111561136357600081815260208120601f850160051c81016020861015612c695750805b601f850160051c820191505b8181101561102a57828155600101612c75565b815167ffffffffffffffff811115612ca257612ca26128e2565b612cb681612cb08454612b61565b84612c42565b602080601f831160018114612ceb5760008415612cd35750858301515b600019600386901b1c1916600185901b17855561102a565b600085815260208120601f198616915b82811015612d1a57888601518255948401946001909101908401612cfb565b5085821015612d385787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b80851115612d83578160001904821115612d6957612d69612bef565b80851615612d7657918102915b93841c9390800290612d4d565b509250929050565b600082612d9a5750600161080b565b81612da75750600061080b565b8160018114612dbd5760028114612dc757612de3565b600191505061080b565b60ff841115612dd857612dd8612bef565b50506001821b61080b565b5060208310610133831016604e8410600b8410161715612e06575081810a61080b565b612e108383612d48565b8060001904821115612e2457612e24612bef565b029392505050565b6000610c4e60ff841683612d8b565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600060208284031215612ec457600080fd5b81518015158114610c4e57600080fd5b60008251612ee68184602087016127cb565b919091019291505056fea26469706673582212204b62b5d74ae7bc6717ba009b655fa1befa3a01fb88de5707f49fcad91dfa087b64736f6c634300080f0033