Cannot Find AMD.nmake or UMFPACK.nmake for building Hermes2D on windows

108 views
Skip to first unread message

gNSortino

unread,
Dec 31, 2012, 12:18:59 AM12/31/12
to herm...@googlegroups.com
Hi There –

I just downloaded the Hermes2D library from github and plan to build on windows. In the windows build instructions there are 2 dependencies: AMD and UMFPACK that call for building via the files: AMD.nmake and UMFPACK.namke. 

(see relevant install instructions in the snippet below)

    - AMD(ver-2.2.0):

      - Download AMD source file package (http://www.cise.ufl.edu/research/sparse/amd/).
      - Unpack source files into a directory that has the same parent as a directory where you unpacked UFconfig.
      - Copy the file 'my_hermes_root\\CMakeVars\\MSVC\\AMD.nmake' to a directory 'my_amd_directory\\Lib'.
      - Run MSVC command prompt and switch to 'my_amd_directory\\Lib'.
      - Compile AMD using 'nmake -f AMD.nmake'.
      - Copy 'Include\\amd.h', 'Include\\amd_internal.h', and 'Lib\\libamd.lib' to 'include', and 'lib' dependecy directories respectively.

    - UMFPACK(ver-5.4.0)
   
      - Download UMFPACK source file package (http://www.cise.ufl.edu/research/sparse/umfpack/).
      - Unpack source file into a directory that has the same parent as a directory where you unpacked UFconfig.
      - Copy the file 'my_hermes_root\\CMakeVars\\MSVC\\UMFPACK.nmake' to the 'my_umfpack_root\\Lib' directory.
      - Run MSVC command prompt and switch to 'my_umfpack_root\\Lib'.
      - Compile UMFPACK using 'nmake -f UMFPACK.nmake'. Linking might take some time, please, be patient.
      - Copy 'libumfpack.dll', all include files, and 'libumfpack.lib' to 'bin', 'include', and 'lib' dependecy directories, respectively.


I’m sure I’m doing something silly but I can’t seem to find either of these files on github. Could someone clarify where I can find the files? Note the directory CMakeVars does not exist in the github (master) repository I downloaded.

Thanks you very much for your help.

Kind Regards
Graham


Pavel Solin

unread,
Dec 31, 2012, 2:27:13 PM12/31/12
to hermes2d
Hi Graham,
  on the contrary, this is our fault. The MSVC instructions 
are obsolete. I will ask around how easy it would be to 
update them.

With Best Wishes for the New Year 2013,

Pavel





--
You received this message because you are subscribed to the Google Groups "hermes2d" group.
To view this discussion on the web visit https://groups.google.com/d/msg/hermes2d/-/uXBkj3Z6sYsJ.
To post to this group, send email to herm...@googlegroups.com.
To unsubscribe from this group, send email to hermes2d+u...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/hermes2d?hl=en.



--
Pavel Solin
Associate Professor
Applied and Computational Mathematics
University of Nevada, Reno

gNSortino

unread,
Jan 1, 2013, 5:05:11 PM1/1/13
to herm...@googlegroups.com
Thanks and same too you! Looking forward to your reply. If there's anything I can do to help please let me know.
 
Kind Regards,
Graham

Pavel Solin

unread,
Jan 1, 2013, 9:10:48 PM1/1/13
to hermes2d
Hi Graham,
  I just talked to Lukas (lead Hermes developer at this time)
and he will update the instructions for Windows. In fact he
is developing Hermes in Windows.

Happy New Year,

Pavel


To view this discussion on the web visit https://groups.google.com/d/msg/hermes2d/-/2SHQ4mHeTTkJ.

To post to this group, send email to herm...@googlegroups.com.
To unsubscribe from this group, send email to hermes2d+u...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/hermes2d?hl=en.

Lukas Korous

unread,
Jan 2, 2013, 6:22:38 AM1/2/13
to herm...@googlegroups.com
Hi,

basically, I took out the instructions to include the .nmake files, as
I already deleted them, they were outdated and unnecessary. The best
way to compile AMD, UMFPACK and many other math-related packages is to
use MinGW compiler (http://www.mingw.org/), as it is very very similar
to gcc which most people developing such software use under Linux.

Also the usage is pretty much the same as gcc with Linux: ./configure
-> make -> sudo make install.

I highly recommend to do that,
If you run into troubles with that, drop me a line, and I can for
example copy the binaries for you to some FTP etc.
Did you succeed with installation of other dependencies?

Regards,
Lukas
Lukas Korous

Graham Sortino

unread,
Jan 2, 2013, 11:32:09 AM1/2/13
to herm...@googlegroups.com
Thank you Lukas/Pavel -

I'll try as suggested and report back. I had a bit of trouble getting some of the libraries built (Clapack in particular). It is my first time using make on Windows so I expected a bit of a learning curve. I would have built on Linux/Unix but I think the library I'm planning to interface Hermes with (REFPROP) is only available on Windows.

I did have one other question. I noticed that when building HERMES it asks for parameters to be set for a Xerces directory/library and a XSD directory (I assume XML schema). Are there instructions on how I should set these values? I'm assuming I need a copy of this: http://xerces.apache.org/xerces-c/.

Thanks again very much for your help.

Warmest Regards,
Graham



From: Lukas Korous <lukas....@gmail.com>
To: herm...@googlegroups.com
Sent: Wednesday, January 2, 2013 6:22 AM
Subject: Re: Cannot Find AMD.nmake or UMFPACK.nmake for building Hermes2D on windows

>> For more options, visit this group at
>> http://groups.google.com/group/hermes2d?hl=en.
>
>
>
>
> --
> Pavel Solin
> Associate Professor
> Applied and Computational Mathematics
> University of Nevada, Reno
> http://hpfem.org/~pavel
>
> --
> You received this message because you are subscribed to the Google Groups
> "hermes2d" group.
> To post to this group, send email to herm...@googlegroups.com.
> To unsubscribe from this group, send email to

> For more options, visit this group at
> http://groups.google.com/group/hermes2d?hl=en.



--
Lukas Korous

--
You received this message because you are subscribed to the Google Groups "hermes2d" group.
To post to this group, send email to herm...@googlegroups.com.
To unsubscribe from this group, send email to hermes2d+unsub...@googlegroups.com.

Pavel Solin

unread,
Jan 2, 2013, 1:21:40 PM1/2/13
to hermes2d
I checked it http://www.nist.gov/srd/nist23.cfm
and it appears to be a database. How is it related 
to only Windows?

Pavel


To unsubscribe from this group, send email to hermes2d+u...@googlegroups.com.

For more options, visit this group at http://groups.google.com/group/hermes2d?hl=en.

Graham Sortino

unread,
Jan 2, 2013, 1:41:49 PM1/2/13
to herm...@googlegroups.com
That's a good question. It's a common misconception but it's actually used for calculating thermodynamic properties of fluids. See this for more information: http://www.boulder.nist.gov/div838/theory/refprop/Frequently_asked_questions.htm#RefpropIsAProgram

Regarding the windows only support, I'm not sure why this is the case. The API is interfaced via a DLL to call the various REFPROP calculations. These are written in FORTRAN so I'm sure it's technically feasible to run in another OS but it doesn't seem to be a feature they are currently supporting or at least as far as I can ascertain.

Graham


From: Pavel Solin <solin...@gmail.com>
To: hermes2d <herm...@googlegroups.com>
Sent: Wednesday, January 2, 2013 1:21 PM

Lukas Korous

unread,
Jan 2, 2013, 2:14:21 PM1/2/13
to herm...@googlegroups.com
Hello,

Xerces and XSD are tools we use to handle XML and especially XML's DOM inside C++.

I just updated the instructions at http://hpfem.org/hermes/hermes/doc/_build/html/src/installation/win.html

I did not go into details, as the responsible people for these two tools (that actually work together) provide everything necessary on their websites, the important thing is just to download those (links are in the intstructions), copy the appropriate files to the directories where other include files and libraries are and you are all set.

Drop me a line should you need any more help,
Regards,
Lukas
Lukas Korous

Graham Sortino

unread,
Jan 6, 2013, 12:23:26 AM1/6/13
to herm...@googlegroups.com
Hi Lukas -

Thanks very much for your help. I managed to build all of the dependents except for 'libumfpack.dll'. I wasn't sure if this was needed so I skipped for now.

When building hermes2d via VS2012 I'm getting the following errors:
======
1>------ Build started: Project: hermes2d, Configuration: Debug Win32 ------
1>     Creating library C:/software/Hermes2D/Hermes-master/hermes2d/Debug/hermes2d-debug.lib and object C:/software/Hermes2D/Hermes-master/hermes2d/Debug/hermes2d-debug.exp
1>space_h2d_xml.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static bool __cdecl xercesc_3_1::XMLString::equals(wchar_t const *,wchar_t const *)" (__imp_?equals@XMLString@xercesc_3_1@@SA_NPB_W0@Z) referenced in function "public: class std::_Tree_const_iterator<class std::_Tree_val<struct std::_Tree_simple_types<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class xsd::cxx::xml::dom::namespace_info<char> > > > > & __thiscall std::_Tree_const_iterator<class std::_Tree_val<struct std::_Tree_simple_types<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class xsd::cxx::xml::dom::namespace_info<char> > > > >::operator++(void)" (??E?$_Tree_const_iterator@V?$_Tree_val@U?$_Tree_simple_types@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$namespace_info@D@dom@xml@cxx@xsd@@@std@@@std@@@std@@@std@@QAEAAV01@XZ)
1>solution_h2d_xml.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static bool __cdecl xercesc_3_1::XMLString::equals(wchar_t const *,wchar_t const *)" (__imp_?equals@XMLString@xercesc_3_1@@SA_NPB_W0@Z)
1>mesh_h2d_xml.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static bool __cdecl xercesc_3_1::XMLString::equals(wchar_t const *,wchar_t const *)" (__imp_?equals@XMLString@xercesc_3_1@@SA_NPB_W0@Z)
1>mesh_h1d_xml.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static bool __cdecl xercesc_3_1::XMLString::equals(wchar_t const *,wchar_t const *)" (__imp_?equals@XMLString@xercesc_3_1@@SA_NPB_W0@Z)
1>subdomains_h2d_xml.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static bool __cdecl xercesc_3_1::XMLString::equals(wchar_t const *,wchar_t const *)" (__imp_?equals@XMLString@xercesc_3_1@@SA_NPB_W0@Z)
1>space_h2d_xml.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static unsigned long __cdecl xercesc_3_1::XMLString::stringLen(wchar_t const * const)" (__imp_?stringLen@XMLString@xercesc_3_1@@SAKQB_W@Z) referenced in function "struct xsd::cxx::xml::dom::auto_ptr<class xercesc_3_1::DOMDocument> __cdecl xsd::cxx::xml::dom::serialize<char>(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class xsd::cxx::xml::dom::namespace_infomap<char> const &,unsigned long)" (??$serialize@D@dom@xml@cxx@xsd@@YA?AU?$auto_ptr@VDOMDocument@xercesc_3_1@@@0123@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0ABV?$namespace_infomap@D@0123@K@Z)
.
.
. (161 in total)
=====

From looking at the error message I can see it's a problem with Xerces, however, I've been unable to pinpoint exactly what is missing.

If you have any suggestions I'd be very grateful.

Kind Regards,
Graham

Sent: Wednesday, January 2, 2013 2:14 PM

Subject: Re: Cannot Find AMD.nmake or UMFPACK.nmake for building Hermes2D on windows

Lukas Korous

unread,
Jan 6, 2013, 5:23:20 AM1/6/13
to herm...@googlegroups.com
Hi Graham,

if you type "cmake .", is everything correct, or does it inform you about some errors?

This is, as you said, a linking error with XERCES, it looks like it is not found.

About libumfpack.dll, that should be without problem, the version I usually build is 5.4.0, what sort of errors are you getting?

Regards,
Lukas

--
You received this message because you are subscribed to the Google Groups "hermes2d" group.
To post to this group, send email to herm...@googlegroups.com.
To unsubscribe from this group, send email to hermes2d+u...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/hermes2d?hl=en.



--
Lukas Korous

Graham Sortino

unread,
Jan 6, 2013, 8:59:25 PM1/6/13
to herm...@googlegroups.com
Thanks Lukas

You are correct that cmake didn't find XERCES_INCLUDE_DIR or XERCES_LIBRARY by default. It also didn't find XSD_INCLUDE_DIR either. I noticed that there wasn't a default value for XERCES_ROOT or XSD_ROOT in CMake.vars.example so I added an entry for each of these. Once I did this running cmake gave me:

C:\software\Hermes2D\Hermes-master>cmake .
-- Hermes will by default be using 8 threads for calculation.
Hermes2D: Generating classes for XML mesh parsing according to your version of X
SD.

Configuration results
---------------------
Build with UMFPACK: YES
Build with PETSC: NO
Build with MUMPS: NO
Build with SUPERLU: NO
Build with TRILINOS: NO
Build with MPI: NO
Build with OPENMP: NO
Build with EXODUSII: NO
---------------------
Hermes common library:
        Build Debug version: YES
        Build Release version: YES
        Build with tests: YES
Build Hermes2D: YES
        Build Hermes2D Debug version: YES
        Build Hermes2D Release version: YES
---------------------
        Build Hermes2D with tests: YES
        Build Hermes2D with test examples: YES
---------------------
        Build Hermes2D with GLUT: NO
        Build Hermes2D with VIEWER_GUI: NO


-- Configuring done
-- Generating done
-- Build files have been written to: C:/software/Hermes2D/Hermes-master

then my project varaibles were set as follows:
CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/hermes
AMD_INCLUDE_DIR:PATH=c:/software/Hermes2D/Hermes-master/dependencies/include
XERCES_LIBRARY:FILEPATH=c:/software/Hermes2D/Hermes-master/dependencies/lib/xerces-c_3.lib
XSD_INCLUDE_DIR:PATH=c:/software/Hermes2D/Hermes-master/dependencies/include
XERCES_INCLUDE_DIR:PATH=c:/software/Hermes2D/Hermes-master/dependencies/include
PTHREAD_LIBRARY:FILEPATH=c:/software/Hermes2D/Hermes-master/dependencies/lib/pthreadVCE2.lib
AMD_LIBRARY:FILEPATH=c:/software/Hermes2D/Hermes-master/dependencies/lib/libamd.lib


Then once I built hermes2d I received the errors mentioned previously. One thing to note is that I wasn't 100% sure, which or where to put Xerces or XSD files w/in the dependencies directory structure as it wasn't mentioned in the instructions. So I did as follows:
Xerces:
  1. placed all bin files in dependencies/bin
  2. placed all include files and sub directories into dependencies/include. The full path then became
    dependencies/include/xercesc followed by all of the xercesc sub directories (eg. dom, framework, etc...) and their requisite files.
  3. put all lib files dependencies/lib
XSD:
  1. pub xsd.exe into the dependencies/bin direcory
  2. put all the lbxsd files into dependencies/include. The full path then became dependencies/include/xsd/csx followed by all of the csx sub-directories (eg. compilers, parser, tree, xml) and their requisite files.
For libumfpack.dll I wasn't quite sure how to build this library. I used the default MakeFile scripts modified for windows and built with MinGW, however, they did not produce a libumfpack.dll. I just skipped the step initially and then when I was troubleshooting today i stumbled across a copy of the dll posted here. So I just incorporated that file into the build.

Graham

Sent: Sunday, January 6, 2013 5:23 AM

Subject: Re: Cannot Find AMD.nmake or UMFPACK.nmake for building Hermes2D on windows

Lukas Korous

unread,
Jan 7, 2013, 4:06:38 AM1/7/13
to herm...@googlegroups.com
Hi Graham,

It is very weird that after a successful cmake call, it would give you linking errors.

Could you try to delete the file CMakeCache.txt (in your hermes root), and then run cmake . again?

Also I googled out the following:

http://stackoverflow.com/questions/10506582/xerces-c-unresolved-linker-error

Might it be connected to your problem? Perhaps you can try out the solution they are offering.

Lukas


--
You received this message because you are subscribed to the Google Groups "hermes2d" group.
To post to this group, send email to herm...@googlegroups.com.
To unsubscribe from this group, send email to hermes2d+u...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/hermes2d?hl=en.



--
Lukas Korous

Graham Sortino

unread,
Jan 8, 2013, 7:51:46 AM1/8/13
to herm...@googlegroups.com
Good news! The link you suggested resolved the linking errors. I was able to build the full project and run the tests program. I will do a few more sanity tests and then post a summary of lessons learned in order to help others building on Visual Studio 2012.

Thanks again very much for your help.
Graham


1>------ Build started: Project: RUN_TESTS, Configuration: Debug Win32 ------
1>  Test project C:/software/Hermes2D/Hermes-master
1>        Start  1: test-tutorial-P01-03-poisson
1>   1/21 Test  #1: test-tutorial-P01-03-poisson .........   Passed    0.78 sec
1>        Start  2: test-tutorial-P01-06-bc-newton
1>   2/21 Test  #2: test-tutorial-P01-06-bc-newton .......   Passed    1.07 sec
1>        Start  3: test-tutorial-P03-07-navier-stokes
1>   3/21 Test  #3: test-tutorial-P03-07-navier-stokes ...   Passed    8.37 sec
1>        Start  4: test-tutorial-P04-03-complex
1>   4/21 Test  #4: test-tutorial-P04-03-complex .........   Passed    6.99 sec
1>        Start  5: test-tutorial-P04-04-hcurl
1>   5/21 Test  #5: test-tutorial-P04-04-hcurl ...........   Passed    3.83 sec
1>        Start  6: test-tutorial-06-system
1>   6/21 Test  #6: test-tutorial-06-system ..............   Passed   19.51 sec
1>        Start  7: test-tutorial-P03-02-cathedral-rk
1>   7/21 Test  #7: test-tutorial-P03-02-cathedral-rk ....   Passed   19.96 sec
1>        Start  8: test-linear-advection-dg-adapt
1>   8/21 Test  #8: test-linear-advection-dg-adapt .......   Passed   34.41 sec
1>        Start  9: test-adaptivity-benchmarkSmoothIso
1>   9/21 Test  #9: test-adaptivity-benchmarkSmoothIso ...   Passed    3.25 sec
1>        Start 10: test-integrals-domain-perimeter-1
1>  10/21 Test #10: test-integrals-domain-perimeter-1 ....   Passed    0.06 sec
1>        Start 11: test-integrals-domain-perimeter-2
1>  11/21 Test #11: test-integrals-domain-perimeter-2 ....   Passed    0.04 sec
1>        Start 12: test-integrals-domain-perimeter-3
1>  12/21 Test #12: test-integrals-domain-perimeter-3 ....   Passed    0.38 sec
1>        Start 13: test-tutorial-P08-02-nurbs-1
1>  13/21 Test #13: test-tutorial-P08-02-nurbs-1 .........   Passed    0.29 sec
1>        Start 14: test-tutorial-P08-02-nurbs-2
1>  14/21 Test #14: test-tutorial-P08-02-nurbs-2 .........   Passed    0.22 sec
1>        Start 15: test-tutorial-P08-02-nurbs-3
1>  15/21 Test #15: test-tutorial-P08-02-nurbs-3 .........   Passed    0.25 sec
1>        Start 16: test-tutorial-P08-02-nurbs-XML-1
1>  16/21 Test #16: test-tutorial-P08-02-nurbs-XML-1 .....   Passed    0.37 sec
1>        Start 17: test-tutorial-P08-02-nurbs-XML-2
1>  17/21 Test #17: test-tutorial-P08-02-nurbs-XML-2 .....   Passed    0.25 sec
1>        Start 18: test-tutorial-P08-02-nurbs-XML-3
1>  18/21 Test #18: test-tutorial-P08-02-nurbs-XML-3 .....   Passed    0.30 sec
1>        Start 19: test-subdomains
1>  19/21 Test #19: test-subdomains ......................   Passed    1.33 sec
1>        Start 20: test-spaces
1>  20/21 Test #20: test-spaces ..........................   Passed    9.34 sec
1>        Start 21: test-exceptions
1>  21/21 Test #21: test-exceptions ......................   Passed    0.06 sec
1> 
1>  100% tests passed, 0 tests failed out of 21
1> 
1>  Label Time Summary:
1>  slow    =  38.71 sec
1> 
1>  Total Test time (real) = 111.13 sec
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

Sent: Monday, January 7, 2013 4:06 AM

Subject: Re: Cannot Find AMD.nmake or UMFPACK.nmake for building Hermes2D on windows

Hi Graham,

Lukas Korous

unread,
Jan 8, 2013, 7:52:58 AM1/8/13
to herm...@googlegroups.com
Hi Graham,

thanks a lot, we will be very grateful for the summary.

Have a nice day,
Lukas

--
You received this message because you are subscribed to the Google Groups "hermes2d" group.
To post to this group, send email to herm...@googlegroups.com.
To unsubscribe from this group, send email to hermes2d+u...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/hermes2d?hl=en.



--
Lukas Korous

Graham Sortino

unread,
Jan 8, 2013, 8:38:34 PM1/8/13
to herm...@googlegroups.com
Lukas/Pavel - thank you again very much for your assistance in helping me get Hermes2D compiled!

This is a summary of my lessons learned and issues encountered. Hopefully this will help others that may run into similar issues:

Note- my build was on Windows 7 x64bit OS with Visual Studio 12

I used MinGW for compiling AMD and UMFPACK

**General**
# when running make files on windows I needed to replace windows style syntax with it's windows equivalents. For example:
-Replace all ';' symbols in the makefile command syntax with the windows equivalent '&'
-Remove all './' references in the makefile command syntax when the purposes is to execute a script or process. Windows does not use these.

**uFconfig.mk**
-I set as follows
    CC = gcc
    # CFLAGS = -O

    # C++ compiler (also uses CFLAGS)
    CPLUSPLUS = g++
-Change your rm and mv commands to their windows equivalent:
    # delete and rename a file
    RM = del
    MV = move

**AMD**
-When building demo remove the diff commands from the demo Makefile

#Building Hermes
%PATH% variable
I made a mistake here and accidentally set my %PATH% to <root>\dependecies\bin rather than <root>\dependencies\bin (eg. spelling mistake). I think there might have been a spelling mistake in the docs but it was still a silly mistake I made and took we a while to figure out.
Resolve unfound cmake variables for XERCES and XSD
    add the following variables to CMake.vars
        set(XSD_ROOT "c:/software/Hermes2D/hermes-master/dependencies")
        set(XERCES_ROOT "c:/software/Hermes2D/hermes-master/dependencies")
A few .h files weren't found when I complied herems. Adding their paths to the include directory in Visual 2012 as follows resolved the issue.
    Project -> Properties -> Configuration Properties -> VC++ Directories -> Include Directories:
   
Resolve LIBCMTD.lib LNK2005 errors when building hermes2D (This only happened to me once)
    http://support.microsoft.com/kb/148652 (Solution # 1)
Resolve unresolved linker error in Xerces
    http://stackoverflow.com/questions/10506582/xerces-c-unresolved-linker-error


Pavel Solin

unread,
Jan 8, 2013, 10:06:50 PM1/8/13
to hermes2d
Graham,
 thank you very much and let us know 
if you need anything else.

Best,

Pavel


--
You received this message because you are subscribed to the Google Groups "hermes2d" group.
To post to this group, send email to herm...@googlegroups.com.
To unsubscribe from this group, send email to hermes2d+u...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/hermes2d?hl=en.



--
Reply all
Reply to author
Forward
0 new messages