Invalid library

8 years 8 months ago #3142 by huggies15
Invalid library was created by huggies15
Hi,

I'm a bit of a newbie to this arduino stuff, Ive tinkered around before getting LEDs to light etc, but never added a new library or anything.

I followed all the online info on how to add the library hosted on github, can see it all in the arduino IDE, but when I go to compile and upload a sketch (the arduino + esp8266 + relay sketch) I keep getting an error:
libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::Esp8266EasyIoT()':

C:\Program Files (x86)\Arduino\libraries\Esp8266EasyIoT/Esp8266EasyIoT.cpp:32: multiple definition of `Esp8266EasyIoT::Esp8266EasyIoT()'

sketch\Esp8266EasyIoT.cpp.o:sketch/Esp8266EasyIoT.cpp:32: first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::Esp8266EasyIoT()':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoTC2Ev+0x0): multiple definition of `Esp8266EasyIoT::Esp8266EasyIoT()'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoTC2Ev+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::setNewMsg(Esp8266EasyIoTMsg&)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT9setNewMsgER17Esp8266EasyIoTMsg+0x0): multiple definition of `Esp8266EasyIoT::setNewMsg(Esp8266EasyIoTMsg&)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT9setNewMsgER17Esp8266EasyIoTMsg+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::setPingTimmer()':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT13setPingTimmerEv+0x0): multiple definition of `Esp8266EasyIoT::setPingTimmer()'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT13setPingTimmerEv+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::resetPingTimmer()':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT15resetPingTimmerEv+0x0): multiple definition of `Esp8266EasyIoT::resetPingTimmer()'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT15resetPingTimmerEv+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::receiveAll()':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT10receiveAllEv+0x0): multiple definition of `Esp8266EasyIoT::receiveAll()'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT10receiveAllEv+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::rxPos(char const*, unsigned char, unsigned char, unsigned char*, unsigned char*)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT5rxPosEPKchhPhS2_+0x0): multiple definition of `Esp8266EasyIoT::rxPos(char const*, unsigned char, unsigned char, unsigned char*, unsigned char*)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT5rxPosEPKchhPhS2_+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::rxPos(char const*, unsigned char*, unsigned char*)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT5rxPosEPKcPhS2_+0x0): multiple definition of `Esp8266EasyIoT::rxPos(char const*, unsigned char*, unsigned char*)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT5rxPosEPKcPhS2_+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::rxchopUntil(char const*, bool, bool)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT11rxchopUntilEPKcbb+0x0): multiple definition of `Esp8266EasyIoT::rxchopUntil(char const*, bool, bool)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT11rxchopUntilEPKcbb+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::rxCopy(unsigned char, unsigned char)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT6rxCopyEhh+0x0): multiple definition of `Esp8266EasyIoT::rxCopy(unsigned char, unsigned char)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT6rxCopyEhh+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::isInBuffer(unsigned char)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT10isInBufferEh+0x0): multiple definition of `Esp8266EasyIoT::isInBuffer(unsigned char)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT10isInBufferEh+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::isOk(bool)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT4isOkEb+0x0): multiple definition of `Esp8266EasyIoT::isOk(bool)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT4isOkEb+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::isError(bool)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT7isErrorEb+0x0): multiple definition of `Esp8266EasyIoT::isError(bool)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT7isErrorEb+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::rxFlush()':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT7rxFlushEv+0x0): multiple definition of `Esp8266EasyIoT::rxFlush()'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT7rxFlushEv+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::startTimmer(unsigned long)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT11startTimmerEm+0x0): multiple definition of `Esp8266EasyIoT::startTimmer(unsigned long)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT11startTimmerEm+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::isTimeout(unsigned long, unsigned long)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT9isTimeoutEmm+0x0): multiple definition of `Esp8266EasyIoT::isTimeout(unsigned long, unsigned long)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT9isTimeoutEmm+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::debugPrint(char const*, ...)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT10debugPrintEPKcz+0x0): multiple definition of `Esp8266EasyIoT::debugPrint(char const*, ...)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT10debugPrintEPKcz+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::hwReset()':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT7hwResetEv+0x0): multiple definition of `Esp8266EasyIoT::hwReset()'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT7hwResetEv+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::executeCommand(String, unsigned long)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT14executeCommandE6Stringm+0x0): multiple definition of `Esp8266EasyIoT::executeCommand(String, unsigned long)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT14executeCommandE6Stringm+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::debugPrintBuffer()':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT16debugPrintBufferEv+0x0): multiple definition of `Esp8266EasyIoT::debugPrintBuffer()'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT16debugPrintBufferEv+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::processReceive()':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT14processReceiveEv+0x0): multiple definition of `Esp8266EasyIoT::processReceive()'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT14processReceiveEv+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::process()':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT7processEv+0x0): multiple definition of `Esp8266EasyIoT::process()'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT7processEv+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::processesp()':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT10processespEv+0x0): multiple definition of `Esp8266EasyIoT::processesp()'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT10processespEv+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::waitIdle()':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT8waitIdleEv+0x0): multiple definition of `Esp8266EasyIoT::waitIdle()'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT8waitIdleEv+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::writeesp(Esp8266EasyIoTMsg&)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT8writeespER17Esp8266EasyIoTMsg+0x0): multiple definition of `Esp8266EasyIoT::writeesp(Esp8266EasyIoTMsg&)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT8writeespER17Esp8266EasyIoTMsg+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::requestNodeId()':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT13requestNodeIdEv+0x0): multiple definition of `Esp8266EasyIoT::requestNodeId()'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT13requestNodeIdEv+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::begin(void (*)(Esp8266EasyIoTMsg const&), int, Stream*, Stream*)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT5beginEPFvRK17Esp8266EasyIoTMsgEiP6StreamS6_+0x0): multiple definition of `Esp8266EasyIoT::begin(void (*)(Esp8266EasyIoTMsg const&), int, Stream*, Stream*)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT5beginEPFvRK17Esp8266EasyIoTMsgEiP6StreamS6_+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::begin(void (*)(Esp8266EasyIoTMsg const&), int, Stream*)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT5beginEPFvRK17Esp8266EasyIoTMsgEiP6Stream+0x0): multiple definition of `Esp8266EasyIoT::begin(void (*)(Esp8266EasyIoTMsg const&), int, Stream*)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT5beginEPFvRK17Esp8266EasyIoTMsgEiP6Stream+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::sendinternal(Esp8266EasyIoTMsg&)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT12sendinternalER17Esp8266EasyIoTMsg+0x0): multiple definition of `Esp8266EasyIoT::sendinternal(Esp8266EasyIoTMsg&)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT12sendinternalER17Esp8266EasyIoTMsg+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::requestTime(void (*)(unsigned long))':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT11requestTimeEPFvmE+0x0): multiple definition of `Esp8266EasyIoT::requestTime(void (*)(unsigned long))'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT11requestTimeEPFvmE+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::present(unsigned char, unsigned char, bool)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT7presentEhhb+0x0): multiple definition of `Esp8266EasyIoT::present(unsigned char, unsigned char, bool)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT7presentEhhb+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::request(unsigned char, unsigned char)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT7requestEhh+0x0): multiple definition of `Esp8266EasyIoT::request(unsigned char, unsigned char)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT7requestEhh+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::sendBatteryLevel(unsigned char, bool)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT16sendBatteryLevelEhb+0x0): multiple definition of `Esp8266EasyIoT::sendBatteryLevel(unsigned char, bool)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT16sendBatteryLevelEhb+0x0): first defined here

