% 
% Licensed to the Apache Software Foundation (ASF) under one
% or more contributor license agreements.  See the NOTICE file
% distributed with this work for additional information
% regarding copyright ownership.  The ASF licenses this file
% to you under the Apache License, Version 2.0 (the
% "License"); you may not use this file except in compliance
% with the License.  You may obtain a copy of the License at
% 
%   http://www.apache.org/licenses/LICENSE-2.0
% 
% Unless required by applicable law or agreed to in writing,
% software distributed under the License is distributed on an
% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
% KIND, either express or implied.  See the License for the
% specific language governing permissions and limitations
% under the License.
% 
\documentclass[letterpaper]{article}

\def\DUCCSTANDALONE{}

% space between paragraphs
\usepackage{parskip}

\usepackage{hyperref}
% Margins
\usepackage[top=1in, bottom=.75in, left=.75in, right=.75in ]{geometry}

\usepackage{xcolor}
\usepackage{datetime}

% turn off section numbering
\setcounter{secnumdepth}{0}

\title{Guide to DUCC System Logs \\
Excerpt From Complete DUCC Documentation}
\author{Written and maintained by the Apache \\
UIMA\texttrademark Development Community}
\date{}
\begin{document}
\maketitle
\input{legal.tex}
\newpage

\input{common.tex}

\input{part4/system-logs.tex}

\end{document}
