BondAggregator.liveMarketsBy eventually will revert because of block gas limit
BondAggregator.liveMarketsBy eventually will revert because of block gas limit\\n```\\n    function liveMarketsBy(address owner_) external view returns (uint256[] memory) {\\n        uint256 count;\\n        IBondAuctioneer auctioneer;\\n        for (uint256 i; i < marketCounter; ++i) {\\n            auctioneer = marketsToAuctioneers[i];\\n            if (auctioneer.isLive(i) && auctioneer.ownerOf(i) == owner_) {\\n                ++count;\\n            }\\n        }\\n\\n\\n        uint256[] memory ids = new uint256[](count);\\n        count = 0;\\n        for (uint256 i; i < marketCounter; ++i) {\\n            auctioneer = marketsToAuctioneers[i];\\n            if (auctioneer.isLive(i) && auctioneer.ownerOf(i) == owner_) {\\n                ids[count] = i;\\n                ++count;\\n            }\\n        }\\n\\n\\n        return ids;\\n    }\\n```\\n\\nBondAggregator.liveMarketsBy function is looping through all markets and does at least `marketCounter` amount of external calls(when all markets are not live) and at most 4 * `marketCounter` external calls(when all markets are live and owner matches. This all consumes a lot of gas, even that is called from view function. And each new market increases loop size.\\nThat means that after some time `marketsToAuctioneers` mapping will be big enough that the gas amount sent for view/pure function will be not enough to retrieve all data(50 million gas according to this). So the function will revert.\\nAlso similar problem is with `findMarketFor`, `marketsFor` and `liveMarketsFor` functions.
Remove not active markets or some start and end indices to functions.
Functions will always revert and whoever depends on it will not be able to get information.
```\\n    function liveMarketsBy(address owner_) external view returns (uint256[] memory) {\\n        uint256 count;\\n        IBondAuctioneer auctioneer;\\n        for (uint256 i; i < marketCounter; ++i) {\\n            auctioneer = marketsToAuctioneers[i];\\n            if (auctioneer.isLive(i) && auctioneer.ownerOf(i) == owner_) {\\n                ++count;\\n            }\\n        }\\n\\n\\n        uint256[] memory ids = new uint256[](count);\\n        count = 0;\\n        for (uint256 i; i < marketCounter; ++i) {\\n            auctioneer = marketsToAuctioneers[i];\\n            if (auctioneer.isLive(i) && auctioneer.ownerOf(i) == owner_) {\\n                ids[count] = i;\\n                ++count;\\n            }\\n        }\\n\\n\\n        return ids;\\n    }\\n```\\n