Jump to content

[1.12] KSP-RO - Realism Overhaul [16 May 2022]


Theysen

Recommended Posts

5 hours ago, Russekof71 said:

Hello, I wanted to know if the Restock and Restock+ mod add a lot of interesting part for RSS / RO?

And I have a problem on my ROtank mod, the tanks have no texture.

https://imgur.com/a/iyxafnw

You probably didn't use ckan to install ROTank, it has dependencies like most mods in the RSSRO suite module manager, ROLib, Textures Unlimited, RealFuels.

Ckan does a good job, i only installed manually KopernicusBE (and Principia).

Plus, on your screenshot i can see two modulemanager*.dll and two Custom_Far*.cfg ...

Clean this mess and RSSRO will work like a charm ! (no crash no bug for me, ksp 1.10, only 48 directories in gamedata, etc)

For additional parts i use a lot these mods : procedural part and procedural fairing, and you can find a list of mods that are compatible with RSSRO by looking on ckan RO mod infos. (right panel/relationships). You can also look at Github RSSRO.

Edited by xebx
Link to comment
Share on other sites

So there is like; a lot of engines... did anyone make a table of them? i found an old one on redit, but it is outdated. I am thinking about writing a script that creates a csv with useful info, but since I am late to the game: did anyone already do that?

Link to comment
Share on other sites

Kind of quiet here, but this is the script:

Spoiler

#!/usr/bin/env bash

export LC_CTYPE=C
export LANG=C

test_parser_result () {
    #test
    if [[ "$TITLE" == "" ]]
    then
        echo "NO TITLE in $config_file"
        exit 1
    fi
    if [[ "$ENGINE_TYPE" == "" ]]
    then
        echo "NO ENGINE_TYPE in $config_file"
        exit 1
    fi
    if [[ "$ENGINE_FUELS" == "" ]]
    then
        echo "NO ENGINE_FUELS in $config_file"
        exit 1
    fi
    if [[ "$ENGINE_ISP_VAC" == "" ]]
    then
        echo "NO ENGINE_ISP_VAC in $config_file"
        exit 1
    fi
    if [[ "$ENGINE_ISP_ASL" == "" ]]
    then
        echo "NO ENGINE_ISP_ASL in $config_file"
        exit 1
    fi
    if [[ "$ENGINE_MAX_THRUST" == "" ]]
    then
        echo "NO ENGINE_MAX_THRUST in $config_file"
        exit 1
    fi
    if [[ "$ENGINE_IGNITIONS" == "" ]]
    then
        echo "NO ENGINE_IGNITIONS in $config_file"
        exit 1
    fi
    if [[ "$ENGINE_MASS_ORIG" == "" ]]
    then
        echo "NO ENGINE_MASS_ORIG in $config_file"
        exit 1
    fi
    if [[ "$ENGINE_MASS_MULTI" == "" ]]
    then
        echo "NO ENGINE_MASS_MULTI in $config_file"
        exit 1
    fi
    if [[ "$ENGINE_MIN_THRUST" == "" ]]
    then
        echo "NO ENGINE_MIN_THRUST in $config_file"
        exit 1
    fi
    if [[ "$ENGINE_PRESSURE_FED" == "" ]]
    then
        echo "NO ENGINE_PRESSURE_FED in $config_file"
        exit 1
    fi
    if [[ "$ENGINE_ULLAGE" == "" ]]
    then
        echo "NO ENGINE_ULLAGE in $config_file"
        exit 1
    fi
}

find_tag () {
    line=$1
    if [[ "$line" == *"PART"* ]]
    then
        echo "PART"
        return
    fi
    if [[ "$line" == *"ModuleEngines"* ]]
    then
        echo "ModuleEngines"
        return
    fi
    if [[ "$line" == *"MODULE"* ]]
    then
        echo "MODULE"
        return
    fi
    if [[ "$line" == *"TANK"* ]]
    then
        echo "TANK"
        return
    fi
    if [[ "$line" == *"CONFIG"* ]]
    then
        echo "CONFIG"
        return
    fi
    if [[ "$line" == *"PROPELLANT"* ]]
    then
        echo "PROPELLANT"
        return
    fi
    if [[ "$line" == *"atmosphereCurve"* ]]
    then
        echo "atmosphereCurve"
        return
    fi
    if [[ "$line" == *"thrustCurve"* ]]
    then
        echo "thrustCurve"
        return
    fi

    if [[ "$line" == *"IGNITOR_RESOURCE"* ]]
    then
        echo "SKIP"
        return
    fi
    if [[ "$line" == *"RESOURCE"* ]]
    then
        echo "SKIP"
        return
    fi
    if [[ "$line" == *"TESTFLIGHT"* ]]
    then
        # for now skip, grabbing the ratedBurnTime burntime would be great though
        echo "TESTFLIGHT"
        return
    fi
    if [[ "$line" == *""* ]]
    then
        # empty line
        echo "SKIP"
        return
    fi

    echo "ERROR"
}

