#=======================================================================
# Makefile for creating .bib-new files with citations labels
# standardized to the conventions of the BibNet project.
#
# Usage:
#	make foo.bib-new
#
# This will convert foo.bib to foo.bib-new, with standardized citation
# labels.  It will also create the file foo.awk which can be used to
# convert old citation labels in TeX manuscripts to the new form.
#
# [05-Nov-1994]
#=======================================================================

# Change these two directories to match local conventions if you
# wish to do "make install" and "make install-ftp":
BINDIR		= /usr/local/bin
CATDIR		= /usr/local/man/cat1
MANDIR		= /usr/local/man/man1
MANEXT		= 1
FTPDIR		= /u/ftp/pub/tex/bib
LIBDIR		= /usr/local/lib

# Sun Solaris 2.x nawk often raises 'input record too long' errors
# from bibliographies with long string values.  gawk is better.  If
# you change this, set the V macro below to the appropriate value.
AWK		= gawk

BIBCLEAN	= bibclean

# This specific bibclean initialization file should always be used for
# the BibNet project!
BIBCLEANFLAGS	= -init-file bibnet.ini -delete-empty -remove-OPT-prefixes


# In this version, the filters BIBSORT, CHECKSUM, FIXDATETIME, and
# FIXNAMES are eliminated if BIBFILTER is an empty string, so that no
# additional processing is carried out on the output bibliography.

BIBFILTER	= | $(BIBSORT) | $(FIXDATETIME) | $(FIXNAMES) | $(CHECKSUM)
BIBFILTER	=


BIBSORT		= bibsort -byyear

# When HOST, USER, __DATE__, and __TIME__ are available,
# citesub preserves them for its version output
CFLAGS		= $(OPT) $(DEFINES) -DHOST=\"$(HOST)\" -DUSER=\"$(USER)\"

CHECKSUM	= checksum

CHMOD		= chmod

# The C version of citesub is about 50 times faster than the awk
# version, but either can be used.
CITESUB		= $(AWK) -f citesub.awk
CITESUB		= ./citesub

COL		= col -b

COMPRESS	= compress

CP		= /bin/cp

DEFINES		=

DIST-FILES	= CHANGELOG Makefile README biblabel.awk biblabel.hlp \
		  biblabel.man biblabel.ps biblabel.sh biblabel.txt \
		  bibnet.ini citesub.awk citesub.c citesub.hlp \
		  citesub.man citesub.ps citesub.txt fixnames.sed \
		  hash.c hash.h man2ps os.h rofvms.awk strdup.c \
		  stricm.c typedefs.h unixlib.h xalloc.c xalloc.h \
		  xctype.h xerrno.h xstat.h xstddef.h xstdlib.h \
		  xstring.h xtypes.h

FIXDATETIME     = $(SED) -e "s/%%% date =.*/%%% date = \
		  \"`$(GETDATE)`\",/" \
			-e "s/%%%     time            = \"..:..:..\",/%%%     time            = \"`$(GETTIME)`\",/"

# This pipeline stage takes care of the occasional changes of words,
# such as Bjoerstad -> Bjorstad, when the generic substitutions of
# the awk programs cannot do the desired job.
FIXNAMES	= $(SED) -f fixnames.sed

# Extra flags for gcc and g++ to get maximal checking
GCCFLAGS	= -Wall -Wshadow -Wcast-qual -Wpointer-arith \
		  -Wwrite-strings

GETDATE		= date +%d\ %B\ %Y	# returns 05 May 1994

GETTIME		= date +%T\ %Z		# returns "12:34:56 MDT"

LN		= ln -s

MAN2PS		= ./man2ps

MKDIR		= mkdir -p
MKDIR		= mkdir

NROFF		= nroff

# Object file extension
O		= .o

OPT		= -g

RM		= /bin/rm -f

RMDIR		= rmdir

SED		= /bin/sed

SHELL		= /bin/sh

TIME		=
TIME		= nice time

UNZIP		= unzip

# Some awk versions require -v to set a variable, and some don't
# recognize -v at all.  gawk requires -v.
V		= -v

# NB: The version number of the FTP bibjoin archive files is extracted
# from that of biblabel.sh.
VERSION		= `$(AWK) '/^\#\#\#[ \t]*version *= *"[0-9.]+", *$$/ \
		{ gsub(/[^0-9.]/,"",$$4); print $$4 }' biblabel.sh`

ZIP		= zip

