[ { "inputs": [ { "internalType": "address", "name": "_daiJoin", "type": "address" }, { "internalType": "address", "name": "_pot", "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": "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": 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": 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": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "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": "", "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": "dai", "outputs": [ { "internalType": "contract DaiLike", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "daiJoin", "outputs": [ { "internalType": "contract DaiJoinLike", "name": "", "type": "address" } ], "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": [], "name": "deploymentChainId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "shares", "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": "", "type": "address" } ], "name": "maxDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "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": "assets", "type": "uint256" } ], "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": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "pot", "outputs": [ { "internalType": "contract PotLike", "name": "", "type": "address" } ], "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": "assets", "type": "uint256" } ], "stateMutability": "nonpayable", "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": "value", "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": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "vat", "outputs": [ { "internalType": "contract VatLike", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" } ]
6101406040523480156200001257600080fd5b506040516200300738038062003007833981016040819052620000359162000386565b6001600160a01b03821660a0819052604080516336569e7760e01b815290516336569e77916004808201926020929091908290030181865afa15801562000080573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000a69190620003be565b6001600160a01b03166080816001600160a01b03168152505060a0516001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000100573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001269190620003be565b6001600160a01b0390811660c052811660e052466101008190526200021990604080518082018252600b81526a536176696e67732044616960a81b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc3f7aa5322e176c1c6e3195712ea57f43ea5d4428bc4005b44d51d1c8b188bbe818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101939093523060a0808501919091528251808503909101815260c0909301909152815191012090565b6101205260805160a0516040516328ec8bf160e21b81526001600160a01b03918216600482015291169063a3b22fc490602401600060405180830381600087803b1580156200026757600080fd5b505af11580156200027c573d6000803e3d6000fd5b505060805160e0516040516328ec8bf160e21b81526001600160a01b0391821660048201529116925063a3b22fc49150602401600060405180830381600087803b158015620002ca57600080fd5b505af1158015620002df573d6000803e3d6000fd5b505060c05160a05160405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116925063095ea7b391506044016020604051808303816000875af11580156200033a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003609190620003e3565b50505062000407565b80516001600160a01b03811681146200038157600080fd5b919050565b600080604083850312156200039a57600080fd5b620003a58362000369565b9150620003b56020840162000369565b90509250929050565b600060208284031215620003d157600080fd5b620003dc8262000369565b9392505050565b600060208284031215620003f657600080fd5b81518015158114620003dc57600080fd5b60805160a05160c05160e0516101005161012051612aad6200055a60003960008181610d01015261124301526000818161055a01528181610cd0015261120f0152600081816103c901528181610647015281816106d401528181610767015281816107ec01528181610919015281816109a601528181610a3901528181610abe01528181610dba01528181610e4201528181610ec901528181610f860152818161100e015281816110950152818161151e015281816115ab0152818161163e015281816116c301528181611747015281816117cf015281816118560152818161190d0152818161199501528181611a1c01528181611ad301528181611b6001528181611bf301528181611c78015281816120e001526124380152600081816103780152818161060e0152611fd60152600081816105200152818161206801526124ba0152600061033c0152612aad6000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80637ecebe0011610130578063c11645bc116100b8578063d505accf1161007c578063d505accf1461058f578063d905777e146105a2578063dd62ed3e146105cb578063ef8b30f7146105f6578063f4b9fa751461060957600080fd5b8063c11645bc1461051b578063c63d75b6146103af578063c6e6f59214610542578063cd0d009614610555578063ce96cb771461057c57600080fd5b8063a457c2d7116100ff578063a457c2d7146104bc578063a9059cbb146104cf578063b3d7f6b9146104e2578063b460af94146104f5578063ba0876521461050857600080fd5b80637ecebe001461045157806394bf804d1461047157806395d89b41146104845780639fd5a6cf146104a757600080fd5b80633644e515116101be5780634ba2363a116101825780634ba2363a146103c45780634cdad506146103eb57806354fd4d50146103fe5780636e553f651461041e57806370a082311461043157600080fd5b80633644e5151461032f57806336569e771461033757806338d52e0f14610376578063395093511461039c578063402d267d146103af57600080fd5b80630a28a477116102055780630a28a477146102bf57806318160ddd146102d257806323b872dd146102db57806330adf81f146102ee578063313ce5671461031557600080fd5b806301e1d1141461023757806306fdde031461025257806307a2d13a14610289578063095ea7b31461029c575b600080fd5b61023f610630565b6040519081526020015b60405180910390f35b61027c6040518060400160405280600b81526020016a536176696e67732044616960a81b81525081565b60405161024991906125b9565b61023f6102973660046125cc565b610642565b6102af6102aa366004612601565b6108b9565b6040519015158152602001610249565b61023f6102cd3660046125cc565b610914565b61023f60005481565b6102af6102e936600461262b565b610b4e565b61023f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61031d601281565b60405160ff9091168152602001610249565b61023f610ccc565b61035e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610249565b7f000000000000000000000000000000000000000000000000000000000000000061035e565b6102af6103aa366004612601565b610d23565b61023f6103bd366004612667565b5060001990565b61035e7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6103f93660046125cc565b610daa565b61027c604051806040016040528060018152602001603160f81b81525081565b61023f61042c366004612682565b610db5565b61023f61043f366004612667565b60016020526000908152604090205481565b61023f61045f366004612667565b60036020526000908152604090205481565b61023f61047f366004612682565b610f81565b61027c604051806040016040528060048152602001637344414960e01b81525081565b6104ba6104b53660046126c4565b611144565b005b6102af6104ca366004612601565b6113be565b6102af6104dd366004612601565b61144d565b61023f6104f03660046125cc565b611519565b61023f6105033660046127aa565b611742565b61023f6105163660046127aa565b611908565b61035e7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6105503660046125cc565b611ace565b61023f7f000000000000000000000000000000000000000000000000000000000000000081565b61023f61058a366004612667565b611d00565b6104ba61059d3660046127e6565b611d22565b61023f6105b0366004612667565b6001600160a01b031660009081526001602052604090205490565b61023f6105d9366004612859565b600260209081526000928352604080842090915290825290205481565b61023f6106043660046125cc565b611d79565b61035e7f000000000000000000000000000000000000000000000000000000000000000081565b600061063d600054610642565b905090565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c79190612883565b90506000814211610759577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107549190612883565b61088f565b676765c793fa10079d601b1b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190612883565b61087b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663487bf0826040518163ffffffff1660e01b8152600401602060405180830381865afa158015610848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086c9190612883565b61087686426128b2565b611d84565b61088591906128c5565b61088f91906128f2565b9050676765c793fa10079d601b1b6108a782866128c5565b6108b191906128f2565b949350505050565b3360008181526002602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020612a58833981519152906109029086815260200190565b60405180910390a35060015b92915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610975573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109999190612883565b90506000814211610a2b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a269190612883565b610b2e565b676765c793fa10079d601b1b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab99190612883565b610b1a7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663487bf0826040518163ffffffff1660e01b8152600401602060405180830381865afa158015610848573d6000803e3d6000fd5b610b2491906128c5565b610b2e91906128f2565b90506108b1610b48676765c793fa10079d601b1b866128c5565b82611e75565b60006001600160a01b03831615801590610b7157506001600160a01b0383163014155b610b965760405162461bcd60e51b8152600401610b8d90612914565b60405180910390fd5b6001600160a01b03841660009081526001602052604090205482811015610bcf5760405162461bcd60e51b8152600401610b8d9061294b565b6001600160a01b0385163314610c57576001600160a01b03851660009081526002602090815260408083203384529091529020546000198114610c555783811015610c2c5760405162461bcd60e51b8152600401610b8d90612982565b6001600160a01b0386166000908152600260209081526040808320338452909152902084820390555b505b6001600160a01b0380861660008181526001602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610cb79087815260200190565b60405180910390a360019150505b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000004614610cfe5761063d46611ea3565b507f000000000000000000000000000000000000000000000000000000000000000090565b3360009081526002602090815260408083206001600160a01b03861684529091528120548190610d549084906129c3565b3360008181526002602090815260408083206001600160a01b038a1680855290835292819020859055518481529394509092600080516020612a5883398151915291015b60405180910390a35060019392505050565b600061090e82610642565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a9190612883565b4211610ec7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec29190612883565b610f4b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639f678cca6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610f27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4b9190612883565b905080610f63676765c793fa10079d601b1b866128c5565b610f6d91906128f2565b9150610f7a848385611f77565b5092915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fe2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110069190612883565b4211611093577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108e9190612883565b611117565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639f678cca6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156110f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111179190612883565b905061113761112682866128c5565b676765c793fa10079d601b1b611e75565b9150610f7a828585611f77565b814211156111945760405162461bcd60e51b815260206004820152601960248201527f536176696e67734461692f7065726d69742d65787069726564000000000000006044820152606401610b8d565b6001600160a01b0385166111ea5760405162461bcd60e51b815260206004820152601860248201527f536176696e67734461692f696e76616c69642d6f776e657200000000000000006044820152606401610b8d565b6001600160a01b038516600090815260036020526040812080546001810190915590467f0000000000000000000000000000000000000000000000000000000000000000146112415761123c46611ea3565b611263565b7f00000000000000000000000000000000000000000000000000000000000000005b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960208201526001600160a01b03808b169282019290925290881660608201526080810187905260a0810184905260c0810186905260e001604051602081830303815290604052805190602001206040516020016112fc92919061190160f01b81526002810192909252602282015260420190565b60405160208183030381529060405280519060200120905061131f8782856121ab565b61136b5760405162461bcd60e51b815260206004820152601960248201527f536176696e67734461692f696e76616c69642d7065726d6974000000000000006044820152606401610b8d565b6001600160a01b038781166000818152600260209081526040808320948b16808452948252918290208990559051888152600080516020612a58833981519152910160405180910390a350505050505050565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156114025760405162461bcd60e51b8152600401610b8d90612982565b3360008181526002602090815260408083206001600160a01b03891680855290835292819020948790039485905551848152919291600080516020612a588339815191529101610d98565b60006001600160a01b0383161580159061147057506001600160a01b0383163014155b61148c5760405162461bcd60e51b8152600401610b8d90612914565b33600090815260016020526040902054828110156114bc5760405162461bcd60e51b8152600401610b8d9061294b565b33600081815260016020908152604080832087860390556001600160a01b03881680845292819020805488019055518681529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610d98565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561157a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159e9190612883565b90506000814211611630577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162b9190612883565b611733565b676765c793fa10079d601b1b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be9190612883565b61171f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663487bf0826040518163ffffffff1660e01b8152600401602060405180830381865afa158015610848573d6000803e3d6000fd5b61172991906128c5565b61173391906128f2565b90506108b161112682866128c5565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190612883565b4211611854577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184f9190612883565b6118d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639f678cca6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156118b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d89190612883565b90506118f2610b48676765c793fa10079d601b1b876128c5565b91506119008583868661233c565b509392505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198d9190612883565b4211611a1a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a159190612883565b611a9e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639f678cca6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611a7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9e9190612883565b9050676765c793fa10079d601b1b611ab682876128c5565b611ac091906128f2565b91506119008286868661233c565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166320aba08b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b539190612883565b90506000814211611be5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be09190612883565b611ce8565b676765c793fa10079d601b1b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c92aecc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c739190612883565b611cd47f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663487bf0826040518163ffffffff1660e01b8152600401602060405180830381865afa158015610848573d6000803e3d6000fd5b611cde91906128c5565b611ce891906128f2565b9050806108a7676765c793fa10079d601b1b866128c5565b6001600160a01b03811660009081526001602052604081205461090e90610642565b611d7087878787868689604051602001611d5c93929190928352602083019190915260f81b6001600160f81b031916604082015260410190565b604051602081830303815290604052611144565b50505050505050565b600061090e82611ace565b6000828015611e4e57600183168015611d9f57849250611dae565b676765c793fa10079d601b1b92505b506002909204916b019d971e4fe8401e740000005b8315611e48578485028586820414611dda57600080fd5b81810181811015611dea57600080fd5b676765c793fa10079d601b1b90049550506001841615611e3d578483028386820414158615151615611e1b57600080fd5b81810181811015611e2b57600080fd5b676765c793fa10079d601b1b90049350505b600284049350611dc3565b50610f7a565b828015611e5e5760009250611e6d565b676765c793fa10079d601b1b92505b505092915050565b600082600003611e86576000610cc5565b816001840381611e9857611e986128dc565b046001019392505050565b604080518082018252600b81526a536176696e67732044616960a81b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc3f7aa5322e176c1c6e3195712ea57f43ea5d4428bc4005b44d51d1c8b188bbe818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101939093523060a0808501919091528251808503909101815260c0909301909152815191012090565b6001600160a01b03811615801590611f9857506001600160a01b0381163014155b611fb45760405162461bcd60e51b8152600401610b8d90612914565b6040516323b872dd60e01b8152336004820152306024820152604481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015612027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204b91906129d6565b50604051633b4da69f60e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633b4da69f90604401600060405180830381600087803b1580156120b457600080fd5b505af11580156120c8573d6000803e3d6000fd5b505060405163049878f360e01b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316925063049878f39150602401600060405180830381600087803b15801561212e57600080fd5b505af1158015612142573d6000803e3d6000fd5b505050506001600160a01b038116600081815260016020908152604080832080548701905582548601909255815186815290810185905233917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a3505050565b6000815160410361224857602082810151604080850151606080870151835160008082529681018086528a9052951a928501839052840183905260808401819052919260019060a0016020604051602081039080840390855afa158015612216573d6000803e3d6000fd5b505050602060405103516001600160a01b0316876001600160a01b0316036122445760019350505050610cc5565b5050505b600080856001600160a01b0316631626ba7e60e01b86866040516024016122709291906129f8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516122ae9190612a11565b600060405180830381855afa9150503d80600081146122e9576040519150601f19603f3d011682016040523d82523d6000602084013e6122ee565b606091505b5091509150818015612301575080516020145b801561233257508051630b135d3f60e11b906123269083016020908101908401612a2d565b6001600160e01b031916145b9695505050505050565b6001600160a01b038116600090815260016020526040902054838110156123755760405162461bcd60e51b8152600401610b8d9061294b565b6001600160a01b03821633146123fd576001600160a01b038216600090815260026020908152604080832033845290915290205460001981146123fb57848110156123d25760405162461bcd60e51b8152600401610b8d90612982565b6001600160a01b0383166000908152600260209081526040808320338452909152902085820390555b505b6001600160a01b038281166000908152600160205260408082208785039055815487900390915551637f8661a160e01b8152600481018690527f000000000000000000000000000000000000000000000000000000000000000090911690637f8661a190602401600060405180830381600087803b15801561247e57600080fd5b505af1158015612492573d6000803e3d6000fd5b505060405163ef693bed60e01b81526001600160a01b038681166004830152602482018990527f000000000000000000000000000000000000000000000000000000000000000016925063ef693bed9150604401600060405180830381600087803b15801561250057600080fd5b505af1158015612514573d6000803e3d6000fd5b505060408051888152602081018890526001600160a01b0380871694508716925033917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a45050505050565b60005b8381101561258457818101518382015260200161256c565b50506000910152565b600081518084526125a5816020860160208601612569565b601f01601f19169290920160200192915050565b602081526000610cc5602083018461258d565b6000602082840312156125de57600080fd5b5035919050565b80356001600160a01b03811681146125fc57600080fd5b919050565b6000806040838503121561261457600080fd5b61261d836125e5565b946020939093013593505050565b60008060006060848603121561264057600080fd5b612649846125e5565b9250612657602085016125e5565b9150604084013590509250925092565b60006020828403121561267957600080fd5b610cc5826125e5565b6000806040838503121561269557600080fd5b823591506126a5602084016125e5565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156126dc57600080fd5b6126e5866125e5565b94506126f3602087016125e5565b93506040860135925060608601359150608086013567ffffffffffffffff8082111561271e57600080fd5b818801915088601f83011261273257600080fd5b813581811115612744576127446126ae565b604051601f8201601f19908116603f0116810190838211818310171561276c5761276c6126ae565b816040528281528b602084870101111561278557600080fd5b8260208601602083013760006020848301015280955050505050509295509295909350565b6000806000606084860312156127bf57600080fd5b833592506127cf602085016125e5565b91506127dd604085016125e5565b90509250925092565b600080600080600080600060e0888a03121561280157600080fd5b61280a886125e5565b9650612818602089016125e5565b95506040880135945060608801359350608088013560ff8116811461283c57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561286c57600080fd5b612875836125e5565b91506126a5602084016125e5565b60006020828403121561289557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561090e5761090e61289c565b808202811582820484141761090e5761090e61289c565b634e487b7160e01b600052601260045260246000fd5b60008261290f57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252601a908201527f536176696e67734461692f696e76616c69642d61646472657373000000000000604082015260600190565b6020808252601f908201527f536176696e67734461692f696e73756666696369656e742d62616c616e636500604082015260600190565b60208082526021908201527f536176696e67734461692f696e73756666696369656e742d616c6c6f77616e636040820152606560f81b606082015260800190565b8082018082111561090e5761090e61289c565b6000602082840312156129e857600080fd5b81518015158114610cc557600080fd5b8281526040602082015260006108b1604083018461258d565b60008251612a23818460208701612569565b9190910192915050565b600060208284031215612a3f57600080fd5b81516001600160e01b031981168114610cc557600080fdfe8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220293e4440d9b8d809025462018f9cf991307dc9c59175e4bef40a39bc9e54670964736f6c634300081100330000000000000000000000009759a6ac90977b93b58547b4a71c78317f391a28000000000000000000000000197e90f9fad81970ba7976f33cbd77088e5d7cf7