Commit Graph

84 Commits

Author SHA1 Message Date
Bill Somerville 52e2beb320 Adjust CMake script for OpenMP on Mac
The native Mac C/C++ compilers (Clang) do not support OpenMP so CMake by
default disables OpenMP for the project since it requires all project compilers
to support it. This means that we have to hack the build script on Mac to
compile the Fortran sources with OpenMP turned on and manually link in the
required OpenMP run time support to the executables.

This hack presumes that the Fortran compiler on Mac is gfortran.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4947 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-10 14:04:38 +00:00
Bill Somerville 127f72f3ad Remove redundant copy of large array in JT9 decoder
Also moved  the same large array  from stack to heap  which along with
other prior  changes now allows  the Windows jt9 OpenMP  executable to
run with a default stack size again.

This also removes a crash on the Mac version which was probably due to
excessive stack usage.

Net result is an even faster JT9 decoder.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4942 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-08 09:53:20 +00:00
Bill Somerville f60c2e19c5 Fix compiler detection on Mac OS X
Set the CMake variables CMAKE_OSX_SYSROOT and CMAKE_OSX_DEPLOYMENT_TARGET
must be set before the project() command since they can effect compiler
detection and capability tests.

Only use the -stdlib=libc++ option on Mac OS X when using Clang tools.
On other platforms with Clang tools libc+ is not currently the best choice.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4938 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-06 14:37:10 +00:00
Joe Taylor 010f85ec70 Further algorithmic tweaks in the JT9 decoder.
More detailed message to come, with comparative timing statistics.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4926 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-02 18:29:00 +00:00
Bill Somerville a735ed8487 Only install jt9_omp if it has been built
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4925 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-02 14:57:43 +00:00
Bill Somerville a45af230f8 Only add stack size link commands on Windows
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4923 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-02 11:34:29 +00:00
Bill Somerville ffdeafe3bb Build an OpenMP version of jt9 where possible
This change  introduces the program jt9_omp  which is a testbed  for a
multi-threaded version of the jt9 decoder program. The program jt9_omp
should be  a directly substitutable for  jt9 except that JT65  and JT9
decodes are computed in parallel.

Also enable  the OpenMP directives in  decoder.f90 - note this  is not
yet a working multi-threaded decoder and the existing jt9 is still the
correct decoder to be used in WSJT-X.

Increased the available  stack size for jt9_omp.exe as this  is a hard
limit on  Windows and  the default  is not big  enough for  the OpenMP
version of jt9.

Also  Fortran  array  bounds  checking is  now  disabled  for  Release
configuration builds so as to improve performance a little.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4922 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-02 11:24:20 +00:00
Joe Taylor 94472ac31c Many changes in program jt9[.exe] aimed at speeding up the decoders.
The long FFTs can now use the multi-threaded FFTW routines.
Subroutine decode9.f90 was renamed jt9fano.f90.
The JT9 decoder's top-level functions were removed from decoder.f90
and put into a separate subroutine decjt90.f90.
Subroutine decoder.f90 is now configured for possible use of OpenMP 
SECTIONS, with the JT9 and JT65 decoders running concurrently on
a multi-core machine.  Note, however, that this concurrent processing 
is not yet fully implemented.  Probably calls to timer need to be removed; 
some variables used in calls to jt65a and decjt9 may need to be 
declared PRIVATE in decoder; some sections probably need to be declared 
CRITICAL; probably some SAVE statements in downstream routines have
made them not thread-safe; etc., etc.  

I'm a neophyte at using OpenMP.  Comments, suggestions, and/or tests by
others will be welcome!



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4919 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-02-01 16:23:36 +00:00
Bill Somerville dade66253c Tell the CMake FFTW3 finder that we want to use threads
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4917 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-01-31 11:28:29 +00:00
Joe Taylor 3a8232b113 Made a start at implementing an option to use multi-threaded FFTs.
New command-line option for jt9: [-m nthreads].  Default is nthreads=1.
Also refactored a loop in filbig.f90 that was taking far too much
time.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4916 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-01-30 21:28:10 +00:00
Bill Somerville c70f523952 Optimized kvasd download in build
The kvasd binary  need only be downloaded  if the MD5 hash  for it has
changed.