ZOO		= zoo

#=======================================================================

.SUFFIXES:

.SUFFIXES: .bib-new .sub .bib .o .i .c

# .bib-new files have standardized tags, and may be sorted by citation
# key, depending on the definition of BIBFILTER.  They need to be
# tested manually with LaTeX and BibTeX before being accepted.

.bib.bib-new:
	$(TIME) $(MAKE) $*.sub
	$(TIME) $(CITESUB) $< $(BIBFILTER) >$@

.bib.sub:
	if [ -f $*.ini ] ; \
	then $(TIME) $(BIBCLEAN) $(BIBCLEANFLAGS) -no-check -no-warning \
		-max-width 0 -init-file $*.ini $< | \
		$(AWK) -f biblabel.awk $(V) FILENAME=$< >$*.sub ; \
	else $(TIME) $(BIBCLEAN) $(BIBCLEANFLAGS) -no-check -no-warning \
		-max-width 0 $< | \
		$(AWK) -f biblabel.awk $(V) FILENAME=$< >$*.sub ; \
	fi

# Preprocess only and eliminate lines with only white space.
.c.i:
	$(CC) $(CFLAGS) -E $< | grep -v '^[ 	]*$$' >$*.i

#=======================================================================

all:	citesub

bib-new-files:
	for f in *.bib ; \
	do \
	    $(TIME) $(MAKE) $$f-new ; \
	done

# VAX VMS help file format from biblabel.txt
biblabel.hlp:	biblabel.txt rofvms.awk
	$(AWK) -f rofvms.awk <biblabel.txt >biblabel.hlp

biblabel.ps:	biblabel.man
	$(MAN2PS) <biblabel.man >biblabel.ps

biblabel.shar:	$(DIST-FILES)
	shar -b -c -v $(DIST-FILES) >biblabel.shar

biblabel.tar:	$(DIST-FILES)
	-$(RM) biblabel.tar biblabel.tar-lst
	tar chf biblabel.tar $(DIST-FILES)
	-$(MKDIR) biblabel-$(VERSION)
	cd biblabel-$(VERSION); tar xf ../biblabel.tar
	tar cf biblabel-$(VERSION).tar biblabel-$(VERSION)
	-$(RM) -r biblabel-$(VERSION)
	-$(RM) biblabel.tar
	$(LN) biblabel-$(VERSION).tar biblabel.tar

biblabel.txt:	biblabel.man
	$(NROFF) -man $? | $(COL) >$@

biblabel.zip:	$(DIST-FILES)
	-$(RM) biblabel*.zip
	-$(RM) biblabel*.zip-lst
	$(ZIP) biblabel-$(VERSION).zip $(DIST-FILES)
	$(UNZIP) -v biblabel-$(VERSION).zip >biblabel-$(VERSION).zip-lst
	$(LN) biblabel-$(VERSION).zip biblabel.zip

biblabel.zoo:	$(DIST-FILES)
	-$(RM) biblabel*.zoo
	-$(RM) biblabel*.zoo-lst
	$(ZOO) a biblabel-$(VERSION).zoo $(DIST-FILES)
	$(ZOO) v biblabel-$(VERSION).zoo >biblabel-$(VERSION).zoo-lst
	$(LN) biblabel-$(VERSION).zoo biblabel.zoo

citesub:	citesub$(O) hash$(O) strdup$(O) stricm$(O) xalloc$(O)
	$(CC) $(CFLAGS) -o citesub citesub$(O) hash$(O) strdup$(O) \
		stricm$(O) xalloc$(O)

# VAX VMS help file format from citesub.txt
citesub.hlp:	citesub.txt rofvms.awk
	$(AWK) -f rofvms.awk <citesub.txt >citesub.hlp

citesub.ps:	citesub.man
	$(MAN2PS) <citesub.man >citesub.ps

citesub.txt:	citesub.man
	$(NROFF) -man $? | $(COL) >$@

HASH_H	      = hash.h

OS_H          = os.h            xerrno.h        xstddef.h

UNIXLIB_H     = unixlib.h       $(OS_H)         $(XSTAT_H)      $(XTYPES_H)

XALLOC_H      = xalloc.h        $(OS_H)

XSTAT_H       = xstat.h         $(OS_H)         $(XTYPES_H)

XSTRING_H     = xstring.h       $(OS_H)         $(XTYPES_H)

XTYPES_H      = xtypes.h        $(OS_H)

citesub$(O):	citesub.c	hash.h		$(OS_H)		$(XALLOC_H) \
		$(XSTDLIB_H)	$(XSTRING_H)

hash$(O):	hash.c          $(OS_H)         $(XALLOC_H)     $(XSTRING_H) \
		hash.h          xctype.h

strdup$(O):	strdup.c        $(OS_H)         $(UNIXLIB_H)    $(XSTDLIB_H) \
		$(XSTRING_H)

stricm$(O):	stricm.c        $(OS_H)         $(XSTDLIB_H)    $(XSTRING_H) \
		xctype.h

xalloc$(O):	xalloc.c        $(OS_H)         $(UNIXLIB_H)    $(XALLOC_H) \
		$(XSTDLIB_H)    typedefs.h

clean mostlyclean:
	-$(RM) *.blg
	-$(RM) *.dvi
	-$(RM) *.i
	-$(RM) *.idx
	-$(RM) *.ilg
	-$(RM) *.log
	-$(RM) *.o
	-$(RM) *.shar
	-$(RM) *.tar
	-$(RM) *.tar-lst
	-$(RM) *.tmp.1 *.tmp.2 *.tmp.3
	-$(RM) *.zip
	-$(RM) *.zip-lst
	-$(RM) *.zoo
	-$(RM) *.zoo-lst
	-$(RM) *~
	-$(RM) \#*
	-$(RM) a.out
	-$(RM) core

clobber distclean:	clean
	-$(RM) *.aux
	-$(RM) *.bbl
	-$(RM) *.hlp
	-$(RM) *.ind
	-$(RM) *.lof
	-$(RM) *.lot
	-$(RM) *.ps
	-$(RM) *.toc
	-$(RM) *.txt
	-$(RM) citesub

install:	citesub
	-$(MKDIR) $(LIBDIR)/biblabel
	$(CP) biblabel.awk $(LIBDIR)/biblabel/biblabel.awk
	$(CHMOD) 644 $(LIBDIR)/biblabel/biblabel.awk
	$(SED) -e 's@^BIBLABELAWK=./biblabel.awk@BIBLABELAWK=$(LIBDIR)/biblabel/biblabel.awk@' \
		biblabel.sh | $(CHECKSUM) >$(BINDIR)/biblabel
	$(CHMOD) 755 $(BINDIR)/biblabel
	$(CP) biblabel.man $(MANDIR)/biblabel.$(MANEXT)
	-$(RM) $(CATDIR)/biblabel.$(MANEXT)
	$(CHMOD) 644 $(MANDIR)/biblabel.$(MANEXT)
	$(CP) citesub $(BINDIR)/citesub
	$(CHMOD) 755 $(BINDIR)/citesub
	$(CP) citesub.man $(MANDIR)/citesub.$(MANEXT)
	-$(RM) $(CATDIR)/citesub.$(MANEXT)
	$(CHMOD) 644 $(MANDIR)/citesub.$(MANEXT)

install-ftp:	biblabel.tar biblabel.zip biblabel.zoo
	tar tvf biblabel-$(VERSION).tar >$(FTPDIR)/biblabel-$(VERSION).tar-lst
	$(COMPRESS) <biblabel-$(VERSION).tar \
		>$(FTPDIR)/biblabel-$(VERSION).tar.z
	$(CP) biblabel-$(VERSION).zip $(FTPDIR)
	$(CP) biblabel-$(VERSION).zip-lst $(FTPDIR)
	$(CP) biblabel-$(VERSION).zoo $(FTPDIR)
	$(CP) biblabel-$(VERSION).zoo-lst $(FTPDIR)
	ls -l $(FTPDIR)/biblabel*

realclean:	distclean
	-$(RM) *.bib-new
	-for f in *.bib ; \
	do \
	    $(RM) `basename $$f .bib`.sub; \
	done

uninstall:
	-$(RM) $(BINDIR)/biblabel $(MANDIR)/biblabel.$(MANEXT)
	-$(RM) $(BINDIR)/citesub $(MANDIR)/citesub.$(MANEXT)
	-$(RM) $(LIBDIR)/biblabel/biblabel.awk
	-$(RMDIR) $(LIBDIR)/biblabel

