Commit 6bda195e authored by Andreas Enge's avatar Andreas Enge

Rename the project from pari-gnump to paritwine.

parent 3fa9127c
......@@ -36,11 +36,11 @@ test-driver
/tests/*.trs
/src/pari-gnump-config.h
/src/paritwine-config.h
/gp/pari-gnump.gp
/gp/paritwine.gp
/doc/pari-gnump.info
/doc/paritwine.info
/doc/stamp-vti
/doc/version.texi
Pari-gnump allows to easily switch between number types from the GNU
Paritwine allows to easily switch between number types from the GNU
multiprecision ecosystem (mpz, mpq, mpfr, mpc) and corresponding types in
libpari, as well as to use functions from the GNU libraries in GP.
......@@ -10,12 +10,12 @@ Adapt the location and version numbers of Pari/GP, GNU MP (GMP), GNU MPFR,
GNU MPC and CMH in the first lines of Makefile.
If you wish to use functions relying on GMP, GNU MPFR, GNU MPC or CMH in your
GP session, you need to add them to pari-gnump-user.h and pari-gnump-user.c
GP session, you need to add them to paritwine-user.h and paritwine-user.c
(see below).
Execute
make
This creates the library libpari-gnump.so. There is no need to install this
This creates the library libparitwine.so. There is no need to install this
library, it may simply be copied to the location of your Pari/GP project.
To test if everything went well, execute
......@@ -25,7 +25,7 @@ To test if everything went well, execute
NUMBER TRANSFORMATIONS
----------------------
The exported functions are given in pari-gnump.h. For each GNU
The exported functions are given in paritwine.h. For each GNU
multiprecision type X from mpz, mpq, mpfr and mpc, there are functions
X_set_GEN
X_get_GEN
......@@ -50,16 +50,16 @@ USER FUNCTIONS IN GP
--------------------
If you wish to use functions relying on GMP, GNU MPFR, GNU MPC or CMH in a
GP session, you need to write a wrapper function in pari-gnump-user.c and
declare it in pari-gnump-user.h. The function should take GEN arguments,
GP session, you need to write a wrapper function in paritwine-user.c and
declare it in paritwine-user.h. The function should take GEN arguments,
transform them to mpz, mpq, mpfr or mpc, compute with them in the desired
way, and transform the result back into a GEN. By calling
make
this function will be automatically included into the library
libpari-gnump.so. The functions must then be made available inside your GP
libparitwine.so. The functions must then be made available inside your GP
session using the "install" command.
As examples, pari-gnump-user.c implements correctly rounded multiplications
As examples, paritwine-user.c implements correctly rounded multiplications
of real and complex numbers using MPFR and MPC, as well as the erf and zeta
functions from MPFR. The file example.gp shows how to install and use these
functions in a GP script.
......
/*
Copyright © 2017 Andreas Enge <andreas.enge@inria.fr>
Copyright © 2017, 2018 Andreas Enge <andreas.enge@inria.fr>
This file is part of pari-gnump.
This file is part of PariTwine.
Pari-gnump is free software; you can redistribute it and/or modify it
PariTwine is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
Pari-gnump is distributed in the hope that it will be useful, but
PariTwine is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pari-gnump. If not, see <http://www.gnu.org/licenses/>.
along with PariTwine. If not, see <http://www.gnu.org/licenses/>.
*/
AC_PREREQ(2.61)
AC_INIT(pari-gnump, 0.1dev, andreas.enge@inria.fr)
AC_INIT(paritwine, 0.1dev, andreas.enge@inria.fr)
AC_CONFIG_AUX_DIR([config])
AC_CONFIG_SRCDIR([src/pari-gnump.h])
AC_CONFIG_HEADER([src/pari-gnump-config.h])
AC_CONFIG_SRCDIR([src/paritwine.h])
AC_CONFIG_HEADER([src/paritwine-config.h])
AM_INIT_AUTOMAKE
......@@ -183,7 +183,7 @@ AC_CHECK_HEADER([gmp.h], ,
AC_CHECK_LIB([gmp],[__gmpz_init], ,
[AC_MSG_ERROR([gmp is not found.])]
)
GP_MPFR=$srcdir/gp/pari-gnump-mpfr.gp
GP_MPFR=$srcdir/gp/paritwine-mpfr.gp
AC_CHECK_HEADER([mpfr.h],
[AC_CHECK_LIB([mpfr], [mpfr_init], ,
[AC_MSG_WARN([mpfr is not found, interface will not be built.])
......@@ -192,7 +192,7 @@ AC_CHECK_HEADER([mpfr.h],
[AC_MSG_WARN([mpfr headers are not found, interface will not be built.])
GP_MPFR=/dev/null]
)
GP_MPC=$srcdir/gp/pari-gnump-mpc.gp
GP_MPC=$srcdir/gp/paritwine-mpc.gp
AC_CHECK_HEADER([mpc.h],
[AC_CHECK_LIB([mpc], [mpc_init2], ,
[AC_MSG_WARN([mpc is not found, interface will not be built.])
......@@ -201,7 +201,7 @@ AC_CHECK_HEADER([mpc.h],
[AC_MSG_WARN([mpc headers are not found, interface will not be built.])
GP_MPC=/dev/null]
)
GP_FLINT=$srcdir/gp/pari-gnump-flint.gp
GP_FLINT=$srcdir/gp/paritwine-flint.gp
AC_CHECK_HEADER([flint/flint.h],
[AC_CHECK_LIB([flint], [fmpz_init], ,
[AC_MSG_WARN([flint is not found, interface will not be built.])
......@@ -210,7 +210,7 @@ AC_CHECK_HEADER([flint/flint.h],
[AC_MSG_WARN([flint headers are not found, interface will not be built.])
GP_FLINT=/dev/null]
)
GP_ARB=$srcdir/gp/pari-gnump-arb.gp
GP_ARB=$srcdir/gp/paritwine-arb.gp
AC_CHECK_HEADER([arb.h],
[AC_CHECK_LIB([arb], [arb_init], ,
[AC_MSG_WARN([arb is not found, interface will not be built.])
......@@ -219,7 +219,7 @@ AC_CHECK_HEADER([arb.h],
[AC_MSG_WARN([arb headers are not found, interface will not be built.])
GP_ARB=/dev/null]
)
GP_CMH=$srcdir/gp/pari-gnump-cmh.gp
GP_CMH=$srcdir/gp/paritwine-cmh.gp
AC_CHECK_HEADER([cmh.h],
[AC_CHECK_LIB([cmh], [eval_10theta2_newton], ,
[AC_MSG_WARN([cmh is not found, interface will not be built.])
......@@ -234,6 +234,6 @@ AC_SUBST_FILE(GP_MPC)
AC_SUBST_FILE(GP_FLINT)
AC_SUBST_FILE(GP_ARB)
AC_SUBST_FILE(GP_CMH)
AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile gp/Makefile gp/pari-gnump.gp doc/Makefile])
AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile gp/Makefile gp/paritwine.gp doc/Makefile])
AC_OUTPUT
info_TEXINFOS = pari-gnump.texi
info_TEXINFOS = paritwine.texi
EXTRA_DIST = fdl-1.3.texi
\input texinfo
@setfilename pari-gnump.info
@setfilename paritwine.info
@include version.texi
@settitle PARI-GNUMP @value{VERSION}
@settitle PARITWINE @value{VERSION}
@set AUTHORS Andreas Enge, Fredrik Johansson
......@@ -93,10 +93,10 @@ Here are the steps needed to install the library on Unix systems:
@enumerate
@item
@samp{tar xzf pari-gnump-@value{VERSION}.tar.gz}
@samp{tar xzf paritwine-@value{VERSION}.tar.gz}
@item
@samp{cd pari-gnump-@value{VERSION}}
@samp{cd paritwine-@value{VERSION}}
@item
@samp{./configure}
......@@ -184,28 +184,28 @@ There are some other useful make targets:
@item
@samp{info}
Create an info version of the manual, in @file{pari-gnump.info}.
Create an info version of the manual, in @file{paritwine.info}.
@item
@samp{pdf}
Create a PDF version of the manual, in @file{doc/pari-gnump.pdf}.
Create a PDF version of the manual, in @file{doc/paritwine.pdf}.
@item
@samp{dvi}
Create a DVI version of the manual, in @file{doc/pari-gnump.dvi}.
Create a DVI version of the manual, in @file{doc/paritwine.dvi}.
@item
@samp{ps}
Create a Postscript version of the manual, in @file{doc/pari-gnump.ps}.
Create a Postscript version of the manual, in @file{doc/paritwine.ps}.
@item
@samp{html}
Create an HTML version of the manual, in several pages in the
directory @file{doc/pari-gnump.html}; if you want only one output HTML file,
directory @file{doc/paritwine.html}; if you want only one output HTML file,
then type @samp{makeinfo --html --no-split mpc.texi} instead.
@item
......
dist_pkgdata_DATA = pari-gnump.gp
dist_pkgdata_DATA = paritwine.gp
install ("pari_mpc_mul", "GGb", "mpc_mul", "libpari-gnump.so");
install ("pari_mpfr_mul", "GGb", "mpfr_mul", "libpari-gnump.so");
install ("pari_mpfr_erf", "Gb", "mpfr_erf", "libpari-gnump.so");
install ("pari_mpfr_zeta", "Gb", "mpfr_zeta", "libpari-gnump.so");
install ("pari_mpc_mul", "GGb", "mpc_mul", "libparitwine.so");
install ("pari_mpfr_mul", "GGb", "mpfr_mul", "libparitwine.so");
install ("pari_mpfr_erf", "Gb", "mpfr_erf", "libparitwine.so");
install ("pari_mpfr_zeta", "Gb", "mpfr_zeta", "libparitwine.so");
/*
Copyright © 2014, 2017 Andreas Enge <andreas.enge@inria.fr>
This file is part of pari-gnump.
This file is part of paritwine.
Pari-gnump is free software; you can redistribute it and/or modify it
Paritwine is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
Pari-gnump is distributed in the hope that it will be useful, but
Paritwine is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pari-gnump. If not, see <http://www.gnu.org/licenses/>.
along with Paritwine. If not, see <http://www.gnu.org/licenses/>.
*/
@GP_MPFR@
......
lib_LTLIBRARIES = libpari-gnump.la
lib_LTLIBRARIES = libparitwine.la
libpari_gnump_la_LDFLAGS = -shrext .so -version-info 0:0:0
libparitwine_la_LDFLAGS = -shrext .so -version-info 0:0:0
include_HEADERS = pari-gnump-config.h pari-gnump.h
include_HEADERS = paritwine-config.h paritwine.h
libpari_gnump_la_SOURCES = conversions.c mpfr.c mpc.c cmh.c arb.c
libparitwine_la_SOURCES = conversions.c mpfr.c mpc.c cmh.c arb.c
libpari_gnump_la_LIBADD = @LTLIBOBJS@
libparitwine_la_LIBADD = @LTLIBOBJS@
......@@ -2,23 +2,23 @@
Copyright © 2014, 2016, 2017, 2018 Andreas Enge <andreas.enge@inria.fr>
Copyright © 2017 Fredrik Johansson <fredrik.johansson@gmail.com>
This file is part of pari-gnump.
This file is part of paritwine.
Pari-gnump is free software; you can redistribute it and/or modify it
Paritwine is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
Pari-gnump is distributed in the hope that it will be useful, but
Paritwine is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pari-gnump. If not, see <http://www.gnu.org/licenses/>.
along with Paritwine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "pari-gnump.h"
#include "paritwine.h"
/****************************************************************************/
......
/*
Copyright © 2016, 2017 Andreas Enge <andreas.enge@inria.fr>
This file is part of pari-gnump.
This file is part of paritwine.
Pari-gnump is free software; you can redistribute it and/or modify it
Paritwine is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
Pari-gnump is distributed in the hope that it will be useful, but
Paritwine is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pari-gnump. If not, see <http://www.gnu.org/licenses/>.
along with Paritwine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "pari-gnump.h"
#include "paritwine.h"
/* The following functions perform floating point computations using the
cmh library. For details on the "prec" parameter, see the comments in
......@@ -33,7 +33,7 @@ GEN pari_cmh_I2I4I6I10 (GEN tau, long prec)
its lower left entry is not used,
The return value is a t_VEC with 4 components.
Install into GP with
install ("pari_cmh_I2I4I6I10", "Gp", "cmh_I2I4I6I10", "./libpari-gnump.so");
install ("pari_cmh_I2I4I6I10", "Gp", "cmh_I2I4I6I10", "./libparitwine.so");
*/
{
......@@ -78,7 +78,7 @@ GEN pari_cmh_4theta (GEN tau, long prec)
its lower left entry is not used,
The return value is a t_VEC with 4 components.
Install into GP with
install ("pari_cmh_4theta", "Gp", "cmh_4theta", "./libpari-gnump.so");
install ("pari_cmh_4theta", "Gp", "cmh_4theta", "./libparitwine.so");
*/
{
......@@ -117,7 +117,7 @@ GEN pari_cmh_10theta2 (GEN tau, long prec)
its lower left entry is not used,
The return value is a t_VEC with 10 components.
Install into GP with
install ("pari_cmh_10theta2", "Gp", "cmh_10theta2", "./libpari-gnump.so");
install ("pari_cmh_10theta2", "Gp", "cmh_10theta2", "./libparitwine.so");
*/
{
......
......@@ -2,23 +2,23 @@
Copyright © 2014, 2017, 2018 Andreas Enge <andreas.enge@inria.fr>
Copyright © 2017 Fredrik Johansson <fredrik.johansson@gmail.com>
This file is part of pari-gnump.
This file is part of paritwine.
Pari-gnump is free software; you can redistribute it and/or modify it
Paritwine is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
Pari-gnump is distributed in the hope that it will be useful, but
Paritwine is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pari-gnump. If not, see <http://www.gnu.org/licenses/>.
along with Paritwine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "pari-gnump.h"
#include "paritwine.h"
/****************************************************************************/
......
/*
Copyright © 2014, 2016, 2017, 2018 Andreas Enge <andreas.enge@inria.fr>
This file is part of pari-gnump.
This file is part of paritwine.
Pari-gnump is free software; you can redistribute it and/or modify it
Paritwine is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
Pari-gnump is distributed in the hope that it will be useful, but
Paritwine is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pari-gnump. If not, see <http://www.gnu.org/licenses/>.
along with Paritwine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "pari-gnump.h"
#include "paritwine.h"
/* The following functions perform floating point computations using the
mpc library. For details on the "prec" parameter, see the comments in
......
/*
Copyright © 2014, 2016, 2017, 2018 Andreas Enge <andreas.enge@inria.fr>
This file is part of pari-gnump.
This file is part of paritwine.
Pari-gnump is free software; you can redistribute it and/or modify it
Paritwine is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
Pari-gnump is distributed in the hope that it will be useful, but
Paritwine is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pari-gnump. If not, see <http://www.gnu.org/licenses/>.
along with Paritwine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "pari-gnump.h"
#include "paritwine.h"
/* The following functions perform floating point computations using the
mpfr library. They take as additional parameter a long "prec",
......
......@@ -2,23 +2,23 @@
Copyright © 2014, 2016, 2017, 2018 Andreas Enge <andreas.enge@inria.fr>
Copyright © 2017 Fredrik Johansson <fredrik.johansson@gmail.com>
This file is part of pari-gnump.
This file is part of paritwine.
Pari-gnump is free software; you can redistribute it and/or modify it
Paritwine is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
Pari-gnump is distributed in the hope that it will be useful, but
Paritwine is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pari-gnump. If not, see <http://www.gnu.org/licenses/>.
along with Paritwine. If not, see <http://www.gnu.org/licenses/>.
*/
#include <pari-gnump-config.h>
#include <paritwine-config.h>
#include <stdio.h>
#include <limits.h>
#include <assert.h>
......
AM_CPPFLAGS = -I$(top_srcdir)/src
LDADD = $(top_builddir)/src/libpari-gnump.la
LDADD = $(top_builddir)/src/libparitwine.la
check_PROGRAMS = tgmp tmpfr tmpc tflint tarb
......
......@@ -2,23 +2,23 @@
Copyright © 2014 Andreas Enge <andreas.enge@inria.fr>
Copyright © 2017 Fredrik Johansson <fredrik.johansson@gmail.com>
This file is part of pari-gnump.
This file is part of paritwine.
Pari-gnump is free software; you can redistribute it and/or modify it
Paritwine is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
Pari-gnump is distributed in the hope that it will be useful, but
Paritwine is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pari-gnump. If not, see <http://www.gnu.org/licenses/>.
along with Paritwine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "pari-gnump.h"
#include "paritwine.h"
/****************************************************************************/
/* */
......
......@@ -2,23 +2,23 @@
Copyright © 2014 Andreas Enge <andreas.enge@inria.fr>
Copyright © 2017 Fredrik Johansson <fredrik.johansson@gmail.com>
This file is part of pari-gnump.
This file is part of paritwine.
Pari-gnump is free software; you can redistribute it and/or modify it
Paritwine is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
Pari-gnump is distributed in the hope that it will be useful, but
Paritwine is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pari-gnump. If not, see <http://www.gnu.org/licenses/>.
along with Paritwine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "pari-gnump.h"
#include "paritwine.h"
/****************************************************************************/
/* */
......
/*
Copyright © 2014 Andreas Enge <andreas.enge@inria.fr>
This file is part of pari-gnump.
This file is part of paritwine.
Pari-gnump is free software; you can redistribute it and/or modify it
Paritwine is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
Pari-gnump is distributed in the hope that it will be useful, but
Paritwine is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pari-gnump. If not, see <http://www.gnu.org/licenses/>.
along with Paritwine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "pari-gnump.h"
#include "paritwine.h"
/****************************************************************************/
/* */
......
/*
Copyright © 2014 Andreas Enge <andreas.enge@inria.fr>
This file is part of pari-gnump.
This file is part of paritwine.
Pari-gnump is free software; you can redistribute it and/or modify it
Paritwine is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
Pari-gnump is distributed in the hope that it will be useful, but
Paritwine is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pari-gnump. If not, see <http://www.gnu.org/licenses/>.
along with Paritwine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "pari-gnump.h"
#include "paritwine.h"
/****************************************************************************/
/* */
......
/*
Copyright © 2014 Andreas Enge <andreas.enge@inria.fr>
This file is part of pari-gnump.
This file is part of paritwine.
Pari-gnump is free software; you can redistribute it and/or modify it
Paritwine is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
Pari-gnump is distributed in the hope that it will be useful, but
Paritwine is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pari-gnump. If not, see <http://www.gnu.org/licenses/>.
along with Paritwine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "pari-gnump.h"
#include "paritwine.h"
/****************************************************************************/
/* */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment