diff --git a/contracts/in-house/src/GuardedGenericAdapter.sol b/contracts/in-house/src/GuardedGenericAdapter.sol index fc4e7cab..3616ee18 100644 --- a/contracts/in-house/src/GuardedGenericAdapter.sol +++ b/contracts/in-house/src/GuardedGenericAdapter.sol @@ -43,6 +43,23 @@ contract GuardedGenericAdapter is AdapterBase { // Guard implementation associated with this vault IGuard public guard; + // Is this vault intended for the production usage + // + // Should the vault to be indexed in DeFi explorers + // + bool public production; + + // Post an event to track what are Trading Strategy vaults. + // + // We can use these protoc events to track vaults that belong to + // the protocol, as currently Enzyme does not allow + // to add easy metadata to its vaults. + // + // Also this event with production flag can be used to signal + // DeFi explorers. + // + event GuardedGenericAdapterDeployed(address vault, bool production, string meta); + // Tell enzyme what is our selector when we call this adapter bytes4 public constant EXECUTE_CALLS_SELECTOR = bytes4( keccak256("executeCalls(address,bytes,bytes)") @@ -64,12 +81,16 @@ contract GuardedGenericAdapter is AdapterBase { // Because this is called only once and damage cannot be done // except maybe screwing up the deployment, we do not track ownership here. // - function bindVault(IVaultMock _vault) external { + function bindVault(IVaultMock _vault, bool _production, string calldata meta) external { require(address(vault) == address(0x0), "Can be initialised only once"); require(address(_vault) != address(0x0), "Null address encountered"); // Sanity check for smart contract integration - mainly checks vault providers getCreator() as an interface check require(_vault.getCreator() != address(0x0), "Encountered funny vault"); vault = _vault; + + production = _production; + + emit GuardedGenericAdapterDeployed(address(vault), production, meta); } // EXTERNAL FUNCTIONS diff --git a/eth_defi/abi/GuardedGenericAdapter.json b/eth_defi/abi/GuardedGenericAdapter.json index 47600dea..568dd58a 100644 --- a/eth_defi/abi/GuardedGenericAdapter.json +++ b/eth_defi/abi/GuardedGenericAdapter.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_integrationManager","type":"address","internalType":"address"},{"name":"_guard","type":"address","internalType":"contract IGuard"}],"stateMutability":"nonpayable"},{"type":"function","name":"CLAIM_REWARDS_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"EXECUTE_CALLS_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"LEND_AND_STAKE_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"LEND_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"REDEEM_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"STAKE_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"TAKE_MULTIPLE_ORDERS_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"TAKE_ORDER_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"UNSTAKE_AND_REDEEM_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"UNSTAKE_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"bindVault","inputs":[{"name":"_vault","type":"address","internalType":"contract IVaultMock"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeCalls","inputs":[{"name":"_vaultProxy","type":"address","internalType":"address"},{"name":"_actionData","type":"bytes","internalType":"bytes"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getIntegrationManager","inputs":[],"outputs":[{"name":"integrationManager_","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"guard","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IGuard"}],"stateMutability":"view"},{"type":"function","name":"parseAssetsForAction","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"_selector","type":"bytes4","internalType":"bytes4"},{"name":"_actionData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"spendAssetsHandleType_","type":"uint8","internalType":"enum IIntegrationManager.SpendAssetsHandleType"},{"name":"spendAssets_","type":"address[]","internalType":"address[]"},{"name":"spendAssetAmounts_","type":"uint256[]","internalType":"uint256[]"},{"name":"incomingAssets_","type":"address[]","internalType":"address[]"},{"name":"minIncomingAssetAmounts_","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVaultMock"}],"stateMutability":"view"}],"bytecode":{"object":"0x60a060405234801561001057600080fd5b506040516200171d3803806200171d83398101604081905261003191610068565b60609190911b6001600160601b031916608052600180546001600160a01b0319166001600160a01b039092169190911790556100b9565b6000806040838503121561007a578182fd5b8251610085816100a1565b6020840151909250610096816100a1565b809150509250929050565b6001600160a01b03811681146100b657600080fd5b50565b60805160601c611641620000dc60003980610433528061063152506116416000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806395febcc111610097578063c54efee511610066578063c54efee5146101a0578063e7c45690146101c4578063f7d882b5146101cc578063fbfa77cf146101d457610100565b806395febcc114610168578063b23228cf1461017d578063b7fe1a1114610185578063c32990a21461019857610100565b80633ffc1591116100d35780633ffc15911461013b57806340da225d146101435780637ceab3b11461014b578063863e5ad01461016057610100565b8063080456c11461010557806312d9c1f614610123578063131461c01461012b578063257cb1a314610133575b600080fd5b61010d6101dc565b60405161011a9190611230565b60405180910390f35b61010d610200565b61010d610224565b61010d610248565b61010d61026c565b61010d610290565b6101536102b4565b60405161011a91906111ce565b61010d6102c3565b61017b6101763660046110e0565b6102e7565b005b61010d610404565b61017b610193366004610db1565b610428565b61010d6105b4565b6101b36101ae366004610d42565b6105d8565b60405161011a959493929190611245565b61015361062f565b61010d610653565b610153610677565b7f8334eb99be0145865eba9889fca2ee920288090caefff4cc776038e20ad9259a81565b7fb7fe1a117cff974e3f19d303d9f97ada44b7ecad880df21ddfdc69ba0493b79681565b7f29fa046e79524c3c5ac4c01df692c35e217802b2b13b21121b76cf0ef02b138c81565b7f099f75155f0e997bf83a7993a71d5e7e7540bd386fe1e84643a09ce6b412521981565b7ffa7dd04da627f433da73c4355ead9c75682a67a8fc84d3f6170ef0922f402d2481565b7fb9dfbaccbe5cd2a84fdcf1d15f23ef25d23086f5afbaa99516065ed4a5bbc7a381565b6001546001600160a01b031681565b7f03e38a2bd7063d45c897edeafc330e71657502dd86434d3c37a489caf116af6981565b6000546001600160a01b0316156103195760405162461bcd60e51b8152600401610310906113d5565b60405180910390fd5b6001600160a01b03811661033f5760405162461bcd60e51b81526004016103109061134c565b60006001600160a01b0316816001600160a01b0316630ee2cb106040518163ffffffff1660e01b815260040160206040518083038186803b15801561038357600080fd5b505afa158015610397573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bb9190610d26565b6001600160a01b031614156103e25760405162461bcd60e51b815260040161031090611494565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b7f68e30677f607df46e87da13e15b637784cfa62374b653f35ab43d10361a2f83081565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104705760405162461bcd60e51b815260040161031090611383565b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920182905250546001600160a01b038d811691161492506105099150505760405162461bcd60e51b81526004016103109061140c565b60606105158989610686565b945050505050606080610527836106ab565b9150915060005b825181101561056f5761056783828151811061054657fe5b602002602001015183838151811061055a57fe5b60200260200101516106ee565b60010161052e565b50505050606061057e826107d0565b5050905061058c83826107f6565b50505050606061059b826107d0565b925050506105a983826107f6565b505050505050505050565b7f0e7f692dad5b88fdee426250d6eae91207e56a2e8112b7364579bed1790e5bf481565b600060608080806001600160e01b0319881663b7fe1a1160e01b1461060f5760405162461bcd60e51b815260040161031090611515565b6106198787610686565b5060029d919c509a509198509650945050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7fc29fa9dde84204c2908778afd0613d802d31cf046179b88f6d2b4a4e507ea2d581565b6000546001600160a01b031681565b60608080808061069886880188610ff4565b939b929a50909850965090945092505050565b606080828060200190518101906106c29190610e31565b80518251929450909250146106e95760405162461bcd60e51b8152600401610310906112c1565b915091565b600154600054604051636d5025f160e01b81526001600160a01b0392831692636d5025f19261072692911690869086906004016111e2565b600060405180830381600087803b15801561074057600080fd5b505af1158015610754573d6000803e3d6000fd5b5050505060006060836001600160a01b03168360405161077491906111b2565b6000604051808303816000865af19150503d80600081146107b1576040519150601f19603f3d011682016040523d82523d6000602084013e6107b6565b606091505b5091509150816107ca578051602082018181fd5b50505050565b6060806060838060200190518101906107e99190610f1a565b9250925092509193909250565b6060815167ffffffffffffffff8111801561081057600080fd5b5060405190808252806020026020018201604052801561083a578160200160208202803683370190505b50905060005b825181101561094b57600083828151811061085757fe5b60200260200101519050806001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161088d91906111ce565b60206040518083038186803b1580156108a557600080fd5b505afa1580156108b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dd91906110fc565b8383815181106108e957fe5b602002602001018181525050600083838151811061090357fe5b60200260200101511115610942576109428584848151811061092157fe5b6020026020010151836001600160a01b03166109529092919063ffffffff16565b50600101610840565b5092915050565b6109a88363a9059cbb60e01b8484604051602401610971929190611217565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526109ad565b505050565b6060610a02826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610a3c9092919063ffffffff16565b8051909150156109a85780806020019051810190610a2091906110c0565b6109a85760405162461bcd60e51b8152600401610310906114cb565b6060610a4b8484600085610a55565b90505b9392505050565b606082471015610a775760405162461bcd60e51b815260040161031090611306565b610a8085610b16565b610a9c5760405162461bcd60e51b81526004016103109061145d565b60006060866001600160a01b03168587604051610ab991906111b2565b60006040518083038185875af1925050503d8060008114610af6576040519150601f19603f3d011682016040523d82523d6000602084013e610afb565b606091505b5091509150610b0b828286610b1c565b979650505050505050565b3b151590565b60608315610b2b575081610a4e565b825115610b3b5782518084602001fd5b8160405162461bcd60e51b815260040161031091906112ae565b600082601f830112610b65578081fd5b8135610b78610b7382611583565b61155c565b818152915060208083019084810181840286018201871015610b9957600080fd5b60005b84811015610bc1578135610baf816115f3565b84529282019290820190600101610b9c565b505050505092915050565b600082601f830112610bdc578081fd5b8151610bea610b7382611583565b818152915060208083019084810181840286018201871015610c0b57600080fd5b60005b84811015610bc1578151610c21816115f3565b84529282019290820190600101610c0e565b600082601f830112610c43578081fd5b8135610c51610b7382611583565b818152915060208083019084810181840286018201871015610c7257600080fd5b60005b84811015610bc157813584529282019290820190600101610c75565b60008083601f840112610ca2578182fd5b50813567ffffffffffffffff811115610cb9578182fd5b602083019150836020828501011115610cd157600080fd5b9250929050565b600082601f830112610ce8578081fd5b8135610cf6610b73826115a3565b9150808252836020828501011115610d0d57600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215610d37578081fd5b8151610a4e816115f3565b60008060008060608587031215610d57578283fd5b8435610d62816115f3565b935060208501356001600160e01b031981168114610d7e578384fd5b9250604085013567ffffffffffffffff811115610d99578283fd5b610da587828801610c91565b95989497509550505050565b600080600080600060608688031215610dc8578081fd5b8535610dd3816115f3565b9450602086013567ffffffffffffffff80821115610def578283fd5b610dfb89838a01610c91565b90965094506040880135915080821115610e13578283fd5b50610e2088828901610c91565b969995985093965092949392505050565b6000806040808486031215610e44578283fd5b835167ffffffffffffffff80821115610e5b578485fd5b610e6787838801610bcc565b9450602091508186015181811115610e7d578485fd5b86019050601f81018713610e8f578384fd5b8051610e9d610b7382611583565b81815283810190838501875b84811015610f0957815186018c603f820112610ec357898afd5b87810151610ed3610b73826115a3565b8181528e8b838501011115610ee6578b8cfd5b610ef5828b83018d86016115c7565b865250509286019290860190600101610ea9565b50979a909950975050505050505050565b600080600060608486031215610f2e578283fd5b835167ffffffffffffffff80821115610f45578485fd5b610f5187838801610bcc565b9450602091508186015181811115610f67578485fd5b8601601f81018813610f77578485fd5b8051610f85610b7382611583565b81815284810190838601868402850187018c1015610fa1578889fd5b8894505b83851015610fc3578051835260019490940193918601918601610fa5565b5060408a0151909750945050505080821115610fdd578283fd5b50610fea86828701610bcc565b9150509250925092565b600080600080600060a0868803121561100b578283fd5b853567ffffffffffffffff80821115611022578485fd5b61102e89838a01610b55565b96506020880135915080821115611043578485fd5b61104f89838a01610c33565b95506040880135915080821115611064578485fd5b61107089838a01610b55565b94506060880135915080821115611085578283fd5b61109189838a01610c33565b935060808801359150808211156110a6578283fd5b506110b388828901610cd8565b9150509295509295909350565b6000602082840312156110d1578081fd5b81518015158114610a4e578182fd5b6000602082840312156110f1578081fd5b8135610a4e816115f3565b60006020828403121561110d578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561114c5781516001600160a01b031687529582019590820190600101611127565b509495945050505050565b6000815180845260208085019450808401835b8381101561114c5781518752958201959082019060010161116a565b6000815180845261119e8160208601602086016115c7565b601f01601f19169290920160200192915050565b600082516111c48184602087016115c7565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0384811682528316602082015260606040820181905260009061120e90830184611186565b95945050505050565b6001600160a01b03929092168252602082015260400190565b6001600160e01b031991909116815260200190565b60006003871061125157fe5b86825260a0602083015261126860a0830187611114565b828103604084015261127a8187611157565b9050828103606084015261128e8186611114565b905082810360808401526112a28185611157565b98975050505050505050565b600060208252610a4e6020830184611186565b60208082526025908201527f556e657175616c2065787465726e616c2063616c6c7320617272617973206c656040820152646e6774687360d81b606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b60208082526018908201527f4e756c6c206164647265737320656e636f756e74657265640000000000000000604082015260600190565b60208082526032908201527f4f6e6c792074686520496e746567726174696f6e4d616e616765722063616e2060408201527131b0b636103a3434b990333ab731ba34b7b760711b606082015260800190565b6020808252601c908201527f43616e20626520696e697469616c69736564206f6e6c79206f6e636500000000604082015260600190565b60208082526031908201527f4f6e6c792063616c6c732066726f6d207468652077686974656c6973746564206040820152701d985d5b1d08185c9948185b1b1bddd959607a1b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526017908201527f456e636f756e74657265642066756e6e79207661756c74000000000000000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526027908201527f7061727365417373657473466f72416374696f6e3a205f73656c6563746f72206040820152661a5b9d985b1a5960ca1b606082015260800190565b60405181810167ffffffffffffffff8111828210171561157b57600080fd5b604052919050565b600067ffffffffffffffff821115611599578081fd5b5060209081020190565b600067ffffffffffffffff8211156115b9578081fd5b50601f01601f191660200190565b60005b838110156115e25781810151838201526020016115ca565b838111156107ca5750506000910152565b6001600160a01b038116811461160857600080fd5b5056fea26469706673582212205a2eb780f9dc3794c220e46bf1f3f22b8a3554663b1154d9b07d2f63d604aaba64736f6c634300060c0033","sourceMap":"801:6139:19:-:0;;;1424:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1938:41:2;;;;;-1:-1:-1;;;;;;1938:41:2;;;1552:5:19::1;:14:::0;;-1:-1:-1;;;;;;1552:14:19::1;-1:-1:-1::0;;;;;1552:14:19;;::::1;::::0;;;::::1;::::0;;801:6139;;317:429:-1;;;464:2;452:9;443:7;439:23;435:32;432:2;;;-1:-1;;470:12;432:2;89:6;83:13;101:33;128:5;101:33;:::i;:::-;633:2;698:22;;239:13;522:74;;-1:-1;257:48;239:13;257:48;:::i;:::-;641:89;;;;426:320;;;;;:::o;1092:117::-;-1:-1;;;;;1026:54;;1151:35;;1141:2;;1200:1;;1190:12;1141:2;1135:74;:::o;:::-;801:6139:19;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101005760003560e01c806395febcc111610097578063c54efee511610066578063c54efee5146101a0578063e7c45690146101c4578063f7d882b5146101cc578063fbfa77cf146101d457610100565b806395febcc114610168578063b23228cf1461017d578063b7fe1a1114610185578063c32990a21461019857610100565b80633ffc1591116100d35780633ffc15911461013b57806340da225d146101435780637ceab3b11461014b578063863e5ad01461016057610100565b8063080456c11461010557806312d9c1f614610123578063131461c01461012b578063257cb1a314610133575b600080fd5b61010d6101dc565b60405161011a9190611230565b60405180910390f35b61010d610200565b61010d610224565b61010d610248565b61010d61026c565b61010d610290565b6101536102b4565b60405161011a91906111ce565b61010d6102c3565b61017b6101763660046110e0565b6102e7565b005b61010d610404565b61017b610193366004610db1565b610428565b61010d6105b4565b6101b36101ae366004610d42565b6105d8565b60405161011a959493929190611245565b61015361062f565b61010d610653565b610153610677565b7f8334eb99be0145865eba9889fca2ee920288090caefff4cc776038e20ad9259a81565b7fb7fe1a117cff974e3f19d303d9f97ada44b7ecad880df21ddfdc69ba0493b79681565b7f29fa046e79524c3c5ac4c01df692c35e217802b2b13b21121b76cf0ef02b138c81565b7f099f75155f0e997bf83a7993a71d5e7e7540bd386fe1e84643a09ce6b412521981565b7ffa7dd04da627f433da73c4355ead9c75682a67a8fc84d3f6170ef0922f402d2481565b7fb9dfbaccbe5cd2a84fdcf1d15f23ef25d23086f5afbaa99516065ed4a5bbc7a381565b6001546001600160a01b031681565b7f03e38a2bd7063d45c897edeafc330e71657502dd86434d3c37a489caf116af6981565b6000546001600160a01b0316156103195760405162461bcd60e51b8152600401610310906113d5565b60405180910390fd5b6001600160a01b03811661033f5760405162461bcd60e51b81526004016103109061134c565b60006001600160a01b0316816001600160a01b0316630ee2cb106040518163ffffffff1660e01b815260040160206040518083038186803b15801561038357600080fd5b505afa158015610397573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bb9190610d26565b6001600160a01b031614156103e25760405162461bcd60e51b815260040161031090611494565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b7f68e30677f607df46e87da13e15b637784cfa62374b653f35ab43d10361a2f83081565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104705760405162461bcd60e51b815260040161031090611383565b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920182905250546001600160a01b038d811691161492506105099150505760405162461bcd60e51b81526004016103109061140c565b60606105158989610686565b945050505050606080610527836106ab565b9150915060005b825181101561056f5761056783828151811061054657fe5b602002602001015183838151811061055a57fe5b60200260200101516106ee565b60010161052e565b50505050606061057e826107d0565b5050905061058c83826107f6565b50505050606061059b826107d0565b925050506105a983826107f6565b505050505050505050565b7f0e7f692dad5b88fdee426250d6eae91207e56a2e8112b7364579bed1790e5bf481565b600060608080806001600160e01b0319881663b7fe1a1160e01b1461060f5760405162461bcd60e51b815260040161031090611515565b6106198787610686565b5060029d919c509a509198509650945050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7fc29fa9dde84204c2908778afd0613d802d31cf046179b88f6d2b4a4e507ea2d581565b6000546001600160a01b031681565b60608080808061069886880188610ff4565b939b929a50909850965090945092505050565b606080828060200190518101906106c29190610e31565b80518251929450909250146106e95760405162461bcd60e51b8152600401610310906112c1565b915091565b600154600054604051636d5025f160e01b81526001600160a01b0392831692636d5025f19261072692911690869086906004016111e2565b600060405180830381600087803b15801561074057600080fd5b505af1158015610754573d6000803e3d6000fd5b5050505060006060836001600160a01b03168360405161077491906111b2565b6000604051808303816000865af19150503d80600081146107b1576040519150601f19603f3d011682016040523d82523d6000602084013e6107b6565b606091505b5091509150816107ca578051602082018181fd5b50505050565b6060806060838060200190518101906107e99190610f1a565b9250925092509193909250565b6060815167ffffffffffffffff8111801561081057600080fd5b5060405190808252806020026020018201604052801561083a578160200160208202803683370190505b50905060005b825181101561094b57600083828151811061085757fe5b60200260200101519050806001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161088d91906111ce565b60206040518083038186803b1580156108a557600080fd5b505afa1580156108b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dd91906110fc565b8383815181106108e957fe5b602002602001018181525050600083838151811061090357fe5b60200260200101511115610942576109428584848151811061092157fe5b6020026020010151836001600160a01b03166109529092919063ffffffff16565b50600101610840565b5092915050565b6109a88363a9059cbb60e01b8484604051602401610971929190611217565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526109ad565b505050565b6060610a02826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610a3c9092919063ffffffff16565b8051909150156109a85780806020019051810190610a2091906110c0565b6109a85760405162461bcd60e51b8152600401610310906114cb565b6060610a4b8484600085610a55565b90505b9392505050565b606082471015610a775760405162461bcd60e51b815260040161031090611306565b610a8085610b16565b610a9c5760405162461bcd60e51b81526004016103109061145d565b60006060866001600160a01b03168587604051610ab991906111b2565b60006040518083038185875af1925050503d8060008114610af6576040519150601f19603f3d011682016040523d82523d6000602084013e610afb565b606091505b5091509150610b0b828286610b1c565b979650505050505050565b3b151590565b60608315610b2b575081610a4e565b825115610b3b5782518084602001fd5b8160405162461bcd60e51b815260040161031091906112ae565b600082601f830112610b65578081fd5b8135610b78610b7382611583565b61155c565b818152915060208083019084810181840286018201871015610b9957600080fd5b60005b84811015610bc1578135610baf816115f3565b84529282019290820190600101610b9c565b505050505092915050565b600082601f830112610bdc578081fd5b8151610bea610b7382611583565b818152915060208083019084810181840286018201871015610c0b57600080fd5b60005b84811015610bc1578151610c21816115f3565b84529282019290820190600101610c0e565b600082601f830112610c43578081fd5b8135610c51610b7382611583565b818152915060208083019084810181840286018201871015610c7257600080fd5b60005b84811015610bc157813584529282019290820190600101610c75565b60008083601f840112610ca2578182fd5b50813567ffffffffffffffff811115610cb9578182fd5b602083019150836020828501011115610cd157600080fd5b9250929050565b600082601f830112610ce8578081fd5b8135610cf6610b73826115a3565b9150808252836020828501011115610d0d57600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215610d37578081fd5b8151610a4e816115f3565b60008060008060608587031215610d57578283fd5b8435610d62816115f3565b935060208501356001600160e01b031981168114610d7e578384fd5b9250604085013567ffffffffffffffff811115610d99578283fd5b610da587828801610c91565b95989497509550505050565b600080600080600060608688031215610dc8578081fd5b8535610dd3816115f3565b9450602086013567ffffffffffffffff80821115610def578283fd5b610dfb89838a01610c91565b90965094506040880135915080821115610e13578283fd5b50610e2088828901610c91565b969995985093965092949392505050565b6000806040808486031215610e44578283fd5b835167ffffffffffffffff80821115610e5b578485fd5b610e6787838801610bcc565b9450602091508186015181811115610e7d578485fd5b86019050601f81018713610e8f578384fd5b8051610e9d610b7382611583565b81815283810190838501875b84811015610f0957815186018c603f820112610ec357898afd5b87810151610ed3610b73826115a3565b8181528e8b838501011115610ee6578b8cfd5b610ef5828b83018d86016115c7565b865250509286019290860190600101610ea9565b50979a909950975050505050505050565b600080600060608486031215610f2e578283fd5b835167ffffffffffffffff80821115610f45578485fd5b610f5187838801610bcc565b9450602091508186015181811115610f67578485fd5b8601601f81018813610f77578485fd5b8051610f85610b7382611583565b81815284810190838601868402850187018c1015610fa1578889fd5b8894505b83851015610fc3578051835260019490940193918601918601610fa5565b5060408a0151909750945050505080821115610fdd578283fd5b50610fea86828701610bcc565b9150509250925092565b600080600080600060a0868803121561100b578283fd5b853567ffffffffffffffff80821115611022578485fd5b61102e89838a01610b55565b96506020880135915080821115611043578485fd5b61104f89838a01610c33565b95506040880135915080821115611064578485fd5b61107089838a01610b55565b94506060880135915080821115611085578283fd5b61109189838a01610c33565b935060808801359150808211156110a6578283fd5b506110b388828901610cd8565b9150509295509295909350565b6000602082840312156110d1578081fd5b81518015158114610a4e578182fd5b6000602082840312156110f1578081fd5b8135610a4e816115f3565b60006020828403121561110d578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561114c5781516001600160a01b031687529582019590820190600101611127565b509495945050505050565b6000815180845260208085019450808401835b8381101561114c5781518752958201959082019060010161116a565b6000815180845261119e8160208601602086016115c7565b601f01601f19169290920160200192915050565b600082516111c48184602087016115c7565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0384811682528316602082015260606040820181905260009061120e90830184611186565b95945050505050565b6001600160a01b03929092168252602082015260400190565b6001600160e01b031991909116815260200190565b60006003871061125157fe5b86825260a0602083015261126860a0830187611114565b828103604084015261127a8187611157565b9050828103606084015261128e8186611114565b905082810360808401526112a28185611157565b98975050505050505050565b600060208252610a4e6020830184611186565b60208082526025908201527f556e657175616c2065787465726e616c2063616c6c7320617272617973206c656040820152646e6774687360d81b606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b60208082526018908201527f4e756c6c206164647265737320656e636f756e74657265640000000000000000604082015260600190565b60208082526032908201527f4f6e6c792074686520496e746567726174696f6e4d616e616765722063616e2060408201527131b0b636103a3434b990333ab731ba34b7b760711b606082015260800190565b6020808252601c908201527f43616e20626520696e697469616c69736564206f6e6c79206f6e636500000000604082015260600190565b60208082526031908201527f4f6e6c792063616c6c732066726f6d207468652077686974656c6973746564206040820152701d985d5b1d08185c9948185b1b1bddd959607a1b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526017908201527f456e636f756e74657265642066756e6e79207661756c74000000000000000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526027908201527f7061727365417373657473466f72416374696f6e3a205f73656c6563746f72206040820152661a5b9d985b1a5960ca1b606082015260800190565b60405181810167ffffffffffffffff8111828210171561157b57600080fd5b604052919050565b600067ffffffffffffffff821115611599578081fd5b5060209081020190565b600067ffffffffffffffff8211156115b9578081fd5b50601f01601f191660200190565b60005b838110156115e25781810151838201526020016115ca565b838111156107ca5750506000910152565b6001600160a01b038116811461160857600080fd5b5056fea26469706673582212205a2eb780f9dc3794c220e46bf1f3f22b8a3554663b1154d9b07d2f63d604aaba64736f6c634300060c0033","sourceMap":"801:6139:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1490:119:3;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1301:116:19;;;:::i;1373:111:3:-;;;:::i;832:85::-;;;:::i;1034:87::-;;;:::i;1240:110::-;;;:::i;1209:19:19:-;;;:::i;:::-;;;;;;;:::i;706:104:3:-;;;:::i;1989:440:19:-;;;;;;:::i;:::-;;:::i;:::-;;1127:91:3;;;:::i;2625:756:19:-;;;;;;:::i;:::-;;:::i;577:123:3:-;;;:::i;4957:965:19:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;2637:128:2:-;;;:::i;923:89:3:-;;;:::i;1124:23:19:-;;;:::i;1490:119:3:-;1558:50;1490:119;:::o;1301:116:19:-;1365:46;1301:116;:::o;1373:111:3:-;1437:46;1373:111;:::o;832:85::-;878:38;832:85;:::o;1034:87::-;1081:39;1034:87;:::o;1240:110::-;1303:46;1240:110;:::o;1209:19:19:-;;;-1:-1:-1;;;;;1209:19:19;;:::o;706:104:3:-;766:43;706:104;:::o;1989:440:19:-;2080:3;2062:5;-1:-1:-1;;;;;2062:5:19;2054:30;2046:71;;;;-1:-1:-1;;;2046:71:19;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;2135:31:19;;2127:68;;;;-1:-1:-1;;;2127:68:19;;;;;;;:::i;:::-;2366:3;-1:-1:-1;;;;;2335:35:19;:6;-1:-1:-1;;;;;2335:17:19;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2335:35:19;;;2327:71;;;;-1:-1:-1;;;2327:71:19;;;;;;;:::i;:::-;2408:5;:14;;-1:-1:-1;;;;;;2408:14:19;-1:-1:-1;;;;;2408:14:19;;;;;;;;;;1989:440::o;1127:91:3:-;1176:41;1127:91;:::o;2625:756:19:-;1747:10:2;-1:-1:-1;;;;;1761:19:2;1747:33;;1726:130;;;;-1:-1:-1;;;1726:130:2;;;;;;;:::i;:::-;2838:11:19::1;2851;;987:278:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;1429:247:2::2;::::0;;::::2;987:278:::1;1429:247:::0;::::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;;2909:11:19;;-1:-1:-1;1429:247:2;-1:-1:-1;2922:11:19;;;;;;1429:247:2;::::2;2922:11:19::0;;;;1429:247:2;::::2;;::::0;::::2;::::0;;;-1:-1:-1;2980:5:19;-1:-1:-1;;;;;2957:29:19;;::::3;2980:5:::0;::::3;2957:29;::::0;-1:-1:-1;2949:91:19::3;::::0;-1:-1:-1;;2949:91:19::3;;;-1:-1:-1::0;;;2949:91:19::3;;;;;;;:::i;:::-;3060:30;3094:29;3111:11;;3094:16;:29::i;:::-;3051:72;;;;;;3135:26;3163:24:::0;3191:66:::3;3230:17;3191:25;:66::i;:::-;3134:123;;;;3273:9;3268:107;3288:9;:16;3284:1;:20;3268:107;;;3325:39;3337:9;3347:1;3337:12;;;;;;;;;;;;;;3351:9;3361:1;3351:12;;;;;;;;;;;;;;3325:11;:39::i;:::-;3306:3;;3268:107;;;;1531:1:2;;;1544:28:::2;1580:29;1598:10;1580:17;:29::i;:::-;1543:66;;;;1620:49;1644:11;1657;1620:23;:49::i;:::-;;1114:1;;;1131:31:::1;1166:29;1184:10;1166:17;:29::i;:::-;1126:69;;;;1206:52;1230:11;1243:14;1206:23;:52::i;:::-;;1866:1;;;2625:756:19::0;;;;;:::o;577:123:3:-;647:52;577:123;:::o;4957:965:19:-;5149:64;5227:29;;;;-1:-1:-1;;;;;;5439:35:19;;-1:-1:-1;;;5439:35:19;5431:87;;;;-1:-1:-1;;;5431:87:19;;;;;;;:::i;:::-;5669:29;5686:11;;5669:16;:29::i;:::-;-1:-1:-1;5730:50:19;;5529:169;;-1:-1:-1;5529:169:19;-1:-1:-1;5529:169:19;;-1:-1:-1;5529:169:19;-1:-1:-1;4957:965:19;-1:-1:-1;;;;;4957:965:19:o;2637:128:2:-;2739:19;2637:128;:::o;923:89:3:-;971:40;923:89;:::o;1124:23:19:-;;;-1:-1:-1;;;;;1124:23:19;;:::o;6003:453::-;6116:32;;;;;6373:76;;;;6384:11;6373:76;:::i;:::-;6366:83;;;;-1:-1:-1;6366:83:19;;-1:-1:-1;6366:83:19;-1:-1:-1;6366:83:19;;-1:-1:-1;6003:453:19;-1:-1:-1;;;6003:453:19:o;6529:409::-;6643:27;6672:25;6751:18;6740:52;;;;;;;;;;;;:::i;:::-;6831:17;;6810;;6713:79;;-1:-1:-1;6713:79:19;;-1:-1:-1;6810:38:19;6802:88;;;;-1:-1:-1;;;6802:88:19;;;;;;;:::i;:::-;6529:409;;;:::o;3582:731::-;3862:5;;;3889;3862:61;;-1:-1:-1;;;3862:61:19;;-1:-1:-1;;;;;3862:5:19;;;;:18;;:61;;3889:5;;;3897:15;;3914:8;;3862:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3935:12;3949:23;3976:15;-1:-1:-1;;;;;3976:20:19;3997:8;3976:30;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3934:72;;;;4021:7;4017:241;;4102:10;4096:17;4169:4;4157:10;4153:21;4215:18;4198:15;4191:43;4052:196;3582:731;;;;:::o;2093:332:2:-;2205:29;2248:35;2297:32;2372:10;2361:57;;;;;;;;;;;;:::i;:::-;2354:64;;;;;;2093:332;;;;;:::o;3539:585:4:-;3649:36;3737:7;:14;3723:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3723:29:4;;3701:51;;3767:9;3762:319;3782:7;:14;3778:1;:18;3762:319;;;3817:19;3845:7;3853:1;3845:10;;;;;;;;;;;;;;3817:39;;3895:13;-1:-1:-1;;;;;3895:23:4;;3927:4;3895:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3870:19;3890:1;3870:22;;;;;;;;;;;;;:63;;;;;3976:1;3951:19;3971:1;3951:22;;;;;;;;;;;;;;:26;3947:124;;;3997:59;4024:7;4033:19;4053:1;4033:22;;;;;;;;;;;;;;3997:13;-1:-1:-1;;;;;3997:26:4;;;:59;;;;;:::i;:::-;-1:-1:-1;3798:3:4;;3762:319;;;;3539:585;;;;:::o;704:175:8:-;786:86;806:5;836:23;;;861:2;865:5;813:58;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;813:58:8;;;;;;;;;;;;;;-1:-1:-1;;;;;813:58:8;-1:-1:-1;;;;;;813:58:8;;;;;;;;;;786:19;:86::i;:::-;704:175;;;:::o;2967:751::-;3386:23;3412:69;3440:4;3412:69;;;;;;;;;;;;;;;;;3420:5;-1:-1:-1;;;;;3412:27:8;;;:69;;;;;:::i;:::-;3495:17;;3386:95;;-1:-1:-1;3495:21:8;3491:221;;3635:10;3624:30;;;;;;;;;;;;:::i;:::-;3616:85;;;;-1:-1:-1;;;3616:85:8;;;;;;;:::i;3581:193:9:-;3684:12;3715:52;3737:6;3745:4;3751:1;3754:12;3715:21;:52::i;:::-;3708:59;;3581:193;;;;;;:::o;4608:523::-;4735:12;4792:5;4767:21;:30;;4759:81;;;;-1:-1:-1;;;4759:81:9;;;;;;;:::i;:::-;4858:18;4869:6;4858:10;:18::i;:::-;4850:60;;;;-1:-1:-1;;;4850:60:9;;;;;;;:::i;:::-;4981:12;4995:23;5022:6;-1:-1:-1;;;;;5022:11:9;5042:5;5050:4;5022:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:75;;;;5072:52;5090:7;5099:10;5111:12;5072:17;:52::i;:::-;5065:59;4608:523;-1:-1:-1;;;;;;;4608:523:9:o;726:413::-;1086:20;1124:8;;;726:413::o;7091:725::-;7206:12;7234:7;7230:580;;;-1:-1:-1;7264:10:9;7257:17;;7230:580;7375:17;;:21;7371:429;;7633:10;7627:17;7693:15;7680:10;7676:2;7672:19;7665:44;7582:145;7772:12;7765:20;;-1:-1:-1;;;7765:20:9;;;;;;;;:::i;301:707:-1:-;;418:3;411:4;403:6;399:17;395:27;385:2;;-1:-1;;426:12;385:2;473:6;460:20;495:80;510:64;567:6;510:64;:::i;:::-;495:80;:::i;:::-;603:21;;;486:89;-1:-1;647:4;660:14;;;;635:17;;;749;;;740:27;;;;737:36;-1:-1;734:2;;;786:1;;776:12;734:2;811:1;796:206;821:6;818:1;815:13;796:206;;;85:6;72:20;97:33;124:5;97:33;:::i;:::-;889:50;;953:14;;;;981;;;;843:1;836:9;796:206;;;800:14;;;;;378:630;;;;:::o;1034:722::-;;1162:3;1155:4;1147:6;1143:17;1139:27;1129:2;;-1:-1;;1170:12;1129:2;1210:6;1204:13;1232:80;1247:64;1304:6;1247:64;:::i;1232:80::-;1340:21;;;1223:89;-1:-1;1384:4;1397:14;;;;1372:17;;;1486;;;1477:27;;;;1474:36;-1:-1;1471:2;;;1523:1;;1513:12;1471:2;1548:1;1533:217;1558:6;1555:1;1552:13;1533:217;;;226:6;220:13;238:33;265:5;238:33;:::i;:::-;1626:61;;1701:14;;;;1729;;;;1580:1;1573:9;1533:217;;2519:707;;2636:3;2629:4;2621:6;2617:17;2613:27;2603:2;;-1:-1;;2644:12;2603:2;2691:6;2678:20;2713:80;2728:64;2785:6;2728:64;:::i;2713:80::-;2821:21;;;2704:89;-1:-1;2865:4;2878:14;;;;2853:17;;;2967;;;2958:27;;;;2955:36;-1:-1;2952:2;;;3004:1;;2994:12;2952:2;3029:1;3014:206;3039:6;3036:1;3033:13;3014:206;;;5752:20;;3107:50;;3171:14;;;;3199;;;;3061:1;3054:9;3014:206;;4266:336;;;4380:3;4373:4;4365:6;4361:17;4357:27;4347:2;;-1:-1;;4388:12;4347:2;-1:-1;4418:20;;4458:18;4447:30;;4444:2;;;-1:-1;;4480:12;4444:2;4524:4;4516:6;4512:17;4500:29;;4575:3;4524:4;4555:17;4516:6;4541:32;;4538:41;4535:2;;;4592:1;;4582:12;4535:2;4340:262;;;;;:::o;4611:440::-;;4712:3;4705:4;4697:6;4693:17;4689:27;4679:2;;-1:-1;;4720:12;4679:2;4767:6;4754:20;4789:64;4804:48;4845:6;4804:48;:::i;4789:64::-;4780:73;;4873:6;4866:5;4859:21;4977:3;4909:4;4968:6;4901;4959:16;;4956:25;4953:2;;;4994:1;;4984:12;4953:2;32234:6;4909:4;4901:6;4897:17;4909:4;4935:5;4931:16;32211:30;32290:1;32272:16;;;4909:4;32272:16;32265:27;4935:5;4672:379;-1:-1;;4672:379::o;5963:263::-;;6078:2;6066:9;6057:7;6053:23;6049:32;6046:2;;;-1:-1;;6084:12;6046:2;226:6;220:13;238:33;265:5;238:33;:::i;6233:613::-;;;;;6389:2;6377:9;6368:7;6364:23;6360:32;6357:2;;;-1:-1;;6395:12;6357:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6447:63;-1:-1;6547:2;6585:22;;4183:20;-1:-1;;;;;;30820:78;;33112:34;;33102:2;;-1:-1;;33150:12;33102:2;6555:62;-1:-1;6682:2;6667:18;;6654:32;6706:18;6695:30;;6692:2;;;-1:-1;;6728:12;6692:2;6766:64;6822:7;6813:6;6802:9;6798:22;6766:64;:::i;:::-;6351:495;;;;-1:-1;6748:82;-1:-1;;;;6351:495::o;6853:739::-;;;;;;7029:2;7017:9;7008:7;7004:23;7000:32;6997:2;;;-1:-1;;7035:12;6997:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;7087:63;-1:-1;7215:2;7200:18;;7187:32;7239:18;7228:30;;;7225:2;;;-1:-1;;7261:12;7225:2;7299:64;7355:7;7346:6;7335:9;7331:22;7299:64;:::i;:::-;7281:82;;-1:-1;7281:82;-1:-1;7428:2;7413:18;;7400:32;;-1:-1;7441:30;;;7438:2;;;-1:-1;;7474:12;7438:2;;7512:64;7568:7;7559:6;7548:9;7544:22;7512:64;:::i;:::-;6991:601;;;;-1:-1;6991:601;;-1:-1;7494:82;;;6991:601;-1:-1;;;6991:601::o;7599:675::-;;;7790:2;;7778:9;7769:7;7765:23;7761:32;7758:2;;;-1:-1;;7796:12;7758:2;7847:17;7841:24;7885:18;;7877:6;7874:30;7871:2;;;-1:-1;;7907:12;7871:2;7937:89;8018:7;8009:6;7998:9;7994:22;7937:89;:::i;:::-;7927:99;;8084:2;;;;8073:9;8069:18;8063:25;7885:18;8100:6;8097:30;8094:2;;;-1:-1;;8130:12;8094:2;8226:22;;;-1:-1;1910:4;1898:17;;1894:27;-1:-1;1884:2;;-1:-1;;1925:12;1884:2;1965:6;1959:13;1987:89;2002:73;2068:6;2002:73;:::i;1987:89::-;2104:21;;;2161:14;;;;2136:17;;;-1:-1;2241:246;2266:6;2263:1;2260:13;2241:246;;;2342:3;2336:10;2140:6;2324:23;5172:3;5153:17;2324:23;5153:17;5149:27;5139:2;;-1:-1;;5180:12;5139:2;8084;2324:23;;5214:13;5242:64;5257:48;5298:6;5257:48;:::i;5242:64::-;5326:6;5319:5;5312:21;5430:3;7790:2;5421:6;2324:23;5412:16;;5409:25;5406:2;;;-1:-1;;5437:12;5406:2;5457:39;5489:6;8084:2;5388:5;5384:16;7790:2;2324:23;5350:17;5457:39;:::i;:::-;2354:70;;-1:-1;;2438:14;;;;2466;;;;2288:1;2281:9;2241:246;;;-1:-1;7752:522;;8150:108;;-1:-1;7752:522;-1:-1;;;;;;;;7752:522::o;8281:922::-;;;;8505:2;8493:9;8484:7;8480:23;8476:32;8473:2;;;-1:-1;;8511:12;8473:2;8562:17;8556:24;8600:18;;8592:6;8589:30;8586:2;;;-1:-1;;8622:12;8586:2;8652:89;8733:7;8724:6;8713:9;8709:22;8652:89;:::i;:::-;8642:99;;8799:2;;;;8788:9;8784:18;8778:25;8600:18;8815:6;8812:30;8809:2;;;-1:-1;;8845:12;8809:2;8932:22;;3373:4;3361:17;;3357:27;-1:-1;3347:2;;-1:-1;;3388:12;3347:2;3428:6;3422:13;3450:80;3465:64;3522:6;3465:64;:::i;3450:80::-;3558:21;;;3615:14;;;;3590:17;;;3704;;;3695:27;;;;3692:36;-1:-1;3689:2;;;-1:-1;;3731:12;3689:2;-1:-1;3757:10;;3751:217;3776:6;3773:1;3770:13;3751:217;;;5900:13;;3844:61;;3798:1;3791:9;;;;;3919:14;;;;3947;;3751:217;;;-1:-1;9022:2;9007:18;;9001:25;8865:99;;-1:-1;9001:25;-1:-1;;;;9035:30;;;9032:2;;;-1:-1;;9068:12;9032:2;;9098:89;9179:7;9170:6;9159:9;9155:22;9098:89;:::i;:::-;9088:99;;;8467:736;;;;;:::o;9210:1391::-;;;;;;9491:3;9479:9;9470:7;9466:23;9462:33;9459:2;;;-1:-1;;9498:12;9459:2;9556:17;9543:31;9594:18;;9586:6;9583:30;9580:2;;;-1:-1;;9616:12;9580:2;9646:78;9716:7;9707:6;9696:9;9692:22;9646:78;:::i;:::-;9636:88;;9789:2;9778:9;9774:18;9761:32;9747:46;;9594:18;9805:6;9802:30;9799:2;;;-1:-1;;9835:12;9799:2;9865:78;9935:7;9926:6;9915:9;9911:22;9865:78;:::i;:::-;9855:88;;10008:2;9997:9;9993:18;9980:32;9966:46;;9594:18;10024:6;10021:30;10018:2;;;-1:-1;;10054:12;10018:2;10084:78;10154:7;10145:6;10134:9;10130:22;10084:78;:::i;:::-;10074:88;;10227:2;10216:9;10212:18;10199:32;10185:46;;9594:18;10243:6;10240:30;10237:2;;;-1:-1;;10273:12;10237:2;10303:78;10373:7;10364:6;10353:9;10349:22;10303:78;:::i;:::-;10293:88;;10446:3;10435:9;10431:19;10418:33;10404:47;;9594:18;10463:6;10460:30;10457:2;;;-1:-1;;10493:12;10457:2;;10523:62;10577:7;10568:6;10557:9;10553:22;10523:62;:::i;:::-;10513:72;;;9453:1148;;;;;;;;:::o;10608:257::-;;10720:2;10708:9;10699:7;10695:23;10691:32;10688:2;;;-1:-1;;10726:12;10688:2;4063:6;4057:13;33017:5;30733:13;30726:21;32995:5;32992:32;32982:2;;-1:-1;;33028:12;10872:279;;10995:2;10983:9;10974:7;10970:23;10966:32;10963:2;;;-1:-1;;11001:12;10963:2;5609:6;5596:20;5621:52;5667:5;5621:52;:::i;11158:263::-;;11273:2;11261:9;11252:7;11248:23;11244:32;11241:2;;;-1:-1;;11279:12;11241:2;-1:-1;5900:13;;11235:186;-1:-1;11235:186::o;12053:690::-;;12246:5;29027:12;29830:6;29825:3;29818:19;29867:4;;29862:3;29858:14;12258:93;;29867:4;12422:5;28723:14;-1:-1;12461:260;12486:6;12483:1;12480:13;12461:260;;;12547:13;;-1:-1;;;;;31254:54;11853:37;;11582:14;;;;29558;;;;4458:18;12501:9;12461:260;;;-1:-1;12727:10;;12177:566;-1:-1;;;;;12177:566::o;12782:690::-;;12975:5;29027:12;29830:6;29825:3;29818:19;29867:4;;29862:3;29858:14;12987:93;;29867:4;13151:5;28723:14;-1:-1;13190:260;13215:6;13212:1;13209:13;13190:260;;;13276:13;;18911:37;;11764:14;;;;29558;;;;13237:1;13230:9;13190:260;;13597:343;;13739:5;29027:12;29830:6;29825:3;29818:19;13832:52;13877:6;29867:4;29862:3;29858:14;29867:4;13858:5;13854:16;13832:52;:::i;:::-;32667:7;32651:14;-1:-1;;32647:28;13896:39;;;;29867:4;13896:39;;13687:253;-1:-1;;13687:253::o;19080:271::-;;14107:5;29027:12;14218:52;14263:6;14258:3;14251:4;14244:5;14240:16;14218:52;:::i;:::-;14282:16;;;;;19214:137;-1:-1;;19214:137::o;19358:222::-;-1:-1;;;;;31254:54;;;;11853:37;;19485:2;19470:18;;19456:124::o;19587:528::-;-1:-1;;;;;31254:54;;;11853:37;;31254:54;;19952:2;19937:18;;11853:37;19788:2;19989;19974:18;;19967:48;;;19587:528;;20029:76;;19773:18;;20091:6;20029:76;:::i;:::-;20021:84;19759:356;-1:-1;;;;;19759:356::o;20122:333::-;-1:-1;;;;;31254:54;;;;11853:37;;20441:2;20426:18;;18911:37;20277:2;20262:18;;20248:207::o;20462:218::-;-1:-1;;;;;;30820:78;;;;13549:36;;20587:2;20572:18;;20558:122::o;21213:1308::-;;32783:1;32776:5;32773:12;32763:2;;32789:9;32763:2;32090:50;14746:3;14739:74;21676:3;21819:2;21808:9;21804:18;21797:48;21859:108;21676:3;21665:9;21661:19;21953:6;21859:108;:::i;:::-;22015:9;22009:4;22005:20;22000:2;21989:9;21985:18;21978:48;22040:108;22143:4;22134:6;22040:108;:::i;:::-;22032:116;;22196:9;22190:4;22186:20;22181:2;22170:9;22166:18;22159:48;22221:108;22324:4;22315:6;22221:108;:::i;:::-;22213:116;;22378:9;22372:4;22368:20;22362:3;22351:9;22347:19;22340:49;22403:108;22506:4;22497:6;22403:108;:::i;:::-;22395:116;21647:874;-1:-1;;;;;;;;21647:874::o;22528:310::-;;22675:2;22696:17;22689:47;22750:78;22675:2;22664:9;22660:18;22814:6;22750:78;:::i;22845:416::-;23045:2;23059:47;;;15404:2;23030:18;;;29818:19;15440:34;29858:14;;;15420:55;-1:-1;;;15495:12;;;15488:29;15536:12;;;23016:245::o;23268:416::-;23468:2;23482:47;;;15787:2;23453:18;;;29818:19;15823:34;29858:14;;;15803:55;-1:-1;;;15878:12;;;15871:30;15920:12;;;23439:245::o;23691:416::-;23891:2;23905:47;;;16171:2;23876:18;;;29818:19;16207:26;29858:14;;;16187:47;16253:12;;;23862:245::o;24114:416::-;24314:2;24328:47;;;16504:2;24299:18;;;29818:19;16540:34;29858:14;;;16520:55;-1:-1;;;16595:12;;;16588:42;16649:12;;;24285:245::o;24537:416::-;24737:2;24751:47;;;16900:2;24722:18;;;29818:19;16936:30;29858:14;;;16916:51;16986:12;;;24708:245::o;24960:416::-;25160:2;25174:47;;;17237:2;25145:18;;;29818:19;17273:34;29858:14;;;17253:55;-1:-1;;;17328:12;;;17321:41;17381:12;;;25131:245::o;25383:416::-;25583:2;25597:47;;;17632:2;25568:18;;;29818:19;17668:31;29858:14;;;17648:52;17719:12;;;25554:245::o;25806:416::-;26006:2;26020:47;;;17970:2;25991:18;;;29818:19;18006:25;29858:14;;;17986:46;18051:12;;;25977:245::o;26229:416::-;26429:2;26443:47;;;18302:2;26414:18;;;29818:19;18338:34;29858:14;;;18318:55;-1:-1;;;18393:12;;;18386:34;18439:12;;;26400:245::o;26652:416::-;26852:2;26866:47;;;18690:2;26837:18;;;29818:19;18726:34;29858:14;;;18706:55;-1:-1;;;18781:12;;;18774:31;18824:12;;;26823:245::o;27075:256::-;27137:2;27131:9;27163:17;;;27238:18;27223:34;;27259:22;;;27220:62;27217:2;;;27295:1;;27285:12;27217:2;27137;27304:22;27115:216;;-1:-1;27115:216::o;27338:304::-;;27497:18;27489:6;27486:30;27483:2;;;-1:-1;;27519:12;27483:2;-1:-1;27564:4;27552:17;;;27617:15;;27420:222::o;28280:321::-;;28423:18;28415:6;28412:30;28409:2;;;-1:-1;;28445:12;28409:2;-1:-1;32667:7;28499:17;-1:-1;;28495:33;28586:4;28576:15;;28346:255::o;32307:268::-;32372:1;32379:101;32393:6;32390:1;32387:13;32379:101;;;32460:11;;;32454:18;32441:11;;;32434:39;32415:2;32408:10;32379:101;;;32495:6;32492:1;32489:13;32486:2;;;-1:-1;;32372:1;32542:16;;32535:27;32356:219::o;32812:117::-;-1:-1;;;;;31254:54;;32871:35;;32861:2;;32920:1;;32910:12;32861:2;32855:74;:::o","linkReferences":{},"immutableReferences":{"18":[{"start":1075,"length":32},{"start":1585,"length":32}]}},"methodIdentifiers":{"CLAIM_REWARDS_SELECTOR()":"40da225d","EXECUTE_CALLS_SELECTOR()":"12d9c1f6","LEND_AND_STAKE_SELECTOR()":"131461c0","LEND_SELECTOR()":"257cb1a3","REDEEM_SELECTOR()":"f7d882b5","STAKE_SELECTOR()":"3ffc1591","TAKE_MULTIPLE_ORDERS_SELECTOR()":"c32990a2","TAKE_ORDER_SELECTOR()":"863e5ad0","UNSTAKE_AND_REDEEM_SELECTOR()":"080456c1","UNSTAKE_SELECTOR()":"b23228cf","bindVault(address)":"95febcc1","executeCalls(address,bytes,bytes)":"b7fe1a11","getIntegrationManager()":"e7c45690","guard()":"7ceab3b1","parseAssetsForAction(address,bytes4,bytes)":"c54efee5","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_integrationManager\",\"type\":\"address\"},{\"internalType\":\"contract IGuard\",\"name\":\"_guard\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CLAIM_REWARDS_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EXECUTE_CALLS_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LEND_AND_STAKE_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LEND_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REDEEM_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKE_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TAKE_MULTIPLE_ORDERS_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TAKE_ORDER_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNSTAKE_AND_REDEEM_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNSTAKE_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IVaultMock\",\"name\":\"_vault\",\"type\":\"address\"}],\"name\":\"bindVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vaultProxy\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_actionData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"executeCalls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getIntegrationManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"integrationManager_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guard\",\"outputs\":[{\"internalType\":\"contract IGuard\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"_selector\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"_actionData\",\"type\":\"bytes\"}],\"name\":\"parseAssetsForAction\",\"outputs\":[{\"internalType\":\"enum IIntegrationManager.SpendAssetsHandleType\",\"name\":\"spendAssetsHandleType_\",\"type\":\"uint8\"},{\"internalType\":\"address[]\",\"name\":\"spendAssets_\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"spendAssetAmounts_\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"incomingAssets_\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minIncomingAssetAmounts_\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVaultMock\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"executeCalls(address,bytes,bytes)\":{\"params\":{\"_actionData\":\"Data specific to this action\",\"_vaultProxy\":\"The VaultProxy of the calling fund\"}},\"getIntegrationManager()\":{\"returns\":{\"integrationManager_\":\"The `INTEGRATION_MANAGER` variable value\"}},\"parseAssetsForAction(address,bytes4,bytes)\":{\"params\":{\"_actionData\":\"Data specific to this action\",\"_selector\":\"The function selector for the callOnIntegration\"},\"returns\":{\"incomingAssets_\":\"The assets to receive in the call\",\"minIncomingAssetAmounts_\":\"The min asset amounts to receive in the call\",\"spendAssetAmounts_\":\"The max asset amounts to spend in the call\",\"spendAssetsHandleType_\":\"A type that dictates how to handle granting the adapter access to spend assets (hardcoded to `Transfer`)\",\"spendAssets_\":\"The assets to spend in the call\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"executeCalls(address,bytes,bytes)\":{\"notice\":\"Executes a sequence of calls\"},\"getIntegrationManager()\":{\"notice\":\"Gets the `INTEGRATION_MANAGER` variable\"},\"parseAssetsForAction(address,bytes4,bytes)\":{\"notice\":\"Parses the expected assets in a particular action\"}},\"notice\":\"A generic adapter for Enzyme vault with our own guard mechanism. - Guard checks the asset manager cannot perform actions that are not allowed (withdraw, trade wrong tokens) - Governance address can still perform hese actions - Adapter is associated with a specific vault\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/GuardedGenericAdapter.sol\":\"GuardedGenericAdapter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@enzyme/=../enzyme/contracts/\",\":@openzeppelin/=../enzyme/node_modules/@openzeppelin/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/openzeppelin-contracts/lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"../enzyme/contracts/release/extensions/integration-manager/IIntegrationManager.sol\":{\"keccak256\":\"0x29aff2a05a50430f732dd67cd3dfbfcf3b2fd86697f61b1ef91bebc8ff3e00ef\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8b1f03cd376a3743dfaeff7cfbb1114341099d18ab32165365c76eba8e9dbc23\",\"dweb:/ipfs/QmZEwZEUcFwWEKkYXmjcijChwfAkFHkgMMRnv4QY8abhdk\"]},\"../enzyme/contracts/release/extensions/integration-manager/integrations/IIntegrationAdapter.sol\":{\"keccak256\":\"0x14b11777e21aceca340931832874342546731493bb169dbb4de736b16e9a7cc1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d86c25f7deaddc311bfcd4da5ce08c275f548e164cb732137be91466acc75336\",\"dweb:/ipfs/QmYE2XeBKMoqUrfNZAX66mi34sth4ehoZnVzGhZFLBxbwS\"]},\"../enzyme/contracts/release/extensions/integration-manager/integrations/utils/AdapterBase.sol\":{\"keccak256\":\"0x067e49bf0d3c1655ab41a413c65ccf61d4e593308132e1ffc484a0fadfbbaf26\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://387f425017e18e89cc1893521101fa99df595314847d0b3d9a1162369f714fcf\",\"dweb:/ipfs/Qmco3jCvuWAyfCpBYpGzHrQjiFJG63w1RJKcakoTEbxRQm\"]},\"../enzyme/contracts/release/extensions/integration-manager/integrations/utils/IntegrationSelectors.sol\":{\"keccak256\":\"0xfd34c7ca8231c6935e25dede32ca2b3121738e624d0fc896f7b895a731edcf88\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d492c061963d36d07718446db191d4c5a340c0d847f6cd209f027bd99f7cb176\",\"dweb:/ipfs/QmfCvRZt56ftDdrEh6LepHXFJ4fVtcfpQGvEyY8k4zxG1A\"]},\"../enzyme/contracts/release/utils/AssetHelpers.sol\":{\"keccak256\":\"0x01825f9b744f0bdbbcbed59503845b46e31b67ab510d53d4834c22967e12fc5f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a6937098b8b5e2238c5d2617d4c7870b61eb3dc6b24e38a6d037353f92a7db4b\",\"dweb:/ipfs/QmXfdWqtc4Dyn4ShhCc6ZZscApMZWtSaonvikwemhczb5E\"]},\"../enzyme/node_modules/@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"../enzyme/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca0c2396dbeb3503b51abf4248ebf77a1461edad513c01529df51850a012bee3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://991b44ff44e0496e8554a90f4c0512c28faed45104d40430019f3c67ea67740e\",\"dweb:/ipfs/Qmc3nRapVbcctELoZS5qe17zLkFB3bETBfwzCTMF1CSuGE\"]},\"../enzyme/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"../enzyme/node_modules/@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a\",\"dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ\"]},\"../enzyme/node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"../enzyme/node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"src/GuardedGenericAdapter.sol\":{\"keccak256\":\"0x98aa9e6c79fd05458006b3d125a4d2d9fe6cda19e10a20043e925b899efba9fa\",\"urls\":[\"bzz-raw://84c97e7a051684c54253d932f504385e3bd27d9e1242ab593323eaeba8768b2c\",\"dweb:/ipfs/QmQJhHLspoa3ResKnjHqRJZjB9FbnhYCbG61LwZbyYTnAU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.6.12+commit.27d51765"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_integrationManager","type":"address"},{"internalType":"contract IGuard","name":"_guard","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"view","type":"function","name":"CLAIM_REWARDS_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"EXECUTE_CALLS_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LEND_AND_STAKE_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LEND_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"REDEEM_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"STAKE_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TAKE_MULTIPLE_ORDERS_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TAKE_ORDER_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UNSTAKE_AND_REDEEM_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UNSTAKE_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"contract IVaultMock","name":"_vault","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"bindVault"},{"inputs":[{"internalType":"address","name":"_vaultProxy","type":"address"},{"internalType":"bytes","name":"_actionData","type":"bytes"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"executeCalls"},{"inputs":[],"stateMutability":"view","type":"function","name":"getIntegrationManager","outputs":[{"internalType":"address","name":"integrationManager_","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"guard","outputs":[{"internalType":"contract IGuard","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes4","name":"_selector","type":"bytes4"},{"internalType":"bytes","name":"_actionData","type":"bytes"}],"stateMutability":"view","type":"function","name":"parseAssetsForAction","outputs":[{"internalType":"enum IIntegrationManager.SpendAssetsHandleType","name":"spendAssetsHandleType_","type":"uint8"},{"internalType":"address[]","name":"spendAssets_","type":"address[]"},{"internalType":"uint256[]","name":"spendAssetAmounts_","type":"uint256[]"},{"internalType":"address[]","name":"incomingAssets_","type":"address[]"},{"internalType":"uint256[]","name":"minIncomingAssetAmounts_","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"contract IVaultMock","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"executeCalls(address,bytes,bytes)":{"params":{"_actionData":"Data specific to this action","_vaultProxy":"The VaultProxy of the calling fund"}},"getIntegrationManager()":{"returns":{"integrationManager_":"The `INTEGRATION_MANAGER` variable value"}},"parseAssetsForAction(address,bytes4,bytes)":{"params":{"_actionData":"Data specific to this action","_selector":"The function selector for the callOnIntegration"},"returns":{"incomingAssets_":"The assets to receive in the call","minIncomingAssetAmounts_":"The min asset amounts to receive in the call","spendAssetAmounts_":"The max asset amounts to spend in the call","spendAssetsHandleType_":"A type that dictates how to handle granting the adapter access to spend assets (hardcoded to `Transfer`)","spendAssets_":"The assets to spend in the call"}}},"version":1},"userdoc":{"kind":"user","methods":{"executeCalls(address,bytes,bytes)":{"notice":"Executes a sequence of calls"},"getIntegrationManager()":{"notice":"Gets the `INTEGRATION_MANAGER` variable"},"parseAssetsForAction(address,bytes4,bytes)":{"notice":"Parses the expected assets in a particular action"}},"version":1}},"settings":{"remappings":["@enzyme/=../enzyme/contracts/","@openzeppelin/=../enzyme/node_modules/@openzeppelin/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/openzeppelin-contracts/lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/GuardedGenericAdapter.sol":"GuardedGenericAdapter"},"evmVersion":"istanbul","libraries":{}},"sources":{"../enzyme/contracts/release/extensions/integration-manager/IIntegrationManager.sol":{"keccak256":"0x29aff2a05a50430f732dd67cd3dfbfcf3b2fd86697f61b1ef91bebc8ff3e00ef","urls":["bzz-raw://8b1f03cd376a3743dfaeff7cfbb1114341099d18ab32165365c76eba8e9dbc23","dweb:/ipfs/QmZEwZEUcFwWEKkYXmjcijChwfAkFHkgMMRnv4QY8abhdk"],"license":"GPL-3.0"},"../enzyme/contracts/release/extensions/integration-manager/integrations/IIntegrationAdapter.sol":{"keccak256":"0x14b11777e21aceca340931832874342546731493bb169dbb4de736b16e9a7cc1","urls":["bzz-raw://d86c25f7deaddc311bfcd4da5ce08c275f548e164cb732137be91466acc75336","dweb:/ipfs/QmYE2XeBKMoqUrfNZAX66mi34sth4ehoZnVzGhZFLBxbwS"],"license":"GPL-3.0"},"../enzyme/contracts/release/extensions/integration-manager/integrations/utils/AdapterBase.sol":{"keccak256":"0x067e49bf0d3c1655ab41a413c65ccf61d4e593308132e1ffc484a0fadfbbaf26","urls":["bzz-raw://387f425017e18e89cc1893521101fa99df595314847d0b3d9a1162369f714fcf","dweb:/ipfs/Qmco3jCvuWAyfCpBYpGzHrQjiFJG63w1RJKcakoTEbxRQm"],"license":"GPL-3.0"},"../enzyme/contracts/release/extensions/integration-manager/integrations/utils/IntegrationSelectors.sol":{"keccak256":"0xfd34c7ca8231c6935e25dede32ca2b3121738e624d0fc896f7b895a731edcf88","urls":["bzz-raw://d492c061963d36d07718446db191d4c5a340c0d847f6cd209f027bd99f7cb176","dweb:/ipfs/QmfCvRZt56ftDdrEh6LepHXFJ4fVtcfpQGvEyY8k4zxG1A"],"license":"GPL-3.0"},"../enzyme/contracts/release/utils/AssetHelpers.sol":{"keccak256":"0x01825f9b744f0bdbbcbed59503845b46e31b67ab510d53d4834c22967e12fc5f","urls":["bzz-raw://a6937098b8b5e2238c5d2617d4c7870b61eb3dc6b24e38a6d037353f92a7db4b","dweb:/ipfs/QmXfdWqtc4Dyn4ShhCc6ZZscApMZWtSaonvikwemhczb5E"],"license":"GPL-3.0"},"../enzyme/node_modules/@openzeppelin/contracts/math/SafeMath.sol":{"keccak256":"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52","urls":["bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c","dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR"],"license":"MIT"},"../enzyme/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca0c2396dbeb3503b51abf4248ebf77a1461edad513c01529df51850a012bee3","urls":["bzz-raw://991b44ff44e0496e8554a90f4c0512c28faed45104d40430019f3c67ea67740e","dweb:/ipfs/Qmc3nRapVbcctELoZS5qe17zLkFB3bETBfwzCTMF1CSuGE"],"license":"MIT"},"../enzyme/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5","urls":["bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08","dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC"],"license":"MIT"},"../enzyme/node_modules/@openzeppelin/contracts/token/ERC20/SafeERC20.sol":{"keccak256":"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc","urls":["bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a","dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ"],"license":"MIT"},"../enzyme/node_modules/@openzeppelin/contracts/utils/Address.sol":{"keccak256":"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea","urls":["bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c","dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN"],"license":"MIT"},"../enzyme/node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0","urls":["bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f","dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96"],"license":"MIT"},"src/GuardedGenericAdapter.sol":{"keccak256":"0x98aa9e6c79fd05458006b3d125a4d2d9fe6cda19e10a20043e925b899efba9fa","urls":["bzz-raw://84c97e7a051684c54253d932f504385e3bd27d9e1242ab593323eaeba8768b2c","dweb:/ipfs/QmQJhHLspoa3ResKnjHqRJZjB9FbnhYCbG61LwZbyYTnAU"],"license":null}},"version":1},"ast":{"absolutePath":"src/GuardedGenericAdapter.sol","id":2751,"exportedSymbols":{"GuardedGenericAdapter":[2750],"IGuard":[2432],"IVaultMock":[2422]},"nodeType":"SourceUnit","src":"50:6891:19","nodes":[{"id":2414,"nodeType":"PragmaDirective","src":"50:24:19","nodes":[],"literals":["solidity","^","0.6",".12"]},{"id":2415,"nodeType":"PragmaDirective","src":"75:33:19","nodes":[],"literals":["experimental","ABIEncoderV2"]},{"id":2416,"nodeType":"ImportDirective","src":"110:91:19","nodes":[],"absolutePath":"../enzyme/contracts/release/extensions/integration-manager/integrations/utils/AdapterBase.sol","file":"@enzyme/release/extensions/integration-manager/integrations/utils/AdapterBase.sol","scope":2751,"sourceUnit":128,"symbolAliases":[],"unitAlias":""},{"id":2422,"nodeType":"ContractDefinition","src":"237:92:19","nodes":[{"id":2421,"nodeType":"FunctionDefinition","src":"264:63:19","nodes":[],"documentation":null,"functionSelector":"0ee2cb10","implemented":false,"kind":"function","modifiers":[],"name":"getCreator","overrides":null,"parameters":{"id":2417,"nodeType":"ParameterList","parameters":[],"src":"283:2:19"},"returnParameters":{"id":2420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2419,"mutability":"mutable","name":"creator_","nodeType":"VariableDeclaration","overrides":null,"scope":2421,"src":"309:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2418,"name":"address","nodeType":"ElementaryTypeName","src":"309:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"308:18:19"},"scope":2422,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2422],"name":"IVaultMock","scope":2751},{"id":2432,"nodeType":"ContractDefinition","src":"366:125:19","nodes":[{"id":2431,"nodeType":"FunctionDefinition","src":"389:100:19","nodes":[],"documentation":null,"functionSelector":"6d5025f1","implemented":false,"kind":"function","modifiers":[],"name":"validateCall","overrides":null,"parameters":{"id":2429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2424,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","overrides":null,"scope":2431,"src":"411:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2423,"name":"address","nodeType":"ElementaryTypeName","src":"411:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2426,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","overrides":null,"scope":2431,"src":"427:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2425,"name":"address","nodeType":"ElementaryTypeName","src":"427:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2428,"mutability":"mutable","name":"callDataWithSelector","nodeType":"VariableDeclaration","overrides":null,"scope":2431,"src":"443:35:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2427,"name":"bytes","nodeType":"ElementaryTypeName","src":"443:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"410:69:19"},"returnParameters":{"id":2430,"nodeType":"ParameterList","parameters":[],"src":"488:0:19"},"scope":2432,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2432],"name":"IGuard","scope":2751},{"id":2750,"nodeType":"ContractDefinition","src":"801:6139:19","nodes":[{"id":2437,"nodeType":"VariableDeclaration","src":"1124:23:19","nodes":[],"constant":false,"functionSelector":"fbfa77cf","mutability":"mutable","name":"vault","overrides":null,"scope":2750,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"},"typeName":{"contractScope":null,"id":2436,"name":"IVaultMock","nodeType":"UserDefinedTypeName","referencedDeclaration":2422,"src":"1124:10:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}},"value":null,"visibility":"public"},{"id":2439,"nodeType":"VariableDeclaration","src":"1209:19:19","nodes":[],"constant":false,"functionSelector":"7ceab3b1","mutability":"mutable","name":"guard","overrides":null,"scope":2750,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"},"typeName":{"contractScope":null,"id":2438,"name":"IGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":2432,"src":"1209:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"}},"value":null,"visibility":"public"},{"id":2447,"nodeType":"VariableDeclaration","src":"1301:116:19","nodes":[],"constant":true,"functionSelector":"12d9c1f6","mutability":"constant","name":"EXECUTE_CALLS_SELECTOR","overrides":null,"scope":2750,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2440,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1301:6:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"6578656375746543616c6c7328616464726573732c62797465732c627974657329","id":2444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1375:35:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b7fe1a117cff974e3f19d303d9f97ada44b7ecad880df21ddfdc69ba0493b796","typeString":"literal_string \"executeCalls(address,bytes,bytes)\""},"value":"executeCalls(address,bytes,bytes)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b7fe1a117cff974e3f19d303d9f97ada44b7ecad880df21ddfdc69ba0493b796","typeString":"literal_string \"executeCalls(address,bytes,bytes)\""}],"id":2443,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1365:9:19","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1365:46:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2442,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1349:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2441,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1349:6:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1349:68:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"public"},{"id":2462,"nodeType":"FunctionDefinition","src":"1424:149:19","nodes":[],"body":{"id":2461,"nodeType":"Block","src":"1542:31:19","nodes":[],"statements":[{"expression":{"argumentTypes":null,"id":2459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2457,"name":"guard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"1552:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2458,"name":"_guard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2451,"src":"1560:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"}},"src":"1552:14:19","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"}},"id":2460,"nodeType":"ExpressionStatement","src":"1552:14:19"}]},"documentation":null,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"argumentTypes":null,"id":2454,"name":"_integrationManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2449,"src":"1521:19:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2455,"modifierName":{"argumentTypes":null,"id":2453,"name":"AdapterBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"1509:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AdapterBase_$127_$","typeString":"type(contract AdapterBase)"}},"nodeType":"ModifierInvocation","src":"1509:32:19"}],"name":"","overrides":null,"parameters":{"id":2452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2449,"mutability":"mutable","name":"_integrationManager","nodeType":"VariableDeclaration","overrides":null,"scope":2462,"src":"1445:27:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2448,"name":"address","nodeType":"ElementaryTypeName","src":"1445:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2451,"mutability":"mutable","name":"_guard","nodeType":"VariableDeclaration","overrides":null,"scope":2462,"src":"1482:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"},"typeName":{"contractScope":null,"id":2450,"name":"IGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":2432,"src":"1482:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"}},"value":null,"visibility":"internal"}],"src":"1435:66:19"},"returnParameters":{"id":2456,"nodeType":"ParameterList","parameters":[],"src":"1542:0:19"},"scope":2750,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2510,"nodeType":"FunctionDefinition","src":"1989:440:19","nodes":[],"body":{"id":2509,"nodeType":"Block","src":"2036:393:19","nodes":[],"statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2470,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"2062:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}],"id":2469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2054:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2468,"name":"address","nodeType":"ElementaryTypeName","src":"2054:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2054:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2080:3:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2473,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2072:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2472,"name":"address","nodeType":"ElementaryTypeName","src":"2072:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2072:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2054:30:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"43616e20626520696e697469616c69736564206f6e6c79206f6e6365","id":2477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2086:30:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_762623d12dbae063f47f57f6478a72532148be79937212a03822a2e9c0dcf834","typeString":"literal_string \"Can be initialised only once\""},"value":"Can be initialised only once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_762623d12dbae063f47f57f6478a72532148be79937212a03822a2e9c0dcf834","typeString":"literal_string \"Can be initialised only once\""}],"id":2467,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2046:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2046:71:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"ExpressionStatement","src":"2046:71:19"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2483,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2464,"src":"2143:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}],"id":2482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2135:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2481,"name":"address","nodeType":"ElementaryTypeName","src":"2135:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2135:15:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":2487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2162:3:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2154:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2485,"name":"address","nodeType":"ElementaryTypeName","src":"2154:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2154:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2135:31:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4e756c6c206164647265737320656e636f756e7465726564","id":2490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2168:26:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_63719c465d101e0c42f13929027fa16e77069e7eb0350e8b7e5547798a9b05a7","typeString":"literal_string \"Null address encountered\""},"value":"Null address encountered"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_63719c465d101e0c42f13929027fa16e77069e7eb0350e8b7e5547798a9b05a7","typeString":"literal_string \"Null address encountered\""}],"id":2480,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2127:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2127:68:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2492,"nodeType":"ExpressionStatement","src":"2127:68:19"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":2494,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2464,"src":"2335:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}},"id":2495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getCreator","nodeType":"MemberAccess","referencedDeclaration":2421,"src":"2335:17:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2335:19:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":2499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2366:3:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2358:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2497,"name":"address","nodeType":"ElementaryTypeName","src":"2358:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2358:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2335:35:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"456e636f756e74657265642066756e6e79207661756c74","id":2502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2372:25:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_d9f24d5023927ca575f3a944f0a2dfe553dbbc992c0ec8a6fe3b467f7effcc47","typeString":"literal_string \"Encountered funny vault\""},"value":"Encountered funny vault"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d9f24d5023927ca575f3a944f0a2dfe553dbbc992c0ec8a6fe3b467f7effcc47","typeString":"literal_string \"Encountered funny vault\""}],"id":2493,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2327:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2327:71:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2504,"nodeType":"ExpressionStatement","src":"2327:71:19"},{"expression":{"argumentTypes":null,"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2505,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"2408:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2506,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2464,"src":"2416:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}},"src":"2408:14:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}},"id":2508,"nodeType":"ExpressionStatement","src":"2408:14:19"}]},"documentation":null,"functionSelector":"95febcc1","implemented":true,"kind":"function","modifiers":[],"name":"bindVault","overrides":null,"parameters":{"id":2465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2464,"mutability":"mutable","name":"_vault","nodeType":"VariableDeclaration","overrides":null,"scope":2510,"src":"2008:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"},"typeName":{"contractScope":null,"id":2463,"name":"IVaultMock","nodeType":"UserDefinedTypeName","referencedDeclaration":2422,"src":"2008:10:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}},"value":null,"visibility":"internal"}],"src":"2007:19:19"},"returnParameters":{"id":2466,"nodeType":"ParameterList","parameters":[],"src":"2036:0:19"},"scope":2750,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2580,"nodeType":"FunctionDefinition","src":"2625:756:19","nodes":[],"body":{"id":2579,"nodeType":"Block","src":"2939:442:19","nodes":[],"statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2531,"name":"_vaultProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"2957:11:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2534,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"2980:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}],"id":2533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2972:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2532,"name":"address","nodeType":"ElementaryTypeName","src":"2972:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2972:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2957:29:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4f6e6c792063616c6c732066726f6d207468652077686974656c6973746564207661756c742061726520616c6c6f776564","id":2537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2988:51:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_92e415b8d2b5b519ac1761c134d94a6d1147c25f2893f4d94cc7ac4778336eb5","typeString":"literal_string \"Only calls from the whitelisted vault are allowed\""},"value":"Only calls from the whitelisted vault are allowed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_92e415b8d2b5b519ac1761c134d94a6d1147c25f2893f4d94cc7ac4778336eb5","typeString":"literal_string \"Only calls from the whitelisted vault are allowed\""}],"id":2530,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2949:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2949:91:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2539,"nodeType":"ExpressionStatement","src":"2949:91:19"},{"assignments":[null,null,null,null,2541],"declarations":[null,null,null,null,{"constant":false,"id":2541,"mutability":"mutable","name":"externalCallsData","nodeType":"VariableDeclaration","overrides":null,"scope":2579,"src":"3060:30:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2540,"name":"bytes","nodeType":"ElementaryTypeName","src":"3060:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":2545,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2543,"name":"_actionData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"3111:11:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2542,"name":"__decodeCallArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2707,"src":"3094:16:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (bytes calldata) pure returns (address[] memory,uint256[] memory,address[] memory,uint256[] memory,bytes memory)"}},"id":2544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3094:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(address[] memory,uint256[] memory,address[] memory,uint256[] memory,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3051:72:19"},{"assignments":[2550,2553],"declarations":[{"constant":false,"id":2550,"mutability":"mutable","name":"contracts","nodeType":"VariableDeclaration","overrides":null,"scope":2579,"src":"3135:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2548,"name":"address","nodeType":"ElementaryTypeName","src":"3135:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2549,"length":null,"nodeType":"ArrayTypeName","src":"3135:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2553,"mutability":"mutable","name":"callsData","nodeType":"VariableDeclaration","overrides":null,"scope":2579,"src":"3163:24:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2551,"name":"bytes","nodeType":"ElementaryTypeName","src":"3163:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2552,"length":null,"nodeType":"ArrayTypeName","src":"3163:7:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"}],"id":2557,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2555,"name":"externalCallsData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"3230:17:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2554,"name":"__decodeExternalCallsData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2749,"src":"3191:25:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"function (bytes memory) pure returns (address[] memory,bytes memory[] memory)"}},"id":2556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3191:66:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,bytes memory[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"3134:123:19"},{"body":{"id":2577,"nodeType":"Block","src":"3311:64:19","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2569,"name":"contracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2550,"src":"3337:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2571,"indexExpression":{"argumentTypes":null,"id":2570,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"3347:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3337:12:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2572,"name":"callsData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2553,"src":"3351:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":2574,"indexExpression":{"argumentTypes":null,"id":2573,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"3361:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3351:12:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2568,"name":"callGuarded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2614,"src":"3325:11:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3325:39:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2576,"nodeType":"ExpressionStatement","src":"3325:39:19"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2561,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"3284:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2562,"name":"contracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2550,"src":"3288:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3288:16:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3284:20:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2578,"initializationExpression":{"assignments":[2559],"declarations":[{"constant":false,"id":2559,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","overrides":null,"scope":2578,"src":"3273:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2558,"name":"uint256","nodeType":"ElementaryTypeName","src":"3273:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2560,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"3273:9:19"},"loopExpression":{"expression":{"argumentTypes":null,"id":2566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3306:3:19","subExpression":{"argumentTypes":null,"id":2565,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"3306:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2567,"nodeType":"ExpressionStatement","src":"3306:3:19"},"nodeType":"ForStatement","src":"3268:107:19"}]},"documentation":{"id":2511,"nodeType":"StructuredDocumentation","src":"2462:158:19","text":"@notice Executes a sequence of calls\n @param _vaultProxy The VaultProxy of the calling fund\n @param _actionData Data specific to this action"},"functionSelector":"b7fe1a11","implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":2520,"modifierName":{"argumentTypes":null,"id":2519,"name":"onlyIntegrationManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"2767:22:19","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2767:22:19"},{"arguments":[{"argumentTypes":null,"id":2522,"name":"_vaultProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"2838:11:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2523,"name":"_actionData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"2851:11:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":2524,"modifierName":{"argumentTypes":null,"id":2521,"name":"postActionIncomingAssetsTransferHandler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"2798:39:19","typeDescriptions":{"typeIdentifier":"t_modifier$_t_address_$_t_bytes_memory_ptr_$","typeString":"modifier (address,bytes memory)"}},"nodeType":"ModifierInvocation","src":"2798:65:19"},{"arguments":[{"argumentTypes":null,"id":2526,"name":"_vaultProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"2909:11:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2527,"name":"_actionData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"2922:11:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":2528,"modifierName":{"argumentTypes":null,"id":2525,"name":"postActionSpendAssetsTransferHandler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":64,"src":"2872:36:19","typeDescriptions":{"typeIdentifier":"t_modifier$_t_address_$_t_bytes_memory_ptr_$","typeString":"modifier (address,bytes memory)"}},"nodeType":"ModifierInvocation","src":"2872:62:19"}],"name":"executeCalls","overrides":null,"parameters":{"id":2518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2513,"mutability":"mutable","name":"_vaultProxy","nodeType":"VariableDeclaration","overrides":null,"scope":2580,"src":"2656:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2512,"name":"address","nodeType":"ElementaryTypeName","src":"2656:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2515,"mutability":"mutable","name":"_actionData","nodeType":"VariableDeclaration","overrides":null,"scope":2580,"src":"2685:26:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2514,"name":"bytes","nodeType":"ElementaryTypeName","src":"2685:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":2580,"src":"2721:14:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2516,"name":"bytes","nodeType":"ElementaryTypeName","src":"2721:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"2646:95:19"},"returnParameters":{"id":2529,"nodeType":"ParameterList","parameters":[],"src":"2939:0:19"},"scope":2750,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2614,"nodeType":"FunctionDefinition","src":"3582:731:19","nodes":[],"body":{"id":2613,"nodeType":"Block","src":"3660:653:19","nodes":[],"statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2593,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"3889:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}],"id":2592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3881:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2591,"name":"address","nodeType":"ElementaryTypeName","src":"3881:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3881:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2595,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2583,"src":"3897:15:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2596,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2585,"src":"3914:8:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":2588,"name":"guard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"3862:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"}},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"validateCall","nodeType":"MemberAccess","referencedDeclaration":2431,"src":"3862:18:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,bytes memory) external"}},"id":2597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3862:61:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2598,"nodeType":"ExpressionStatement","src":"3862:61:19"},{"assignments":[2600,2602],"declarations":[{"constant":false,"id":2600,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","overrides":null,"scope":2613,"src":"3935:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2599,"name":"bool","nodeType":"ElementaryTypeName","src":"3935:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":2602,"mutability":"mutable","name":"returnData","nodeType":"VariableDeclaration","overrides":null,"scope":2613,"src":"3949:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2601,"name":"bytes","nodeType":"ElementaryTypeName","src":"3949:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":2607,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2605,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2585,"src":"3997:8:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":2603,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2583,"src":"3976:15:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3976:20:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3976:30:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3934:72:19"},{"condition":{"argumentTypes":null,"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4020:8:19","subExpression":{"argumentTypes":null,"id":2608,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2600,"src":"4021:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2612,"nodeType":"IfStatement","src":"4017:241:19","trueBody":{"id":2611,"nodeType":"Block","src":"4030:228:19","statements":[{"AST":{"nodeType":"YulBlock","src":"4052:196:19","statements":[{"nodeType":"YulVariableDeclaration","src":"4070:43:19","value":{"arguments":[{"name":"returnData","nodeType":"YulIdentifier","src":"4102:10:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4096:5:19"},"nodeType":"YulFunctionCall","src":"4096:17:19"},"variables":[{"name":"revertStringLength","nodeType":"YulTypedName","src":"4074:18:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4130:44:19","value":{"arguments":[{"name":"returnData","nodeType":"YulIdentifier","src":"4157:10:19"},{"kind":"number","nodeType":"YulLiteral","src":"4169:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4153:3:19"},"nodeType":"YulFunctionCall","src":"4153:21:19"},"variables":[{"name":"revertStringPtr","nodeType":"YulTypedName","src":"4134:15:19","type":""}]},{"expression":{"arguments":[{"name":"revertStringPtr","nodeType":"YulIdentifier","src":"4198:15:19"},{"name":"revertStringLength","nodeType":"YulIdentifier","src":"4215:18:19"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4191:6:19"},"nodeType":"YulFunctionCall","src":"4191:43:19"},"nodeType":"YulExpressionStatement","src":"4191:43:19"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2602,"isOffset":false,"isSlot":false,"src":"4102:10:19","valueSize":1},{"declaration":2602,"isOffset":false,"isSlot":false,"src":"4157:10:19","valueSize":1}],"id":2610,"nodeType":"InlineAssembly","src":"4044:204:19"}]}}]},"documentation":{"id":2581,"nodeType":"StructuredDocumentation","src":"3387:190:19","text":" Checks if the asset manager is allowed to do this action with the guard smart contract.\n Then perform the action. If the action reverts, unwind the execution."},"implemented":true,"kind":"function","modifiers":[],"name":"callGuarded","overrides":null,"parameters":{"id":2586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2583,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","overrides":null,"scope":2614,"src":"3603:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2582,"name":"address","nodeType":"ElementaryTypeName","src":"3603:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2585,"mutability":"mutable","name":"callData","nodeType":"VariableDeclaration","overrides":null,"scope":2614,"src":"3628:21:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2584,"name":"bytes","nodeType":"ElementaryTypeName","src":"3628:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"3602:48:19"},"returnParameters":{"id":2587,"nodeType":"ParameterList","parameters":[],"src":"3660:0:19"},"scope":2750,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2666,"nodeType":"FunctionDefinition","src":"4957:965:19","nodes":[],"body":{"id":2665,"nodeType":"Block","src":"5421:501:19","nodes":[],"statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2640,"name":"_selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2619,"src":"5439:9:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":2641,"name":"EXECUTE_CALLS_SELECTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2447,"src":"5452:22:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5439:35:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"7061727365417373657473466f72416374696f6e3a205f73656c6563746f7220696e76616c6964","id":2643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5476:41:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_fa7d3951a54ad7f640a0aa9b85ad7f5ff914df62a5263210a007a27ec3c5f2c7","typeString":"literal_string \"parseAssetsForAction: _selector invalid\""},"value":"parseAssetsForAction: _selector invalid"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fa7d3951a54ad7f640a0aa9b85ad7f5ff914df62a5263210a007a27ec3c5f2c7","typeString":"literal_string \"parseAssetsForAction: _selector invalid\""}],"id":2639,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5431:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5431:87:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2645,"nodeType":"ExpressionStatement","src":"5431:87:19"},{"expression":{"argumentTypes":null,"id":2654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2646,"name":"incomingAssets_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2634,"src":"5543:15:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":2647,"name":"minIncomingAssetAmounts_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"5572:24:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":2648,"name":"spendAssets_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"5610:12:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":2649,"name":"spendAssetAmounts_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"5636:18:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},null],"id":2650,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5529:137:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$__$","typeString":"tuple(address[] memory,uint256[] memory,address[] memory,uint256[] memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2652,"name":"_actionData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2621,"src":"5686:11:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2651,"name":"__decodeCallArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2707,"src":"5669:16:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (bytes calldata) pure returns (address[] memory,uint256[] memory,address[] memory,uint256[] memory,bytes memory)"}},"id":2653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5669:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(address[] memory,uint256[] memory,address[] memory,uint256[] memory,bytes memory)"}},"src":"5529:169:19","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2655,"nodeType":"ExpressionStatement","src":"5529:169:19"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2656,"name":"IIntegrationManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3609,"src":"5730:19:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIntegrationManager_$3609_$","typeString":"type(contract IIntegrationManager)"}},"id":2657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SpendAssetsHandleType","nodeType":"MemberAccess","referencedDeclaration":3608,"src":"5730:41:19","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SpendAssetsHandleType_$3608_$","typeString":"type(enum IIntegrationManager.SpendAssetsHandleType)"}},"id":2658,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Transfer","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5730:50:19","typeDescriptions":{"typeIdentifier":"t_enum$_SpendAssetsHandleType_$3608","typeString":"enum IIntegrationManager.SpendAssetsHandleType"}},{"argumentTypes":null,"id":2659,"name":"spendAssets_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"5794:12:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":2660,"name":"spendAssetAmounts_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"5820:18:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":2661,"name":"incomingAssets_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2634,"src":"5852:15:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":2662,"name":"minIncomingAssetAmounts_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"5881:24:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":2663,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5716:199:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SpendAssetsHandleType_$3608_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(enum IIntegrationManager.SpendAssetsHandleType,address[] memory,uint256[] memory,address[] memory,uint256[] memory)"}},"functionReturnParameters":2638,"id":2664,"nodeType":"Return","src":"5709:206:19"}]},"baseFunctions":[2777],"documentation":{"id":2615,"nodeType":"StructuredDocumentation","src":"4319:633:19","text":"@notice Parses the expected assets in a particular action\n @param _selector The function selector for the callOnIntegration\n @param _actionData Data specific to this action\n @return spendAssetsHandleType_ A type that dictates how to handle granting\n the adapter access to spend assets (hardcoded to `Transfer`)\n @return spendAssets_ The assets to spend in the call\n @return spendAssetAmounts_ The max asset amounts to spend in the call\n @return incomingAssets_ The assets to receive in the call\n @return minIncomingAssetAmounts_ The min asset amounts to receive in the call"},"functionSelector":"c54efee5","implemented":true,"kind":"function","modifiers":[],"name":"parseAssetsForAction","overrides":{"id":2623,"nodeType":"OverrideSpecifier","overrides":[],"src":"5110:8:19"},"parameters":{"id":2622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2617,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":2666,"src":"4996:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2616,"name":"address","nodeType":"ElementaryTypeName","src":"4996:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2619,"mutability":"mutable","name":"_selector","nodeType":"VariableDeclaration","overrides":null,"scope":2666,"src":"5013:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2618,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5013:6:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":null,"visibility":"internal"},{"constant":false,"id":2621,"mutability":"mutable","name":"_actionData","nodeType":"VariableDeclaration","overrides":null,"scope":2666,"src":"5039:26:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2620,"name":"bytes","nodeType":"ElementaryTypeName","src":"5039:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"4986:85:19"},"returnParameters":{"id":2638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"spendAssetsHandleType_","nodeType":"VariableDeclaration","overrides":null,"scope":2666,"src":"5149:64:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SpendAssetsHandleType_$3608","typeString":"enum IIntegrationManager.SpendAssetsHandleType"},"typeName":{"contractScope":null,"id":2624,"name":"IIntegrationManager.SpendAssetsHandleType","nodeType":"UserDefinedTypeName","referencedDeclaration":3608,"src":"5149:41:19","typeDescriptions":{"typeIdentifier":"t_enum$_SpendAssetsHandleType_$3608","typeString":"enum IIntegrationManager.SpendAssetsHandleType"}},"value":null,"visibility":"internal"},{"constant":false,"id":2628,"mutability":"mutable","name":"spendAssets_","nodeType":"VariableDeclaration","overrides":null,"scope":2666,"src":"5227:29:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"5227:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2627,"length":null,"nodeType":"ArrayTypeName","src":"5227:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2631,"mutability":"mutable","name":"spendAssetAmounts_","nodeType":"VariableDeclaration","overrides":null,"scope":2666,"src":"5270:35:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2629,"name":"uint256","nodeType":"ElementaryTypeName","src":"5270:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2630,"length":null,"nodeType":"ArrayTypeName","src":"5270:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2634,"mutability":"mutable","name":"incomingAssets_","nodeType":"VariableDeclaration","overrides":null,"scope":2666,"src":"5319:32:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2632,"name":"address","nodeType":"ElementaryTypeName","src":"5319:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2633,"length":null,"nodeType":"ArrayTypeName","src":"5319:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2637,"mutability":"mutable","name":"minIncomingAssetAmounts_","nodeType":"VariableDeclaration","overrides":null,"scope":2666,"src":"5365:41:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2635,"name":"uint256","nodeType":"ElementaryTypeName","src":"5365:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2636,"length":null,"nodeType":"ArrayTypeName","src":"5365:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"5135:281:19"},"scope":2750,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2707,"nodeType":"FunctionDefinition","src":"6003:453:19","nodes":[],"body":{"id":2706,"nodeType":"Block","src":"6356:100:19","nodes":[],"statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2688,"name":"_actionData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2669,"src":"6384:11:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6398:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2689,"name":"address","nodeType":"ElementaryTypeName","src":"6398:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2691,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"6398:9:19","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"type(address[] memory)"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6409:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2692,"name":"uint256","nodeType":"ElementaryTypeName","src":"6409:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2694,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"6409:9:19","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6420:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2695,"name":"address","nodeType":"ElementaryTypeName","src":"6420:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2697,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"6420:9:19","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"type(address[] memory)"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6431:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2698,"name":"uint256","nodeType":"ElementaryTypeName","src":"6431:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2700,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"6431:9:19","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"argumentTypes":null,"id":2702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6442:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2701,"name":"bytes","nodeType":"ElementaryTypeName","src":"6442:5:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}}],"id":2703,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6397:51:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address[] memory),type(uint256[] memory),type(address[] memory),type(uint256[] memory),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address[] memory),type(uint256[] memory),type(address[] memory),type(uint256[] memory),type(bytes storage pointer))"}],"expression":{"argumentTypes":null,"id":2686,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6373:3:19","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6373:10:19","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6373:76:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(address[] memory,uint256[] memory,address[] memory,uint256[] memory,bytes memory)"}},"functionReturnParameters":2685,"id":2705,"nodeType":"Return","src":"6366:83:19"}]},"documentation":{"id":2667,"nodeType":"StructuredDocumentation","src":"5928:70:19","text":"@dev Helper to decode the encoded callOnIntegration call arguments"},"implemented":true,"kind":"function","modifiers":[],"name":"__decodeCallArgs","overrides":null,"parameters":{"id":2670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2669,"mutability":"mutable","name":"_actionData","nodeType":"VariableDeclaration","overrides":null,"scope":2707,"src":"6029:26:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2668,"name":"bytes","nodeType":"ElementaryTypeName","src":"6029:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"6028:28:19"},"returnParameters":{"id":2685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2673,"mutability":"mutable","name":"incomingAssets_","nodeType":"VariableDeclaration","overrides":null,"scope":2707,"src":"6116:32:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2671,"name":"address","nodeType":"ElementaryTypeName","src":"6116:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2672,"length":null,"nodeType":"ArrayTypeName","src":"6116:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2676,"mutability":"mutable","name":"minIncomingAssetsAmounts_","nodeType":"VariableDeclaration","overrides":null,"scope":2707,"src":"6162:42:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2674,"name":"uint256","nodeType":"ElementaryTypeName","src":"6162:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2675,"length":null,"nodeType":"ArrayTypeName","src":"6162:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2679,"mutability":"mutable","name":"spendAssets_","nodeType":"VariableDeclaration","overrides":null,"scope":2707,"src":"6218:29:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2677,"name":"address","nodeType":"ElementaryTypeName","src":"6218:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2678,"length":null,"nodeType":"ArrayTypeName","src":"6218:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2682,"mutability":"mutable","name":"spendAssetAmounts_","nodeType":"VariableDeclaration","overrides":null,"scope":2707,"src":"6261:35:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2680,"name":"uint256","nodeType":"ElementaryTypeName","src":"6261:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2681,"length":null,"nodeType":"ArrayTypeName","src":"6261:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2684,"mutability":"mutable","name":"externalCallsData_","nodeType":"VariableDeclaration","overrides":null,"scope":2707,"src":"6310:31:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2683,"name":"bytes","nodeType":"ElementaryTypeName","src":"6310:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"6102:249:19"},"scope":2750,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":2749,"nodeType":"FunctionDefinition","src":"6529:409:19","nodes":[],"body":{"id":2748,"nodeType":"Block","src":"6703:235:19","nodes":[],"statements":[{"expression":{"argumentTypes":null,"id":2733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2719,"name":"contracts_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"6714:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":2720,"name":"callsData_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2717,"src":"6726:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}}],"id":2721,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6713:24:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,bytes memory[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2724,"name":"_externalCallsData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"6751:18:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6772:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2725,"name":"address","nodeType":"ElementaryTypeName","src":"6772:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2727,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"6772:9:19","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"type(address[] memory)"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6783:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2728,"name":"bytes","nodeType":"ElementaryTypeName","src":"6783:5:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2730,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"6783:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"type(bytes memory[] memory)"}}],"id":2731,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6771:20:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_$","typeString":"tuple(type(address[] memory),type(bytes memory[] memory))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_$","typeString":"tuple(type(address[] memory),type(bytes memory[] memory))"}],"expression":{"argumentTypes":null,"id":2722,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6740:3:19","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6740:10:19","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6740:52:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,bytes memory[] memory)"}},"src":"6713:79:19","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2734,"nodeType":"ExpressionStatement","src":"6713:79:19"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2736,"name":"contracts_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"6810:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6810:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2738,"name":"callsData_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2717,"src":"6831:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":2739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6831:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6810:38:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"556e657175616c2065787465726e616c2063616c6c7320617272617973206c656e67746873","id":2741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6850:39:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_2af52529fed430f17a4f57aaf2b2e5efd652752f460c4549180b97a09616cd96","typeString":"literal_string \"Unequal external calls arrays lengths\""},"value":"Unequal external calls arrays lengths"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2af52529fed430f17a4f57aaf2b2e5efd652752f460c4549180b97a09616cd96","typeString":"literal_string \"Unequal external calls arrays lengths\""}],"id":2735,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6802:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6802:88:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2743,"nodeType":"ExpressionStatement","src":"6802:88:19"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2744,"name":"contracts_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"6908:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":2745,"name":"callsData_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2717,"src":"6920:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}}],"id":2746,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6907:24:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,bytes memory[] memory)"}},"functionReturnParameters":2718,"id":2747,"nodeType":"Return","src":"6900:31:19"}]},"documentation":{"id":2708,"nodeType":"StructuredDocumentation","src":"6462:62:19","text":"@dev Helper to decode the stack of external contract calls"},"implemented":true,"kind":"function","modifiers":[],"name":"__decodeExternalCallsData","overrides":null,"parameters":{"id":2711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2710,"mutability":"mutable","name":"_externalCallsData","nodeType":"VariableDeclaration","overrides":null,"scope":2749,"src":"6564:31:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2709,"name":"bytes","nodeType":"ElementaryTypeName","src":"6564:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"6563:33:19"},"returnParameters":{"id":2718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2714,"mutability":"mutable","name":"contracts_","nodeType":"VariableDeclaration","overrides":null,"scope":2749,"src":"6643:27:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2712,"name":"address","nodeType":"ElementaryTypeName","src":"6643:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2713,"length":null,"nodeType":"ArrayTypeName","src":"6643:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2717,"mutability":"mutable","name":"callsData_","nodeType":"VariableDeclaration","overrides":null,"scope":2749,"src":"6672:25:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2715,"name":"bytes","nodeType":"ElementaryTypeName","src":"6672:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2716,"length":null,"nodeType":"ArrayTypeName","src":"6672:7:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"}],"src":"6642:56:19"},"scope":2750,"stateMutability":"pure","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":2434,"name":"AdapterBase","nodeType":"UserDefinedTypeName","referencedDeclaration":127,"src":"835:11:19","typeDescriptions":{"typeIdentifier":"t_contract$_AdapterBase_$127","typeString":"contract AdapterBase"}},"id":2435,"nodeType":"InheritanceSpecifier","src":"835:11:19"}],"contractDependencies":[127,2778,2854,3204],"contractKind":"contract","documentation":{"id":2433,"nodeType":"StructuredDocumentation","src":"493:307:19","text":" A generic adapter for Enzyme vault with our own guard mechanism.\n - Guard checks the asset manager cannot perform actions\n that are not allowed (withdraw, trade wrong tokens)\n - Governance address can still perform hese actions\n - Adapter is associated with a specific vault"},"fullyImplemented":true,"linearizedBaseContracts":[2750,127,3204,2854,2778],"name":"GuardedGenericAdapter","scope":2751}],"license":null},"id":19} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_integrationManager","type":"address","internalType":"address"},{"name":"_guard","type":"address","internalType":"contract IGuard"}],"stateMutability":"nonpayable"},{"type":"function","name":"CLAIM_REWARDS_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"EXECUTE_CALLS_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"LEND_AND_STAKE_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"LEND_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"REDEEM_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"STAKE_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"TAKE_MULTIPLE_ORDERS_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"TAKE_ORDER_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"UNSTAKE_AND_REDEEM_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"UNSTAKE_SELECTOR","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"bindVault","inputs":[{"name":"_vault","type":"address","internalType":"contract IVaultMock"},{"name":"_production","type":"bool","internalType":"bool"},{"name":"meta","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeCalls","inputs":[{"name":"_vaultProxy","type":"address","internalType":"address"},{"name":"_actionData","type":"bytes","internalType":"bytes"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getIntegrationManager","inputs":[],"outputs":[{"name":"integrationManager_","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"guard","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IGuard"}],"stateMutability":"view"},{"type":"function","name":"parseAssetsForAction","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"_selector","type":"bytes4","internalType":"bytes4"},{"name":"_actionData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"spendAssetsHandleType_","type":"uint8","internalType":"enum IIntegrationManager.SpendAssetsHandleType"},{"name":"spendAssets_","type":"address[]","internalType":"address[]"},{"name":"spendAssetAmounts_","type":"uint256[]","internalType":"uint256[]"},{"name":"incomingAssets_","type":"address[]","internalType":"address[]"},{"name":"minIncomingAssetAmounts_","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"vault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IVaultMock"}],"stateMutability":"view"},{"type":"event","name":"GuardedGenericAdapterDeployed","inputs":[{"name":"vault","type":"address","indexed":false,"internalType":"address"},{"name":"production","type":"bool","indexed":false,"internalType":"bool"},{"name":"meta","type":"string","indexed":false,"internalType":"string"}],"anonymous":false}],"bytecode":{"object":"0x60a060405234801561001057600080fd5b50604051620017ec380380620017ec83398101604081905261003191610068565b60609190911b6001600160601b031916608052600180546001600160a01b0319166001600160a01b039092169190911790556100b9565b6000806040838503121561007a578182fd5b8251610085816100a1565b6020840151909250610096816100a1565b809150509250929050565b6001600160a01b03811681146100b657600080fd5b50565b60805160601c611710620000dc60003980610316528061069952506117106000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063b23228cf11610097578063e16f57a611610066578063e16f57a6146101b1578063e7c45690146101c4578063f7d882b5146101cc578063fbfa77cf146101d457610100565b8063b23228cf14610168578063b7fe1a1114610170578063c32990a214610185578063c54efee51461018d57610100565b80633ffc1591116100d35780633ffc15911461013b57806340da225d146101435780637ceab3b11461014b578063863e5ad01461016057610100565b8063080456c11461010557806312d9c1f614610123578063131461c01461012b578063257cb1a314610133575b600080fd5b61010d6101dc565b60405161011a91906112f1565b60405180910390f35b61010d610200565b61010d610224565b61010d610248565b61010d61026c565b61010d610290565b6101536102b4565b60405161011a9190611246565b61010d6102c3565b61010d6102e7565b61018361017e366004610e19565b61030b565b005b61010d6104a0565b6101a061019b366004610daa565b6104c4565b60405161011a959493929190611306565b6101836101bf366004611144565b61051b565b610153610697565b61010d6106bb565b6101536106df565b7f8334eb99be0145865eba9889fca2ee920288090caefff4cc776038e20ad9259a81565b7fb7fe1a117cff974e3f19d303d9f97ada44b7ecad880df21ddfdc69ba0493b79681565b7f29fa046e79524c3c5ac4c01df692c35e217802b2b13b21121b76cf0ef02b138c81565b7f099f75155f0e997bf83a7993a71d5e7e7540bd386fe1e84643a09ce6b412521981565b7ffa7dd04da627f433da73c4355ead9c75682a67a8fc84d3f6170ef0922f402d2481565b7fb9dfbaccbe5cd2a84fdcf1d15f23ef25d23086f5afbaa99516065ed4a5bbc7a381565b6001546001600160a01b031681565b7f03e38a2bd7063d45c897edeafc330e71657502dd86434d3c37a489caf116af6981565b7f68e30677f607df46e87da13e15b637784cfa62374b653f35ab43d10361a2f83081565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461035c5760405162461bcd60e51b815260040161035390611444565b60405180910390fd5b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920182905250546001600160a01b038d811691161492506103f59150505760405162461bcd60e51b8152600401610353906114cd565b606061040189896106ee565b94505050505060608061041383610713565b9150915060005b825181101561045b5761045383828151811061043257fe5b602002602001015183838151811061044657fe5b6020026020010151610756565b60010161041a565b50505050606061046a82610838565b50509050610478838261085e565b50505050606061048782610838565b92505050610495838261085e565b505050505050505050565b7f0e7f692dad5b88fdee426250d6eae91207e56a2e8112b7364579bed1790e5bf481565b600060608080806001600160e01b0319881663b7fe1a1160e01b146104fb5760405162461bcd60e51b8152600401610353906115d6565b61050587876106ee565b5060029d919c509a509198509650945050505050565b6000546001600160a01b0316156105445760405162461bcd60e51b815260040161035390611496565b6001600160a01b03841661056a5760405162461bcd60e51b81526004016103539061140d565b60006001600160a01b0316846001600160a01b0316630ee2cb106040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ae57600080fd5b505afa1580156105c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e69190610d8e565b6001600160a01b0316141561060d5760405162461bcd60e51b815260040161035390611555565b600080546001600160a01b0319166001600160a01b0386811691909117918290556001805460ff60a01b1916600160a01b871515810291909117918290556040517f6b7dee5493b2683d1aa1b51da848a1af75f8fb9c1e0857120098c9d5a62c1f6a9461068994169260ff92900491909116908690869061128f565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7fc29fa9dde84204c2908778afd0613d802d31cf046179b88f6d2b4a4e507ea2d581565b6000546001600160a01b031681565b6060808080806107008688018861105c565b939b929a50909850965090945092505050565b6060808280602001905181019061072a9190610e99565b80518251929450909250146107515760405162461bcd60e51b815260040161035390611382565b915091565b600154600054604051636d5025f160e01b81526001600160a01b0392831692636d5025f19261078e929116908690869060040161125a565b600060405180830381600087803b1580156107a857600080fd5b505af11580156107bc573d6000803e3d6000fd5b5050505060006060836001600160a01b0316836040516107dc919061122a565b6000604051808303816000865af19150503d8060008114610819576040519150601f19603f3d011682016040523d82523d6000602084013e61081e565b606091505b509150915081610832578051602082018181fd5b50505050565b6060806060838060200190518101906108519190610f82565b9250925092509193909250565b6060815167ffffffffffffffff8111801561087857600080fd5b506040519080825280602002602001820160405280156108a2578160200160208202803683370190505b50905060005b82518110156109b35760008382815181106108bf57fe5b60200260200101519050806001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016108f59190611246565b60206040518083038186803b15801561090d57600080fd5b505afa158015610921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109459190611174565b83838151811061095157fe5b602002602001018181525050600083838151811061096b57fe5b602002602001015111156109aa576109aa8584848151811061098957fe5b6020026020010151836001600160a01b03166109ba9092919063ffffffff16565b506001016108a8565b5092915050565b610a108363a9059cbb60e01b84846040516024016109d99291906112d8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610a15565b505050565b6060610a6a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610aa49092919063ffffffff16565b805190915015610a105780806020019051810190610a889190611128565b610a105760405162461bcd60e51b81526004016103539061158c565b6060610ab38484600085610abd565b90505b9392505050565b606082471015610adf5760405162461bcd60e51b8152600401610353906113c7565b610ae885610b7e565b610b045760405162461bcd60e51b81526004016103539061151e565b60006060866001600160a01b03168587604051610b21919061122a565b60006040518083038185875af1925050503d8060008114610b5e576040519150601f19603f3d011682016040523d82523d6000602084013e610b63565b606091505b5091509150610b73828286610b84565b979650505050505050565b3b151590565b60608315610b93575081610ab6565b825115610ba35782518084602001fd5b8160405162461bcd60e51b8152600401610353919061136f565b600082601f830112610bcd578081fd5b8135610be0610bdb82611644565b61161d565b818152915060208083019084810181840286018201871015610c0157600080fd5b60005b84811015610c29578135610c17816116b4565b84529282019290820190600101610c04565b505050505092915050565b600082601f830112610c44578081fd5b8151610c52610bdb82611644565b818152915060208083019084810181840286018201871015610c7357600080fd5b60005b84811015610c29578151610c89816116b4565b84529282019290820190600101610c76565b600082601f830112610cab578081fd5b8135610cb9610bdb82611644565b818152915060208083019084810181840286018201871015610cda57600080fd5b60005b84811015610c2957813584529282019290820190600101610cdd565b60008083601f840112610d0a578182fd5b50813567ffffffffffffffff811115610d21578182fd5b602083019150836020828501011115610d3957600080fd5b9250929050565b600082601f830112610d50578081fd5b8135610d5e610bdb82611664565b9150808252836020828501011115610d7557600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215610d9f578081fd5b8151610ab6816116b4565b60008060008060608587031215610dbf578283fd5b8435610dca816116b4565b935060208501356001600160e01b031981168114610de6578384fd5b9250604085013567ffffffffffffffff811115610e01578283fd5b610e0d87828801610cf9565b95989497509550505050565b600080600080600060608688031215610e30578081fd5b8535610e3b816116b4565b9450602086013567ffffffffffffffff80821115610e57578283fd5b610e6389838a01610cf9565b90965094506040880135915080821115610e7b578283fd5b50610e8888828901610cf9565b969995985093965092949392505050565b6000806040808486031215610eac578283fd5b835167ffffffffffffffff80821115610ec3578485fd5b610ecf87838801610c34565b9450602091508186015181811115610ee5578485fd5b86019050601f81018713610ef7578384fd5b8051610f05610bdb82611644565b81815283810190838501875b84811015610f7157815186018c603f820112610f2b57898afd5b87810151610f3b610bdb82611664565b8181528e8b838501011115610f4e578b8cfd5b610f5d828b83018d8601611688565b865250509286019290860190600101610f11565b50979a909950975050505050505050565b600080600060608486031215610f96578081fd5b835167ffffffffffffffff80821115610fad578283fd5b610fb987838801610c34565b9450602091508186015181811115610fcf578384fd5b8601601f81018813610fdf578384fd5b8051610fed610bdb82611644565b81815284810190838601868402850187018c1015611009578788fd5b8794505b8385101561102b57805183526001949094019391860191860161100d565b5060408a0151909750945050505080821115611045578283fd5b5061105286828701610c34565b9150509250925092565b600080600080600060a08688031215611073578283fd5b853567ffffffffffffffff8082111561108a578485fd5b61109689838a01610bbd565b965060208801359150808211156110ab578485fd5b6110b789838a01610c9b565b955060408801359150808211156110cc578485fd5b6110d889838a01610bbd565b945060608801359150808211156110ed578283fd5b6110f989838a01610c9b565b9350608088013591508082111561110e578283fd5b5061111b88828901610d40565b9150509295509295909350565b600060208284031215611139578081fd5b8151610ab6816116cc565b60008060008060608587031215611159578182fd5b8435611164816116b4565b93506020850135610de6816116cc565b600060208284031215611185578081fd5b5051919050565b6000815180845260208085019450808401835b838110156111c45781516001600160a01b03168752958201959082019060010161119f565b509495945050505050565b6000815180845260208085019450808401835b838110156111c4578151875295820195908201906001016111e2565b60008151808452611216816020860160208601611688565b601f01601f19169290920160200192915050565b6000825161123c818460208701611688565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03848116825283166020820152606060408201819052600090611286908301846111fe565b95945050505050565b6001600160a01b038516815283151560208201526060604082018190528101829052600082846080840137818301608090810191909152601f909201601f191601019392505050565b6001600160a01b03929092168252602082015260400190565b6001600160e01b031991909116815260200190565b60006003871061131257fe5b86825260a0602083015261132960a083018761118c565b828103604084015261133b81876111cf565b9050828103606084015261134f818661118c565b9050828103608084015261136381856111cf565b98975050505050505050565b600060208252610ab660208301846111fe565b60208082526025908201527f556e657175616c2065787465726e616c2063616c6c7320617272617973206c656040820152646e6774687360d81b606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b60208082526018908201527f4e756c6c206164647265737320656e636f756e74657265640000000000000000604082015260600190565b60208082526032908201527f4f6e6c792074686520496e746567726174696f6e4d616e616765722063616e2060408201527131b0b636103a3434b990333ab731ba34b7b760711b606082015260800190565b6020808252601c908201527f43616e20626520696e697469616c69736564206f6e6c79206f6e636500000000604082015260600190565b60208082526031908201527f4f6e6c792063616c6c732066726f6d207468652077686974656c6973746564206040820152701d985d5b1d08185c9948185b1b1bddd959607a1b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526017908201527f456e636f756e74657265642066756e6e79207661756c74000000000000000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526027908201527f7061727365417373657473466f72416374696f6e3a205f73656c6563746f72206040820152661a5b9d985b1a5960ca1b606082015260800190565b60405181810167ffffffffffffffff8111828210171561163c57600080fd5b604052919050565b600067ffffffffffffffff82111561165a578081fd5b5060209081020190565b600067ffffffffffffffff82111561167a578081fd5b50601f01601f191660200190565b60005b838110156116a357818101518382015260200161168b565b838111156108325750506000910152565b6001600160a01b03811681146116c957600080fd5b50565b80151581146116c957600080fdfea26469706673582212204ae6ed9aabdcbe1015a822cd51371a16a5a8e4119955d802a0e7bb0ae2b8315b64736f6c634300060c0033","sourceMap":"801:6703:19:-:0;;;1834:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1938:41:2;;;;;-1:-1:-1;;;;;;1938:41:2;;;1962:5:19::1;:14:::0;;-1:-1:-1;;;;;;1962:14:19::1;-1:-1:-1::0;;;;;1962:14:19;;::::1;::::0;;;::::1;::::0;;801:6703;;317:429:-1;;;464:2;452:9;443:7;439:23;435:32;432:2;;;-1:-1;;470:12;432:2;89:6;83:13;101:33;128:5;101:33;:::i;:::-;633:2;698:22;;239:13;522:74;;-1:-1;257:48;239:13;257:48;:::i;:::-;641:89;;;;426:320;;;;;:::o;1092:117::-;-1:-1;;;;;1026:54;;1151:35;;1141:2;;1200:1;;1190:12;1141:2;1135:74;:::o;:::-;801:6703:19;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063b23228cf11610097578063e16f57a611610066578063e16f57a6146101b1578063e7c45690146101c4578063f7d882b5146101cc578063fbfa77cf146101d457610100565b8063b23228cf14610168578063b7fe1a1114610170578063c32990a214610185578063c54efee51461018d57610100565b80633ffc1591116100d35780633ffc15911461013b57806340da225d146101435780637ceab3b11461014b578063863e5ad01461016057610100565b8063080456c11461010557806312d9c1f614610123578063131461c01461012b578063257cb1a314610133575b600080fd5b61010d6101dc565b60405161011a91906112f1565b60405180910390f35b61010d610200565b61010d610224565b61010d610248565b61010d61026c565b61010d610290565b6101536102b4565b60405161011a9190611246565b61010d6102c3565b61010d6102e7565b61018361017e366004610e19565b61030b565b005b61010d6104a0565b6101a061019b366004610daa565b6104c4565b60405161011a959493929190611306565b6101836101bf366004611144565b61051b565b610153610697565b61010d6106bb565b6101536106df565b7f8334eb99be0145865eba9889fca2ee920288090caefff4cc776038e20ad9259a81565b7fb7fe1a117cff974e3f19d303d9f97ada44b7ecad880df21ddfdc69ba0493b79681565b7f29fa046e79524c3c5ac4c01df692c35e217802b2b13b21121b76cf0ef02b138c81565b7f099f75155f0e997bf83a7993a71d5e7e7540bd386fe1e84643a09ce6b412521981565b7ffa7dd04da627f433da73c4355ead9c75682a67a8fc84d3f6170ef0922f402d2481565b7fb9dfbaccbe5cd2a84fdcf1d15f23ef25d23086f5afbaa99516065ed4a5bbc7a381565b6001546001600160a01b031681565b7f03e38a2bd7063d45c897edeafc330e71657502dd86434d3c37a489caf116af6981565b7f68e30677f607df46e87da13e15b637784cfa62374b653f35ab43d10361a2f83081565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461035c5760405162461bcd60e51b815260040161035390611444565b60405180910390fd5b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920182905250546001600160a01b038d811691161492506103f59150505760405162461bcd60e51b8152600401610353906114cd565b606061040189896106ee565b94505050505060608061041383610713565b9150915060005b825181101561045b5761045383828151811061043257fe5b602002602001015183838151811061044657fe5b6020026020010151610756565b60010161041a565b50505050606061046a82610838565b50509050610478838261085e565b50505050606061048782610838565b92505050610495838261085e565b505050505050505050565b7f0e7f692dad5b88fdee426250d6eae91207e56a2e8112b7364579bed1790e5bf481565b600060608080806001600160e01b0319881663b7fe1a1160e01b146104fb5760405162461bcd60e51b8152600401610353906115d6565b61050587876106ee565b5060029d919c509a509198509650945050505050565b6000546001600160a01b0316156105445760405162461bcd60e51b815260040161035390611496565b6001600160a01b03841661056a5760405162461bcd60e51b81526004016103539061140d565b60006001600160a01b0316846001600160a01b0316630ee2cb106040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ae57600080fd5b505afa1580156105c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e69190610d8e565b6001600160a01b0316141561060d5760405162461bcd60e51b815260040161035390611555565b600080546001600160a01b0319166001600160a01b0386811691909117918290556001805460ff60a01b1916600160a01b871515810291909117918290556040517f6b7dee5493b2683d1aa1b51da848a1af75f8fb9c1e0857120098c9d5a62c1f6a9461068994169260ff92900491909116908690869061128f565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7fc29fa9dde84204c2908778afd0613d802d31cf046179b88f6d2b4a4e507ea2d581565b6000546001600160a01b031681565b6060808080806107008688018861105c565b939b929a50909850965090945092505050565b6060808280602001905181019061072a9190610e99565b80518251929450909250146107515760405162461bcd60e51b815260040161035390611382565b915091565b600154600054604051636d5025f160e01b81526001600160a01b0392831692636d5025f19261078e929116908690869060040161125a565b600060405180830381600087803b1580156107a857600080fd5b505af11580156107bc573d6000803e3d6000fd5b5050505060006060836001600160a01b0316836040516107dc919061122a565b6000604051808303816000865af19150503d8060008114610819576040519150601f19603f3d011682016040523d82523d6000602084013e61081e565b606091505b509150915081610832578051602082018181fd5b50505050565b6060806060838060200190518101906108519190610f82565b9250925092509193909250565b6060815167ffffffffffffffff8111801561087857600080fd5b506040519080825280602002602001820160405280156108a2578160200160208202803683370190505b50905060005b82518110156109b35760008382815181106108bf57fe5b60200260200101519050806001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016108f59190611246565b60206040518083038186803b15801561090d57600080fd5b505afa158015610921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109459190611174565b83838151811061095157fe5b602002602001018181525050600083838151811061096b57fe5b602002602001015111156109aa576109aa8584848151811061098957fe5b6020026020010151836001600160a01b03166109ba9092919063ffffffff16565b506001016108a8565b5092915050565b610a108363a9059cbb60e01b84846040516024016109d99291906112d8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610a15565b505050565b6060610a6a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610aa49092919063ffffffff16565b805190915015610a105780806020019051810190610a889190611128565b610a105760405162461bcd60e51b81526004016103539061158c565b6060610ab38484600085610abd565b90505b9392505050565b606082471015610adf5760405162461bcd60e51b8152600401610353906113c7565b610ae885610b7e565b610b045760405162461bcd60e51b81526004016103539061151e565b60006060866001600160a01b03168587604051610b21919061122a565b60006040518083038185875af1925050503d8060008114610b5e576040519150601f19603f3d011682016040523d82523d6000602084013e610b63565b606091505b5091509150610b73828286610b84565b979650505050505050565b3b151590565b60608315610b93575081610ab6565b825115610ba35782518084602001fd5b8160405162461bcd60e51b8152600401610353919061136f565b600082601f830112610bcd578081fd5b8135610be0610bdb82611644565b61161d565b818152915060208083019084810181840286018201871015610c0157600080fd5b60005b84811015610c29578135610c17816116b4565b84529282019290820190600101610c04565b505050505092915050565b600082601f830112610c44578081fd5b8151610c52610bdb82611644565b818152915060208083019084810181840286018201871015610c7357600080fd5b60005b84811015610c29578151610c89816116b4565b84529282019290820190600101610c76565b600082601f830112610cab578081fd5b8135610cb9610bdb82611644565b818152915060208083019084810181840286018201871015610cda57600080fd5b60005b84811015610c2957813584529282019290820190600101610cdd565b60008083601f840112610d0a578182fd5b50813567ffffffffffffffff811115610d21578182fd5b602083019150836020828501011115610d3957600080fd5b9250929050565b600082601f830112610d50578081fd5b8135610d5e610bdb82611664565b9150808252836020828501011115610d7557600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215610d9f578081fd5b8151610ab6816116b4565b60008060008060608587031215610dbf578283fd5b8435610dca816116b4565b935060208501356001600160e01b031981168114610de6578384fd5b9250604085013567ffffffffffffffff811115610e01578283fd5b610e0d87828801610cf9565b95989497509550505050565b600080600080600060608688031215610e30578081fd5b8535610e3b816116b4565b9450602086013567ffffffffffffffff80821115610e57578283fd5b610e6389838a01610cf9565b90965094506040880135915080821115610e7b578283fd5b50610e8888828901610cf9565b969995985093965092949392505050565b6000806040808486031215610eac578283fd5b835167ffffffffffffffff80821115610ec3578485fd5b610ecf87838801610c34565b9450602091508186015181811115610ee5578485fd5b86019050601f81018713610ef7578384fd5b8051610f05610bdb82611644565b81815283810190838501875b84811015610f7157815186018c603f820112610f2b57898afd5b87810151610f3b610bdb82611664565b8181528e8b838501011115610f4e578b8cfd5b610f5d828b83018d8601611688565b865250509286019290860190600101610f11565b50979a909950975050505050505050565b600080600060608486031215610f96578081fd5b835167ffffffffffffffff80821115610fad578283fd5b610fb987838801610c34565b9450602091508186015181811115610fcf578384fd5b8601601f81018813610fdf578384fd5b8051610fed610bdb82611644565b81815284810190838601868402850187018c1015611009578788fd5b8794505b8385101561102b57805183526001949094019391860191860161100d565b5060408a0151909750945050505080821115611045578283fd5b5061105286828701610c34565b9150509250925092565b600080600080600060a08688031215611073578283fd5b853567ffffffffffffffff8082111561108a578485fd5b61109689838a01610bbd565b965060208801359150808211156110ab578485fd5b6110b789838a01610c9b565b955060408801359150808211156110cc578485fd5b6110d889838a01610bbd565b945060608801359150808211156110ed578283fd5b6110f989838a01610c9b565b9350608088013591508082111561110e578283fd5b5061111b88828901610d40565b9150509295509295909350565b600060208284031215611139578081fd5b8151610ab6816116cc565b60008060008060608587031215611159578182fd5b8435611164816116b4565b93506020850135610de6816116cc565b600060208284031215611185578081fd5b5051919050565b6000815180845260208085019450808401835b838110156111c45781516001600160a01b03168752958201959082019060010161119f565b509495945050505050565b6000815180845260208085019450808401835b838110156111c4578151875295820195908201906001016111e2565b60008151808452611216816020860160208601611688565b601f01601f19169290920160200192915050565b6000825161123c818460208701611688565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03848116825283166020820152606060408201819052600090611286908301846111fe565b95945050505050565b6001600160a01b038516815283151560208201526060604082018190528101829052600082846080840137818301608090810191909152601f909201601f191601019392505050565b6001600160a01b03929092168252602082015260400190565b6001600160e01b031991909116815260200190565b60006003871061131257fe5b86825260a0602083015261132960a083018761118c565b828103604084015261133b81876111cf565b9050828103606084015261134f818661118c565b9050828103608084015261136381856111cf565b98975050505050505050565b600060208252610ab660208301846111fe565b60208082526025908201527f556e657175616c2065787465726e616c2063616c6c7320617272617973206c656040820152646e6774687360d81b606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b60208082526018908201527f4e756c6c206164647265737320656e636f756e74657265640000000000000000604082015260600190565b60208082526032908201527f4f6e6c792074686520496e746567726174696f6e4d616e616765722063616e2060408201527131b0b636103a3434b990333ab731ba34b7b760711b606082015260800190565b6020808252601c908201527f43616e20626520696e697469616c69736564206f6e6c79206f6e636500000000604082015260600190565b60208082526031908201527f4f6e6c792063616c6c732066726f6d207468652077686974656c6973746564206040820152701d985d5b1d08185c9948185b1b1bddd959607a1b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526017908201527f456e636f756e74657265642066756e6e79207661756c74000000000000000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526027908201527f7061727365417373657473466f72416374696f6e3a205f73656c6563746f72206040820152661a5b9d985b1a5960ca1b606082015260800190565b60405181810167ffffffffffffffff8111828210171561163c57600080fd5b604052919050565b600067ffffffffffffffff82111561165a578081fd5b5060209081020190565b600067ffffffffffffffff82111561167a578081fd5b50601f01601f191660200190565b60005b838110156116a357818101518382015260200161168b565b838111156108325750506000910152565b6001600160a01b03811681146116c957600080fd5b50565b80151581146116c957600080fdfea26469706673582212204ae6ed9aabdcbe1015a822cd51371a16a5a8e4119955d802a0e7bb0ae2b8315b64736f6c634300060c0033","sourceMap":"801:6703:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1490:119:3;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1711:116:19;;;:::i;1373:111:3:-;;;:::i;832:85::-;;;:::i;1034:87::-;;;:::i;1240:110::-;;;:::i;1209:19:19:-;;;:::i;:::-;;;;;;;:::i;706:104:3:-;;;:::i;1127:91::-;;;:::i;3189:756:19:-;;;;;;:::i;:::-;;:::i;:::-;;577:123:3;;;:::i;5521:965:19:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;2399:594::-;;;;;;:::i;:::-;;:::i;2637:128:2:-;;;:::i;923:89:3:-;;;:::i;1124:23:19:-;;;:::i;1490:119:3:-;1558:50;1490:119;:::o;1711:116:19:-;1775:46;1711:116;:::o;1373:111:3:-;1437:46;1373:111;:::o;832:85::-;878:38;832:85;:::o;1034:87::-;1081:39;1034:87;:::o;1240:110::-;1303:46;1240:110;:::o;1209:19:19:-;;;-1:-1:-1;;;;;1209:19:19;;:::o;706:104:3:-;766:43;706:104;:::o;1127:91::-;1176:41;1127:91;:::o;3189:756:19:-;1747:10:2;-1:-1:-1;;;;;1761:19:2;1747:33;;1726:130;;;;-1:-1:-1;;;1726:130:2;;;;;;;:::i;:::-;;;;;;;;;3402:11:19::1;3415;;987:278:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;1429:247:2::2;::::0;;::::2;987:278:::1;1429:247:::0;::::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;;3473:11:19;;-1:-1:-1;1429:247:2;-1:-1:-1;3486:11:19;;;;;;1429:247:2;::::2;3486:11:19::0;;;;1429:247:2;::::2;;::::0;::::2;::::0;;;-1:-1:-1;3544:5:19;-1:-1:-1;;;;;3521:29:19;;::::3;3544:5:::0;::::3;3521:29;::::0;-1:-1:-1;3513:91:19::3;::::0;-1:-1:-1;;3513:91:19::3;;;-1:-1:-1::0;;;3513:91:19::3;;;;;;;:::i;:::-;3624:30;3658:29;3675:11;;3658:16;:29::i;:::-;3615:72;;;;;;3699:26;3727:24:::0;3755:66:::3;3794:17;3755:25;:66::i;:::-;3698:123;;;;3837:9;3832:107;3852:9;:16;3848:1;:20;3832:107;;;3889:39;3901:9;3911:1;3901:12;;;;;;;;;;;;;;3915:9;3925:1;3915:12;;;;;;;;;;;;;;3889:11;:39::i;:::-;3870:3;;3832:107;;;;1531:1:2;;;1544:28:::2;1580:29;1598:10;1580:17;:29::i;:::-;1543:66;;;;1620:49;1644:11;1657;1620:23;:49::i;:::-;;1114:1;;;1131:31:::1;1166:29;1184:10;1166:17;:29::i;:::-;1126:69;;;;1206:52;1230:11;1243:14;1206:23;:52::i;:::-;;1866:1;;;3189:756:19::0;;;;;:::o;577:123:3:-;647:52;577:123;:::o;5521:965:19:-;5713:64;5791:29;;;;-1:-1:-1;;;;;;6003:35:19;;-1:-1:-1;;;6003:35:19;5995:87;;;;-1:-1:-1;;;5995:87:19;;;;;;;:::i;:::-;6233:29;6250:11;;6233:16;:29::i;:::-;-1:-1:-1;6294:50:19;;6093:169;;-1:-1:-1;6093:169:19;-1:-1:-1;6093:169:19;;-1:-1:-1;6093:169:19;-1:-1:-1;5521:965:19;-1:-1:-1;;;;;5521:965:19:o;2399:594::-;2530:3;2512:5;-1:-1:-1;;;;;2512:5:19;2504:30;2496:71;;;;-1:-1:-1;;;2496:71:19;;;;;;;:::i;:::-;-1:-1:-1;;;;;2585:31:19;;2577:68;;;;-1:-1:-1;;;2577:68:19;;;;;;;:::i;:::-;2816:3;-1:-1:-1;;;;;2785:35:19;:6;-1:-1:-1;;;;;2785:17:19;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2785:35:19;;;2777:71;;;;-1:-1:-1;;;2777:71:19;;;;;;;:::i;:::-;2858:5;:14;;-1:-1:-1;;;;;;2858:14:19;-1:-1:-1;;;;;2858:14:19;;;;;;;;;;;-1:-1:-1;2883:24:19;;-1:-1:-1;;;;2883:24:19;-1:-1:-1;;;2883:24:19;;;;;;;;;;;;;2923:63;;;;;;2961:5;;2883:24;2969:10;;;;;;;;2981:4;;;;2923:63;:::i;:::-;;;;;;;;2399:594;;;;:::o;2637:128:2:-;2739:19;2637:128;:::o;923:89:3:-;971:40;923:89;:::o;1124:23:19:-;;;-1:-1:-1;;;;;1124:23:19;;:::o;6567:453::-;6680:32;;;;;6937:76;;;;6948:11;6937:76;:::i;:::-;6930:83;;;;-1:-1:-1;6930:83:19;;-1:-1:-1;6930:83:19;-1:-1:-1;6930:83:19;;-1:-1:-1;6567:453:19;-1:-1:-1;;;6567:453:19:o;7093:409::-;7207:27;7236:25;7315:18;7304:52;;;;;;;;;;;;:::i;:::-;7395:17;;7374;;7277:79;;-1:-1:-1;7277:79:19;;-1:-1:-1;7374:38:19;7366:88;;;;-1:-1:-1;;;7366:88:19;;;;;;;:::i;:::-;7093:409;;;:::o;4146:731::-;4426:5;;;4453;4426:61;;-1:-1:-1;;;4426:61:19;;-1:-1:-1;;;;;4426:5:19;;;;:18;;:61;;4453:5;;;4461:15;;4478:8;;4426:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4499:12;4513:23;4540:15;-1:-1:-1;;;;;4540:20:19;4561:8;4540:30;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4498:72;;;;4585:7;4581:241;;4666:10;4660:17;4733:4;4721:10;4717:21;4779:18;4762:15;4755:43;4616:196;4146:731;;;;:::o;2093:332:2:-;2205:29;2248:35;2297:32;2372:10;2361:57;;;;;;;;;;;;:::i;:::-;2354:64;;;;;;2093:332;;;;;:::o;3539:585:4:-;3649:36;3737:7;:14;3723:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3723:29:4;;3701:51;;3767:9;3762:319;3782:7;:14;3778:1;:18;3762:319;;;3817:19;3845:7;3853:1;3845:10;;;;;;;;;;;;;;3817:39;;3895:13;-1:-1:-1;;;;;3895:23:4;;3927:4;3895:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3870:19;3890:1;3870:22;;;;;;;;;;;;;:63;;;;;3976:1;3951:19;3971:1;3951:22;;;;;;;;;;;;;;:26;3947:124;;;3997:59;4024:7;4033:19;4053:1;4033:22;;;;;;;;;;;;;;3997:13;-1:-1:-1;;;;;3997:26:4;;;:59;;;;;:::i;:::-;-1:-1:-1;3798:3:4;;3762:319;;;;3539:585;;;;:::o;704:175:8:-;786:86;806:5;836:23;;;861:2;865:5;813:58;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;813:58:8;;;;;;;;;;;;;;-1:-1:-1;;;;;813:58:8;-1:-1:-1;;;;;;813:58:8;;;;;;;;;;786:19;:86::i;:::-;704:175;;;:::o;2967:751::-;3386:23;3412:69;3440:4;3412:69;;;;;;;;;;;;;;;;;3420:5;-1:-1:-1;;;;;3412:27:8;;;:69;;;;;:::i;:::-;3495:17;;3386:95;;-1:-1:-1;3495:21:8;3491:221;;3635:10;3624:30;;;;;;;;;;;;:::i;:::-;3616:85;;;;-1:-1:-1;;;3616:85:8;;;;;;;:::i;3581:193:9:-;3684:12;3715:52;3737:6;3745:4;3751:1;3754:12;3715:21;:52::i;:::-;3708:59;;3581:193;;;;;;:::o;4608:523::-;4735:12;4792:5;4767:21;:30;;4759:81;;;;-1:-1:-1;;;4759:81:9;;;;;;;:::i;:::-;4858:18;4869:6;4858:10;:18::i;:::-;4850:60;;;;-1:-1:-1;;;4850:60:9;;;;;;;:::i;:::-;4981:12;4995:23;5022:6;-1:-1:-1;;;;;5022:11:9;5042:5;5050:4;5022:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:75;;;;5072:52;5090:7;5099:10;5111:12;5072:17;:52::i;:::-;5065:59;4608:523;-1:-1:-1;;;;;;;4608:523:9:o;726:413::-;1086:20;1124:8;;;726:413::o;7091:725::-;7206:12;7234:7;7230:580;;;-1:-1:-1;7264:10:9;7257:17;;7230:580;7375:17;;:21;7371:429;;7633:10;7627:17;7693:15;7680:10;7676:2;7672:19;7665:44;7582:145;7772:12;7765:20;;-1:-1:-1;;;7765:20:9;;;;;;;;:::i;301:707:-1:-;;418:3;411:4;403:6;399:17;395:27;385:2;;-1:-1;;426:12;385:2;473:6;460:20;495:80;510:64;567:6;510:64;:::i;:::-;495:80;:::i;:::-;603:21;;;486:89;-1:-1;647:4;660:14;;;;635:17;;;749;;;740:27;;;;737:36;-1:-1;734:2;;;786:1;;776:12;734:2;811:1;796:206;821:6;818:1;815:13;796:206;;;85:6;72:20;97:33;124:5;97:33;:::i;:::-;889:50;;953:14;;;;981;;;;843:1;836:9;796:206;;;800:14;;;;;378:630;;;;:::o;1034:722::-;;1162:3;1155:4;1147:6;1143:17;1139:27;1129:2;;-1:-1;;1170:12;1129:2;1210:6;1204:13;1232:80;1247:64;1304:6;1247:64;:::i;1232:80::-;1340:21;;;1223:89;-1:-1;1384:4;1397:14;;;;1372:17;;;1486;;;1477:27;;;;1474:36;-1:-1;1471:2;;;1523:1;;1513:12;1471:2;1548:1;1533:217;1558:6;1555:1;1552:13;1533:217;;;226:6;220:13;238:33;265:5;238:33;:::i;:::-;1626:61;;1701:14;;;;1729;;;;1580:1;1573:9;1533:217;;2519:707;;2636:3;2629:4;2621:6;2617:17;2613:27;2603:2;;-1:-1;;2644:12;2603:2;2691:6;2678:20;2713:80;2728:64;2785:6;2728:64;:::i;2713:80::-;2821:21;;;2704:89;-1:-1;2865:4;2878:14;;;;2853:17;;;2967;;;2958:27;;;;2955:36;-1:-1;2952:2;;;3004:1;;2994:12;2952:2;3029:1;3014:206;3039:6;3036:1;3033:13;3014:206;;;6243:20;;3107:50;;3171:14;;;;3199;;;;3061:1;3054:9;3014:206;;4397:336;;;4511:3;4504:4;4496:6;4492:17;4488:27;4478:2;;-1:-1;;4519:12;4478:2;-1:-1;4549:20;;4589:18;4578:30;;4575:2;;;-1:-1;;4611:12;4575:2;4655:4;4647:6;4643:17;4631:29;;4706:3;4655:4;4686:17;4647:6;4672:32;;4669:41;4666:2;;;4723:1;;4713:12;4666:2;4471:262;;;;;:::o;4742:440::-;;4843:3;4836:4;4828:6;4824:17;4820:27;4810:2;;-1:-1;;4851:12;4810:2;4898:6;4885:20;4920:64;4935:48;4976:6;4935:48;:::i;4920:64::-;4911:73;;5004:6;4997:5;4990:21;5108:3;5040:4;5099:6;5032;5090:16;;5087:25;5084:2;;;5125:1;;5115:12;5084:2;34086:6;5040:4;5032:6;5028:17;5040:4;5066:5;5062:16;34063:30;34142:1;34124:16;;;5040:4;34124:16;34117:27;5066:5;4803:379;-1:-1;;4803:379::o;6454:263::-;;6569:2;6557:9;6548:7;6544:23;6540:32;6537:2;;;-1:-1;;6575:12;6537:2;226:6;220:13;238:33;265:5;238:33;:::i;6724:613::-;;;;;6880:2;6868:9;6859:7;6855:23;6851:32;6848:2;;;-1:-1;;6886:12;6848:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6938:63;-1:-1;7038:2;7076:22;;4314:20;-1:-1;;;;;;32672:78;;34964:34;;34954:2;;-1:-1;;35002:12;34954:2;7046:62;-1:-1;7173:2;7158:18;;7145:32;7197:18;7186:30;;7183:2;;;-1:-1;;7219:12;7183:2;7257:64;7313:7;7304:6;7293:9;7289:22;7257:64;:::i;:::-;6842:495;;;;-1:-1;7239:82;-1:-1;;;;6842:495::o;7344:739::-;;;;;;7520:2;7508:9;7499:7;7495:23;7491:32;7488:2;;;-1:-1;;7526:12;7488:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;7578:63;-1:-1;7706:2;7691:18;;7678:32;7730:18;7719:30;;;7716:2;;;-1:-1;;7752:12;7716:2;7790:64;7846:7;7837:6;7826:9;7822:22;7790:64;:::i;:::-;7772:82;;-1:-1;7772:82;-1:-1;7919:2;7904:18;;7891:32;;-1:-1;7932:30;;;7929:2;;;-1:-1;;7965:12;7929:2;;8003:64;8059:7;8050:6;8039:9;8035:22;8003:64;:::i;:::-;7482:601;;;;-1:-1;7482:601;;-1:-1;7985:82;;;7482:601;-1:-1;;;7482:601::o;8090:675::-;;;8281:2;;8269:9;8260:7;8256:23;8252:32;8249:2;;;-1:-1;;8287:12;8249:2;8338:17;8332:24;8376:18;;8368:6;8365:30;8362:2;;;-1:-1;;8398:12;8362:2;8428:89;8509:7;8500:6;8489:9;8485:22;8428:89;:::i;:::-;8418:99;;8575:2;;;;8564:9;8560:18;8554:25;8376:18;8591:6;8588:30;8585:2;;;-1:-1;;8621:12;8585:2;8717:22;;;-1:-1;1910:4;1898:17;;1894:27;-1:-1;1884:2;;-1:-1;;1925:12;1884:2;1965:6;1959:13;1987:89;2002:73;2068:6;2002:73;:::i;1987:89::-;2104:21;;;2161:14;;;;2136:17;;;-1:-1;2241:246;2266:6;2263:1;2260:13;2241:246;;;2342:3;2336:10;2140:6;2324:23;5303:3;5284:17;2324:23;5284:17;5280:27;5270:2;;-1:-1;;5311:12;5270:2;8575;2324:23;;5345:13;5373:64;5388:48;5429:6;5388:48;:::i;5373:64::-;5457:6;5450:5;5443:21;5561:3;8281:2;5552:6;2324:23;5543:16;;5540:25;5537:2;;;-1:-1;;5568:12;5537:2;5588:39;5620:6;8575:2;5519:5;5515:16;8281:2;2324:23;5481:17;5588:39;:::i;:::-;2354:70;;-1:-1;;2438:14;;;;2466;;;;2288:1;2281:9;2241:246;;;-1:-1;8243:522;;8641:108;;-1:-1;8243:522;-1:-1;;;;;;;;8243:522::o;8772:922::-;;;;8996:2;8984:9;8975:7;8971:23;8967:32;8964:2;;;-1:-1;;9002:12;8964:2;9053:17;9047:24;9091:18;;9083:6;9080:30;9077:2;;;-1:-1;;9113:12;9077:2;9143:89;9224:7;9215:6;9204:9;9200:22;9143:89;:::i;:::-;9133:99;;9290:2;;;;9279:9;9275:18;9269:25;9091:18;9306:6;9303:30;9300:2;;;-1:-1;;9336:12;9300:2;9423:22;;3373:4;3361:17;;3357:27;-1:-1;3347:2;;-1:-1;;3388:12;3347:2;3428:6;3422:13;3450:80;3465:64;3522:6;3465:64;:::i;3450:80::-;3558:21;;;3615:14;;;;3590:17;;;3704;;;3695:27;;;;3692:36;-1:-1;3689:2;;;-1:-1;;3731:12;3689:2;-1:-1;3757:10;;3751:217;3776:6;3773:1;3770:13;3751:217;;;6391:13;;3844:61;;3798:1;3791:9;;;;;3919:14;;;;3947;;3751:217;;;-1:-1;9513:2;9498:18;;9492:25;9356:99;;-1:-1;9492:25;-1:-1;;;;9526:30;;;9523:2;;;-1:-1;;9559:12;9523:2;;9589:89;9670:7;9661:6;9650:9;9646:22;9589:89;:::i;:::-;9579:99;;;8958:736;;;;;:::o;9701:1391::-;;;;;;9982:3;9970:9;9961:7;9957:23;9953:33;9950:2;;;-1:-1;;9989:12;9950:2;10047:17;10034:31;10085:18;;10077:6;10074:30;10071:2;;;-1:-1;;10107:12;10071:2;10137:78;10207:7;10198:6;10187:9;10183:22;10137:78;:::i;:::-;10127:88;;10280:2;10269:9;10265:18;10252:32;10238:46;;10085:18;10296:6;10293:30;10290:2;;;-1:-1;;10326:12;10290:2;10356:78;10426:7;10417:6;10406:9;10402:22;10356:78;:::i;:::-;10346:88;;10499:2;10488:9;10484:18;10471:32;10457:46;;10085:18;10515:6;10512:30;10509:2;;;-1:-1;;10545:12;10509:2;10575:78;10645:7;10636:6;10625:9;10621:22;10575:78;:::i;:::-;10565:88;;10718:2;10707:9;10703:18;10690:32;10676:46;;10085:18;10734:6;10731:30;10728:2;;;-1:-1;;10764:12;10728:2;10794:78;10864:7;10855:6;10844:9;10840:22;10794:78;:::i;:::-;10784:88;;10937:3;10926:9;10922:19;10909:33;10895:47;;10085:18;10954:6;10951:30;10948:2;;;-1:-1;;10984:12;10948:2;;11014:62;11068:7;11059:6;11048:9;11044:22;11014:62;:::i;:::-;11004:72;;;9944:1148;;;;;;;;:::o;11099:257::-;;11211:2;11199:9;11190:7;11186:23;11182:32;11179:2;;;-1:-1;;11217:12;11179:2;4194:6;4188:13;4206:30;4230:5;4206:30;:::i;11363:649::-;;;;;11537:2;11525:9;11516:7;11512:23;11508:32;11505:2;;;-1:-1;;11543:12;11505:2;5740:6;5727:20;5752:52;5798:5;5752:52;:::i;:::-;11595:82;-1:-1;11714:2;11750:22;;4046:20;4071:30;4046:20;4071:30;:::i;12019:263::-;;12134:2;12122:9;12113:7;12109:23;12105:32;12102:2;;;-1:-1;;12140:12;12102:2;-1:-1;6391:13;;12096:186;-1:-1;12096:186::o;12914:690::-;;13107:5;30879:12;31682:6;31677:3;31670:19;31719:4;;31714:3;31710:14;13119:93;;31719:4;13283:5;30575:14;-1:-1;13322:260;13347:6;13344:1;13341:13;13322:260;;;13408:13;;-1:-1;;;;;33106:54;12714:37;;12443:14;;;;31410;;;;4589:18;13362:9;13322:260;;;-1:-1;13588:10;;13038:566;-1:-1;;;;;13038:566::o;13643:690::-;;13836:5;30879:12;31682:6;31677:3;31670:19;31719:4;;31714:3;31710:14;13848:93;;31719:4;14012:5;30575:14;-1:-1;14051:260;14076:6;14073:1;14070:13;14051:260;;;14137:13;;20216:37;;12625:14;;;;31410;;;;14098:1;14091:9;14051:260;;14569:343;;14711:5;30879:12;31682:6;31677:3;31670:19;14804:52;14849:6;31719:4;31714:3;31710:14;31719:4;14830:5;14826:16;14804:52;:::i;:::-;34519:7;34503:14;-1:-1;;34499:28;14868:39;;;;31719:4;14868:39;;14659:253;-1:-1;;14659:253::o;20385:271::-;;15079:5;30879:12;15190:52;15235:6;15230:3;15223:4;15216:5;15212:16;15190:52;:::i;:::-;15254:16;;;;;20519:137;-1:-1;;20519:137::o;20663:222::-;-1:-1;;;;;33106:54;;;;12714:37;;20790:2;20775:18;;20761:124::o;20892:528::-;-1:-1;;;;;33106:54;;;12714:37;;33106:54;;21257:2;21242:18;;12714:37;21093:2;21294;21279:18;;21272:48;;;20892:528;;21334:76;;21078:18;;21396:6;21334:76;:::i;:::-;21326:84;21064:356;-1:-1;;;;;21064:356::o;21427:540::-;-1:-1;;;;;33106:54;;12714:37;;32585:13;;32578:21;21792:2;21777:18;;14406:34;21634:2;21829;21814:18;;21807:48;;;21619:18;;31670:19;;;21427:540;31682:6;34081:3;31710:14;;;34063:30;34124:16;;;31710:14;34124:16;;;34117:27;;;;34519:7;34503:14;;;-1:-1;;34499:28;16077:39;;;21605:362;-1:-1;;;21605:362::o;21974:333::-;-1:-1;;;;;33106:54;;;;12714:37;;22293:2;22278:18;;20216:37;22129:2;22114:18;;22100:207::o;22314:218::-;-1:-1;;;;;;32672:78;;;;14521:36;;22439:2;22424:18;;22410:122::o;23065:1308::-;;34635:1;34628:5;34625:12;34615:2;;34641:9;34615:2;33942:50;15718:3;15711:74;23528:3;23671:2;23660:9;23656:18;23649:48;23711:108;23528:3;23517:9;23513:19;23805:6;23711:108;:::i;:::-;23867:9;23861:4;23857:20;23852:2;23841:9;23837:18;23830:48;23892:108;23995:4;23986:6;23892:108;:::i;:::-;23884:116;;24048:9;24042:4;24038:20;24033:2;24022:9;24018:18;24011:48;24073:108;24176:4;24167:6;24073:108;:::i;:::-;24065:116;;24230:9;24224:4;24220:20;24214:3;24203:9;24199:19;24192:49;24255:108;24358:4;24349:6;24255:108;:::i;:::-;24247:116;23499:874;-1:-1;;;;;;;;23499:874::o;24380:310::-;;24527:2;24548:17;24541:47;24602:78;24527:2;24516:9;24512:18;24666:6;24602:78;:::i;24697:416::-;24897:2;24911:47;;;16709:2;24882:18;;;31670:19;16745:34;31710:14;;;16725:55;-1:-1;;;16800:12;;;16793:29;16841:12;;;24868:245::o;25120:416::-;25320:2;25334:47;;;17092:2;25305:18;;;31670:19;17128:34;31710:14;;;17108:55;-1:-1;;;17183:12;;;17176:30;17225:12;;;25291:245::o;25543:416::-;25743:2;25757:47;;;17476:2;25728:18;;;31670:19;17512:26;31710:14;;;17492:47;17558:12;;;25714:245::o;25966:416::-;26166:2;26180:47;;;17809:2;26151:18;;;31670:19;17845:34;31710:14;;;17825:55;-1:-1;;;17900:12;;;17893:42;17954:12;;;26137:245::o;26389:416::-;26589:2;26603:47;;;18205:2;26574:18;;;31670:19;18241:30;31710:14;;;18221:51;18291:12;;;26560:245::o;26812:416::-;27012:2;27026:47;;;18542:2;26997:18;;;31670:19;18578:34;31710:14;;;18558:55;-1:-1;;;18633:12;;;18626:41;18686:12;;;26983:245::o;27235:416::-;27435:2;27449:47;;;18937:2;27420:18;;;31670:19;18973:31;31710:14;;;18953:52;19024:12;;;27406:245::o;27658:416::-;27858:2;27872:47;;;19275:2;27843:18;;;31670:19;19311:25;31710:14;;;19291:46;19356:12;;;27829:245::o;28081:416::-;28281:2;28295:47;;;19607:2;28266:18;;;31670:19;19643:34;31710:14;;;19623:55;-1:-1;;;19698:12;;;19691:34;19744:12;;;28252:245::o;28504:416::-;28704:2;28718:47;;;19995:2;28689:18;;;31670:19;20031:34;31710:14;;;20011:55;-1:-1;;;20086:12;;;20079:31;20129:12;;;28675:245::o;28927:256::-;28989:2;28983:9;29015:17;;;29090:18;29075:34;;29111:22;;;29072:62;29069:2;;;29147:1;;29137:12;29069:2;28989;29156:22;28967:216;;-1:-1;28967:216::o;29190:304::-;;29349:18;29341:6;29338:30;29335:2;;;-1:-1;;29371:12;29335:2;-1:-1;29416:4;29404:17;;;29469:15;;29272:222::o;30132:321::-;;30275:18;30267:6;30264:30;30261:2;;;-1:-1;;30297:12;30261:2;-1:-1;34519:7;30351:17;-1:-1;;30347:33;30438:4;30428:15;;30198:255::o;34159:268::-;34224:1;34231:101;34245:6;34242:1;34239:13;34231:101;;;34312:11;;;34306:18;34293:11;;;34286:39;34267:2;34260:10;34231:101;;;34347:6;34344:1;34341:13;34338:2;;;-1:-1;;34224:1;34394:16;;34387:27;34208:219::o;34664:117::-;-1:-1;;;;;33106:54;;34723:35;;34713:2;;34772:1;;34762:12;34713:2;34707:74;:::o;34788:111::-;34869:5;32585:13;32578:21;34847:5;34844:32;34834:2;;34890:1;;34880:12","linkReferences":{},"immutableReferences":{"18":[{"start":790,"length":32},{"start":1689,"length":32}]}},"methodIdentifiers":{"CLAIM_REWARDS_SELECTOR()":"40da225d","EXECUTE_CALLS_SELECTOR()":"12d9c1f6","LEND_AND_STAKE_SELECTOR()":"131461c0","LEND_SELECTOR()":"257cb1a3","REDEEM_SELECTOR()":"f7d882b5","STAKE_SELECTOR()":"3ffc1591","TAKE_MULTIPLE_ORDERS_SELECTOR()":"c32990a2","TAKE_ORDER_SELECTOR()":"863e5ad0","UNSTAKE_AND_REDEEM_SELECTOR()":"080456c1","UNSTAKE_SELECTOR()":"b23228cf","bindVault(address,bool,string)":"e16f57a6","executeCalls(address,bytes,bytes)":"b7fe1a11","getIntegrationManager()":"e7c45690","guard()":"7ceab3b1","parseAssetsForAction(address,bytes4,bytes)":"c54efee5","vault()":"fbfa77cf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_integrationManager\",\"type\":\"address\"},{\"internalType\":\"contract IGuard\",\"name\":\"_guard\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"production\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"meta\",\"type\":\"string\"}],\"name\":\"GuardedGenericAdapterDeployed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CLAIM_REWARDS_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EXECUTE_CALLS_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LEND_AND_STAKE_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LEND_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REDEEM_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKE_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TAKE_MULTIPLE_ORDERS_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TAKE_ORDER_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNSTAKE_AND_REDEEM_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UNSTAKE_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IVaultMock\",\"name\":\"_vault\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_production\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"meta\",\"type\":\"string\"}],\"name\":\"bindVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vaultProxy\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_actionData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"executeCalls\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getIntegrationManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"integrationManager_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guard\",\"outputs\":[{\"internalType\":\"contract IGuard\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"_selector\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"_actionData\",\"type\":\"bytes\"}],\"name\":\"parseAssetsForAction\",\"outputs\":[{\"internalType\":\"enum IIntegrationManager.SpendAssetsHandleType\",\"name\":\"spendAssetsHandleType_\",\"type\":\"uint8\"},{\"internalType\":\"address[]\",\"name\":\"spendAssets_\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"spendAssetAmounts_\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"incomingAssets_\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minIncomingAssetAmounts_\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVaultMock\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"executeCalls(address,bytes,bytes)\":{\"params\":{\"_actionData\":\"Data specific to this action\",\"_vaultProxy\":\"The VaultProxy of the calling fund\"}},\"getIntegrationManager()\":{\"returns\":{\"integrationManager_\":\"The `INTEGRATION_MANAGER` variable value\"}},\"parseAssetsForAction(address,bytes4,bytes)\":{\"params\":{\"_actionData\":\"Data specific to this action\",\"_selector\":\"The function selector for the callOnIntegration\"},\"returns\":{\"incomingAssets_\":\"The assets to receive in the call\",\"minIncomingAssetAmounts_\":\"The min asset amounts to receive in the call\",\"spendAssetAmounts_\":\"The max asset amounts to spend in the call\",\"spendAssetsHandleType_\":\"A type that dictates how to handle granting the adapter access to spend assets (hardcoded to `Transfer`)\",\"spendAssets_\":\"The assets to spend in the call\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"executeCalls(address,bytes,bytes)\":{\"notice\":\"Executes a sequence of calls\"},\"getIntegrationManager()\":{\"notice\":\"Gets the `INTEGRATION_MANAGER` variable\"},\"parseAssetsForAction(address,bytes4,bytes)\":{\"notice\":\"Parses the expected assets in a particular action\"}},\"notice\":\"A generic adapter for Enzyme vault with our own guard mechanism. - Guard checks the asset manager cannot perform actions that are not allowed (withdraw, trade wrong tokens) - Governance address can still perform hese actions - Adapter is associated with a specific vault\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/GuardedGenericAdapter.sol\":\"GuardedGenericAdapter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@enzyme/=../enzyme/contracts/\",\":@openzeppelin/=../enzyme/node_modules/@openzeppelin/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/openzeppelin-contracts/lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"../enzyme/contracts/release/extensions/integration-manager/IIntegrationManager.sol\":{\"keccak256\":\"0x29aff2a05a50430f732dd67cd3dfbfcf3b2fd86697f61b1ef91bebc8ff3e00ef\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://8b1f03cd376a3743dfaeff7cfbb1114341099d18ab32165365c76eba8e9dbc23\",\"dweb:/ipfs/QmZEwZEUcFwWEKkYXmjcijChwfAkFHkgMMRnv4QY8abhdk\"]},\"../enzyme/contracts/release/extensions/integration-manager/integrations/IIntegrationAdapter.sol\":{\"keccak256\":\"0x14b11777e21aceca340931832874342546731493bb169dbb4de736b16e9a7cc1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d86c25f7deaddc311bfcd4da5ce08c275f548e164cb732137be91466acc75336\",\"dweb:/ipfs/QmYE2XeBKMoqUrfNZAX66mi34sth4ehoZnVzGhZFLBxbwS\"]},\"../enzyme/contracts/release/extensions/integration-manager/integrations/utils/AdapterBase.sol\":{\"keccak256\":\"0x067e49bf0d3c1655ab41a413c65ccf61d4e593308132e1ffc484a0fadfbbaf26\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://387f425017e18e89cc1893521101fa99df595314847d0b3d9a1162369f714fcf\",\"dweb:/ipfs/Qmco3jCvuWAyfCpBYpGzHrQjiFJG63w1RJKcakoTEbxRQm\"]},\"../enzyme/contracts/release/extensions/integration-manager/integrations/utils/IntegrationSelectors.sol\":{\"keccak256\":\"0xfd34c7ca8231c6935e25dede32ca2b3121738e624d0fc896f7b895a731edcf88\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d492c061963d36d07718446db191d4c5a340c0d847f6cd209f027bd99f7cb176\",\"dweb:/ipfs/QmfCvRZt56ftDdrEh6LepHXFJ4fVtcfpQGvEyY8k4zxG1A\"]},\"../enzyme/contracts/release/utils/AssetHelpers.sol\":{\"keccak256\":\"0x01825f9b744f0bdbbcbed59503845b46e31b67ab510d53d4834c22967e12fc5f\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a6937098b8b5e2238c5d2617d4c7870b61eb3dc6b24e38a6d037353f92a7db4b\",\"dweb:/ipfs/QmXfdWqtc4Dyn4ShhCc6ZZscApMZWtSaonvikwemhczb5E\"]},\"../enzyme/node_modules/@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"../enzyme/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xca0c2396dbeb3503b51abf4248ebf77a1461edad513c01529df51850a012bee3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://991b44ff44e0496e8554a90f4c0512c28faed45104d40430019f3c67ea67740e\",\"dweb:/ipfs/Qmc3nRapVbcctELoZS5qe17zLkFB3bETBfwzCTMF1CSuGE\"]},\"../enzyme/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]},\"../enzyme/node_modules/@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a\",\"dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ\"]},\"../enzyme/node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"../enzyme/node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"src/GuardedGenericAdapter.sol\":{\"keccak256\":\"0xadeb757bd8046868b837d9891209dd84ad19b665d6481d16223f7c229b7a33af\",\"urls\":[\"bzz-raw://7738d3c03399ff02237a7cec53a5def958527416ae182b9aee5d7dbdfcf42954\",\"dweb:/ipfs/QmdftNGy6AfmJGzcUkZkrjG6yvgk4gPV8CN1LJGHeGP7jA\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.6.12+commit.27d51765"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_integrationManager","type":"address"},{"internalType":"contract IGuard","name":"_guard","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"vault","type":"address","indexed":false},{"internalType":"bool","name":"production","type":"bool","indexed":false},{"internalType":"string","name":"meta","type":"string","indexed":false}],"type":"event","name":"GuardedGenericAdapterDeployed","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"CLAIM_REWARDS_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"EXECUTE_CALLS_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LEND_AND_STAKE_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LEND_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"REDEEM_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"STAKE_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TAKE_MULTIPLE_ORDERS_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TAKE_ORDER_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UNSTAKE_AND_REDEEM_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UNSTAKE_SELECTOR","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"contract IVaultMock","name":"_vault","type":"address"},{"internalType":"bool","name":"_production","type":"bool"},{"internalType":"string","name":"meta","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"bindVault"},{"inputs":[{"internalType":"address","name":"_vaultProxy","type":"address"},{"internalType":"bytes","name":"_actionData","type":"bytes"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"executeCalls"},{"inputs":[],"stateMutability":"view","type":"function","name":"getIntegrationManager","outputs":[{"internalType":"address","name":"integrationManager_","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"guard","outputs":[{"internalType":"contract IGuard","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes4","name":"_selector","type":"bytes4"},{"internalType":"bytes","name":"_actionData","type":"bytes"}],"stateMutability":"view","type":"function","name":"parseAssetsForAction","outputs":[{"internalType":"enum IIntegrationManager.SpendAssetsHandleType","name":"spendAssetsHandleType_","type":"uint8"},{"internalType":"address[]","name":"spendAssets_","type":"address[]"},{"internalType":"uint256[]","name":"spendAssetAmounts_","type":"uint256[]"},{"internalType":"address[]","name":"incomingAssets_","type":"address[]"},{"internalType":"uint256[]","name":"minIncomingAssetAmounts_","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vault","outputs":[{"internalType":"contract IVaultMock","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"executeCalls(address,bytes,bytes)":{"params":{"_actionData":"Data specific to this action","_vaultProxy":"The VaultProxy of the calling fund"}},"getIntegrationManager()":{"returns":{"integrationManager_":"The `INTEGRATION_MANAGER` variable value"}},"parseAssetsForAction(address,bytes4,bytes)":{"params":{"_actionData":"Data specific to this action","_selector":"The function selector for the callOnIntegration"},"returns":{"incomingAssets_":"The assets to receive in the call","minIncomingAssetAmounts_":"The min asset amounts to receive in the call","spendAssetAmounts_":"The max asset amounts to spend in the call","spendAssetsHandleType_":"A type that dictates how to handle granting the adapter access to spend assets (hardcoded to `Transfer`)","spendAssets_":"The assets to spend in the call"}}},"version":1},"userdoc":{"kind":"user","methods":{"executeCalls(address,bytes,bytes)":{"notice":"Executes a sequence of calls"},"getIntegrationManager()":{"notice":"Gets the `INTEGRATION_MANAGER` variable"},"parseAssetsForAction(address,bytes4,bytes)":{"notice":"Parses the expected assets in a particular action"}},"version":1}},"settings":{"remappings":["@enzyme/=../enzyme/contracts/","@openzeppelin/=../enzyme/node_modules/@openzeppelin/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/openzeppelin-contracts/lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/GuardedGenericAdapter.sol":"GuardedGenericAdapter"},"evmVersion":"istanbul","libraries":{}},"sources":{"../enzyme/contracts/release/extensions/integration-manager/IIntegrationManager.sol":{"keccak256":"0x29aff2a05a50430f732dd67cd3dfbfcf3b2fd86697f61b1ef91bebc8ff3e00ef","urls":["bzz-raw://8b1f03cd376a3743dfaeff7cfbb1114341099d18ab32165365c76eba8e9dbc23","dweb:/ipfs/QmZEwZEUcFwWEKkYXmjcijChwfAkFHkgMMRnv4QY8abhdk"],"license":"GPL-3.0"},"../enzyme/contracts/release/extensions/integration-manager/integrations/IIntegrationAdapter.sol":{"keccak256":"0x14b11777e21aceca340931832874342546731493bb169dbb4de736b16e9a7cc1","urls":["bzz-raw://d86c25f7deaddc311bfcd4da5ce08c275f548e164cb732137be91466acc75336","dweb:/ipfs/QmYE2XeBKMoqUrfNZAX66mi34sth4ehoZnVzGhZFLBxbwS"],"license":"GPL-3.0"},"../enzyme/contracts/release/extensions/integration-manager/integrations/utils/AdapterBase.sol":{"keccak256":"0x067e49bf0d3c1655ab41a413c65ccf61d4e593308132e1ffc484a0fadfbbaf26","urls":["bzz-raw://387f425017e18e89cc1893521101fa99df595314847d0b3d9a1162369f714fcf","dweb:/ipfs/Qmco3jCvuWAyfCpBYpGzHrQjiFJG63w1RJKcakoTEbxRQm"],"license":"GPL-3.0"},"../enzyme/contracts/release/extensions/integration-manager/integrations/utils/IntegrationSelectors.sol":{"keccak256":"0xfd34c7ca8231c6935e25dede32ca2b3121738e624d0fc896f7b895a731edcf88","urls":["bzz-raw://d492c061963d36d07718446db191d4c5a340c0d847f6cd209f027bd99f7cb176","dweb:/ipfs/QmfCvRZt56ftDdrEh6LepHXFJ4fVtcfpQGvEyY8k4zxG1A"],"license":"GPL-3.0"},"../enzyme/contracts/release/utils/AssetHelpers.sol":{"keccak256":"0x01825f9b744f0bdbbcbed59503845b46e31b67ab510d53d4834c22967e12fc5f","urls":["bzz-raw://a6937098b8b5e2238c5d2617d4c7870b61eb3dc6b24e38a6d037353f92a7db4b","dweb:/ipfs/QmXfdWqtc4Dyn4ShhCc6ZZscApMZWtSaonvikwemhczb5E"],"license":"GPL-3.0"},"../enzyme/node_modules/@openzeppelin/contracts/math/SafeMath.sol":{"keccak256":"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52","urls":["bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c","dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR"],"license":"MIT"},"../enzyme/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xca0c2396dbeb3503b51abf4248ebf77a1461edad513c01529df51850a012bee3","urls":["bzz-raw://991b44ff44e0496e8554a90f4c0512c28faed45104d40430019f3c67ea67740e","dweb:/ipfs/Qmc3nRapVbcctELoZS5qe17zLkFB3bETBfwzCTMF1CSuGE"],"license":"MIT"},"../enzyme/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5","urls":["bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08","dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC"],"license":"MIT"},"../enzyme/node_modules/@openzeppelin/contracts/token/ERC20/SafeERC20.sol":{"keccak256":"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc","urls":["bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a","dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ"],"license":"MIT"},"../enzyme/node_modules/@openzeppelin/contracts/utils/Address.sol":{"keccak256":"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea","urls":["bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c","dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN"],"license":"MIT"},"../enzyme/node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0","urls":["bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f","dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96"],"license":"MIT"},"src/GuardedGenericAdapter.sol":{"keccak256":"0xadeb757bd8046868b837d9891209dd84ad19b665d6481d16223f7c229b7a33af","urls":["bzz-raw://7738d3c03399ff02237a7cec53a5def958527416ae182b9aee5d7dbdfcf42954","dweb:/ipfs/QmdftNGy6AfmJGzcUkZkrjG6yvgk4gPV8CN1LJGHeGP7jA"],"license":null}},"version":1},"ast":{"absolutePath":"src/GuardedGenericAdapter.sol","id":2778,"exportedSymbols":{"GuardedGenericAdapter":[2777],"IGuard":[2432],"IVaultMock":[2422]},"nodeType":"SourceUnit","src":"50:7455:19","nodes":[{"id":2414,"nodeType":"PragmaDirective","src":"50:24:19","nodes":[],"literals":["solidity","^","0.6",".12"]},{"id":2415,"nodeType":"PragmaDirective","src":"75:33:19","nodes":[],"literals":["experimental","ABIEncoderV2"]},{"id":2416,"nodeType":"ImportDirective","src":"110:91:19","nodes":[],"absolutePath":"../enzyme/contracts/release/extensions/integration-manager/integrations/utils/AdapterBase.sol","file":"@enzyme/release/extensions/integration-manager/integrations/utils/AdapterBase.sol","scope":2778,"sourceUnit":128,"symbolAliases":[],"unitAlias":""},{"id":2422,"nodeType":"ContractDefinition","src":"237:92:19","nodes":[{"id":2421,"nodeType":"FunctionDefinition","src":"264:63:19","nodes":[],"documentation":null,"functionSelector":"0ee2cb10","implemented":false,"kind":"function","modifiers":[],"name":"getCreator","overrides":null,"parameters":{"id":2417,"nodeType":"ParameterList","parameters":[],"src":"283:2:19"},"returnParameters":{"id":2420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2419,"mutability":"mutable","name":"creator_","nodeType":"VariableDeclaration","overrides":null,"scope":2421,"src":"309:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2418,"name":"address","nodeType":"ElementaryTypeName","src":"309:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"308:18:19"},"scope":2422,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2422],"name":"IVaultMock","scope":2778},{"id":2432,"nodeType":"ContractDefinition","src":"366:125:19","nodes":[{"id":2431,"nodeType":"FunctionDefinition","src":"389:100:19","nodes":[],"documentation":null,"functionSelector":"6d5025f1","implemented":false,"kind":"function","modifiers":[],"name":"validateCall","overrides":null,"parameters":{"id":2429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2424,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","overrides":null,"scope":2431,"src":"411:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2423,"name":"address","nodeType":"ElementaryTypeName","src":"411:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2426,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","overrides":null,"scope":2431,"src":"427:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2425,"name":"address","nodeType":"ElementaryTypeName","src":"427:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2428,"mutability":"mutable","name":"callDataWithSelector","nodeType":"VariableDeclaration","overrides":null,"scope":2431,"src":"443:35:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2427,"name":"bytes","nodeType":"ElementaryTypeName","src":"443:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"410:69:19"},"returnParameters":{"id":2430,"nodeType":"ParameterList","parameters":[],"src":"488:0:19"},"scope":2432,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2432],"name":"IGuard","scope":2778},{"id":2777,"nodeType":"ContractDefinition","src":"801:6703:19","nodes":[{"id":2437,"nodeType":"VariableDeclaration","src":"1124:23:19","nodes":[],"constant":false,"functionSelector":"fbfa77cf","mutability":"mutable","name":"vault","overrides":null,"scope":2777,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"},"typeName":{"contractScope":null,"id":2436,"name":"IVaultMock","nodeType":"UserDefinedTypeName","referencedDeclaration":2422,"src":"1124:10:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}},"value":null,"visibility":"public"},{"id":2439,"nodeType":"VariableDeclaration","src":"1209:19:19","nodes":[],"constant":false,"functionSelector":"7ceab3b1","mutability":"mutable","name":"guard","overrides":null,"scope":2777,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"},"typeName":{"contractScope":null,"id":2438,"name":"IGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":2432,"src":"1209:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"}},"value":null,"visibility":"public"},{"id":2441,"nodeType":"VariableDeclaration","src":"1290:15:19","nodes":[],"constant":false,"mutability":"mutable","name":"production","overrides":null,"scope":2777,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2440,"name":"bool","nodeType":"ElementaryTypeName","src":"1290:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"id":2449,"nodeType":"EventDefinition","src":"1558:81:19","nodes":[],"anonymous":false,"documentation":null,"name":"GuardedGenericAdapterDeployed","parameters":{"id":2448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2443,"indexed":false,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","overrides":null,"scope":2449,"src":"1594:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2442,"name":"address","nodeType":"ElementaryTypeName","src":"1594:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2445,"indexed":false,"mutability":"mutable","name":"production","nodeType":"VariableDeclaration","overrides":null,"scope":2449,"src":"1609:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2444,"name":"bool","nodeType":"ElementaryTypeName","src":"1609:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":2447,"indexed":false,"mutability":"mutable","name":"meta","nodeType":"VariableDeclaration","overrides":null,"scope":2449,"src":"1626:11:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2446,"name":"string","nodeType":"ElementaryTypeName","src":"1626:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"1593:45:19"}},{"id":2457,"nodeType":"VariableDeclaration","src":"1711:116:19","nodes":[],"constant":true,"functionSelector":"12d9c1f6","mutability":"constant","name":"EXECUTE_CALLS_SELECTOR","overrides":null,"scope":2777,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2450,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1711:6:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"6578656375746543616c6c7328616464726573732c62797465732c627974657329","id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1785:35:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b7fe1a117cff974e3f19d303d9f97ada44b7ecad880df21ddfdc69ba0493b796","typeString":"literal_string \"executeCalls(address,bytes,bytes)\""},"value":"executeCalls(address,bytes,bytes)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b7fe1a117cff974e3f19d303d9f97ada44b7ecad880df21ddfdc69ba0493b796","typeString":"literal_string \"executeCalls(address,bytes,bytes)\""}],"id":2453,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1775:9:19","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1775:46:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1759:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2451,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1759:6:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1759:68:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"public"},{"id":2472,"nodeType":"FunctionDefinition","src":"1834:149:19","nodes":[],"body":{"id":2471,"nodeType":"Block","src":"1952:31:19","nodes":[],"statements":[{"expression":{"argumentTypes":null,"id":2469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2467,"name":"guard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"1962:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2468,"name":"_guard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"1970:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"}},"src":"1962:14:19","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"}},"id":2470,"nodeType":"ExpressionStatement","src":"1962:14:19"}]},"documentation":null,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"argumentTypes":null,"id":2464,"name":"_integrationManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2459,"src":"1931:19:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2465,"modifierName":{"argumentTypes":null,"id":2463,"name":"AdapterBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"1919:11:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AdapterBase_$127_$","typeString":"type(contract AdapterBase)"}},"nodeType":"ModifierInvocation","src":"1919:32:19"}],"name":"","overrides":null,"parameters":{"id":2462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2459,"mutability":"mutable","name":"_integrationManager","nodeType":"VariableDeclaration","overrides":null,"scope":2472,"src":"1855:27:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2458,"name":"address","nodeType":"ElementaryTypeName","src":"1855:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2461,"mutability":"mutable","name":"_guard","nodeType":"VariableDeclaration","overrides":null,"scope":2472,"src":"1892:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"},"typeName":{"contractScope":null,"id":2460,"name":"IGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":2432,"src":"1892:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"}},"value":null,"visibility":"internal"}],"src":"1845:66:19"},"returnParameters":{"id":2466,"nodeType":"ParameterList","parameters":[],"src":"1952:0:19"},"scope":2777,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2537,"nodeType":"FunctionDefinition","src":"2399:594:19","nodes":[],"body":{"id":2536,"nodeType":"Block","src":"2486:507:19","nodes":[],"statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2484,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"2512:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}],"id":2483,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2504:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2482,"name":"address","nodeType":"ElementaryTypeName","src":"2504:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2504:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":2488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2530:3:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2522:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2486,"name":"address","nodeType":"ElementaryTypeName","src":"2522:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2522:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2504:30:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"43616e20626520696e697469616c69736564206f6e6c79206f6e6365","id":2491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2536:30:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_762623d12dbae063f47f57f6478a72532148be79937212a03822a2e9c0dcf834","typeString":"literal_string \"Can be initialised only once\""},"value":"Can be initialised only once"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_762623d12dbae063f47f57f6478a72532148be79937212a03822a2e9c0dcf834","typeString":"literal_string \"Can be initialised only once\""}],"id":2481,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2496:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2496:71:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2493,"nodeType":"ExpressionStatement","src":"2496:71:19"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2497,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"2593:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}],"id":2496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2585:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2495,"name":"address","nodeType":"ElementaryTypeName","src":"2585:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2585:15:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":2501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2612:3:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2500,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2604:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2499,"name":"address","nodeType":"ElementaryTypeName","src":"2604:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2604:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2585:31:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4e756c6c206164647265737320656e636f756e7465726564","id":2504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2618:26:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_63719c465d101e0c42f13929027fa16e77069e7eb0350e8b7e5547798a9b05a7","typeString":"literal_string \"Null address encountered\""},"value":"Null address encountered"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_63719c465d101e0c42f13929027fa16e77069e7eb0350e8b7e5547798a9b05a7","typeString":"literal_string \"Null address encountered\""}],"id":2494,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2577:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2577:68:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2506,"nodeType":"ExpressionStatement","src":"2577:68:19"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":2508,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"2785:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getCreator","nodeType":"MemberAccess","referencedDeclaration":2421,"src":"2785:17:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2785:19:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"307830","id":2513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2816:3:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2808:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2511,"name":"address","nodeType":"ElementaryTypeName","src":"2808:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2808:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2785:35:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"456e636f756e74657265642066756e6e79207661756c74","id":2516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2822:25:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_d9f24d5023927ca575f3a944f0a2dfe553dbbc992c0ec8a6fe3b467f7effcc47","typeString":"literal_string \"Encountered funny vault\""},"value":"Encountered funny vault"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d9f24d5023927ca575f3a944f0a2dfe553dbbc992c0ec8a6fe3b467f7effcc47","typeString":"literal_string \"Encountered funny vault\""}],"id":2507,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2777:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2777:71:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2518,"nodeType":"ExpressionStatement","src":"2777:71:19"},{"expression":{"argumentTypes":null,"id":2521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2519,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"2858:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2520,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"2866:6:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}},"src":"2858:14:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}},"id":2522,"nodeType":"ExpressionStatement","src":"2858:14:19"},{"expression":{"argumentTypes":null,"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2523,"name":"production","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"2883:10:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":2524,"name":"_production","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2476,"src":"2896:11:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2883:24:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2526,"nodeType":"ExpressionStatement","src":"2883:24:19"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2530,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"2961:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}],"id":2529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2953:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2528,"name":"address","nodeType":"ElementaryTypeName","src":"2953:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2953:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2532,"name":"production","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"2969:10:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":2533,"name":"meta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2478,"src":"2981:4:19","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":2527,"name":"GuardedGenericAdapterDeployed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2449,"src":"2923:29:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,bool,string memory)"}},"id":2534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2923:63:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2535,"nodeType":"EmitStatement","src":"2918:68:19"}]},"documentation":null,"functionSelector":"e16f57a6","implemented":true,"kind":"function","modifiers":[],"name":"bindVault","overrides":null,"parameters":{"id":2479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2474,"mutability":"mutable","name":"_vault","nodeType":"VariableDeclaration","overrides":null,"scope":2537,"src":"2418:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"},"typeName":{"contractScope":null,"id":2473,"name":"IVaultMock","nodeType":"UserDefinedTypeName","referencedDeclaration":2422,"src":"2418:10:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}},"value":null,"visibility":"internal"},{"constant":false,"id":2476,"mutability":"mutable","name":"_production","nodeType":"VariableDeclaration","overrides":null,"scope":2537,"src":"2437:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2475,"name":"bool","nodeType":"ElementaryTypeName","src":"2437:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":2478,"mutability":"mutable","name":"meta","nodeType":"VariableDeclaration","overrides":null,"scope":2537,"src":"2455:20:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":2477,"name":"string","nodeType":"ElementaryTypeName","src":"2455:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"2417:59:19"},"returnParameters":{"id":2480,"nodeType":"ParameterList","parameters":[],"src":"2486:0:19"},"scope":2777,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2607,"nodeType":"FunctionDefinition","src":"3189:756:19","nodes":[],"body":{"id":2606,"nodeType":"Block","src":"3503:442:19","nodes":[],"statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2558,"name":"_vaultProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2540,"src":"3521:11:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2561,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"3544:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}],"id":2560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3536:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2559,"name":"address","nodeType":"ElementaryTypeName","src":"3536:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3536:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3521:29:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4f6e6c792063616c6c732066726f6d207468652077686974656c6973746564207661756c742061726520616c6c6f776564","id":2564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3552:51:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_92e415b8d2b5b519ac1761c134d94a6d1147c25f2893f4d94cc7ac4778336eb5","typeString":"literal_string \"Only calls from the whitelisted vault are allowed\""},"value":"Only calls from the whitelisted vault are allowed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_92e415b8d2b5b519ac1761c134d94a6d1147c25f2893f4d94cc7ac4778336eb5","typeString":"literal_string \"Only calls from the whitelisted vault are allowed\""}],"id":2557,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3513:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3513:91:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2566,"nodeType":"ExpressionStatement","src":"3513:91:19"},{"assignments":[null,null,null,null,2568],"declarations":[null,null,null,null,{"constant":false,"id":2568,"mutability":"mutable","name":"externalCallsData","nodeType":"VariableDeclaration","overrides":null,"scope":2606,"src":"3624:30:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2567,"name":"bytes","nodeType":"ElementaryTypeName","src":"3624:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":2572,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2570,"name":"_actionData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2542,"src":"3675:11:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2569,"name":"__decodeCallArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2734,"src":"3658:16:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (bytes calldata) pure returns (address[] memory,uint256[] memory,address[] memory,uint256[] memory,bytes memory)"}},"id":2571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3658:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(address[] memory,uint256[] memory,address[] memory,uint256[] memory,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3615:72:19"},{"assignments":[2577,2580],"declarations":[{"constant":false,"id":2577,"mutability":"mutable","name":"contracts","nodeType":"VariableDeclaration","overrides":null,"scope":2606,"src":"3699:26:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2575,"name":"address","nodeType":"ElementaryTypeName","src":"3699:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2576,"length":null,"nodeType":"ArrayTypeName","src":"3699:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2580,"mutability":"mutable","name":"callsData","nodeType":"VariableDeclaration","overrides":null,"scope":2606,"src":"3727:24:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2578,"name":"bytes","nodeType":"ElementaryTypeName","src":"3727:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2579,"length":null,"nodeType":"ArrayTypeName","src":"3727:7:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"}],"id":2584,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2582,"name":"externalCallsData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"3794:17:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2581,"name":"__decodeExternalCallsData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2776,"src":"3755:25:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"function (bytes memory) pure returns (address[] memory,bytes memory[] memory)"}},"id":2583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3755:66:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,bytes memory[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"3698:123:19"},{"body":{"id":2604,"nodeType":"Block","src":"3875:64:19","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2596,"name":"contracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"3901:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2598,"indexExpression":{"argumentTypes":null,"id":2597,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2586,"src":"3911:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3901:12:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2599,"name":"callsData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2580,"src":"3915:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":2601,"indexExpression":{"argumentTypes":null,"id":2600,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2586,"src":"3925:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3915:12:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2595,"name":"callGuarded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2641,"src":"3889:11:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":2602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3889:39:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2603,"nodeType":"ExpressionStatement","src":"3889:39:19"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2588,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2586,"src":"3848:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2589,"name":"contracts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"3852:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3852:16:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3848:20:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2605,"initializationExpression":{"assignments":[2586],"declarations":[{"constant":false,"id":2586,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","overrides":null,"scope":2605,"src":"3837:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2585,"name":"uint256","nodeType":"ElementaryTypeName","src":"3837:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2587,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"3837:9:19"},"loopExpression":{"expression":{"argumentTypes":null,"id":2593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3870:3:19","subExpression":{"argumentTypes":null,"id":2592,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2586,"src":"3870:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2594,"nodeType":"ExpressionStatement","src":"3870:3:19"},"nodeType":"ForStatement","src":"3832:107:19"}]},"documentation":{"id":2538,"nodeType":"StructuredDocumentation","src":"3026:158:19","text":"@notice Executes a sequence of calls\n @param _vaultProxy The VaultProxy of the calling fund\n @param _actionData Data specific to this action"},"functionSelector":"b7fe1a11","implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":2547,"modifierName":{"argumentTypes":null,"id":2546,"name":"onlyIntegrationManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"3331:22:19","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3331:22:19"},{"arguments":[{"argumentTypes":null,"id":2549,"name":"_vaultProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2540,"src":"3402:11:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2550,"name":"_actionData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2542,"src":"3415:11:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":2551,"modifierName":{"argumentTypes":null,"id":2548,"name":"postActionIncomingAssetsTransferHandler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"3362:39:19","typeDescriptions":{"typeIdentifier":"t_modifier$_t_address_$_t_bytes_memory_ptr_$","typeString":"modifier (address,bytes memory)"}},"nodeType":"ModifierInvocation","src":"3362:65:19"},{"arguments":[{"argumentTypes":null,"id":2553,"name":"_vaultProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2540,"src":"3473:11:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2554,"name":"_actionData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2542,"src":"3486:11:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":2555,"modifierName":{"argumentTypes":null,"id":2552,"name":"postActionSpendAssetsTransferHandler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":64,"src":"3436:36:19","typeDescriptions":{"typeIdentifier":"t_modifier$_t_address_$_t_bytes_memory_ptr_$","typeString":"modifier (address,bytes memory)"}},"nodeType":"ModifierInvocation","src":"3436:62:19"}],"name":"executeCalls","overrides":null,"parameters":{"id":2545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2540,"mutability":"mutable","name":"_vaultProxy","nodeType":"VariableDeclaration","overrides":null,"scope":2607,"src":"3220:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2539,"name":"address","nodeType":"ElementaryTypeName","src":"3220:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2542,"mutability":"mutable","name":"_actionData","nodeType":"VariableDeclaration","overrides":null,"scope":2607,"src":"3249:26:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2541,"name":"bytes","nodeType":"ElementaryTypeName","src":"3249:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"},{"constant":false,"id":2544,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":2607,"src":"3285:14:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2543,"name":"bytes","nodeType":"ElementaryTypeName","src":"3285:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"3210:95:19"},"returnParameters":{"id":2556,"nodeType":"ParameterList","parameters":[],"src":"3503:0:19"},"scope":2777,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2641,"nodeType":"FunctionDefinition","src":"4146:731:19","nodes":[],"body":{"id":2640,"nodeType":"Block","src":"4224:653:19","nodes":[],"statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2620,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"4453:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultMock_$2422","typeString":"contract IVaultMock"}],"id":2619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4445:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2618,"name":"address","nodeType":"ElementaryTypeName","src":"4445:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4445:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2622,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2610,"src":"4461:15:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2623,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2612,"src":"4478:8:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":2615,"name":"guard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"4426:5:19","typeDescriptions":{"typeIdentifier":"t_contract$_IGuard_$2432","typeString":"contract IGuard"}},"id":2617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"validateCall","nodeType":"MemberAccess","referencedDeclaration":2431,"src":"4426:18:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,bytes memory) external"}},"id":2624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4426:61:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2625,"nodeType":"ExpressionStatement","src":"4426:61:19"},{"assignments":[2627,2629],"declarations":[{"constant":false,"id":2627,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","overrides":null,"scope":2640,"src":"4499:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2626,"name":"bool","nodeType":"ElementaryTypeName","src":"4499:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"returnData","nodeType":"VariableDeclaration","overrides":null,"scope":2640,"src":"4513:23:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2628,"name":"bytes","nodeType":"ElementaryTypeName","src":"4513:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":2634,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2632,"name":"callData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2612,"src":"4561:8:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":2630,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2610,"src":"4540:15:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4540:20:19","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4540:30:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4498:72:19"},{"condition":{"argumentTypes":null,"id":2636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4584:8:19","subExpression":{"argumentTypes":null,"id":2635,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"4585:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2639,"nodeType":"IfStatement","src":"4581:241:19","trueBody":{"id":2638,"nodeType":"Block","src":"4594:228:19","statements":[{"AST":{"nodeType":"YulBlock","src":"4616:196:19","statements":[{"nodeType":"YulVariableDeclaration","src":"4634:43:19","value":{"arguments":[{"name":"returnData","nodeType":"YulIdentifier","src":"4666:10:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4660:5:19"},"nodeType":"YulFunctionCall","src":"4660:17:19"},"variables":[{"name":"revertStringLength","nodeType":"YulTypedName","src":"4638:18:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4694:44:19","value":{"arguments":[{"name":"returnData","nodeType":"YulIdentifier","src":"4721:10:19"},{"kind":"number","nodeType":"YulLiteral","src":"4733:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4717:3:19"},"nodeType":"YulFunctionCall","src":"4717:21:19"},"variables":[{"name":"revertStringPtr","nodeType":"YulTypedName","src":"4698:15:19","type":""}]},{"expression":{"arguments":[{"name":"revertStringPtr","nodeType":"YulIdentifier","src":"4762:15:19"},{"name":"revertStringLength","nodeType":"YulIdentifier","src":"4779:18:19"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4755:6:19"},"nodeType":"YulFunctionCall","src":"4755:43:19"},"nodeType":"YulExpressionStatement","src":"4755:43:19"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":2629,"isOffset":false,"isSlot":false,"src":"4666:10:19","valueSize":1},{"declaration":2629,"isOffset":false,"isSlot":false,"src":"4721:10:19","valueSize":1}],"id":2637,"nodeType":"InlineAssembly","src":"4608:204:19"}]}}]},"documentation":{"id":2608,"nodeType":"StructuredDocumentation","src":"3951:190:19","text":" Checks if the asset manager is allowed to do this action with the guard smart contract.\n Then perform the action. If the action reverts, unwind the execution."},"implemented":true,"kind":"function","modifiers":[],"name":"callGuarded","overrides":null,"parameters":{"id":2613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2610,"mutability":"mutable","name":"contractAddress","nodeType":"VariableDeclaration","overrides":null,"scope":2641,"src":"4167:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2609,"name":"address","nodeType":"ElementaryTypeName","src":"4167:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2612,"mutability":"mutable","name":"callData","nodeType":"VariableDeclaration","overrides":null,"scope":2641,"src":"4192:21:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2611,"name":"bytes","nodeType":"ElementaryTypeName","src":"4192:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"4166:48:19"},"returnParameters":{"id":2614,"nodeType":"ParameterList","parameters":[],"src":"4224:0:19"},"scope":2777,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2693,"nodeType":"FunctionDefinition","src":"5521:965:19","nodes":[],"body":{"id":2692,"nodeType":"Block","src":"5985:501:19","nodes":[],"statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2667,"name":"_selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2646,"src":"6003:9:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":2668,"name":"EXECUTE_CALLS_SELECTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2457,"src":"6016:22:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"6003:35:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"7061727365417373657473466f72416374696f6e3a205f73656c6563746f7220696e76616c6964","id":2670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6040:41:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_fa7d3951a54ad7f640a0aa9b85ad7f5ff914df62a5263210a007a27ec3c5f2c7","typeString":"literal_string \"parseAssetsForAction: _selector invalid\""},"value":"parseAssetsForAction: _selector invalid"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fa7d3951a54ad7f640a0aa9b85ad7f5ff914df62a5263210a007a27ec3c5f2c7","typeString":"literal_string \"parseAssetsForAction: _selector invalid\""}],"id":2666,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5995:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5995:87:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2672,"nodeType":"ExpressionStatement","src":"5995:87:19"},{"expression":{"argumentTypes":null,"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2673,"name":"incomingAssets_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2661,"src":"6107:15:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":2674,"name":"minIncomingAssetAmounts_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2664,"src":"6136:24:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":2675,"name":"spendAssets_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"6174:12:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":2676,"name":"spendAssetAmounts_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2658,"src":"6200:18:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},null],"id":2677,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6093:137:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$__$","typeString":"tuple(address[] memory,uint256[] memory,address[] memory,uint256[] memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2679,"name":"_actionData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2648,"src":"6250:11:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2678,"name":"__decodeCallArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2734,"src":"6233:16:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (bytes calldata) pure returns (address[] memory,uint256[] memory,address[] memory,uint256[] memory,bytes memory)"}},"id":2680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6233:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(address[] memory,uint256[] memory,address[] memory,uint256[] memory,bytes memory)"}},"src":"6093:169:19","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2682,"nodeType":"ExpressionStatement","src":"6093:169:19"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2683,"name":"IIntegrationManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3636,"src":"6294:19:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IIntegrationManager_$3636_$","typeString":"type(contract IIntegrationManager)"}},"id":2684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SpendAssetsHandleType","nodeType":"MemberAccess","referencedDeclaration":3635,"src":"6294:41:19","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SpendAssetsHandleType_$3635_$","typeString":"type(enum IIntegrationManager.SpendAssetsHandleType)"}},"id":2685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Transfer","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6294:50:19","typeDescriptions":{"typeIdentifier":"t_enum$_SpendAssetsHandleType_$3635","typeString":"enum IIntegrationManager.SpendAssetsHandleType"}},{"argumentTypes":null,"id":2686,"name":"spendAssets_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2655,"src":"6358:12:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":2687,"name":"spendAssetAmounts_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2658,"src":"6384:18:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":2688,"name":"incomingAssets_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2661,"src":"6416:15:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":2689,"name":"minIncomingAssetAmounts_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2664,"src":"6445:24:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":2690,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6280:199:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_SpendAssetsHandleType_$3635_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(enum IIntegrationManager.SpendAssetsHandleType,address[] memory,uint256[] memory,address[] memory,uint256[] memory)"}},"functionReturnParameters":2665,"id":2691,"nodeType":"Return","src":"6273:206:19"}]},"baseFunctions":[2804],"documentation":{"id":2642,"nodeType":"StructuredDocumentation","src":"4883:633:19","text":"@notice Parses the expected assets in a particular action\n @param _selector The function selector for the callOnIntegration\n @param _actionData Data specific to this action\n @return spendAssetsHandleType_ A type that dictates how to handle granting\n the adapter access to spend assets (hardcoded to `Transfer`)\n @return spendAssets_ The assets to spend in the call\n @return spendAssetAmounts_ The max asset amounts to spend in the call\n @return incomingAssets_ The assets to receive in the call\n @return minIncomingAssetAmounts_ The min asset amounts to receive in the call"},"functionSelector":"c54efee5","implemented":true,"kind":"function","modifiers":[],"name":"parseAssetsForAction","overrides":{"id":2650,"nodeType":"OverrideSpecifier","overrides":[],"src":"5674:8:19"},"parameters":{"id":2649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2644,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":2693,"src":"5560:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2643,"name":"address","nodeType":"ElementaryTypeName","src":"5560:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2646,"mutability":"mutable","name":"_selector","nodeType":"VariableDeclaration","overrides":null,"scope":2693,"src":"5577:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2645,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5577:6:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":null,"visibility":"internal"},{"constant":false,"id":2648,"mutability":"mutable","name":"_actionData","nodeType":"VariableDeclaration","overrides":null,"scope":2693,"src":"5603:26:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2647,"name":"bytes","nodeType":"ElementaryTypeName","src":"5603:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"5550:85:19"},"returnParameters":{"id":2665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2652,"mutability":"mutable","name":"spendAssetsHandleType_","nodeType":"VariableDeclaration","overrides":null,"scope":2693,"src":"5713:64:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SpendAssetsHandleType_$3635","typeString":"enum IIntegrationManager.SpendAssetsHandleType"},"typeName":{"contractScope":null,"id":2651,"name":"IIntegrationManager.SpendAssetsHandleType","nodeType":"UserDefinedTypeName","referencedDeclaration":3635,"src":"5713:41:19","typeDescriptions":{"typeIdentifier":"t_enum$_SpendAssetsHandleType_$3635","typeString":"enum IIntegrationManager.SpendAssetsHandleType"}},"value":null,"visibility":"internal"},{"constant":false,"id":2655,"mutability":"mutable","name":"spendAssets_","nodeType":"VariableDeclaration","overrides":null,"scope":2693,"src":"5791:29:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2653,"name":"address","nodeType":"ElementaryTypeName","src":"5791:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2654,"length":null,"nodeType":"ArrayTypeName","src":"5791:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2658,"mutability":"mutable","name":"spendAssetAmounts_","nodeType":"VariableDeclaration","overrides":null,"scope":2693,"src":"5834:35:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2656,"name":"uint256","nodeType":"ElementaryTypeName","src":"5834:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2657,"length":null,"nodeType":"ArrayTypeName","src":"5834:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2661,"mutability":"mutable","name":"incomingAssets_","nodeType":"VariableDeclaration","overrides":null,"scope":2693,"src":"5883:32:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2659,"name":"address","nodeType":"ElementaryTypeName","src":"5883:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2660,"length":null,"nodeType":"ArrayTypeName","src":"5883:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2664,"mutability":"mutable","name":"minIncomingAssetAmounts_","nodeType":"VariableDeclaration","overrides":null,"scope":2693,"src":"5929:41:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2662,"name":"uint256","nodeType":"ElementaryTypeName","src":"5929:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2663,"length":null,"nodeType":"ArrayTypeName","src":"5929:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"5699:281:19"},"scope":2777,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2734,"nodeType":"FunctionDefinition","src":"6567:453:19","nodes":[],"body":{"id":2733,"nodeType":"Block","src":"6920:100:19","nodes":[],"statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2715,"name":"_actionData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"6948:11:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6962:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2716,"name":"address","nodeType":"ElementaryTypeName","src":"6962:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2718,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"6962:9:19","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"type(address[] memory)"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6973:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2719,"name":"uint256","nodeType":"ElementaryTypeName","src":"6973:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2721,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"6973:9:19","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6984:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2722,"name":"address","nodeType":"ElementaryTypeName","src":"6984:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2724,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"6984:9:19","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"type(address[] memory)"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6995:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2725,"name":"uint256","nodeType":"ElementaryTypeName","src":"6995:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2727,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"6995:9:19","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"argumentTypes":null,"id":2729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7006:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2728,"name":"bytes","nodeType":"ElementaryTypeName","src":"7006:5:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}}],"id":2730,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6961:51:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address[] memory),type(uint256[] memory),type(address[] memory),type(uint256[] memory),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address[] memory),type(uint256[] memory),type(address[] memory),type(uint256[] memory),type(bytes storage pointer))"}],"expression":{"argumentTypes":null,"id":2713,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6937:3:19","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6937:10:19","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6937:76:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(address[] memory,uint256[] memory,address[] memory,uint256[] memory,bytes memory)"}},"functionReturnParameters":2712,"id":2732,"nodeType":"Return","src":"6930:83:19"}]},"documentation":{"id":2694,"nodeType":"StructuredDocumentation","src":"6492:70:19","text":"@dev Helper to decode the encoded callOnIntegration call arguments"},"implemented":true,"kind":"function","modifiers":[],"name":"__decodeCallArgs","overrides":null,"parameters":{"id":2697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2696,"mutability":"mutable","name":"_actionData","nodeType":"VariableDeclaration","overrides":null,"scope":2734,"src":"6593:26:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2695,"name":"bytes","nodeType":"ElementaryTypeName","src":"6593:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"6592:28:19"},"returnParameters":{"id":2712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2700,"mutability":"mutable","name":"incomingAssets_","nodeType":"VariableDeclaration","overrides":null,"scope":2734,"src":"6680:32:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2698,"name":"address","nodeType":"ElementaryTypeName","src":"6680:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2699,"length":null,"nodeType":"ArrayTypeName","src":"6680:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2703,"mutability":"mutable","name":"minIncomingAssetsAmounts_","nodeType":"VariableDeclaration","overrides":null,"scope":2734,"src":"6726:42:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2701,"name":"uint256","nodeType":"ElementaryTypeName","src":"6726:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2702,"length":null,"nodeType":"ArrayTypeName","src":"6726:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2706,"mutability":"mutable","name":"spendAssets_","nodeType":"VariableDeclaration","overrides":null,"scope":2734,"src":"6782:29:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2704,"name":"address","nodeType":"ElementaryTypeName","src":"6782:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2705,"length":null,"nodeType":"ArrayTypeName","src":"6782:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2709,"mutability":"mutable","name":"spendAssetAmounts_","nodeType":"VariableDeclaration","overrides":null,"scope":2734,"src":"6825:35:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2707,"name":"uint256","nodeType":"ElementaryTypeName","src":"6825:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2708,"length":null,"nodeType":"ArrayTypeName","src":"6825:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2711,"mutability":"mutable","name":"externalCallsData_","nodeType":"VariableDeclaration","overrides":null,"scope":2734,"src":"6874:31:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2710,"name":"bytes","nodeType":"ElementaryTypeName","src":"6874:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"6666:249:19"},"scope":2777,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":2776,"nodeType":"FunctionDefinition","src":"7093:409:19","nodes":[],"body":{"id":2775,"nodeType":"Block","src":"7267:235:19","nodes":[],"statements":[{"expression":{"argumentTypes":null,"id":2760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2746,"name":"contracts_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"7278:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":2747,"name":"callsData_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2744,"src":"7290:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}}],"id":2748,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7277:24:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,bytes memory[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2751,"name":"_externalCallsData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2737,"src":"7315:18:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7336:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2752,"name":"address","nodeType":"ElementaryTypeName","src":"7336:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2754,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"7336:9:19","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"type(address[] memory)"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2756,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7347:5:19","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2755,"name":"bytes","nodeType":"ElementaryTypeName","src":"7347:5:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2757,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"7347:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"type(bytes memory[] memory)"}}],"id":2758,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7335:20:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_$","typeString":"tuple(type(address[] memory),type(bytes memory[] memory))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_$","typeString":"tuple(type(address[] memory),type(bytes memory[] memory))"}],"expression":{"argumentTypes":null,"id":2749,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7304:3:19","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7304:10:19","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":2759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7304:52:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,bytes memory[] memory)"}},"src":"7277:79:19","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2761,"nodeType":"ExpressionStatement","src":"7277:79:19"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2763,"name":"contracts_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"7374:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7374:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2765,"name":"callsData_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2744,"src":"7395:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":2766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7395:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7374:38:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"556e657175616c2065787465726e616c2063616c6c7320617272617973206c656e67746873","id":2768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7414:39:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_2af52529fed430f17a4f57aaf2b2e5efd652752f460c4549180b97a09616cd96","typeString":"literal_string \"Unequal external calls arrays lengths\""},"value":"Unequal external calls arrays lengths"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2af52529fed430f17a4f57aaf2b2e5efd652752f460c4549180b97a09616cd96","typeString":"literal_string \"Unequal external calls arrays lengths\""}],"id":2762,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7366:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7366:88:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2770,"nodeType":"ExpressionStatement","src":"7366:88:19"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2771,"name":"contracts_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2741,"src":"7472:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":2772,"name":"callsData_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2744,"src":"7484:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}}],"id":2773,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7471:24:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,bytes memory[] memory)"}},"functionReturnParameters":2745,"id":2774,"nodeType":"Return","src":"7464:31:19"}]},"documentation":{"id":2735,"nodeType":"StructuredDocumentation","src":"7026:62:19","text":"@dev Helper to decode the stack of external contract calls"},"implemented":true,"kind":"function","modifiers":[],"name":"__decodeExternalCallsData","overrides":null,"parameters":{"id":2738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2737,"mutability":"mutable","name":"_externalCallsData","nodeType":"VariableDeclaration","overrides":null,"scope":2776,"src":"7128:31:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2736,"name":"bytes","nodeType":"ElementaryTypeName","src":"7128:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"7127:33:19"},"returnParameters":{"id":2745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2741,"mutability":"mutable","name":"contracts_","nodeType":"VariableDeclaration","overrides":null,"scope":2776,"src":"7207:27:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2739,"name":"address","nodeType":"ElementaryTypeName","src":"7207:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2740,"length":null,"nodeType":"ArrayTypeName","src":"7207:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2744,"mutability":"mutable","name":"callsData_","nodeType":"VariableDeclaration","overrides":null,"scope":2776,"src":"7236:25:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2742,"name":"bytes","nodeType":"ElementaryTypeName","src":"7236:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2743,"length":null,"nodeType":"ArrayTypeName","src":"7236:7:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"value":null,"visibility":"internal"}],"src":"7206:56:19"},"scope":2777,"stateMutability":"pure","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":2434,"name":"AdapterBase","nodeType":"UserDefinedTypeName","referencedDeclaration":127,"src":"835:11:19","typeDescriptions":{"typeIdentifier":"t_contract$_AdapterBase_$127","typeString":"contract AdapterBase"}},"id":2435,"nodeType":"InheritanceSpecifier","src":"835:11:19"}],"contractDependencies":[127,2805,2881,3231],"contractKind":"contract","documentation":{"id":2433,"nodeType":"StructuredDocumentation","src":"493:307:19","text":" A generic adapter for Enzyme vault with our own guard mechanism.\n - Guard checks the asset manager cannot perform actions\n that are not allowed (withdraw, trade wrong tokens)\n - Governance address can still perform hese actions\n - Adapter is associated with a specific vault"},"fullyImplemented":true,"linearizedBaseContracts":[2777,127,3231,2881,2805],"name":"GuardedGenericAdapter","scope":2778}],"license":null},"id":19} \ No newline at end of file diff --git a/eth_defi/enzyme/generic_adapter_vault.py b/eth_defi/enzyme/generic_adapter_vault.py index dc45497d..7b0e6c36 100644 --- a/eth_defi/enzyme/generic_adapter_vault.py +++ b/eth_defi/enzyme/generic_adapter_vault.py @@ -34,6 +34,8 @@ def deploy_vault_with_generic_adapter( fund_symbol="EXAMPLE", whitelisted_assets: Collection[TokenDetails] | None = None, etherscan_api_key: str | None = None, + production=False, + meta: str = "", ) -> Vault: """Deploy an Enzyme vault and make it secure. @@ -93,6 +95,12 @@ def deploy_vault_with_generic_adapter( :param etherscan_api_key: Needed to verify deployed contracts. + :param production: + Production flag set on `GuardedGenericAdapterDeployed` event. + + :param meta: + Metadata for `GuardedGenericAdapterDeployed` event. + :return: Freshly deployed vault """ @@ -196,7 +204,11 @@ def deploy_vault_with_generic_adapter( # Give generic adapter back reference to the vault assert vault.functions.getCreator().call() != ZERO_ADDRESS, f"Bad vault creator {vault.functions.getCreator().call()}" - tx_hash = generic_adapter.functions.bindVault(vault.address).transact({"from": deployer.address}) + tx_hash = generic_adapter.functions.bindVault( + vault.address, + production, + meta, + ).transact({"from": deployer.address}) assert_transaction_success_with_explanation(web3, tx_hash) receipt = web3.eth.get_transaction_receipt(tx_hash) diff --git a/scripts/enzyme/deploy-vault.py b/scripts/enzyme/deploy-vault.py index 22d36fa2..7c51725c 100644 --- a/scripts/enzyme/deploy-vault.py +++ b/scripts/enzyme/deploy-vault.py @@ -40,6 +40,8 @@ .. code-block:: shell export SIMULATE=true + # Set production=true flag - affects GuardedGenericAdapterDeployed event + export PRODUCTION=true export FUND_NAME="TradingStrategy.ai ETH Breakpoint I" export FUND_SYMBOL=TS1 export TERMS_OF_SERVICE=0xDCD7C644a6AA72eb2f86781175b18ADc30Aa4f4d @@ -94,6 +96,7 @@ def main(): fund_symbol = os.environ["FUND_SYMBOL"] etherscan_api_key = os.environ.get("ETHERSCAN_API_KEY") simulate = True if os.environ.get("SIMULATE", "").strip() else False + production = True if os.environ.get("PRODUCTION", "").strip() else False if simulate: logger.info("Simulating deployment") @@ -179,6 +182,7 @@ def main(): fund_name=fund_name, fund_symbol=fund_symbol, whitelisted_assets=whitelisted_assets, + production=production, ) if anvil: