A malicious operator can drain the vault funds in one transaction
The vault operator can swap tokens using the `trade()` function. They pass the following structure for each trade:\\n```\\n         struct tradeInput { \\n             address spendToken;\\n               address receiveToken;\\n                 uint256 spendAmt;\\n                   uint256 receiveAmtMin;\\n                address routerAddress;\\n         uint256 pathIndex;\\n         }\\n```\\n\\nNotably, receiveAmtMin is used to guarantee acceptable slippage. An operator can simply pass 0 to make sure the trade is executed. This allows an operator to steal all the funds in the vault by architecting a sandwich attack.\\nFlashloan a large amount of funds\\nSkew the token proportions in a pool which can be used for trading, by almost completely depleting the target token.\\nPerform the trade at >99% slippage\\nSell target tokens for source tokens on the manipulated pool, returning to the original ratio.\\nPay off the flashloan, and keep the tokens traded at 99% slippage. In fact, this attack can be done in one TX, different to most sandwich attacks.
The contract should enforce sensible slippage parameters.
```\\n         struct tradeInput { \\n             address spendToken;\\n               address receiveToken;\\n                 uint256 spendAmt;\\n                   uint256 receiveAmtMin;\\n                address routerAddress;\\n         uint256 pathIndex;\\n         }\\n```\\n