Modify Assignment 5 to: Replace the formatted output method (toString) with an overloaded output/insertion operator, and modify the driver to use the overloaded operator. Incorporate the capability to access movies by the movie number or by a search string, if this wasn't part of your Assignment 5. Replace the getMovie(int) [or your solution equivalent] with an overloaded subscript operator ([ ]), which takes an integer and returns a Movie (or Movie reference). Account for an invalid movie number. HEADER FILE // Movie.h #ifndef MOVIE_H #define MOVIE_H #include using namespace std; class Movie { // data is private by default string title, studio; long long boxOffice[3]; // World, US, non-US short rank[3], releaseYear; // World, US, non-US enum unit {WORLD, US, NON_US}; public: Movie(); Movie(string); string getTitle() const; string getStudio() const; long long getWorldBoxOffice() const; long long getUSBoxOffice() const; long long getNonUSBoxOffice() const; int getWorldRank() const; int getUSRank() const; int getNonUSRank() const; int getReleaseYear() const; string toString() const; private: Movie(const Movie &); // private copy constructor blocks invocation }; #endif HEADER FILE // Movies.h #ifndef MOVIES_H #define MOVIES_H #include "Movie.h" // include Movie class definition #include using namespace std; class Movies { // data is private by default static const int MAX_MOVIES = 1000; Movie *movies; short movieCnt; public: Movies(string); int getMovieCount() const; const Movie * getMovie(string, int&) const; const Movie * getMovie(int) const; ~Movies(); private: void loadMovies(string); string myToLower(string) const; void reSize(); }; #endif CPP FILE // MovieInfoApp.cpp #include "Movie.h" // include Movie class definition #include "Movies.h" // include Movies class definition #include #include #include #include using namespace std; void main() { Movies movies("Box Office Mojo.txt"); if(movies.getMovieCount() > 0) { string movieCode; cout << "Please enter the movie search string,\nentering a leading # to retrieve by movie number" << "\n or a ^ to get the next movie (press Enter to exit): "; getline(cin, movieCode); if (movieCode.length() > 0) { int mn = 0; const Movie * m; do { if(movieCode[0] != '#' && movieCode[0] != '^') m = movies.getMovie(movieCode, mn); else if(movieCode[0] == '#'){ // get by number mn = stoi(movieCode.substr(1)); m = movies.getMovie(mn); } else if(movieCode[0] == '^') // get next movie m = movies.getMovie(++mn); if(m != nullptr) { cout << m->toString() << "\n"; if(m->getWorldBoxOffice() > 0) cout << setprecision(1) << fixed << "\n\tNon-US to World Ratio:\t" << (m->getNonUSBoxOffice() * 100.0) / m->getWorldBoxOffice() << "%\n" << endl; else cout << "No ratio due to zero World Box Office\n"; } else { cout << "\n Movie not found!\n\n" << endl; mn = 0; } cout << "Please enter the movie search string,\nentering a leading.