Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- stdout:
- sh ./doit.sh
- Makefile:4: recipe for target 'build' failed
- stderr:
- test_31415926.cpp: In function ‘void testConstantOperations()’:
- test_31415926.cpp:280:20: error: passing ‘const Polynomial<int>’ as ‘this’ argument discards qualifiers [-fpermissive]
- unused(a.begin());
- ^
- In file included from test_31415926.cpp:2:
- poly.h:38:45: note: in call to ‘typename std::vector<T>::const_iterator Polynomial<T>::begin() [with T = int; typename std::vector<T>::const_iterator = __gnu_cxx::__normal_iterator<const int*, std::vector<int, std::allocator<int> > >]’
- typename std::vector<T>::const_iterator begin() {
- ^~~~~
- test_31415926.cpp:281:18: error: passing ‘const Polynomial<int>’ as ‘this’ argument discards qualifiers [-fpermissive]
- unused(a.end());
- ^
- In file included from test_31415926.cpp:2:
- poly.h:43:45: note: in call to ‘typename std::vector<T>::const_iterator Polynomial<T>::end() [with T = int; typename std::vector<T>::const_iterator = __gnu_cxx::__normal_iterator<const int*, std::vector<int, std::allocator<int> > >]’
- typename std::vector<T>::const_iterator end() {
- ^~~
- poly.h: In instantiation of ‘Polynomial<T> Polynomial<T>::operator+(const Polynomial<T>&) const [with T = int]’:
- test_31415926.cpp:275:16: required from here
- poly.h:99:30: error: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Werror=sign-compare]
- for (size_t i = 0; i < new_d1.Degree() + 1; ++i) {
- ~~^~~~~~~~~~~~~~~~~~~~~
- poly.h:101:19: error: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Werror=sign-compare]
- if (i > new_d2.Degree()) {
- poly.h: In instantiation of ‘Polynomial<T> Polynomial<T>::operator-(const Polynomial<T>&) const [with T = int]’:
- test_31415926.cpp:276:16: required from here
- poly.h:147:30: error: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Werror=sign-compare]
- for (size_t i = 0; i < new_d1.Degree() + 1; ++i) {
- ~~^~~~~~~~~~~~~~~~~~~~~
- poly.h:149:19: error: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Werror=sign-compare]
- if (i > new_d2.Degree()) {
- poly.h: In instantiation of ‘bool Polynomial<T>::operator==(const Polynomial<T>&) const [with T = int]’:
- test_31415926.cpp:277:17: required from here
- poly.h:72:30: error: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Werror=sign-compare]
- for (size_t i = 0; i < Degree() + 1; ++i) {
- ~~^~~~~~~~~~~~~~
- poly.h: In instantiation of ‘const T& Polynomial<T>::operator[](size_t) const [with T = int; size_t = long unsigned int]’:
- test_31415926.cpp:282:15: required from here
- poly.h:57:15: error: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Werror=sign-compare]
- if (i > Degree()) {
- poly.h:58:20: error: returning reference to temporary [-Werror=return-local-addr]
- return 0;
- ^
- test_31415926.cpp: In instantiation of ‘void runTests(const string&) [with T = int; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
- test_31415926.cpp:292:24: required from here
- test_31415926.cpp:250:33: error: no matching function for call to ‘Polynomial<int>::Polynomial(std::__cxx11::list<int, std::allocator<int> >::iterator, std::__cxx11::list<int, std::allocator<int> >::iterator)’
- Polynomial<T> p(first), q(second.begin(), second.end());
- ^
- In file included from test_31415926.cpp:2:
- poly.h:24:5: note: candidate: ‘Polynomial<T>::Polynomial(typename std::vector<T>::iterator, typename std::vector<T>::iterator) [with T = int; typename std::vector<T>::iterator = __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >]’
- Polynomial(typename std::vector<T>::iterator d, typename std::vector<T>::iterator g) {
- ^~~~~~~~~~
- poly.h:24:5: note: no known conversion for argument 1 from ‘std::__cxx11::list<int, std::allocator<int> >::iterator’ {aka ‘std::_List_iterator<int>’} to ‘std::vector<int, std::allocator<int> >::iterator’ {aka ‘__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >’}
- poly.h:19:5: note: candidate: ‘Polynomial<T>::Polynomial(const T&) [with T = int]’
- Polynomial(const T& num) {
- ^~~~~~~~~~
- poly.h:19:5: note: candidate expects 1 argument, 2 provided
- poly.h:14:5: note: candidate: ‘Polynomial<T>::Polynomial(const std::vector<T>&) [with T = int]’
- Polynomial(const std::vector<T>& d) {
- ^~~~~~~~~~
- poly.h:14:5: note: candidate expects 1 argument, 2 provided
- poly.h:10:5: note: candidate: ‘Polynomial<T>::Polynomial() [with T = int]’
- Polynomial() {
- ^~~~~~~~~~
- poly.h:10:5: note: candidate expects 0 arguments, 2 provided
- poly.h:5:7: note: candidate: ‘Polynomial<int>::Polynomial(const Polynomial<int>&)’
- class Polynomial {
- ^~~~~~~~~~
- poly.h:5:7: note: candidate expects 1 argument, 2 provided
- poly.h:5:7: note: candidate: ‘Polynomial<int>::Polynomial(Polynomial<int>&&)’
- poly.h:5:7: note: candidate expects 1 argument, 2 provided
- test_31415926.cpp: In instantiation of ‘void runTests(const string&) [with T = long long int; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
- test_31415926.cpp:293:30: required from here
- test_31415926.cpp:250:33: error: no matching function for call to ‘Polynomial<long long int>::Polynomial(std::__cxx11::list<long long int, std::allocator<long long int> >::iterator, std::__cxx11::list<long long int, std::allocator<long long int> >::iterator)’
- Polynomial<T> p(first), q(second.begin(), second.end());
- ^
- In file included from test_31415926.cpp:2:
- poly.h:24:5: note: candidate: ‘Polynomial<T>::Polynomial(typename std::vector<T>::iterator, typename std::vector<T>::iterator) [with T = long long int; typename std::vector<T>::iterator = __gnu_cxx::__normal_iterator<long long int*, std::vector<long long int, std::allocator<long long int> > >]’
- Polynomial(typename std::vector<T>::iterator d, typename std::vector<T>::iterator g) {
- ^~~~~~~~~~
- poly.h:24:5: note: no known conversion for argument 1 from ‘std::__cxx11::list<long long int, std::allocator<long long int> >::iterator’ {aka ‘std::_List_iterator<long long int>’} to ‘std::vector<long long int, std::allocator<long long int> >::iterator’ {aka ‘__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int, std::allocator<long long int> > >’}
- poly.h:19:5: note: candidate: ‘Polynomial<T>::Polynomial(const T&) [with T = long long int]’
- Polynomial(const T& num) {
- ^~~~~~~~~~
- poly.h:19:5: note: candidate expects 1 argument, 2 provided
- poly.h:14:5: note: candidate: ‘Polynomial<T>::Polynomial(const std::vector<T>&) [with T = long long int]’
- Polynomial(const std::vector<T>& d) {
- ^~~~~~~~~~
- poly.h:14:5: note: candidate expects 1 argument, 2 provided
- poly.h:10:5: note: candidate: ‘Polynomial<T>::Polynomial() [with T = long long int]’
- Polynomial() {
- ^~~~~~~~~~
- poly.h:10:5: note: candidate expects 0 arguments, 2 provided
- poly.h:5:7: note: candidate: ‘Polynomial<long long int>::Polynomial(const Polynomial<long long int>&)’
- class Polynomial {
- ^~~~~~~~~~
- poly.h:5:7: note: candidate expects 1 argument, 2 provided
- poly.h:5:7: note: candidate: ‘Polynomial<long long int>::Polynomial(Polynomial<long long int>&&)’
- poly.h:5:7: note: candidate expects 1 argument, 2 provided
- test_31415926.cpp: In instantiation of ‘void runTests(const string&) [with T = double; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
- test_31415926.cpp:294:27: required from here
- test_31415926.cpp:250:33: error: no matching function for call to ‘Polynomial<double>::Polynomial(std::__cxx11::list<double, std::allocator<double> >::iterator, std::__cxx11::list<double, std::allocator<double> >::iterator)’
- Polynomial<T> p(first), q(second.begin(), second.end());
- ^
- In file included from test_31415926.cpp:2:
- poly.h:24:5: note: candidate: ‘Polynomial<T>::Polynomial(typename std::vector<T>::iterator, typename std::vector<T>::iterator) [with T = double; typename std::vector<T>::iterator = __gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >]’
- Polynomial(typename std::vector<T>::iterator d, typename std::vector<T>::iterator g) {
- ^~~~~~~~~~
- poly.h:24:5: note: no known conversion for argument 1 from ‘std::__cxx11::list<double, std::allocator<double> >::iterator’ {aka ‘std::_List_iterator<double>’} to ‘std::vector<double, std::allocator<double> >::iterator’ {aka ‘__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >’}
- poly.h:19:5: note: candidate: ‘Polynomial<T>::Polynomial(const T&) [with T = double]’
- Polynomial(const T& num) {
- ^~~~~~~~~~
- poly.h:19:5: note: candidate expects 1 argument, 2 provided
- poly.h:14:5: note: candidate: ‘Polynomial<T>::Polynomial(const std::vector<T>&) [with T = double]’
- Polynomial(const std::vector<T>& d) {
- ^~~~~~~~~~
- poly.h:14:5: note: candidate expects 1 argument, 2 provided
- poly.h:10:5: note: candidate: ‘Polynomial<T>::Polynomial() [with T = double]’
- Polynomial() {
- ^~~~~~~~~~
- poly.h:10:5: note: candidate expects 0 arguments, 2 provided
- poly.h:5:7: note: candidate: ‘Polynomial<double>::Polynomial(const Polynomial<double>&)’
- class Polynomial {
- ^~~~~~~~~~
- poly.h:5:7: note: candidate expects 1 argument, 2 provided
- poly.h:5:7: note: candidate: ‘Polynomial<double>::Polynomial(Polynomial<double>&&)’
- poly.h:5:7: note: candidate expects 1 argument, 2 provided
- test_31415926.cpp: In instantiation of ‘void runTests(const string&) [with T = NumberWrapper<int>; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
- test_31415926.cpp:295:39: required from here
- test_31415926.cpp:250:33: error: no matching function for call to ‘Polynomial<NumberWrapper<int> >::Polynomial(std::__cxx11::list<NumberWrapper<int>, std::allocator<NumberWrapper<int> > >::iterator, std::__cxx11::list<NumberWrapper<int>, std::allocator<NumberWrapper<int> > >::iterator)’
- Polynomial<T> p(first), q(second.begin(), second.end());
- ^
- In file included from test_31415926.cpp:2:
- poly.h:24:5: note: candidate: ‘Polynomial<T>::Polynomial(typename std::vector<T>::iterator, typename std::vector<T>::iterator) [with T = NumberWrapper<int>; typename std::vector<T>::iterator = __gnu_cxx::__normal_iterator<NumberWrapper<int>*, std::vector<NumberWrapper<int>, std::allocator<NumberWrapper<int> > > >]’
- Polynomial(typename std::vector<T>::iterator d, typename std::vector<T>::iterator g) {
- ^~~~~~~~~~
- poly.h:24:5: note: no known conversion for argument 1 from ‘std::__cxx11::list<NumberWrapper<int>, std::allocator<NumberWrapper<int> > >::iterator’ {aka ‘std::_List_iterator<NumberWrapper<int> >’} to ‘std::vector<NumberWrapper<int>, std::allocator<NumberWrapper<int> > >::iterator’ {aka ‘__gnu_cxx::__normal_iterator<NumberWrapper<int>*, std::vector<NumberWrapper<int>, std::allocator<NumberWrapper<int> > > >’}
- poly.h:19:5: note: candidate: ‘Polynomial<T>::Polynomial(const T&) [with T = NumberWrapper<int>]’
- Polynomial(const T& num) {
- ^~~~~~~~~~
- poly.h:19:5: note: candidate expects 1 argument, 2 provided
- poly.h:14:5: note: candidate: ‘Polynomial<T>::Polynomial(const std::vector<T>&) [with T = NumberWrapper<int>]’
- Polynomial(const std::vector<T>& d) {
- ^~~~~~~~~~
- poly.h:14:5: note: candidate expects 1 argument, 2 provided
- poly.h:10:5: note: candidate: ‘Polynomial<T>::Polynomial() [with T = NumberWrapper<int>]’
- Polynomial() {
- ^~~~~~~~~~
- poly.h:10:5: note: candidate expects 0 arguments, 2 provided
- poly.h:5:7: note: candidate: ‘Polynomial<NumberWrapper<int> >::Polynomial(const Polynomial<NumberWrapper<int> >&)’
- class Polynomial {
- ^~~~~~~~~~
- poly.h:5:7: note: candidate expects 1 argument, 2 provided
- poly.h:5:7: note: candidate: ‘Polynomial<NumberWrapper<int> >::Polynomial(Polynomial<NumberWrapper<int> >&&)’
- poly.h:5:7: note: candidate expects 1 argument, 2 provided
- test_31415926.cpp: In instantiation of ‘void runTests(const string&) [with T = NumberWrapper<double>; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
- test_31415926.cpp:296:42: required from here
- test_31415926.cpp:250:33: error: no matching function for call to ‘Polynomial<NumberWrapper<double> >::Polynomial(std::__cxx11::list<NumberWrapper<double>, std::allocator<NumberWrapper<double> > >::iterator, std::__cxx11::list<NumberWrapper<double>, std::allocator<NumberWrapper<double> > >::iterator)’
- Polynomial<T> p(first), q(second.begin(), second.end());
- ^
- In file included from test_31415926.cpp:2:
- poly.h:24:5: note: candidate: ‘Polynomial<T>::Polynomial(typename std::vector<T>::iterator, typename std::vector<T>::iterator) [with T = NumberWrapper<double>; typename std::vector<T>::iterator = __gnu_cxx::__normal_iterator<NumberWrapper<double>*, std::vector<NumberWrapper<double>, std::allocator<NumberWrapper<double> > > >]’
- Polynomial(typename std::vector<T>::iterator d, typename std::vector<T>::iterator g) {
- ^~~~~~~~~~
- poly.h:24:5: note: no known conversion for argument 1 from ‘std::__cxx11::list<NumberWrapper<double>, std::allocator<NumberWrapper<double> > >::iterator’ {aka ‘std::_List_iterator<NumberWrapper<double> >’} to ‘std::vector<NumberWrapper<double>, std::allocator<NumberWrapper<double> > >::iterator’ {aka ‘__gnu_cxx::__normal_iterator<NumberWrapper<double>*, std::vector<NumberWrapper<double>, std::allocator<NumberWrapper<double> > > >’}
- poly.h:19:5: note: candidate: ‘Polynomial<T>::Polynomial(const T&) [with T = NumberWrapper<double>]’
- Polynomial(const T& num) {
- ^~~~~~~~~~
- poly.h:19:5: note: candidate expects 1 argument, 2 provided
- poly.h:14:5: note: candidate: ‘Polynomial<T>::Polynomial(const std::vector<T>&) [with T = NumberWrapper<double>]’
- Polynomial(const std::vector<T>& d) {
- ^~~~~~~~~~
- poly.h:14:5: note: candidate expects 1 argument, 2 provided
- poly.h:10:5: note: candidate: ‘Polynomial<T>::Polynomial() [with T = NumberWrapper<double>]’
- Polynomial() {
- ^~~~~~~~~~
- poly.h:10:5: note: candidate expects 0 arguments, 2 provided
- poly.h:5:7: note: candidate: ‘Polynomial<NumberWrapper<double> >::Polynomial(const Polynomial<NumberWrapper<double> >&)’
- class Polynomial {
- ^~~~~~~~~~
- poly.h:5:7: note: candidate expects 1 argument, 2 provided
- poly.h:5:7: note: candidate: ‘Polynomial<NumberWrapper<double> >::Polynomial(Polynomial<NumberWrapper<double> >&&)’
- poly.h:5:7: note: candidate expects 1 argument, 2 provided
- test_31415926.cpp: In instantiation of ‘void runTests(const string&) [with T = Rational; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
- test_31415926.cpp:297:29: required from here
- test_31415926.cpp:250:33: error: no matching function for call to ‘Polynomial<Rational>::Polynomial(std::__cxx11::list<Rational, std::allocator<Rational> >::iterator, std::__cxx11::list<Rational, std::allocator<Rational> >::iterator)’
- Polynomial<T> p(first), q(second.begin(), second.end());
- ^
- In file included from test_31415926.cpp:2:
- poly.h:24:5: note: candidate: ‘Polynomial<T>::Polynomial(typename std::vector<T>::iterator, typename std::vector<T>::iterator) [with T = Rational; typename std::vector<T>::iterator = __gnu_cxx::__normal_iterator<Rational*, std::vector<Rational, std::allocator<Rational> > >]’
- Polynomial(typename std::vector<T>::iterator d, typename std::vector<T>::iterator g) {
- ^~~~~~~~~~
- poly.h:24:5: note: no known conversion for argument 1 from ‘std::__cxx11::list<Rational, std::allocator<Rational> >::iterator’ {aka ‘std::_List_iterator<Rational>’} to ‘std::vector<Rational, std::allocator<Rational> >::iterator’ {aka ‘__gnu_cxx::__normal_iterator<Rational*, std::vector<Rational, std::allocator<Rational> > >’}
- poly.h:19:5: note: candidate: ‘Polynomial<T>::Polynomial(const T&) [with T = Rational]’
- Polynomial(const T& num) {
- ^~~~~~~~~~
- poly.h:19:5: note: candidate expects 1 argument, 2 provided
- poly.h:14:5: note: candidate: ‘Polynomial<T>::Polynomial(const std::vector<T>&) [with T = Rational]’
- Polynomial(const std::vector<T>& d) {
- ^~~~~~~~~~
- poly.h:14:5: note: candidate expects 1 argument, 2 provided
- poly.h:10:5: note: candidate: ‘Polynomial<T>::Polynomial() [with T = Rational]’
- Polynomial() {
- ^~~~~~~~~~
- poly.h:10:5: note: candidate expects 0 arguments, 2 provided
- poly.h:5:7: note: candidate: ‘Polynomial<Rational>::Polynomial(const Polynomial<Rational>&)’
- class Polynomial {
- ^~~~~~~~~~
- poly.h:5:7: note: candidate expects 1 argument, 2 provided
- poly.h:5:7: note: candidate: ‘Polynomial<Rational>::Polynomial(Polynomial<Rational>&&)’
- poly.h:5:7: note: candidate expects 1 argument, 2 provided
- poly.h: In instantiation of ‘T& Polynomial<T>::operator[](size_t) [with T = int; size_t = long unsigned int]’:
- poly.h:100:28: required from ‘Polynomial<T> Polynomial<T>::operator+(const Polynomial<T>&) const [with T = int]’
- test_31415926.cpp:275:16: required from here
- poly.h:49:15: error: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Werror=sign-compare]
- if (i > Degree()) {
- poly.h: In instantiation of ‘void Polynomial<T>::updeted() [with T = NumberWrapper<int>]’:
- poly.h:16:9: required from ‘Polynomial<T>::Polynomial(const std::vector<T>&) [with T = NumberWrapper<int>]’
- test_31415926.cpp:250:23: required from ‘void runTests(const string&) [with T = NumberWrapper<int>; std::__cxx11::string = std::__cxx11::basic_string<char>]’
- test_31415926.cpp:295:39: required from here
- poly.h:33:59: error: no match for ‘operator==’ (operand types are ‘__gnu_cxx::__alloc_traits<std::allocator<NumberWrapper<int> >, NumberWrapper<int> >::value_type’ {aka ‘NumberWrapper<int>’} and ‘int’)
- while ((!(data.empty())) && data[data.size() - 1] == 0) {
- ~~~~~~~~~~~~~~~~~~~~~~^~~~
- poly.h:33:59: note: candidate: ‘operator==(int, int)’ <built-in>
- poly.h:33:59: note: no known conversion for argument 1 from ‘__gnu_cxx::__alloc_traits<std::allocator<NumberWrapper<int> >, NumberWrapper<int> >::value_type’ {aka ‘NumberWrapper<int>’} to ‘int’
- In file included from test_31415926.cpp:3:
- number_wrapper.h:88:10: note: candidate: ‘bool NumberWrapper<T>::operator==(const NumberWrapper<T>&) const [with T = int]’
- bool operator==(const NumberWrapper& other) const {
- ^~~~~~~~
- number_wrapper.h:88:10: note: no known conversion for argument 1 from ‘int’ to ‘const NumberWrapper<int>&’
- In file included from test_31415926.cpp:4:
- rational.h:114:6: note: candidate: ‘bool operator==(const Rational&, const Rational&)’
- bool operator == (const Rational& p, const Rational& q) {
- ^~~~~~~~
- rational.h:114:6: note: no known conversion for argument 1 from ‘__gnu_cxx::__alloc_traits<std::allocator<NumberWrapper<int> >, NumberWrapper<int> >::value_type’ {aka ‘NumberWrapper<int>’} to ‘const Rational&’
- In file included from test_31415926.cpp:2:
- poly.h: In instantiation of ‘void Polynomial<T>::updeted() [with T = NumberWrapper<double>]’:
- poly.h:16:9: required from ‘Polynomial<T>::Polynomial(const std::vector<T>&) [with T = NumberWrapper<double>]’
- test_31415926.cpp:250:23: required from ‘void runTests(const string&) [with T = NumberWrapper<double>; std::__cxx11::string = std::__cxx11::basic_string<char>]’
- test_31415926.cpp:296:42: required from here
- poly.h:33:59: error: no match for ‘operator==’ (operand types are ‘__gnu_cxx::__alloc_traits<std::allocator<NumberWrapper<double> >, NumberWrapper<double> >::value_type’ {aka ‘NumberWrapper<double>’} and ‘int’)
- while ((!(data.empty())) && data[data.size() - 1] == 0) {
- ~~~~~~~~~~~~~~~~~~~~~~^~~~
- poly.h:33:59: note: candidate: ‘operator==(double, int)’ <built-in>
- poly.h:33:59: note: no known conversion for argument 1 from ‘__gnu_cxx::__alloc_traits<std::allocator<NumberWrapper<double> >, NumberWrapper<double> >::value_type’ {aka ‘NumberWrapper<double>’} to ‘double’
- In file included from test_31415926.cpp:3:
- number_wrapper.h:88:10: note: candidate: ‘bool NumberWrapper<T>::operator==(const NumberWrapper<T>&) const [with T = double]’
- bool operator==(const NumberWrapper& other) const {
- ^~~~~~~~
- number_wrapper.h:88:10: note: no known conversion for argument 1 from ‘int’ to ‘const NumberWrapper<double>&’
- In file included from test_31415926.cpp:4:
- rational.h:114:6: note: candidate: ‘bool operator==(const Rational&, const Rational&)’
- bool operator == (const Rational& p, const Rational& q) {
- ^~~~~~~~
- rational.h:114:6: note: no known conversion for argument 1 from ‘__gnu_cxx::__alloc_traits<std::allocator<NumberWrapper<double> >, NumberWrapper<double> >::value_type’ {aka ‘NumberWrapper<double>’} to ‘const Rational&’
- cc1plus: all warnings being treated as errors
- make: *** [build] Error 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement