{"abi":[{"type":"constructor","inputs":[{"name":"_strategyManager","type":"address","internalType":"contract IStrategyManager"}],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"newShares","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"explanation","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"initialize","inputs":[{"name":"_underlyingToken","type":"address","internalType":"contract IERC20"},{"name":"_pauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauserRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"setPauserRegistry","inputs":[{"name":"newPauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"shares","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"sharesToUnderlying","inputs":[{"name":"amountShares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"sharesToUnderlyingView","inputs":[{"name":"amountShares","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"strategyManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IStrategyManager"}],"stateMutability":"view"},{"type":"function","name":"totalShares","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"underlyingToShares","inputs":[{"name":"amountUnderlying","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"underlyingToSharesView","inputs":[{"name":"amountUnderlying","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"underlyingToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"userUnderlying","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"userUnderlyingView","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"amountShares","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauserRegistrySet","inputs":[{"name":"pauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"},{"name":"newPauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60a060405234801561001057600080fd5b50604051620018b9380380620018b98339810160408190526100319161010c565b6001600160a01b03811660805261004661004c565b5061013c565b600054610100900460ff16156100b85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101561010a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011e57600080fd5b81516001600160a01b038116811461013557600080fd5b9392505050565b60805161174c6200016d6000396000818161019901528181610570015281816109550152610a20015261174c6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046113db565b610310565b005b61014f61015f3660046113f8565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e0366004611411565b610510565b61014f6101f336600461143d565b6106b4565b6101c46102063660046113db565b6107c9565b61014f6107dd565b610232610221366004611476565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046113f8565b6108a9565b600054610177906201000090046001600160a01b031681565b6101c46102843660046113f8565b6108f4565b6101c46102973660046113db565b6108ff565b6102a461090d565b60405161018b91906114c9565b6101c46102bf3660046113db565b61092d565b61014f6102d23660046114fc565b6109c2565b6101c46102e53660046113f8565b610b8b565b6101c46102f83660046113f8565b610bc4565b61014f61030b3660046113f8565b610bcf565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610387919061153d565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061155a565b60405180910390fd5b6103c981610d2b565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d91906115a4565b6104595760405162461bcd60e51b81526004016103b7906115c6565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610e30565b60335460006105f86103e883611624565b905060006103e8610607610eb0565b6106119190611624565b9050600061061f878361163c565b90508061062c8489611653565b6106369190611672565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a68685611624565b603355505050505092915050565b600054610100900460ff16158080156106d45750600054600160ff909116105b806106ee5750303b1580156106ee575060005460ff166001145b6107515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610774576000805461ff0019166101001790555b61077e8383610f22565b80156107c4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006107d76102588361092d565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e91906115a4565b61086a5760405162461bcd60e51b81526004016103b7906115c6565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e86033546108bc9190611624565b905060006103e86108cb610eb0565b6108d59190611624565b9050816108e28583611653565b6108ec9190611672565b949350505050565b60006107d782610b8b565b60006107d76102f88361092d565b60606040518060800160405280604d81526020016116ca604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa15801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d79190611694565b6001805460029081161415610a155760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a8d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610a98848484610fb3565b60335480831115610b275760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610b356103e883611624565b905060006103e8610b44610eb0565b610b4e9190611624565b9050600082610b5d8784611653565b610b679190611672565b9050610b73868561163c565b603355610b81888883611036565b5050505050505050565b6000806103e8603354610b9e9190611624565b905060006103e8610bad610eb0565b610bb79190611624565b9050806108e28386611653565b60006107d7826108a9565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c46919061153d565b6001600160a01b0316336001600160a01b031614610c765760405162461bcd60e51b81526004016103b79061155a565b600154198119600154191614610cf45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610db95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610eac5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190611694565b905090565b600054610100900460ff16610f8d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b038416179055610eac81600061104a565b6032546001600160a01b038381169116146107c45760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6107c46001600160a01b0383168483611136565b6000546201000090046001600160a01b031615801561107157506001600160a01b03821615155b6110f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610eac82610d2b565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526107c4928692916000916111c6918516908490611243565b8051909150156107c457808060200190518101906111e491906115a4565b6107c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b6060611252848460008561125c565b90505b9392505050565b6060824710156112bd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6113145760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b0316858760405161133091906116ad565b60006040518083038185875af1925050503d806000811461136d576040519150601f19603f3d011682016040523d82523d6000602084013e611372565b606091505b509150915061138282828661138d565b979650505050505050565b6060831561139c575081611255565b8251156113ac5782518084602001fd5b8160405162461bcd60e51b81526004016103b791906114c9565b6001600160a01b03811681146103c957600080fd5b6000602082840312156113ed57600080fd5b8135611255816113c6565b60006020828403121561140a57600080fd5b5035919050565b6000806040838503121561142457600080fd5b823561142f816113c6565b946020939093013593505050565b6000806040838503121561145057600080fd5b823561145b816113c6565b9150602083013561146b816113c6565b809150509250929050565b60006020828403121561148857600080fd5b813560ff8116811461125557600080fd5b60005b838110156114b457818101518382015260200161149c565b838111156114c3576000848401525b50505050565b60208152600082518060208401526114e8816040850160208701611499565b601f01601f19169190910160400192915050565b60008060006060848603121561151157600080fd5b833561151c816113c6565b9250602084013561152c816113c6565b929592945050506040919091013590565b60006020828403121561154f57600080fd5b8151611255816113c6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156115b657600080fd5b8151801515811461125557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156116375761163761160e565b500190565b60008282101561164e5761164e61160e565b500390565b600081600019048311821515161561166d5761166d61160e565b500290565b60008261168f57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156116a657600080fd5b5051919050565b600082516116bf818460208701611499565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220f3bd4788e019ba06b2f62b6a398cc7c5a2c3997e0abae08a35d1bc1d2d3e764464736f6c634300080c0033","sourceMap":"2180:14051:35:-:0;;;3803:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3860:34:35;;;;3904:22;:20;:22::i;:::-;3803:130;2180:14051;;5388:279:38;5456:13;;;;;;;5455:14;5447:66;;;;-1:-1:-1;;;5447:66:38;;536:2:169;5447:66:38;;;518:21:169;575:2;555:18;;;548:30;614:34;594:18;;;587:62;-1:-1:-1;;;665:18:169;;;658:37;712:19;;5447:66:38;;;;;;;;5527:12;;5542:15;5527:12;;;:30;5523:138;;;5573:12;:30;;-1:-1:-1;;5573:30:38;5588:15;5573:30;;;;;;5622:28;;884:36:169;;;5622:28:38;;872:2:169;857:18;5622:28:38;;;;;;;5523:138;5388:279::o;14:315:169:-;109:6;162:2;150:9;141:7;137:23;133:32;130:52;;;178:1;175;168:12;130:52;204:16;;-1:-1:-1;;;;;249:31:169;;239:42;;229:70;;295:1;292;285:12;229:70;318:5;14:315;-1:-1:-1;;;14:315:169:o;742:184::-;2180:14051:35;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b8578063ab5921e11161007c578063ab5921e11461029c578063ce7c2ac2146102b1578063d9caed12146102c4578063e3dae51c146102d7578063f3e73875146102ea578063fabc1cbc146102fd57600080fd5b80635c975abb146102425780637a8b26371461024a578063886f11951461025d5780638c871019146102765780638f6a62401461028957600080fd5b806347e7ef24116100ff57806347e7ef24146101d2578063485cc955146101e5578063553ca5f8146101f8578063595c6a671461020b5780635ac86ab71461021357600080fd5b806310d67a2f1461013c578063136439dd146101515780632495a5991461016457806339b70e38146101945780633a98ef39146101bb575b600080fd5b61014f61014a3660046113db565b610310565b005b61014f61015f3660046113f8565b6103cc565b603254610177906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101777f000000000000000000000000000000000000000000000000000000000000000081565b6101c460335481565b60405190815260200161018b565b6101c46101e0366004611411565b610510565b61014f6101f336600461143d565b6106b4565b6101c46102063660046113db565b6107c9565b61014f6107dd565b610232610221366004611476565b6001805460ff9092161b9081161490565b604051901515815260200161018b565b6001546101c4565b6101c46102583660046113f8565b6108a9565b600054610177906201000090046001600160a01b031681565b6101c46102843660046113f8565b6108f4565b6101c46102973660046113db565b6108ff565b6102a461090d565b60405161018b91906114c9565b6101c46102bf3660046113db565b61092d565b61014f6102d23660046114fc565b6109c2565b6101c46102e53660046113f8565b610b8b565b6101c46102f83660046113f8565b610bc4565b61014f61030b3660046113f8565b610bcf565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610387919061153d565b6001600160a01b0316336001600160a01b0316146103c05760405162461bcd60e51b81526004016103b79061155a565b60405180910390fd5b6103c981610d2b565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d91906115a4565b6104595760405162461bcd60e51b81526004016103b7906115c6565b600154818116146104d25760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156105655760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105dd5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b6105e78484610e30565b60335460006105f86103e883611624565b905060006103e8610607610eb0565b6106119190611624565b9050600061061f878361163c565b90508061062c8489611653565b6106369190611672565b95508561069c5760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b60648201526084016103b7565b6106a68685611624565b603355505050505092915050565b600054610100900460ff16158080156106d45750600054600160ff909116105b806106ee5750303b1580156106ee575060005460ff166001145b6107515760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103b7565b6000805460ff191660011790558015610774576000805461ff0019166101001790555b61077e8383610f22565b80156107c4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006107d76102588361092d565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e91906115a4565b61086a5760405162461bcd60e51b81526004016103b7906115c6565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e86033546108bc9190611624565b905060006103e86108cb610eb0565b6108d59190611624565b9050816108e28583611653565b6108ec9190611672565b949350505050565b60006107d782610b8b565b60006107d76102f88361092d565b60606040518060800160405280604d81526020016116ca604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690637a7e0d9290604401602060405180830381865afa15801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d79190611694565b6001805460029081161415610a155760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016103b7565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a8d5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e6167657260448201526064016103b7565b610a98848484610fb3565b60335480831115610b275760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a4016103b7565b6000610b356103e883611624565b905060006103e8610b44610eb0565b610b4e9190611624565b9050600082610b5d8784611653565b610b679190611672565b9050610b73868561163c565b603355610b81888883611036565b5050505050505050565b6000806103e8603354610b9e9190611624565b905060006103e8610bad610eb0565b610bb79190611624565b9050806108e28386611653565b60006107d7826108a9565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c46919061153d565b6001600160a01b0316336001600160a01b031614610c765760405162461bcd60e51b81526004016103b79061155a565b600154198119600154191614610cf45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103b7565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610505565b6001600160a01b038116610db95760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103b7565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6032546001600160a01b03838116911614610eac5760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b60648201526084016103b7565b5050565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190611694565b905090565b600054610100900460ff16610f8d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103b7565b603280546001600160a01b0319166001600160a01b038416179055610eac81600061104a565b6032546001600160a01b038381169116146107c45760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e000000000060648201526084016103b7565b6107c46001600160a01b0383168483611136565b6000546201000090046001600160a01b031615801561107157506001600160a01b03821615155b6110f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103b7565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610eac82610d2b565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526107c4928692916000916111c6918516908490611243565b8051909150156107c457808060200190518101906111e491906115a4565b6107c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b7565b6060611252848460008561125c565b90505b9392505050565b6060824710156112bd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b7565b6001600160a01b0385163b6113145760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b7565b600080866001600160a01b0316858760405161133091906116ad565b60006040518083038185875af1925050503d806000811461136d576040519150601f19603f3d011682016040523d82523d6000602084013e611372565b606091505b509150915061138282828661138d565b979650505050505050565b6060831561139c575081611255565b8251156113ac5782518084602001fd5b8160405162461bcd60e51b81526004016103b791906114c9565b6001600160a01b03811681146103c957600080fd5b6000602082840312156113ed57600080fd5b8135611255816113c6565b60006020828403121561140a57600080fd5b5035919050565b6000806040838503121561142457600080fd5b823561142f816113c6565b946020939093013593505050565b6000806040838503121561145057600080fd5b823561145b816113c6565b9150602083013561146b816113c6565b809150509250929050565b60006020828403121561148857600080fd5b813560ff8116811461125557600080fd5b60005b838110156114b457818101518382015260200161149c565b838111156114c3576000848401525b50505050565b60208152600082518060208401526114e8816040850160208701611499565b601f01601f19169190910160400192915050565b60008060006060848603121561151157600080fd5b833561151c816113c6565b9250602084013561152c816113c6565b929592945050506040919091013590565b60006020828403121561154f57600080fd5b8151611255816113c6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156115b657600080fd5b8151801515811461125557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156116375761163761160e565b500190565b60008282101561164e5761164e61160e565b500390565b600081600019048311821515161561166d5761166d61160e565b500290565b60008261168f57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156116a657600080fd5b5051919050565b600082516116bf818460208701611499565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220f3bd4788e019ba06b2f62b6a398cc7c5a2c3997e0abae08a35d1bc1d2d3e764464736f6c634300080c0033","sourceMap":"2180:14051:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5814:138:28;;;;;;:::i;:::-;;:::i;:::-;;3832:392;;;;;;:::i;:::-;;:::i;3242:29:35:-;;;;;-1:-1:-1;;;;;3242:29:35;;;;;;-1:-1:-1;;;;;825:32:169;;;807:51;;795:2;780:18;3242:29:35;;;;;;;;3121:49;;;;;3345:26;;;;;;;;;1248:25:169;;;1236:2;1221:18;3345:26:35;1102:177:169;5601:1518:35;;;;;;:::i;:::-;;:::i;3939:180::-;;;;;;:::i;:::-;;:::i;14814:142::-;;;;;;:::i;:::-;;:::i;4299:136:28:-;;;:::i;5594:149::-;;;;;;:::i;:::-;5683:1;5712:7;;5683:10;;;;;5712:14;;;5711:24;;5594:149;;;;2812:14:169;;2805:22;2787:41;;2775:2;2760:18;5594:149:28;2647:187:169;5406:87:28;5479:7;;5406:87;;11680:476:35;;;;;;:::i;:::-;;:::i;1825:37:28:-;;;;;;;;-1:-1:-1;;;;;1825:37:28;;;14420:158:35;;;;;;:::i;:::-;;:::i;15195:129::-;;;;;;:::i;:::-;;:::i;10959:181::-;;;:::i;:::-;;;;;;;:::i;15498:160::-;;;;;;:::i;:::-;;:::i;7766:1461::-;;;;;;:::i;:::-;;:::i;13399:475::-;;;;;;:::i;:::-;;:::i;12699:157::-;;;;;;:::i;:::-;;:::i;4911:425:28:-;;;;;;:::i;:::-;;:::i;5814:138::-;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:28;-1:-1:-1;;;;;2285:23:28;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:28;:10;-1:-1:-1;;;;;2271:39:28;;2263:94;;;;-1:-1:-1;;;2263:94:28;;;;;;;:::i;:::-;;;;;;;;;5908:37:::1;5927:17;5908:18;:37::i;:::-;5814:138:::0;:::o;3832:392::-;2125:14;;:35;;-1:-1:-1;;;2125:35:28;;2149:10;2125:35;;;807:51:169;2125:14:28;;;;-1:-1:-1;;;;;2125:14:28;;:23;;780:18:169;;2125:35:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:28;;;;;;;:::i;:::-;4064:7:::1;::::0;4034:25;;::::1;4033:38;4025:107;;;::::0;-1:-1:-1;;;4025:107:28;;6018:2:169;4025:107:28::1;::::0;::::1;6000:21:169::0;6057:2;6037:18;;;6030:30;6096:34;6076:18;;;6069:62;6167:26;6147:18;;;6140:54;6211:19;;4025:107:28::1;5816:420:169::0;4025:107:28::1;4142:7;:25:::0;;;4182:35:::1;::::0;1248:25:169;;;4189:10:28::1;::::0;4182:35:::1;::::0;1236:2:169;1221:18;4182:35:28::1;;;;;;;;3832:392:::0;:::o;5601:1518:35:-;5683:1:28;5712:7;;5760:17:35;;;;5712:14:28;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:28;;6443:2:169;2759:52:28;;;6425:21:169;6482:2;6462:18;;;6455:30;-1:-1:-1;;;6501:18:169;;;6494:55;6566:18;;2759:52:28;6241:349:169;2759:52:28;3559:10:35::1;-1:-1:-1::0;;;;;3581:15:35::1;3559:38;;3551:83;;;::::0;-1:-1:-1;;;3551:83:35;;6797:2:169;3551:83:35::1;::::0;::::1;6779:21:169::0;;;6816:18;;;6809:30;6875:34;6855:18;;;6848:62;6927:18;;3551:83:35::1;6595:356:169::0;3551:83:35::1;5845:29:::2;5860:5;5867:6;5845:14;:29::i;:::-;5979:11;::::0;5952:24:::2;6379:32;2714:3;5979:11:::0;6379:32:::2;:::i;:::-;6350:61;;6421:27;3057:3;6451:15;:13;:15::i;:::-;:32;;;;:::i;:::-;6421:62:::0;-1:-1:-1;6613:32:35::2;6648:28;6670:6:::0;6421:62;6648:28:::2;:::i;:::-;6613:63:::0;-1:-1:-1;6613:63:35;6699:27:::2;6708:18:::0;6699:6;:27:::2;:::i;:::-;6698:56;;;;:::i;:::-;6686:68:::0;-1:-1:-1;6906:14:35;6898:73:::2;;;::::0;-1:-1:-1;;;6898:73:35;;7948:2:169;6898:73:35::2;::::0;::::2;7930:21:169::0;7987:2;7967:18;;;7960:30;8026:34;8006:18;;;7999:62;-1:-1:-1;;;8077:18:169;;;8070:44;8131:19;;6898:73:35::2;7746:410:169::0;6898:73:35::2;7057:28;7076:9:::0;7057:16;:28:::2;:::i;:::-;7042:11;:44:::0;-1:-1:-1;;;;5601:1518:35;;;;;:::o;3939:180::-;3111:19:38;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:38;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:38;1476:19:40;:23;;;3219:66:38;;-1:-1:-1;3268:12:38;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:38;;8363:2:169;3157:201:38;;;8345:21:169;8402:2;8382:18;;;8375:30;8441:34;8421:18;;;8414:62;-1:-1:-1;;;8492:18:169;;;8485:44;8546:19;;3157:201:38;8161:410:169;3157:201:38;3368:12;:16;;-1:-1:-1;;3368:16:38;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:38;;;;;3394:65;4054:58:35::1;4078:16;4096:15;4054:23;:58::i;:::-;3483:14:38::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:38;;;3553:14;;-1:-1:-1;8728:36:169;;3553:14:38;;8716:2:169;8701:18;3553:14:38;;;;;;;3479:99;3101:483;3939:180:35;;:::o;14814:142::-;14887:7;14913:36;14936:12;14943:4;14936:6;:12::i;14913:36::-;14906:43;14814:142;-1:-1:-1;;14814:142:35:o;4299:136:28:-;2125:14;;:35;;-1:-1:-1;;;2125:35:28;;2149:10;2125:35;;;807:51:169;2125:14:28;;;;-1:-1:-1;;;;;2125:14:28;;:23;;780:18:169;;2125:35:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:28;;;;;;;:::i;:::-;-1:-1:-1;;4349:7:28::1;:27:::0;;;4391:37:::1;::::0;1248:25:169;;;4398:10:28::1;::::0;4391:37:::1;::::0;1236:2:169;1221:18;4391:37:28::1;;;;;;;4299:136::o:0;11680:476:35:-;11772:7;11841:26;2714:3;11870:11;;:27;;;;:::i;:::-;11841:56;;11907:27;3057:3;11937:15;:13;:15::i;:::-;:32;;;;:::i;:::-;11907:62;-1:-1:-1;12131:18:35;12093:34;12115:12;11907:62;12093:34;:::i;:::-;12092:57;;;;:::i;:::-;12085:64;11680:476;-1:-1:-1;;;;11680:476:35:o;14420:158::-;14505:7;14531:40;14554:16;14531:22;:40::i;15195:129::-;15259:7;15285:32;15304:12;15311:4;15304:6;:12::i;10959:181::-;11022:13;11047:86;;;;;;;;;;;;;;;;;;;10959:181;:::o;15498:160::-;15583:68;;-1:-1:-1;;;15583:68:35;;-1:-1:-1;;;;;9023:15:169;;;15583:68:35;;;9005:34:169;15644:4:35;9055:18:169;;;9048:43;15557:7:35;;15583:15;:36;;;;;;8940:18:169;;15583:68:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7766:1461::-;2373:1;5712:7:28;;5683:10;5712:14;;;5711:24;2767:14;2759:52;;;;-1:-1:-1;;;2759:52:28;;6443:2:169;2759:52:28;;;6425:21:169;6482:2;6462:18;;;6455:30;-1:-1:-1;;;6501:18:169;;;6494:55;6566:18;;2759:52:28;6241:349:169;2759:52:28;3559:10:35::1;-1:-1:-1::0;;;;;3581:15:35::1;3559:38;;3551:83;;;::::0;-1:-1:-1;;;3551:83:35;;6797:2:169;3551:83:35::1;::::0;::::1;6779:21:169::0;;;6816:18;;;6809:30;6875:34;6855:18;;;6848:62;6927:18;;3551:83:35::1;6595:356:169::0;3551:83:35::1;8022:49:::2;8040:9;8051:5;8058:12;8022:17;:49::i;:::-;8176:11;::::0;8219:32;;::::2;;8198:156;;;::::0;-1:-1:-1;;;8198:156:35;;9493:2:169;8198:156:35::2;::::0;::::2;9475:21:169::0;9532:2;9512:18;;;9505:30;9571:34;9551:18;;;9544:62;9642:34;9622:18;;;9615:62;-1:-1:-1;;;9693:19:169;;;9686:44;9747:19;;8198:156:35::2;9291:481:169::0;8198:156:35::2;8696:31;8730:32;2714:3;8730:16:::0;:32:::2;:::i;:::-;8696:66;;8772:27;3057:3;8802:15;:13;:15::i;:::-;:32;;;;:::i;:::-;8772:62:::0;-1:-1:-1;8950:20:35::2;9012:23:::0;8974:34:::2;8996:12:::0;8772:62;8974:34:::2;:::i;:::-;8973:62;;;;:::i;:::-;8950:85:::0;-1:-1:-1;9130:31:35::2;9149:12:::0;9130:16;:31:::2;:::i;:::-;9116:11;:45:::0;9172:48:::2;9189:9:::0;9200:5;9207:12;9172:16:::2;:48::i;:::-;7953:1274;;;;7766:1461:::0;;;;:::o;13399:475::-;13486:7;13555:26;2714:3;13584:11;;:27;;;;:::i;:::-;13555:56;;13621:27;3057:3;13651:15;:13;:15::i;:::-;:32;;;;:::i;:::-;13621:62;-1:-1:-1;13621:62:35;13807:37;13826:18;13807:16;:37;:::i;12699:157::-;12787:7;12813:36;12836:12;12813:22;:36::i;4911:425:28:-;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:28;-1:-1:-1;;;;;2285:23:28;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:28;:10;-1:-1:-1;;;;;2271:39:28;;2263:94;;;;-1:-1:-1;;;2263:94:28;;;;;;;:::i;:::-;5164:7:::1;;5163:8;5141:15;5140:16;5128:7;;5127:8;5126:31;5125:47;5104:138;;;::::0;-1:-1:-1;;;5104:138:28;;9979:2:169;5104:138:28::1;::::0;::::1;9961:21:169::0;10018:2;9998:18;;;9991:30;10057:34;10037:18;;;10030:62;10128:26;10108:18;;;10101:54;10172:19;;5104:138:28::1;9777:420:169::0;5104:138:28::1;5252:7;:25:::0;;;5292:37:::1;::::0;1248:25:169;;;5301:10:28::1;::::0;5292:37:::1;::::0;1236:2:169;1221:18;5292:37:28::1;1102:177:169::0;6012:360:28;-1:-1:-1;;;;;6115:40:28;;6094:160;;;;-1:-1:-1;;;6094:160:28;;10404:2:169;6094:160:28;;;10386:21:169;10443:2;10423:18;;;10416:30;10482:34;10462:18;;;10455:62;10553:34;10533:18;;;10526:62;-1:-1:-1;;;10604:19:169;;;10597:40;10654:19;;6094:160:28;10202:477:169;6094:160:28;6287:14;;6269:52;;;-1:-1:-1;;;;;6287:14:28;;;;;;9005:34:169;;9075:15;;;9070:2;9055:18;;9048:43;6269:52:28;;8940:18:169;6269:52:28;;;;;;;6331:14;:34;;-1:-1:-1;;;;;6331:34:28;;;;;-1:-1:-1;;;;;;6331:34:28;;;;;;;;;6012:360::o;9499:179:35:-;9597:15;;-1:-1:-1;;;;;9588:24:35;;;9597:15;;9588:24;9580:91;;;;-1:-1:-1;;;9580:91:35;;11243:2:169;9580:91:35;;;11225:21:169;11282:2;11262:18;;;11255:30;11321:34;11301:18;;;11294:62;-1:-1:-1;;;11372:18:169;;;11365:52;11434:19;;9580:91:35;11041:418:169;9580:91:35;9499:179;;:::o;15809:129::-;15891:15;;:40;;-1:-1:-1;;;15891:40:35;;15925:4;15891:40;;;807:51:169;15865:7:35;;-1:-1:-1;;;;;15891:15:35;;:25;;780:18:169;;15891:40:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15884:47;;15809:129;:::o;4207:247::-;4910:13:38;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:38;;11666:2:169;4902:69:38;;;11648:21:169;11705:2;11685:18;;;11678:30;11744:34;11724:18;;;11717:62;-1:-1:-1;;;11795:18:169;;;11788:41;11846:19;;4902:69:38;11464:407:169;4902:69:38;4356:15:35::1;:34:::0;;-1:-1:-1;;;;;;4356:34:35::1;-1:-1:-1::0;;;;;4356:34:35;::::1;;::::0;;4400:47:::1;4418:15:::0;-1:-1:-1;4400:17:35::1;:47::i;10032:212::-:0;10158:15;;-1:-1:-1;;;;;10149:24:35;;;10158:15;;10149:24;10141:96;;;;-1:-1:-1;;;10141:96:35;;12078:2:169;10141:96:35;;;12060:21:169;12117:2;12097:18;;;12090:30;12156:34;12136:18;;;12129:62;12227:29;12207:18;;;12200:57;12274:19;;10141:96:35;11876:423:169;10593:158:35;10701:43;-1:-1:-1;;;;;10701:18:35;;10720:9;10731:12;10701:18;:43::i;2943:441:28:-;3104:1;3077:14;;;;-1:-1:-1;;;;;3077:14:28;3069:37;:79;;;;-1:-1:-1;;;;;;3110:38:28;;;;3069:79;3048:197;;;;-1:-1:-1;;;3048:197:28;;12506:2:169;3048:197:28;;;12488:21:169;12545:2;12525:18;;;12518:30;12584:34;12564:18;;;12557:62;12655:34;12635:18;;;12628:62;-1:-1:-1;;;12706:19:169;;;12699:38;12754:19;;3048:197:28;12304:475:169;3048:197:28;3255:7;:26;;;3296:36;;1248:25:169;;;3303:10:28;;3296:36;;1236:2:169;1221:18;3296:36:28;;;;;;;3342:35;3361:15;3342:18;:35::i;763:205:60:-;902:58;;;-1:-1:-1;;;;;12976:32:169;;;902:58:60;;;12958:51:169;13025:18;;;;13018:34;;;902:58:60;;;;;;;;;;12931:18:169;;;;902:58:60;;;;;;;;-1:-1:-1;;;;;902:58:60;-1:-1:-1;;;902:58:60;;;4192:69;;;;;;;;;;;;;;;;875:86;;895:5;;902:58;-1:-1:-1;;4192:69:60;;:27;;;902:58;;4192:27;:69::i;:::-;4275:17;;4166:95;;-1:-1:-1;4275:21:60;4271:176;;4370:10;4359:30;;;;;;;;;;;;:::i;:::-;4351:85;;;;-1:-1:-1;;;4351:85:60;;13265:2:169;4351:85:60;;;13247:21:169;13304:2;13284:18;;;13277:30;13343:34;13323:18;;;13316:62;-1:-1:-1;;;13394:18:169;;;13387:40;13444:19;;4351:85:60;13063:406:169;3861:223:61;3994:12;4025:52;4047:6;4055:4;4061:1;4064:12;4025:21;:52::i;:::-;4018:59;;3861:223;;;;;;:::o;4948:499::-;5113:12;5170:5;5145:21;:30;;5137:81;;;;-1:-1:-1;;;5137:81:61;;13676:2:169;5137:81:61;;;13658:21:169;13715:2;13695:18;;;13688:30;13754:34;13734:18;;;13727:62;-1:-1:-1;;;13805:18:169;;;13798:36;13851:19;;5137:81:61;13474:402:169;5137:81:61;-1:-1:-1;;;;;1476:19:40;;;5228:60:61;;;;-1:-1:-1;;;5228:60:61;;14083:2:169;5228:60:61;;;14065:21:169;14122:2;14102:18;;;14095:30;14161:31;14141:18;;;14134:59;14210:18;;5228:60:61;13881:353:169;5228:60:61;5300:12;5314:23;5341:6;-1:-1:-1;;;;;5341:11:61;5360:5;5367:4;5341:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5299:73;;;;5389:51;5406:7;5415:10;5427:12;5389:16;:51::i;:::-;5382:58;4948:499;-1:-1:-1;;;;;;;4948:499:61:o;7561:742::-;7707:12;7735:7;7731:566;;;-1:-1:-1;7765:10:61;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;-1:-1:-1;;;8252:20:61;;;;;;;;:::i;14:148:169:-;-1:-1:-1;;;;;106:31:169;;96:42;;86:70;;152:1;149;142:12;167:288;250:6;303:2;291:9;282:7;278:23;274:32;271:52;;;319:1;316;309:12;271:52;358:9;345:23;377:48;419:5;377:48;:::i;460:180::-;519:6;572:2;560:9;551:7;547:23;543:32;540:52;;;588:1;585;578:12;540:52;-1:-1:-1;611:23:169;;460:180;-1:-1:-1;460:180:169:o;1284:348::-;1368:6;1376;1429:2;1417:9;1408:7;1404:23;1400:32;1397:52;;;1445:1;1442;1435:12;1397:52;1484:9;1471:23;1503:48;1545:5;1503:48;:::i;:::-;1570:5;1622:2;1607:18;;;;1594:32;;-1:-1:-1;;;1284:348:169:o;1637:462::-;1745:6;1753;1806:2;1794:9;1785:7;1781:23;1777:32;1774:52;;;1822:1;1819;1812:12;1774:52;1861:9;1848:23;1880:48;1922:5;1880:48;:::i;:::-;1947:5;-1:-1:-1;2004:2:169;1989:18;;1976:32;2017:50;1976:32;2017:50;:::i;:::-;2086:7;2076:17;;;1637:462;;;;;:::o;2373:269::-;2430:6;2483:2;2471:9;2462:7;2458:23;2454:32;2451:52;;;2499:1;2496;2489:12;2451:52;2538:9;2525:23;2588:4;2581:5;2577:16;2570:5;2567:27;2557:55;;2608:1;2605;2598:12;3071:258;3143:1;3153:113;3167:6;3164:1;3161:13;3153:113;;;3243:11;;;3237:18;3224:11;;;3217:39;3189:2;3182:10;3153:113;;;3284:6;3281:1;3278:13;3275:48;;;3319:1;3310:6;3305:3;3301:16;3294:27;3275:48;;3071:258;;;:::o;3334:383::-;3483:2;3472:9;3465:21;3446:4;3515:6;3509:13;3558:6;3553:2;3542:9;3538:18;3531:34;3574:66;3633:6;3628:2;3617:9;3613:18;3608:2;3600:6;3596:15;3574:66;:::i;:::-;3701:2;3680:15;-1:-1:-1;;3676:29:169;3661:45;;;;3708:2;3657:54;;3334:383;-1:-1:-1;;3334:383:169:o;3722:506::-;3815:6;3823;3831;3884:2;3872:9;3863:7;3859:23;3855:32;3852:52;;;3900:1;3897;3890:12;3852:52;3939:9;3926:23;3958:48;4000:5;3958:48;:::i;:::-;4025:5;-1:-1:-1;4082:2:169;4067:18;;4054:32;4095:50;4054:32;4095:50;:::i;:::-;3722:506;;4164:7;;-1:-1:-1;;;4218:2:169;4203:18;;;;4190:32;;3722:506::o;4233:268::-;4303:6;4356:2;4344:9;4335:7;4331:23;4327:32;4324:52;;;4372:1;4369;4362:12;4324:52;4404:9;4398:16;4423:48;4465:5;4423:48;:::i;4506:406::-;4708:2;4690:21;;;4747:2;4727:18;;;4720:30;4786:34;4781:2;4766:18;;4759:62;-1:-1:-1;;;4852:2:169;4837:18;;4830:40;4902:3;4887:19;;4506:406::o;5125:277::-;5192:6;5245:2;5233:9;5224:7;5220:23;5216:32;5213:52;;;5261:1;5258;5251:12;5213:52;5293:9;5287:16;5346:5;5339:13;5332:21;5325:5;5322:32;5312:60;;5368:1;5365;5358:12;5407:404;5609:2;5591:21;;;5648:2;5628:18;;;5621:30;5687:34;5682:2;5667:18;;5660:62;-1:-1:-1;;;5753:2:169;5738:18;;5731:38;5801:3;5786:19;;5407:404::o;6956:127::-;7017:10;7012:3;7008:20;7005:1;6998:31;7048:4;7045:1;7038:15;7072:4;7069:1;7062:15;7088:128;7128:3;7159:1;7155:6;7152:1;7149:13;7146:39;;;7165:18;;:::i;:::-;-1:-1:-1;7201:9:169;;7088:128::o;7221:125::-;7261:4;7289:1;7286;7283:8;7280:34;;;7294:18;;:::i;:::-;-1:-1:-1;7331:9:169;;7221:125::o;7351:168::-;7391:7;7457:1;7453;7449:6;7445:14;7442:1;7439:21;7434:1;7427:9;7420:17;7416:45;7413:71;;;7464:18;;:::i;:::-;-1:-1:-1;7504:9:169;;7351:168::o;7524:217::-;7564:1;7590;7580:132;;7634:10;7629:3;7625:20;7622:1;7615:31;7669:4;7666:1;7659:15;7697:4;7694:1;7687:15;7580:132;-1:-1:-1;7726:9:169;;7524:217::o;9102:184::-;9172:6;9225:2;9213:9;9204:7;9200:23;9196:32;9193:52;;;9241:1;9238;9231:12;9193:52;-1:-1:-1;9264:16:169;;9102:184;-1:-1:-1;9102:184:169:o;14239:274::-;14368:3;14406:6;14400:13;14422:53;14468:6;14463:3;14456:4;14448:6;14444:17;14422:53;:::i;:::-;14491:16;;;;;14239:274;-1:-1:-1;;14239:274:169:o","linkReferences":{},"immutableReferences":{"12946":[{"start":409,"length":32},{"start":1392,"length":32},{"start":2389,"length":32},{"start":2592,"length":32}]}},"methodIdentifiers":{"deposit(address,uint256)":"47e7ef24","explanation()":"ab5921e1","initialize(address,address)":"485cc955","pause(uint256)":"136439dd","pauseAll()":"595c6a67","paused()":"5c975abb","paused(uint8)":"5ac86ab7","pauserRegistry()":"886f1195","setPauserRegistry(address)":"10d67a2f","shares(address)":"ce7c2ac2","sharesToUnderlying(uint256)":"f3e73875","sharesToUnderlyingView(uint256)":"7a8b2637","strategyManager()":"39b70e38","totalShares()":"3a98ef39","underlyingToShares(uint256)":"8c871019","underlyingToSharesView(uint256)":"e3dae51c","underlyingToken()":"2495a599","unpause(uint256)":"fabc1cbc","userUnderlying(address)":"8f6a6240","userUnderlyingView(address)":"553ca5f8","withdraw(address,address,uint256)":"d9caed12"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IStrategyManager\",\"name\":\"_strategyManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"newShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"explanation\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_underlyingToken\",\"type\":\"address\"},{\"internalType\":\"contract IPauserRegistry\",\"name\":\"_pauserRegistry\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"shares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountShares\",\"type\":\"uint256\"}],\"name\":\"sharesToUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountShares\",\"type\":\"uint256\"}],\"name\":\"sharesToUnderlyingView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategyManager\",\"outputs\":[{\"internalType\":\"contract IStrategyManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"}],\"name\":\"underlyingToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"}],\"name\":\"underlyingToSharesView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlyingToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"userUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"userUnderlyingView\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountShares\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Layr Labs, Inc.\",\"details\":\"Note that some functions have their mutability restricted; developers inheriting from this contract cannot broaden the mutability without modifying this contract itself.This contract is expressly *not* intended for use with 'fee-on-transfer'-type tokens. Setting the `underlyingToken` to be a fee-on-transfer token may result in improper accounting.\",\"kind\":\"dev\",\"methods\":{\"deposit(address,uint256)\":{\"details\":\"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's `depositIntoStrategy` function, and individual share balances are recorded in the strategyManager as well.Note that the assumption is made that `amount` of `token` has already been transferred directly to this contract (as performed in the StrategyManager's deposit functions). In particular, setting the `underlyingToken` of this contract to be a fee-on-transfer token will break the assumption that the amount this contract *received* of the token is equal to the amount that was input when the transfer was performed (i.e. the amount transferred 'out' of the depositor's balance).Note that any validation of `token` is done inside `_beforeDeposit`. This can be overridden if needed.\",\"params\":{\"amount\":\"is the amount of token being deposited\",\"token\":\"is the ERC20 token being deposited\"},\"returns\":{\"newShares\":\"is the number of new shares issued at the current exchange ratio.\"}},\"pause(uint256)\":{\"details\":\"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"sharesToUnderlying(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountShares\":\"is the amount of shares to calculate its conversion into the underlying token\"},\"returns\":{\"_0\":\"The amount of underlying tokens corresponding to the input `amountShares`\"}},\"sharesToUnderlyingView(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountShares\":\"is the amount of shares to calculate its conversion into the underlying token\"},\"returns\":{\"_0\":\"The amount of underlying tokens corresponding to the input `amountShares`\"}},\"underlyingToShares(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountUnderlying\":\"is the amount of `underlyingToken` to calculate its conversion into strategy shares\"},\"returns\":{\"_0\":\"The amount of shares corresponding to the input `amountUnderlying`\"}},\"underlyingToSharesView(uint256)\":{\"details\":\"Implementation for these functions in particular may vary significantly for different strategies\",\"params\":{\"amountUnderlying\":\"is the amount of `underlyingToken` to calculate its conversion into strategy shares\"},\"returns\":{\"_0\":\"The amount of shares corresponding to the input `amountUnderlying`\"}},\"unpause(uint256)\":{\"details\":\"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"withdraw(address,address,uint256)\":{\"details\":\"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's other functions, and individual share balances are recorded in the strategyManager as well.Note that any validation of `token` is done inside `_beforeWithdrawal`. This can be overridden if needed.\",\"params\":{\"amountShares\":\"is the amount of shares being withdrawn\",\"recipient\":\"is the address to receive the withdrawn funds\",\"token\":\"is the ERC20 token being transferred out\"}}},\"stateVariables\":{\"__gap\":{\"details\":\"This empty reserved space is put in place to allow future versions to add new variables without shifting down storage in the inheritance chain. See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps\"}},\"title\":\"Base implementation of `IStrategy` interface, designed to be inherited from by more complex strategies.\",\"version\":1},\"userdoc\":{\"events\":{\"Paused(address,uint256)\":{\"notice\":\"Emitted when the pause is triggered by `account`, and changed to `newPausedStatus`.\"},\"PauserRegistrySet(address,address)\":{\"notice\":\"Emitted when the `pauserRegistry` is set to `newPauserRegistry`.\"},\"Unpaused(address,uint256)\":{\"notice\":\"Emitted when the pause is lifted by `account`, and changed to `newPausedStatus`.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Since this contract is designed to be initializable, the constructor simply sets `strategyManager`, the only immutable variable.\"},\"deposit(address,uint256)\":{\"notice\":\"Used to deposit tokens into this Strategy\"},\"explanation()\":{\"notice\":\"Currently returns a brief string explaining the strategy's goal & purpose, but for more complex strategies, may be a link to metadata that explains in more detail.\"},\"pause(uint256)\":{\"notice\":\"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig.\"},\"pauseAll()\":{\"notice\":\"Alias for `pause(type(uint256).max)`.\"},\"paused()\":{\"notice\":\"Returns the current paused status as a uint256.\"},\"paused(uint8)\":{\"notice\":\"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise\"},\"pauserRegistry()\":{\"notice\":\"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing).\"},\"setPauserRegistry(address)\":{\"notice\":\"Allows the unpauser to set a new pauser registry\"},\"shares(address)\":{\"notice\":\"convenience function for fetching the current total shares of `user` in this strategy, by querying the `strategyManager` contract\"},\"sharesToUnderlying(uint256)\":{\"notice\":\"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlyingView`, this function **may** make state modifications\"},\"sharesToUnderlyingView(uint256)\":{\"notice\":\"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlying`, this function guarantees no state modifications\"},\"strategyManager()\":{\"notice\":\"EigenLayer's StrategyManager contract\"},\"totalShares()\":{\"notice\":\"The total number of extant shares in this Strategy\"},\"underlyingToShares(uint256)\":{\"notice\":\"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToSharesView`, this function **may** make state modifications\"},\"underlyingToSharesView(uint256)\":{\"notice\":\"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToShares`, this function guarantees no state modifications\"},\"underlyingToken()\":{\"notice\":\"The underlying token for shares in this Strategy\"},\"unpause(uint256)\":{\"notice\":\"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract.\"},\"userUnderlying(address)\":{\"notice\":\"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlyingView`, this function **may** make state modifications\"},\"userUnderlyingView(address)\":{\"notice\":\"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlying`, this function guarantees no state modifications\"},\"withdraw(address,address,uint256)\":{\"notice\":\"Used to withdraw tokens from this Strategy, to the `recipient`'s address\"}},\"notice\":\"Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-serviceSimple, basic, \\\"do-nothing\\\" Strategy that holds a single underlying token and returns it on withdrawals. Implements minimal versions of the IStrategy functions, this contract is designed to be inherited by more complex strategies, which can then override its functions as necessary.This contract functions similarly to an ERC4626 vault, only without issuing a token. To mitigate against the common \\\"inflation attack\\\" vector, we have chosen to use the 'virtual shares' mitigation route, similar to [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/extensions/ERC4626.sol). We acknowledge that this mitigation has the known downside of the virtual shares causing some losses to users, which are pronounced particularly in the case of the share exchange rate changing signficantly, either positively or negatively. For a fairly thorough discussion of this issue and our chosen mitigation strategy, we recommend reading through [this thread](https://github.com/OpenZeppelin/openzeppelin-contracts/issues/3706) on the OpenZeppelin repo. We specifically use a share offset of `SHARES_OFFSET` and a balance offset of `BALANCE_OFFSET`.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/eigenlayer-contracts/src/contracts/strategies/StrategyBase.sol\":\"StrategyBase\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@credible-squaring/=src/\",\":@eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":@eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":@eigenlayer/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":@openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/\",\":openzeppelin-contracts-upgradeable/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/\",\":openzeppelin-contracts/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/\"]},\"sources\":{\"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol\":{\"keccak256\":\"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983\",\"dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol\":{\"keccak256\":\"0x5a7dd74fb8a9334aa50c497a58875159aec17e905a7daaf3c276936d5b691bd1\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a25b8d80233016a4634b9217a0899f43f18bfb21abb046bee4403e9408296009\",\"dweb:/ipfs/QmUA3bTzddiHnPxBqYtovxvcVvCkNrAxPJ7xcskocxEq5P\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol\":{\"keccak256\":\"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c\",\"license\":\"CC0-1.0\",\"urls\":[\"bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91\",\"dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol\":{\"keccak256\":\"0x2de63b752c3b2b4605992e47e0eaf4199465991046cdf0501e1892258ef44b11\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e1e52d268bb4ee377302aa185680b9ed1271368db89ac4b7e3a7e6a92e27f3b5\",\"dweb:/ipfs/QmZqX4QYjBC5yaoXT4YcPPZMiBagsbfveRzp1TQwwH95q8\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol\":{\"keccak256\":\"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2\",\"dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f\",\"dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574\",\"dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol\":{\"keccak256\":\"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b\",\"dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol\":{\"keccak256\":\"0x7655919fae553e75ff196b31c9244079ff222e34ff43f36c41429ee826cfad9b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d5d35a784a9511b351826cb70b00d92c3d374474f256b01af05cd1acb1ce6c10\",\"dweb:/ipfs/QmZog3BrpLa213wj5qxVYMQv7jdrkf5AAufLCVaMZsL7Gs\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol\":{\"keccak256\":\"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73\",\"dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ\"]},\"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol\":{\"keccak256\":\"0x160fea76cd2e64e4e4bb66f4d793ff4a6ddb7cb785a30a0615e9f4956aa12c8b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://03f16b6f03051893671ba0d1445fb45bc6105f05ee3ca3002fd400ac63c8fd20\",\"dweb:/ipfs/QmRbQ6k4kJYjfDTv5Z7bSfy5ewjjgHUVEhsWPWsyz57sUa\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol\":{\"keccak256\":\"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068\",\"dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol\":{\"keccak256\":\"0x098850d09b65bb7dbad5ea0513eacb77f2701e135d9727b3627e13f303b2ff41\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3519f5a415b99d196f3cecef3f48ea116f2f3a2b381efcc96a5d7eff6934c2f3\",\"dweb:/ipfs/QmbCcFWgmFjXeZrvfEFQ17AgEueW9wS17HhvjkxMi5x3H8\"]},\"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol\":{\"keccak256\":\"0x6e82a559dc583bf4b15867654e82f3aca9a862589209abac1c4356142a3b2211\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a1a4819b95c7da710e11efb279bd4b596139dc12c96c45a366d8e1893018eb1\",\"dweb:/ipfs/QmZBHPLKoYepZmA7AL9ECJFkbBhujSNvvc8pJmNC9MnRni\"]},\"lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol\":{\"keccak256\":\"0x53a08f01d778b91604dc1d27d4805fa99b9a2993f26e6079a1d8701699dc9f21\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8fd5dd22dcb1fb4f803843b920501679f252ccf100a06acbad7a22452cdc1173\",\"dweb:/ipfs/QmeyoJoTN3Gi7Q4Fk4y89UTDDnyPFmSbdu8N7Vyijwjx2s\"]},\"lib/eigenlayer-contracts/src/contracts/strategies/StrategyBase.sol\":{\"keccak256\":\"0x33d1026b3bcb13313484ffae4b199dd8dfe17f65f6a9c802103b938fbaddb567\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://29276ad693b72386c7a02d64b853de1aaed45d1d1d545cfcbbd2f5380634110d\",\"dweb:/ipfs/QmPx7T1pm7d16YsgC591XtQ7KYwbKMDxkDn6CfXbZMhiA4\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6\",\"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IStrategyManager","name":"_strategyManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"contract IPauserRegistry","name":"pauserRegistry","type":"address","indexed":false},{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address","indexed":false}],"type":"event","name":"PauserRegistrySet","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"uint256","name":"newShares","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"explanation","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"contract IERC20","name":"_underlyingToken","type":"address"},{"internalType":"contract IPauserRegistry","name":"_pauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseAll"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pauserRegistry","outputs":[{"internalType":"contract IPauserRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPauserRegistry"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountShares","type":"uint256"}],"stateMutability":"view","type":"function","name":"sharesToUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountShares","type":"uint256"}],"stateMutability":"view","type":"function","name":"sharesToUnderlyingView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"strategyManager","outputs":[{"internalType":"contract IStrategyManager","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountUnderlying","type":"uint256"}],"stateMutability":"view","type":"function","name":"underlyingToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amountUnderlying","type":"uint256"}],"stateMutability":"view","type":"function","name":"underlyingToSharesView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"underlyingToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"userUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"userUnderlyingView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amountShares","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{"deposit(address,uint256)":{"details":"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's `depositIntoStrategy` function, and individual share balances are recorded in the strategyManager as well.Note that the assumption is made that `amount` of `token` has already been transferred directly to this contract (as performed in the StrategyManager's deposit functions). In particular, setting the `underlyingToken` of this contract to be a fee-on-transfer token will break the assumption that the amount this contract *received* of the token is equal to the amount that was input when the transfer was performed (i.e. the amount transferred 'out' of the depositor's balance).Note that any validation of `token` is done inside `_beforeDeposit`. This can be overridden if needed.","params":{"amount":"is the amount of token being deposited","token":"is the ERC20 token being deposited"},"returns":{"newShares":"is the number of new shares issued at the current exchange ratio."}},"pause(uint256)":{"details":"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"sharesToUnderlying(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountShares":"is the amount of shares to calculate its conversion into the underlying token"},"returns":{"_0":"The amount of underlying tokens corresponding to the input `amountShares`"}},"sharesToUnderlyingView(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountShares":"is the amount of shares to calculate its conversion into the underlying token"},"returns":{"_0":"The amount of underlying tokens corresponding to the input `amountShares`"}},"underlyingToShares(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountUnderlying":"is the amount of `underlyingToken` to calculate its conversion into strategy shares"},"returns":{"_0":"The amount of shares corresponding to the input `amountUnderlying`"}},"underlyingToSharesView(uint256)":{"details":"Implementation for these functions in particular may vary significantly for different strategies","params":{"amountUnderlying":"is the amount of `underlyingToken` to calculate its conversion into strategy shares"},"returns":{"_0":"The amount of shares corresponding to the input `amountUnderlying`"}},"unpause(uint256)":{"details":"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"withdraw(address,address,uint256)":{"details":"This function is only callable by the strategyManager contract. It is invoked inside of the strategyManager's other functions, and individual share balances are recorded in the strategyManager as well.Note that any validation of `token` is done inside `_beforeWithdrawal`. This can be overridden if needed.","params":{"amountShares":"is the amount of shares being withdrawn","recipient":"is the address to receive the withdrawn funds","token":"is the ERC20 token being transferred out"}}},"version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Since this contract is designed to be initializable, the constructor simply sets `strategyManager`, the only immutable variable."},"deposit(address,uint256)":{"notice":"Used to deposit tokens into this Strategy"},"explanation()":{"notice":"Currently returns a brief string explaining the strategy's goal & purpose, but for more complex strategies, may be a link to metadata that explains in more detail."},"pause(uint256)":{"notice":"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig."},"pauseAll()":{"notice":"Alias for `pause(type(uint256).max)`."},"paused()":{"notice":"Returns the current paused status as a uint256."},"paused(uint8)":{"notice":"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise"},"pauserRegistry()":{"notice":"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing)."},"setPauserRegistry(address)":{"notice":"Allows the unpauser to set a new pauser registry"},"shares(address)":{"notice":"convenience function for fetching the current total shares of `user` in this strategy, by querying the `strategyManager` contract"},"sharesToUnderlying(uint256)":{"notice":"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlyingView`, this function **may** make state modifications"},"sharesToUnderlyingView(uint256)":{"notice":"Used to convert a number of shares to the equivalent amount of underlying tokens for this strategy.In contrast to `sharesToUnderlying`, this function guarantees no state modifications"},"strategyManager()":{"notice":"EigenLayer's StrategyManager contract"},"totalShares()":{"notice":"The total number of extant shares in this Strategy"},"underlyingToShares(uint256)":{"notice":"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToSharesView`, this function **may** make state modifications"},"underlyingToSharesView(uint256)":{"notice":"Used to convert an amount of underlying tokens to the equivalent amount of shares in this strategy.In contrast to `underlyingToShares`, this function guarantees no state modifications"},"underlyingToken()":{"notice":"The underlying token for shares in this Strategy"},"unpause(uint256)":{"notice":"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract."},"userUnderlying(address)":{"notice":"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlyingView`, this function **may** make state modifications"},"userUnderlyingView(address)":{"notice":"convenience function for fetching the current underlying value of all of the `user`'s shares in this strategy. In contrast to `userUnderlying`, this function guarantees no state modifications"},"withdraw(address,address,uint256)":{"notice":"Used to withdraw tokens from this Strategy, to the `recipient`'s address"}},"version":1}},"settings":{"remappings":["@credible-squaring/=src/","@eigenlayer-middleware/=lib/eigenlayer-middleware/","@eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","@eigenlayer/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","@openzeppelin-upgrades-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","@openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","erc4626-tests/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/","openzeppelin-contracts-upgradeable/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v4.9.0/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/","openzeppelin-contracts/=lib/eigenlayer-contracts/lib/openzeppelin-contracts/","openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/eigenlayer-contracts/src/contracts/strategies/StrategyBase.sol":"StrategyBase"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-contracts/src/contracts/interfaces/IBeaconChainOracle.sol":{"keccak256":"0x0fef07aa6179c77198f1514e12e628aa1c876e04f9c181ec853a322179e5be00","urls":["bzz-raw://51438325876cc2d4c77f58488a7e27b488015d1b663c50be6a5cafbd73b9c983","dweb:/ipfs/QmViCuGoYZzi6wtXA8PPKigqVv3KMuNxEVQ1Td9dGqjL18"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IDelegationManager.sol":{"keccak256":"0x5a7dd74fb8a9334aa50c497a58875159aec17e905a7daaf3c276936d5b691bd1","urls":["bzz-raw://a25b8d80233016a4634b9217a0899f43f18bfb21abb046bee4403e9408296009","dweb:/ipfs/QmUA3bTzddiHnPxBqYtovxvcVvCkNrAxPJ7xcskocxEq5P"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IETHPOSDeposit.sol":{"keccak256":"0x2e60e5f4b0da0a0a4e2a07c63141120998559970c21deac743ea0c64a60a880c","urls":["bzz-raw://e635c346bde5b7ade9bcf35bc733081520cb86015be4fbc6e761e6e9482c4c91","dweb:/ipfs/QmRoeazEnbFn5SPSWAkoFK2gSN9DMp3hJAnrLWuL2sKutz"],"license":"CC0-1.0"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPod.sol":{"keccak256":"0x2de63b752c3b2b4605992e47e0eaf4199465991046cdf0501e1892258ef44b11","urls":["bzz-raw://e1e52d268bb4ee377302aa185680b9ed1271368db89ac4b7e3a7e6a92e27f3b5","dweb:/ipfs/QmZqX4QYjBC5yaoXT4YcPPZMiBagsbfveRzp1TQwwH95q8"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IEigenPodManager.sol":{"keccak256":"0x22b7a17d53696412f80645f1fa65274ae89040bdc706262e3b6cc577dbafcaa4","urls":["bzz-raw://b15002346892a48fd7cf9a8a4cf121e17ba133d21e4822e71fbffac85117d6b2","dweb:/ipfs/QmRBPJUcRQ6uKmSvCYhhtVWcKCAWkQFSVZZwZR7HR42kiz"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x33a935182f77cfd508fc57ec8e45afc8dc3748e1e9b764d36bf90ae6466f257b","urls":["bzz-raw://d3981b5bbf435cda04e2ed2f348f886ebf1500c18dd4bbf67b1f1bc0272e2d3f","dweb:/ipfs/QmYHDzQx29ataM2ejRCXFcPxaPdxWqX8v7uwUAYoG9572w"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0xffafae142d5337a5c204519e8f82fe3a5fae137286ebf597fa50699cf12c2474","urls":["bzz-raw://b577a12f7788095b230fd069b36ba9b3cdb376a0b7c3d8ae71588e5bf0c2f574","dweb:/ipfs/QmXd1cDzYpxecyFEwowLiBKKjzRHgV8cs1qvLwypdEbVYy"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISignatureUtils.sol":{"keccak256":"0x3b62ea6ee304cbab976ff206bcf55268f18a3291708021557f93f899f99862e4","urls":["bzz-raw://b59a96fbf9940a7795d9a5fcb9e03939a87216317fb67872b7017285bf7eb49b","dweb:/ipfs/QmdiH5AfYBvuTpzxTqfhorLG25t2dhSTKWh1cvBbYxGDJH"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/ISlasher.sol":{"keccak256":"0x7655919fae553e75ff196b31c9244079ff222e34ff43f36c41429ee826cfad9b","urls":["bzz-raw://d5d35a784a9511b351826cb70b00d92c3d374474f256b01af05cd1acb1ce6c10","dweb:/ipfs/QmZog3BrpLa213wj5qxVYMQv7jdrkf5AAufLCVaMZsL7Gs"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategy.sol":{"keccak256":"0xc530c6a944b70051fd0dac0222de9a4b5baadeaf94ad194daac6ad8d2ace7420","urls":["bzz-raw://3767df0364ce835b52e786d2851431eb9223fe4747602107505477e162231d73","dweb:/ipfs/QmZkH5bKUygQrJomndNaQqkefVRW4rRefCa8HPJ5HMczxJ"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/interfaces/IStrategyManager.sol":{"keccak256":"0x160fea76cd2e64e4e4bb66f4d793ff4a6ddb7cb785a30a0615e9f4956aa12c8b","urls":["bzz-raw://03f16b6f03051893671ba0d1445fb45bc6105f05ee3ca3002fd400ac63c8fd20","dweb:/ipfs/QmRbQ6k4kJYjfDTv5Z7bSfy5ewjjgHUVEhsWPWsyz57sUa"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/BeaconChainProofs.sol":{"keccak256":"0x633b5fb10209891f696a9c8db4d7327ed7f560a2e9710489e38a67daeda59a96","urls":["bzz-raw://c8381baaec3afa6b200420c093706974776dfd14f6887abe7457eb867351a068","dweb:/ipfs/QmP9H9ttS1sJ6FrvMEefJhU6B4z1wMCjcYYZqVfsLXagJE"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Endian.sol":{"keccak256":"0x098850d09b65bb7dbad5ea0513eacb77f2701e135d9727b3627e13f303b2ff41","urls":["bzz-raw://3519f5a415b99d196f3cecef3f48ea116f2f3a2b381efcc96a5d7eff6934c2f3","dweb:/ipfs/QmbCcFWgmFjXeZrvfEFQ17AgEueW9wS17HhvjkxMi5x3H8"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/libraries/Merkle.sol":{"keccak256":"0x6e82a559dc583bf4b15867654e82f3aca9a862589209abac1c4356142a3b2211","urls":["bzz-raw://8a1a4819b95c7da710e11efb279bd4b596139dc12c96c45a366d8e1893018eb1","dweb:/ipfs/QmZBHPLKoYepZmA7AL9ECJFkbBhujSNvvc8pJmNC9MnRni"],"license":"MIT"},"lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol":{"keccak256":"0x53a08f01d778b91604dc1d27d4805fa99b9a2993f26e6079a1d8701699dc9f21","urls":["bzz-raw://8fd5dd22dcb1fb4f803843b920501679f252ccf100a06acbad7a22452cdc1173","dweb:/ipfs/QmeyoJoTN3Gi7Q4Fk4y89UTDDnyPFmSbdu8N7Vyijwjx2s"],"license":"BUSL-1.1"},"lib/eigenlayer-contracts/src/contracts/strategies/StrategyBase.sol":{"keccak256":"0x33d1026b3bcb13313484ffae4b199dd8dfe17f65f6a9c802103b938fbaddb567","urls":["bzz-raw://29276ad693b72386c7a02d64b853de1aaed45d1d1d545cfcbbd2f5380634110d","dweb:/ipfs/QmPx7T1pm7d16YsgC591XtQ7KYwbKMDxkDn6CfXbZMhiA4"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","urls":["bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354","dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"keccak256":"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329","urls":["bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95","dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29","urls":["bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6","dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"}},"version":1},"id":35}