OUTPUT_WITH_TESTFLIGHT="engines-testflight.csv"
OUTPUT_WITHOUT_TESTFLIGHT="engines.csv"

echo ""
#syntax
echo "TITLE, ENGINE_TYPE, ENGINE_CONFIG, ENGINE_FUELS, ENGINE_ISP_VAC, ENGINE_ISP_ASL, THROTTLE%, ENGINE_IGNITIONS, MASS, ENGINE_PRESSURE_FED, ENGINE_ULLAGE, RATED_BURNTIME" > $OUTPUT_WITH_TESTFLIGHT
echo "TITLE, ENGINE_TYPE, ENGINE_CONFIG, ENGINE_FUELS, ENGINE_ISP_VAC, ENGINE_ISP_ASL, THROTTLE%, ENGINE_IGNITIONS, MASS, ENGINE_PRESSURE_FED, ENGINE_ULLAGE" > $OUTPUT_WITHOUT_TESTFLIGHT

for config_file in *.cfg
#for config_file in A-4_Config.cfg
do
    echo "Parsing file $config_file"
    # skip files that are not engines
    if [[ "$config_file" == "EngineVariants_Config.cfg" ]]
    then
        continue
    fi

    TAG_STACK=""
    TAG_TOP=""
    TAG_COUNT=0
    PREVIOUS_LINE=""

    TITLE=""
    ENGINE_CONFIG=""
    ENGINE_TYPE="Unspecified"
    ENGINE_FUELS=""
    ENGINE_ISP_VAC=""
    ENGINE_ISP_ASL=""
    ENGINE_MAX_THRUST=""
    ENGINE_MIN_THRUST=""
    ENGINE_IGNITIONS="1"
    ENGINE_MASS_ORIG=""
    ENGINE_MASS_MULTI="1.0"
    ENGINE_PRESSURE_FED="False"
    ENGINE_ULLAGE="False"
    ENGINE_BURNTIME="Unknown"
    ENGINE_BURNTIME_CONFIG_NAME=""

    while IFS= read -r line
    do
        #avoid parsing single line things
        if [[ "$line" == *"{}"* ]]
        then
            continue
        fi

        # skip commented lines
        if [[ `echo $line | cut -c 1-2` == "//" ]]
        then
            continue
        fi

        # fix dos files
        line=`echo $line | tr -d '\r'`

        #echo "$line"
        if [[ "$line" == *"{"* ]]
        then
            # echo "stack was $TAG_COUNT $TAG_STACK"
            TAG_COUNT=`expr $TAG_COUNT + 1`
            TAG_TOP=$(find_tag "$PREVIOUS_LINE")
            if [[ "$TAG_TOP" == "ERROR" ]]
            then
                echo "Unknown tag in $PREVIOUS_LINE in file $config_file"
                exit -1
            fi
            TAG_STACK+="$TAG_TOP "
            #echo "stack appended to $TAG_COUNT $TAG_STACK"
            #echo $TAG_TOP

        fi
        if [[ "$line" == *"}"* ]]
        then
            #echo "$TAG_STACK"

            # end of the config, dump line
            if [[ "$TAG_TOP" == "CONFIG" ]]
            then
                #echo "DEBUG POP $TAG_TOP $ENGINE_MASS_ORIG $ENGINE_MASS_MULTI"

                # fix bogus files
                if [[ "$ENGINE_MIN_THRUST" == "" ]] && [[ "$ENGINE_MAX_THRUST" != "" ]]
                then
                    echo "WARNING $config_file lacks minThrust"
                    ENGINE_MIN_THRUST=$ENGINE_MAX_THRUST
                fi
                if [[ "$ENGINE_MAX_THRUST" == "" ]] && [[ "$ENGINE_MIN_THRUST" != "" ]]
                then
                    echo "WARNING $config_file lacks maxThrust"
                    ENGINE_MAX_THRUST=$ENGINE_MIN_THRUST
                fi
                if [[ "$ENGINE_MAX_THRUST" == "" ]] && [[ "$ENGINE_MIN_THRUST" == "" ]]
                then
                    #not worth it
                    echo "ERROR $config_file lacks maxThrust and minThrust"
                    continue
                fi
                if [[ "$ENGINE_MASS_ORIG" == "" ]]
                then
                    echo "ERROR $config_file lacks origMass"
                    continue
                fi
                # guess the title
                if [[ "$TITLE" == "" ]]
                then
                    echo "ERROR $config_file lacks title"
                    TITLE=`echo $config_file | cut -d _ -f 1`
                fi

                test_parser_result

                CALC_MASS=$(echo "$ENGINE_MASS_MULTI*$ENGINE_MASS_ORIG" | bc)
                #echo "DEBUG 1 $ENGINE_MASS_MULTI*$ENGINE_MASS_ORIG"
                CALC_THROTTLE=$(echo "$ENGINE_MIN_THRUST * 100 / $ENGINE_MAX_THRUST" | bc)
                echo "$TITLE, $ENGINE_TYPE, $ENGINE_CONFIG, $ENGINE_FUELS, $ENGINE_ISP_VAC, $ENGINE_ISP_ASL, ${CALC_THROTTLE}%, $ENGINE_IGNITIONS, $CALC_MASS, $ENGINE_PRESSURE_FED, $ENGINE_ULLAGE" >> $OUTPUT_WITHOUT_TESTFLIGHT

                #reset config related variables
                ENGINE_CONFIG=""
                ENGINE_FUELS=""
                ENGINE_ISP_VAC=""
                ENGINE_ISP_ASL=""
                ENGINE_MAX_THRUST=""
                ENGINE_MIN_THRUST=""
                ENGINE_IGNITIONS="1"
                ENGINE_MASS_MULTI="1.0"
                ENGINE_PRESSURE_FED="False"
                ENGINE_ULLAGE="False"
            fi

            # end of TESTFLIGHT block
            if [[ "$TAG_TOP" == "TESTFLIGHT" ]]
            then
                CONFIG_LINE=`grep "$TITLE, $ENGINE_TYPE, ${ENGINE_BURNTIME_CONFIG_NAME}," $OUTPUT_WITHOUT_TESTFLIGHT`
                if [[ "$CONFIG_LINE" == "" ]]
                then
                    echo "ERROR, no config for ${ENGINE_BURNTIME_CONFIG_NAME}"

                else
                    if [[ "$ENGINE_BURNTIME" == "" ]]
                    then
                        echo "WARNING, no burntime for ${ENGINE_BURNTIME_CONFIG_NAME}"
                        ENGINE_BURNTIME="Unknown"
                    fi
                    #echo "DEBUG $ENGINE_BURNTIME_CONFIG_NAME $ENGINE_BURNTIME"
                    #echo "DEBUG $CONFIG_LINE"
                    NEW_LINE="${CONFIG_LINE}, ${ENGINE_BURNTIME}"
                    echo $NEW_LINE >> $OUTPUT_WITH_TESTFLIGHT
                    #echo Found: $NEW_LINE
                fi
                ENGINE_BURNTIME="Unknown"
                ENGINE_BURNTIME_CONFIG_NAME=""
            fi

            TAG_COUNT=`expr $TAG_COUNT - 1`
            TAG_TOP=`echo $TAG_STACK | rev | cut -d ' ' -f 2 |rev`
            if [ $TAG_COUNT -gt 0 ]
            then
                TAG_STACK=`echo "$TAG_STACK" | cut -d " " -f -${TAG_COUNT}`
                TAG_STACK+=" "
            else
                TAG_STACK=""
                TAG_TOP=""
            fi
            #echo "stack reduced to $TAG_COUNT $TAG_STACK"
            #echo $TAG_TOP
        fi

        if [[ "$line" == *"title"* ]] && [[ "$TAG_TOP" == "PART" ]]
        then
            TITLE=`echo "$line" | cut -d = -f 2  | cut -d '/' -f 1`
        fi
        if [[ "$line" == *"EngineType"* ]] && [[ "$TAG_TOP" == "ModuleEngines" ]]
        then
            ENGINE_TYPE=`echo "$line" | cut -d = -f 2  | cut -d '/' -f 1`
        fi
        if [[ "$line" == *"origMass"* ]] && [[ "$TAG_TOP" == "MODULE" ]]
        then
            ENGINE_MASS_ORIG=`echo "$line" | cut -d = -f 2  | cut -d '/' -f 1`
        fi
        if [[ "$line" == *"name"* ]] && [[ "$TAG_TOP" == "CONFIG" ]]
        then
            ENGINE_CONFIG=`echo "$line" | cut -d = -f 2  | cut -d '/' -f 1 | xargs`
            #echo "DEBUG $ENGINE_CONFIG"
        fi
        if [[ "$line" == *"maxThrust"* ]] && [[ "$TAG_TOP" == "CONFIG" ]]
        then
            ENGINE_MAX_THRUST=`echo "$line" | cut -d = -f 2  | cut -d '/' -f 1`
        fi
        if [[ "$line" == *"minThrust"* ]] && [[ "$TAG_TOP" == "CONFIG" ]]
        then
            ENGINE_MIN_THRUST=`echo "$line" | cut -d = -f 2  | cut -d '/' -f 1`
        fi
        if [[ "$line" == *"massMult"* ]] && [[ "$TAG_TOP" == "CONFIG" ]]
        then
            ENGINE_MASS_MULTI=`echo "$line" | cut -d = -f 2  | cut -d '/' -f 1`
            #echo "DEBUG [$ENGINE_MASS_MULTI]"
        fi
        if [[ "$line" == *"ignitions"* ]] && [[ "$TAG_TOP" == "CONFIG" ]]
        then
            ENGINE_IGNITIONS=`echo "$line" | cut -d = -f 2  | cut -d '/' -f 1`
        fi
        if [[ "$line" == *"pressureFed"* ]] && [[ "$TAG_TOP" == "CONFIG" ]]
        then
            ENGINE_PRESSURE_FED=`echo "$line" | cut -d = -f 2  | cut -d '/' -f 1`
        fi
        if [[ "$line" == *"ullage"* ]] && [[ "$TAG_TOP" == "CONFIG" ]]
        then
            ENGINE_ULLAGE=`echo "$line" | cut -d = -f 2  | cut -d '/' -f 1`
        fi
        if [[ "$line" == *"name"* ]] && [[ "$TAG_TOP" == "PROPELLANT" ]]
        then
            ENGINE_FUELS+=`echo "$line" | cut -d = -f 2 | cut -d ' ' -f 2 | cut -d '/' -f 1`
            ENGINE_FUELS+=" "
            #echo $ENGINE_FUELS
        fi
        if [[ "$line" == *"key = 0"* ]] && [[ "$TAG_TOP" == "atmosphereCurve" ]]
        then
            ENGINE_ISP_VAC=`echo "$line" | cut -d = -f 2 | cut -d ' ' -f 3 | cut -d '/' -f 1`
        fi
        if [[ "$line" == *"key = 1"* ]] && [[ "$TAG_TOP" == "atmosphereCurve" ]]
        then
            ENGINE_ISP_ASL=`echo "$line" | cut -d = -f 2 | cut -d ' ' -f 3 | cut -d '/' -f 1`
        fi
        if [[ "$line" == *"name"* ]] && [[ "$TAG_TOP" == "TESTFLIGHT" ]]
        then
            ENGINE_BURNTIME_CONFIG_NAME=`echo "$line" | cut -d = -f 2 | cut -d ' ' -f 2 | cut -d '/' -f 1`
        fi
        if [[ "$line" == *"ratedBurnTime"* ]] && [[ "$TAG_TOP" == "TESTFLIGHT" ]]
        then
            ENGINE_BURNTIME=`echo "$line" | cut -d = -f 2 | cut -d ' ' -f 2 | cut -d '/' -f 1`
        fi

        #echo "$TAG_COUNT"
        PREVIOUS_LINE=$line
    done < "$config_file"
