Harvester.harvest swaps have no slippage parameters
As part of the vault strategy, all reward tokens for staking in the Convex ETH-stETH pool are claimed and swapped into ETH. The swaps for these tokens are done with no slippage at the moment, i.e. the expected output amount for all of them is given as 0.\\nIn particular, one reward token that is most susceptible to slippage is LDO, and its swap is implemented through the Uniswap router:\\n```\\nfunction \\_swapLidoForWETH(uint256 amountToSwap) internal {\\n    IUniswapSwapRouter.ExactInputSingleParams\\n        memory params = IUniswapSwapRouter.ExactInputSingleParams({\\n            tokenIn: address(ldo),\\n            tokenOut: address(weth),\\n            fee: UNISWAP\\_FEE,\\n            recipient: address(this),\\n            deadline: block.timestamp,\\n            amountIn: amountToSwap,\\n            amountOutMinimum: 0,\\n            sqrtPriceLimitX96: 0\\n        });\\n    uniswapRouter.exactInputSingle(params);\\n}\\n```\\n\\nThe swap is called with `amountOutMinimum: 0`, meaning that there is no slippage protection in this swap. This could result in a significant loss of yield from this reward as MEV bots could “sandwich” this swap by manipulating the price before this transaction and immediately reversing their action after the transaction, profiting at the expense of our swap. Moreover, the Uniswap pools seem to have low liquidity for the LDO token as opposed to Balancer or Sushiswap, further magnifying slippage issues and susceptibility to frontrunning.\\nThe other two tokens - CVX and CRV - are being swapped through their Curve pools, which have higher liquidity and are less susceptible to slippage. Nonetheless, MEV strategies have been getting more advanced and calling these swaps with 0 as expected output may place these transactions in danger of being frontrun and “sandwiched” as well.\\n```\\nif (cvxBalance > 0) {\\n    cvxeth.exchange(1, 0, cvxBalance, 0, false);\\n}\\n// swap CRV to WETH\\nif (crvBalance > 0) {\\n    crveth.exchange(1, 0, crvBalance, 0, false);\\n}\\n```\\n\\nIn these calls `.exchange` , the last `0` is the `min_dy` argument in the Curve pools swap functions that represents the minimum expected amount of tokens received after the swap, which is `0` in our case.
Introduce some slippage parameters into the swaps.
```\\nfunction \\_swapLidoForWETH(uint256 amountToSwap) internal {\\n    IUniswapSwapRouter.ExactInputSingleParams\\n        memory params = IUniswapSwapRouter.ExactInputSingleParams({\\n            tokenIn: address(ldo),\\n            tokenOut: address(weth),\\n            fee: UNISWAP\\_FEE,\\n            recipient: address(this),\\n            deadline: block.timestamp,\\n            amountIn: amountToSwap,\\n            amountOutMinimum: 0,\\n            sqrtPriceLimitX96: 0\\n        });\\n    uniswapRouter.exactInputSingle(params);\\n}\\n```\\n