uninstall-ftp:
	-$(RM) $(FTPDIR)/biblabel-$(VERSION).tar
	-$(RM) $(FTPDIR)/biblabel-$(VERSION).tar-lst
	-$(RM) $(FTPDIR)/biblabel-$(VERSION).zip
	-$(RM) $(FTPDIR)/biblabel-$(VERSION).zip-lst
	-$(RM) $(FTPDIR)/biblabel-$(VERSION).zoo
	-$(RM) $(FTPDIR)/biblabel-$(VERSION).zoo-lst

#=======================================================================
# Public convenience targets.   You can supply a TARGETS=target setting
# when you invoke make to select a particular target; if you do not,
# then the default target, all, will be made.

TARGETS	= all

generic:
	$(MAKE) CC=cc CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

cdc-mips-epix-cc:
	$(MAKE) CC='cc -systype bsd43 -D__CC__' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

XXCFLAGS = -UHOST -DHOST=\"`hostname`\"

cray-el94-unicos-cc:
	$(MAKE) CC=cc CFLAGS='$(CFLAGS) $(XCFLAGS) $(XXCFLAGS)' $(TARGETS)

cray-el94-unicos-c89:
	$(MAKE) CC=c89 CFLAGS='$(CFLAGS) $(XCFLAGS) $(XXCFLAGS)' $(TARGETS)

cray-el94-unicos-c++:
	$(MAKE) CC=CC CFLAGS='$(CFLAGS) $(XCFLAGS) $(XXCFLAGS)' $(TARGETS)

dec-alpha-osf1-c++:
	$(MAKE) CC='cxx -x cxx' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

# NB: At OSF/1 version 1.x, can omit -std1, but need it for OSF/1 version 2.x
dec-alpha-osf1-cc:
	$(MAKE) CC='c89 -std1' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

dec-alpha-osf1-g++:
	$(MAKE) CC='g++ $(GCCFLAGS)' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

dec-alpha-osf1-gcc:
	$(MAKE) CC='gcc $(GCCFLAGS)' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

dec-mips-ultrix-cc:
	$(MAKE) CC=cc \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

dec-mips-ultrix-g++:
	$(MAKE) CC='g++ $(GCCFLAGS)' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

dec-mips-ultrix-gcc:
	$(MAKE) CC='gcc $(GCCFLAGS)' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

dec-mips-ultrix-lcc:
	$(MAKE) CC='lcc -A -A -n' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

hp-370-bsd43-c++:
	$(MAKE) CC=CC \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

hp-370-bsd43-cc:
	$(MAKE) CC=CC \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

hp-9000-hpux-c++:
	$(MAKE) CC='CC -D_HPUX_SOURCE' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

hp-9000-hpux-cc:
	$(MAKE) CC='c89 -D_HPUX_SOURCE' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

IBM370CC = 'CC +a1 +p +w -D_POSIX_SOURCE -Hansi -D__STDC__ -D_BSD -D_AIX \
	-D_AIX370'
ibm-370-aix-c++:
	$(MAKE) CC=$(IBMPS2CC) \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

ibm-370-aix-cc:
	$(MAKE) CC=cc \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

IBMPS2CC = 'CC +a1 +p +w -D_POSIX_SOURCE -Hansi -D__STDC__ -D_BSD -D_AIX \
	-Dps2 -DHAVE_TERMIO_H'
ibm-ps2-aix-c++:
	$(MAKE) CC=$(IBMPS2CC) \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

ibm-ps2-aix-cc:
	$(MAKE) CC=cc \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

ibm-rs6000-aix-cc:
	$(MAKE) CC='c89 -D_POSIX_SOURCE -D_ALL_SOURCE' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

ibm-rs6000-aix-c++:
	$(MAKE) CC='xlC' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

ibm-rs6000-aix-g++:
	$(MAKE) CC='g++ $(GCCFLAGS)' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

ibm-rs6000-aix-gcc:
	$(MAKE) CC='gcc $(GCCFLAGS)' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

mips-mips-riscos-cc:
	$(MAKE) CC='cc -systype bsd43 -D__CC__' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

next-motorola-mach-cc:
	$(MAKE) CC='cc $(GCCFLAGS)' EXTRA-OBJS= \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

next-motorola-mach-g++:
	$(MAKE) CC='g++ $(GCCFLAGS)' EXTRA-OBJS= \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

next-motorola-mach-gcc:
	$(MAKE) CC='gcc $(GCCFLAGS)' EXTRA-OBJS= \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

next-motorola-mach-lcc:
	$(MAKE) CC='lcc -A -A -n' EXTRA-OBJS= \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