done

#rm -f $OUTPUT_WITHOUT_TESTFLIGHT

 

If you run it in GameData/RealismOverhaul/Engine_Configs it creates two files: engines.csv and engines-testflight.csv it also spits out some warnings if files do not contain the fields it expects. The resulting file allows you to filter in any spreadsheet on: 

TITLE, ENGINE_TYPE, ENGINE_CONFIG, ENGINE_FUELS, ENGINE_ISP_VAC, ENGINE_ISP_ASL, THROTTLE%, ENGINE_IGNITIONS, MASS, ENGINE_PRESSURE_FED, ENGINE_ULLAGE, RATED_BURNTIME

If the engine does not have a testflight configuration, you can still find it in the engines.csv but it will lack a burntime.

It can look as pretty as this:


https://smallpdf.com/shared#st=c1f5a3de-f077-4a62-b087-9677ceb0b56a&fn=engines-testflight.pdf&ct=1611778145966&tl=share-document&rf=link

Enjoy, and it might be cool to integrate it as a github hook so that it auto updates the documentation on the wiki.

Known bugs: I had a hard time matching // \/\/* did not work and I don't know why. I am grabbing the first backslash and that is mostly okay.

Link to comment
Share on other sites

@MacLucky :

ROEngines v1.6 (Releases) adds Raptor (SL and Vacuum), RS-25F and G, and others. (yes moar engines)

Your script/xls is a good idea, maybe add a column for thrust, this is an important parameter.

Edited by xebx
Link to comment
Share on other sites

I´m using RO with RP-1 and it´s a blast! Lots of fun. But I have a big problem.... I can´t land on water! My small 0.3 and 0.38m sounding rockets (just like the ones on the start career tutorial)  just bounce off the water and explode, no matter how slow you are. Once it went from 3 m/s to orbital velocity on an instant when touching the water. What´s going on? I reinstalled everything with just the mandatory mods and I still have the same behavior.  But this does not seem to happen with bigger rockets, they just land safely. Maybe it´s a (buoyancy??) problem with one single part of my small rockets? I just use procedural Al-HP tanks, aerobee engine (or  XASR-1), the smallest core (aerobee I think) and a inline double parachute.  The only difference with the bigger rocket I tested that lands OK on water is that it has a procedural core, Al (no HP) tanks and a XLR41 engine. Anyone seen this before? Any input will be greatly appreciated.

Link to comment
Share on other sites

7 hours ago, Washington said:

I´m using RO with RP-1 and it´s a blast! Lots of fun. But I have a big problem.... I can´t land on water! My small 0.3 and 0.38m sounding rockets (just like the ones on the start career tutorial)  just bounce off the water and explode, no matter how slow you are. Once it went from 3 m/s to orbital velocity on an instant when touching the water. What´s going on? I reinstalled everything with just the mandatory mods and I still have the same behavior.  But this does not seem to happen with bigger rockets, they just land safely. Maybe it´s a (buoyancy??) problem with one single part of my small rockets? I just use procedural Al-HP tanks, aerobee engine (or  XASR-1), the smallest core (aerobee I think) and a inline double parachute.  The only difference with the bigger rocket I tested that lands OK on water is that it has a procedural core, Al (no HP) tanks and a XLR41 engine. Anyone seen this before? Any input will be greatly appreciated.