Also fixed a defect in the status check of the MD5 hash download.

Also switched to HTTP protocol as  it is quick and gives clearer error
messages.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4830 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-12-16 17:58:01 +00:00
Bill Somerville 806b968a42 Add rigctl to WSJT-X package as rigctl-wsjtx
The rigctl program is not used  directly by WSJT-X but it does contain
the  same  Hamlib  code  from  the   Hamlib  v3  fork  as  WSJT-X  and
rigctld-wsjtx. So it makes sense to distribute it as a testing tool or
for any user that needs it to converse with the rigctld-wsjtx server.

Merged from wsjtx-1.4 branch.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4775 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-12-06 16:45:57 +00:00
Bill Somerville f37ed4cd78 Take advantage of the new KVASD v1.12
Pass the  temporary directory to  jt9 and use  it to give  the correct
paths  to  temporary files.  Also  jt9  passes  the absolute  path  to
kvasd.dat in the temporary directory to kvasd.

Clear out all the annoying cruft that has accumulated due to having to
run with $CWD as the temporary directory.

Use QStandardPaths  to find the  writable data directory  where needed
rather than passing it around  between objects. This now works because
the $CWD hasn't been changed.

Do away with the CMake option WSJT_STANDARD_FILE_LOCATIONS as it is no
longer needed.

Fix astro status file azel.dat formatting.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4732 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-12-03 00:06:54 +00:00
Bill Somerville c7e74af254 Add a header to the build stating architecture being built for
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4731 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-12-03 00:06:37 +00:00
Bill Somerville 7377e53dfc Add THANKS acknowledgements file to installed files
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4680 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-11-29 00:04:53 +00:00
Bill Somerville 118638a783 Top level docs added to installed files
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4678 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-11-28 23:45:21 +00:00
Bill Somerville 46064e3af3 Add on-line KVASD install to Windows NSIS installer
To comply  with the  WSJT_X GPL  v3 license,  the closed  source KVASD
executable  must  be  delivered   separately  and  optionally  to  end
users. To facilitate  this a new install option has  been added to the
Windows  installer  to install  KVASD  by  downloading it  at  install
time. The installer  first downloads the KVASD EULA  from the Internet
and presents it  to the user for reading and  agreement.  If agreement
is  given  the  KVASD  binary  is downloaded  from  the  Internet  and
checksummed using an  MD5 hash, if that passes, it  is installed along
with WSJT-X.  An  uninstall record is also written to  ensure that, if
installed, KVASD will be un-installed if WSJT-X is un-installed.

To facilitate this enhancment to the NSIS installer the standard CPack
NSIS  installer script  template has  been overridden  with a  project
specific version.   This version also  implements the more  modern and
recomended nsDialogs mechanism for  installer custom page construction
including the install options page. See CMake/Modules/NSIS.template.in
for  details   and  CMakeCPackOptions.cmake.in   for  usage   in  this
installer.

Merged from branch wsjtx-1.4.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4663 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-11-27 17:17:19 +00:00
Bill Somerville 8e806c7201 Mac KVASD installer
Merged from branch wsjtx-1.4.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4661 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-11-27 15:31:31 +00:00
Joe Taylor 021f677687 Add wisdom for the FFTs done by symspec_(), wsjtx[.exe].
Also complete the wrapper code in wisdom.c.
TBD: should be possible to use fftw3f.f03 instead of the ad hoc wisdom.c.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4617 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-11-21 15:17:22 +00:00
Joe Taylor 2bc824b4a5 Try a home-made wrapper for fftwf_export_wisdom_to_filename().
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4614 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-11-21 00:44:50 +00:00
Bill Somerville deb94dde78 Make Mac OS X portability and compatibility options overridable
To allow personal builds on Mac OS X on 10.7 where no 10.9 SDK is
available, the key options have been made CMake ached variables so
that they may be overridden at configure time.

Merged from wsjtx-1.4 branch.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4585 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-11-04 20:59:51 +00:00
Bill Somerville 7ef6688869 WSJT-X User Guide location variable
In order to support the WSJT-X  super build in LOCAL mode the location
of the User Guide needs to be specified.