libraries\Esp8266EasyIoT\Esp8266EasyIoT.cpp.o: In function `Esp8266EasyIoT::send(Esp8266EasyIoTMsg&)':

Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT4sendER17Esp8266EasyIoTMsg+0x0): multiple definition of `Esp8266EasyIoT::send(Esp8266EasyIoTMsg&)'

sketch\Esp8266EasyIoT.cpp.o:Esp8266EasyIoT.cpp:(.text._ZN14Esp8266EasyIoT4sendER17Esp8266EasyIoTMsg+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

exit status 1
Error compiling.
Invalid library found in C:\Program Files (x86)\Arduino\libraries\ESP8266ArduinoIDE: C:\Program Files (x86)\Arduino\libraries\ESP8266ArduinoIDE
Invalid library found in C:\Program Files (x86)\Arduino\libraries\ESP8266ArduinoIDE: C:\Program Files (x86)\Arduino\libraries\ESP8266ArduinoIDE

I dont know what to do and google hasnt been much help,

Thanks in advance,
Steve

Please Log in or Create an account to join the conversation.

8 years 8 months ago - 8 years 8 months ago #3149 by NightOne
Replied by NightOne on topic Invalid library
Hi there, What version of arduino IDE are you using? by the error I am assuming you are using 1.6.8?

Since the update from 1.6.5 there have been a number of changes that make older libraries invalid.... if you can try your sketch on arduino 1.6.5 and see if that makes a difference

Previous builds can be found here:

www.arduino.cc/en/Main/OldSoftwareReleases#previous

Another thing I noticed is you say: (the arduino + esp8266 + relay sketch)... can you explain what you mean? Do you have an arduino board with a relay connected and an esp8266? or are you uploading the sketch to the esp8266?

Please Log in or Create an account to join the conversation.

8 years 8 months ago #3151 by huggies15
Replied by huggies15 on topic Invalid library
Hi,
Thanks for the reply, I'll try the older ide now.
I meant I was using a nano, esp, and relay, rather than just an esp. Mainly because it looked easier and I'm not 100% how to power the esp+relay on their own.
Will update on how it goes

Please Log in or Create an account to join the conversation.

8 years 8 months ago - 8 years 8 months ago #3152 by NightOne
Replied by NightOne on topic Invalid library
a good tutorial to look at for relay on ESP8266 is here

iot-playground.com/blog/2-uncategorised/...66-wifi-relay-switch

EDIT:...... If you are using the <SoftwareSerial.h> library as well then the code should work on the setup that you have....
Sorry if my update caused confussion...

I am still sure that if you try compile on 1.6.5 you should come right

Here is a tutorial for relay without arduino

iot-playground.com/blog/2-uncategorised/...y-switch-arduino-ide

Please Log in or Create an account to join the conversation.

8 years 8 months ago #3156 by huggies15
Replied by huggies15 on topic Invalid library
Yeah, I'm using the example from:
iot-playground.com/blog/2-uncategorised/...66-wifi-relay-switch

I just uninstalled the newer 1.6.8 ide and installed the older 1.6.5.
I added the GitHub folder to my libraries folder (C:\Users\Steve\Documents\Arduino\libraries\EasyIOT), loaded up the examples sketch for the relay (which is the same as in the above example) and tried to verify it (just to check it was working).

Now I get an error
Arduino: 1.6.5 (Windows 8.1), Board: "Arduino Nano, ATmega328"

Build options changed, rebuilding all

Using library SoftwareSerial in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial 



C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial C:\Users\Steve\AppData\Local\Temp\build5882940169754382027.tmp\Esp8266EasyIoT.cpp -o C:\Users\Steve\AppData\Local\Temp\build5882940169754382027.tmp\Esp8266EasyIoT.cpp.o 

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial C:\Users\Steve\AppData\Local\Temp\build5882940169754382027.tmp\esp8266_relay.cpp -o C:\Users\Steve\AppData\Local\Temp\build5882940169754382027.tmp\esp8266_relay.cpp.o 

esp8266_relay.ino:12:28: fatal error: Esp8266EasyIoT.h: No such file or directory
compilation terminated.
Error compiling.

If it helps I 'verified' the Blink example and it worked fine.

In the IDE all the required dependancies are open(see screenshot)


I know I'm really close and the guide has helped a lot, so if I can get over this final hurdle Ill be happy.

Please Log in or Create an account to join the conversation.

8 years 8 months ago #3157 by Morty
Replied by Morty on topic Invalid library
I am in no way an expert but i think you might have to move Esp8266EasyIoT library.... i think it should read (C:\Users\Steve\Documents\Arduino\libraries\Esp8266EasyIoT)

Please Log in or Create an account to join the conversation.

Time to create page: 0.305 seconds

Forum latest

  • No posts to display.