It's a bit of a know issue but unfortunately nobody has taken a further look into it. It definitely shouldn't be nearly as bad as you're describing.

Link to comment
Share on other sites

I am Actually tired of this mod. it adds so much into the game. but when it comes to fighting bugs and/or making configs, there is no documentation and plus most of the mods apart from recommended ones don't work. so, after a point you hit a wall. where you cannot introduce anything new while you are bored of the old. i just have a suggestion for devs, if you make things easy things wont be realistic, but making integration with other mods easier will encourage others to develop and use this mod. i would suggest that you start by either providing sample configs and/or some documentation on them. thanks to anyone who listened.

Link to comment
Share on other sites

On 2/5/2021 at 11:42 PM, papasid said:

I am Actually tired of this mod. it adds so much into the game. but when it comes to fighting bugs and/or making configs, there is no documentation and plus most of the mods apart from recommended ones don't work. so, after a point you hit a wall. where you cannot introduce anything new while you are bored of the old. i just have a suggestion for devs, if you make things easy things wont be realistic, but making integration with other mods easier will encourage others to develop and use this mod. i would suggest that you start by either providing sample configs and/or some documentation on them. thanks to anyone who listened.

When it comes to making an almost identical simulation of rockets, planets, etc, it needs to be a complete separate game, since Ksp wasn't made for such stuff.

Link to comment
Share on other sites

There seems to be an issue within RO Capsules, specifically the "LEM" part configs folder. When loading, it gets stuck at an infinite loading screen when it hits "LEMAscent" config loader. Once the file is removed, the game loads as normal. Any ideas?

Link to comment
Share on other sites

Big thanks to the RSSRO Devs.

It was running on my previous comp (i5-6600+16Go) correctly, and now even better on the new one (i7-10700+16Go).

This is really amazing, it almost turns KSP into a realistic simulator, since 3 months i've spent some time testing real or prototype rockets and trying to find major inaccuracies, but didn't find anything big.

 

Note : KSP 1.10 is 99.9% ok (ROcapsules is the only mod from the ROsuite that get stuck if you try to add it)

Edited by xebx
Link to comment
Share on other sites

Hello, I'm using the Master branch version of RO and this changes the early big engines to ground ignition only. My problem is I can never get them to light. Do I need to use a specific launch clamp or other equipment to light these engines on the launch pad?

Link to comment
Share on other sites

On 2/21/2021 at 8:33 PM, klarch said:

Hello, I'm using the Master branch version of RO and this changes the early big engines to ground ignition only. My problem is I can never get them to light. Do I need to use a specific launch clamp or other equipment to light these engines on the launch pad?

You should use Ckan to install RO on a clean KSP.

I guess Master branch is mostly for devs.

Link to comment
Share on other sites

On 2/24/2021 at 2:24 PM, xebx said:

You should use Ckan to install RO on a clean KSP.

I guess Master branch is mostly for devs.

Thanks for the reply. I did use Ckan to install, followed a vid on youtube from Carnasa. The only thing I installed manually was Principia because it's not on Ckan. Everything works OK ( as far as I can tell, I just started playing ) except those early big liquid engines. I put the rocket on the pad in a launch clamp, go full throttle and stage... then the throttle goes to zero and no engine ignition. If I stage again the clamp releases and the  solids lift me off but still no light on the liquid engine, and then I crash. I modified those engine configs and commented out the "literalZeroIgnitions" line and gave myself 1 ignition for those engines.  Even with that change the same thing happens when on the pad in the clamp, no lighting and a drop in throttle to zero, but at least when I stage to release the clamp and light the solids, then the liquid engine ignites and seems to work normally. I'd rather use it as intended but I never get an early liquid engine to light with any launch clamp. Any ideas on why this could be happening or if I'm doing anything wrong would be great.

Link to comment
Share on other sites

19 hours ago, siimav said:

This has nothing to do with RO and the groundlit-only changes. Must be some other mod interfering and setting the throttle to 0 for whatever reason. 

I took your advice and went back to the base version of the mod and everything worked fine.

I then started loading in the extra mods 1 by 1 to see which one was causing the problem, and to my surprise after installing all of them, none of them caused the problem.

I can only guess that something failed to copy right when I made a duplicate of the base mod in order to install extra mods. Everything is working fine now. Go figure. Thanks for the help.

Link to comment
Share on other sites

9 hours ago, Lilienthal said:

When I use MJ ascent manager, and disengage the auto pilot all engines stop. Is there a way to avoid that?  (I mostly use MJ Ascent to determine the point when I am in the orbital plane of the moon.)

From memory,  Mechjeb -> settings, toggle 'module disabling does not kill throttle'.  If I recall correctly, after you have enabled that, disabling ascent manager will leave the throttle in whatever state it was before you engaged the autopilot.  So make sure you throttle up before launch (or set ksp to always throttle to 100%).   There are also some settings in utilities you might want to toggle.  (Prevent unstable ignition, rcs to ullage). 

Also you probably want to be using mechjeb PVG, and might also want the mechjeb dev version.

Link to comment
Share on other sites

it has probaly been answered before, but im not going to look at 76 forum pages. what are the minimal required specs in which it's at least playable if no mods like EVE or scatterer are used? because i don't have a very powerfull laptop

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...