A CMake cache  variable WSJT_MANUAL_DIRECTORY has been  added to allow
the URI of the User Guide directory to be specified at configure time.
The default value remains as the project web site.

Merged from branch wsjtx-1.4.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4566 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-10-29 13:25:34 +00:00
Bill Somerville 2bac856a5b Fix missing manpages dependency
CMake  v3  complains  about   missing  dependencies  so  the  manpages
dependency must not be added to the wsjtx target unless it exists.

Merged from wsjtx-1.4 branch.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4564 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-10-28 10:51:28 +00:00
Bill Somerville b2e34418df Fix missing target
The debian target was being added  as a dependency to teh wsjtx target
even when it  doesn't exist. This isn't  allowed in CMake v3  so it no
longer added if it doesn't exist.

Merged from wsjtx-1.4 branch.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4562 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-10-28 01:00:46 +00:00
Bill Somerville 1c9f1e603b Fix Fortran options on Mac and CMake 3 adjustments
The minimum OS X version  supported and SDK selection compiler options
were not being set for Fortran compiles on Mac.

As  CMake 3.0.2  is the  current release  the facilities  obsoleted by
CMake 3.0 have been removed. This also entails making CMake 2.8.10 the
minimum supported version.

Merged from wsjtx-1.4 branch.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4560 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-10-28 00:49:27 +00:00
Bill Somerville 992643d693 Add a CMake option to allow a Debug wsjtx.exe to be a console application
The normal way  to view console output from a  Windows GUI application
(i.e. with a  WinMain entry point) is to attach  a debugger which will
then receive the application console output in its own console.

If it is  required to build wsjtx.exe as a  console application it may
be  done  by  setting  the new  WSJT_CREATE_WINMAIN  CMake  option  to
OFF. This option  is only available for Debug  configuration builds to
avoid  accidental  shipping of  non-Debug  configuration  builds as  a
console application.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4555 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-10-21 20:51:00 +00:00
Bill Somerville 5a56cbdedb Tidy up unused files and move platform specific files
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4549 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-10-20 18:01:21 +00:00
Bill Somerville 065483e283 Fix Mac OS X DragNDrop DMG Volume name
The DMG volume name must not change between versions as it invalidates
the .DS_Store file backgound image.

Merged from wsjtx-1.4 branch.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4548 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-10-20 17:38:53 +00:00
Joe Taylor 0e96882d8b Improve the way messages with compound calls are automatically generated.
Routine packmsg now tries the shortlist (Type 1 prefix or suffix) first.
Then it tries to to make a valid message using a Type 2 prefix or suffix.
If both fail, it packs the first 13 characters as a free-text message.

The GUI now generates the most useful messages with compound callsigns
of all valid types.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4533 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-10-19 00:56:41 +00:00
Bill Somerville 5add0aeb97 Ensure user guide and kvasd is always latest version
Merged from wsjtx-1.4 branch.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4532 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-10-19 00:23:42 +00:00
Bill Somerville 2f70ab5b3e Unjustify project description
The justified  text in  the project  description caused  many unwanted
hard line breaks when viewed in Debian package install tools.

Merged from wsjtx-1.4 branch.




git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4512 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-10-11 19:01:12 +00:00
Bill Somerville 2e57803a41 Fix warning in build script
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4506 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-10-11 00:40:46 +00:00
Bill Somerville 8cf704202f Only do package generation if appropriate tools are available
Debian packages are  only build if dpkg-buildpackage  is available and
RPM package generation is only done if rpmbuild is available.

Merged from wsjtx-1.4 branch.




git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4504 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-10-09 19:04:26 +00:00
Bill Somerville c484fe8707 Make default Linux Release builds FOSS compliant
The  kavasd binary  is  not  open source  so  cannot be  automatically
bundled with WSJT-X on Linux.

The CMake option  WSJT_INCLUDE_KVASD has been added with  a default of
OFF in Linux Release configuration builds.

Merged from wsjtx-1.4 branch.