sgi-mips-irix-c++:
	$(MAKE) CC='CC +a1 -xansi +w' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

SGICC	= 'cc -ansiposix -fullwarn -woff 22,24,183,205,262,269,302,303'
sgi-mips-irix-cc:
	$(MAKE) CC=$(SGICC) \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

sgi-mips-irix-g++:
	$(MAKE) CC='g++ $(GCCFLAGS)' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

sgi-mips-irix-gcc:
	$(MAKE) CC='gcc $(GCCFLAGS)' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

sgi-mips-irix-lcc:
	$(MAKE) CC='lcc -A -A -n' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

stardent-mips-os2-cc:
	$(MAKE) CC='cc' OPT= \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

SUNAPCC	= 'apcc -Xc=ansi -D__ACC__ -D__solaris -DHAVE_TERMIOS_H'
sun-sparc-solaris2-apcc sun-sparc-sunos5-apcc:
	$(MAKE) CC=$(SUNAPCC) LINT='$(LINT) -D__ACC__ -D__solaris' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

sun-sparc-solaris2-g++ sun-sparc-sunos5-g++:
	$(MAKE) CC='g++ $(GCCFLAGS) -D__solaris -DHAVE_TERMIOS_H' \
		LINT='$(LINT) -D__solaris' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

sun-sparc-solaris2-gcc sun-sparc-sunos5-gcc:
	$(MAKE) CC='gcc $(GCCFLAGS) -D__solaris -DHAVE_TERMIOS_H' \
		LINT='$(LINT) -D__solaris' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

sun-sparc-solaris2-c++ sun-sparc-sunos5-c++:
	$(MAKE) CC='CC -D__solaris -DHAVE_TERMIOS_H' \
		LINT='$(LINT) -D__solaris' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

sun-sparc-solaris2-cc sun-sparc-sunos5-cc:
	$(MAKE) CC='cc -Xc -D__ACC__ -D__solaris -DHAVE_TERMIOS_H' \
		LINT='$(LINT) -D__ACC__ -D__solaris' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

# NB: We normally specify -n for checking for dereferencing of NULL
# pointers, but there is a bug in lcc 3.1 that results in bogus error
# messages for citesub.c.
sun-sparc-solaris2-lcc sun-sparc-sunos5-lcc:
	$(MAKE) CC='lcc -A -A -D__solaris -DHAVE_TERMIOS_H' \
		LINT='$(LINT) -D__solaris' \
		CFLAGS='$(DEFINES) -DHOST=\"$(HOST)\" -DUSER=\"$(USER)\" $(XCFLAGS)' \
		$(TARGETS)

SUNACC	= 'acc -Xc -vc -strconst -D__ACC__ -D_POSIX_SOURCE -DHAVE_TERMIOS_H'
sun-sparc-solaris1-acc sun-sparc-sunos4-acc:
	$(MAKE) CC=$(SUNACC) LINT='alint -D__ACC__ -D_POSIX_SOURCE' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

sun-sparc-solaris1-c++ sun-sparc-sunos4-c++:
	$(MAKE) CC='/usr/CC/sun4/CC -I/usr/CC/incl -D__SUNCC__' \
		LINT='alint -D__ACC__ -D_POSIX_SOURCE' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

sun-sparc-solaris1-gcc sun-sparc-sunos4-gcc:
	$(MAKE) CC='gcc $(GCCFLAGS) -DHAVE_TERMIOS_H' \
		LINT='alint -D__ACC__ -D_POSIX_SOURCE' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

sun-sparc-solaris1-g++ sun-sparc-sunos4-g++:
	$(MAKE) CC='g++ $(GCCFLAGS) -DHAVE_TERMIOS_H' \
		LINT='alint -D__ACC__ -D_POSIX_SOURCE' \
		CFLAGS='$(CFLAGS) $(XCFLAGS)' $(TARGETS)

# NB: We normally specify -n for checking for dereferencing of NULL
# pointers, but there is a bug in lcc 3.1 that results in bogus error
# messages for citesub.c.
sun-sparc-solaris1-lcc sun-sparc-sunos4-lcc:
	$(MAKE) CC='lcc -A -A -DHAVE_TERMIOS_H' \
		LINT='$(LINT)' \
		CFLAGS='$(DEFINES) -DHOST=\"$(HOST)\" -DUSER=\"$(USER)\" $(XCFLAGS)' \
		$(TARGETS)

#=======================================================================