git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4498 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-10-09 03:03:25 +00:00
Bill Somerville ffa6305b98 Better version identification.
An  ambiguity  existed  between  release  candidates  and  development
versions  as there  was no  definitive identification  for development
versions.

Added a  new version number  suffix of  '-devel' which appears  if the
release candidate number is missing  or zero in Versions.cmake and the
revision is not marked as a release version, also in Versions.cmake.

Also re-factored setting of version number suffiexes to a single place
in in CMake/VersionCompute.cmake.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4422 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-10-01 15:57:43 +00:00
Bill Somerville 1b368f28c0 Do not generate a binary tarball package on Linux.
This  was generated  in error  by selecting  one of  the source  CPack
generators as a default.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4408 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-09-30 01:18:30 +00:00
Bill Somerville 8c9a645e88 Merge r4393 from branches/wsjtx-1.4 to branches/wsjtx.
Add Qt assistive technology support to release builds.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4394 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-09-27 22:54:37 +00:00
Bill Somerville 00d13d6521 Include Mac install instructions in package root
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4388 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-09-27 15:48:22 +00:00
Bill Somerville eb0439d551 Add some RPM package generator variables.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4385 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-09-27 00:41:28 +00:00
Bill Somerville c6110aeb4f Fix package file naming on Linux to include architecture.
The *nix package generators do  not include the target architecture in
the package file names.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4382 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-09-26 14:41:42 +00:00
Bill Somerville 70b3e5e5c8 Define supported o/s versions on Mac.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4369 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-09-25 16:12:19 +00:00
Bill Somerville 36a34c7aa2 Make forced include of config file work with clang.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4368 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-09-25 16:12:11 +00:00
Bill Somerville d207d3f3d5 Fix local user manual on Mac.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4367 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-09-25 16:12:03 +00:00
Bill Somerville e2c8634f54 Get local user manual working on Linux systems.
The  location  of  documentation   files  on  Linux  distributions  is
controlled  to a  certain extent.  Using the  QStandardPaths::locate()
method helps us with this.

Work round the  misbehaviour of QCoreApplication::applicationDirPath()
when  the  CWD has  been  changed  by  working out  the  documentation
location before changing  the CWD to a temporary  directory. This path
is now provided by the Configuration settings class which also manages
other run time paths.

Updated  Debian packaging  to move  a little  nearer a  conforming DEB
file.

Added a basic manpage for rigctld-wsjtx.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4364 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-09-25 14:45:36 +00:00
Bill Somerville 835cd0f89b Fix online manual URL.
Fix manpage destination.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4360 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-09-25 00:06:07 +00:00
Bill Somerville d4e55a093d Add local HTML help file to help menu.
So that a manual can be viewed without an Internet connection a second
manual action has been added to  the WSJT_X help menu. This shells out
to the default web browser with a local file target.

The build has been enhanced to install and package the current version
of the  HTML user manual  as downloaded from  the project web  site at
build time

The package  file locations have  been adjusted to be  compatible with
the QStandardPaths  class so that  its locate()  method can be  used to
portably access resources like this local help file

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4359 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-09-24 23:46:32 +00:00
Bill Somerville b06ba8ab11 Don't set sections options on Apple LLVM toolchain.
The  Apple  clang  LLVM  compilers  do not  support  the  gcc  options
data-sections, function-sections  and, gc-sections so we  must not add
them on Mac builds.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4356 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-09-24 17:26:38 +00:00
Bill Somerville db199fdf6d Remove unecessary property set.
The -mwindows  linker option  is not explicitly  required since  it is
added automatically to WIN32 executables by CMake.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4355 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-09-24 17:26:29 +00:00
Bill Somerville d30cbe4591 Minimize Releaase Executable Sizes.
Use the  data-sections and function-sections gcc/g++  compiler options
to  create  sections  for  each   function  and  data  item  then  use
gc-sections in the link to discard all unreferenced sections.

This has most benefit if the hamlib library we statically link is also
compiled with data-sections and function-sections.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4351 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-09-24 17:25:38 +00:00
Bill Somerville bb37fdeedc Rename packaged rigcld to avoid conflict with official install.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4345 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-09-23 15:40:05 +00:00