%%
%% This is file `scrkbase.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% scrkvers.dtx  (with options: `package,scrkbase')
%% scrkbase.dtx  (with options: `package,option')
%% scrlfile.dtx  (with options: `load')
%% scrkbase.dtx  (with options: `package,body')
%% scrlogo.dtx  (with options: `logo')
%% 
%% Copyright (c) 1994-2007
%% Markus Kohm and any individual authors listed elsewhere in this file.
%% 
%% This file was generated from file(s) of the KOMA-Script bundle.
%% ---------------------------------------------------------------
%% 
%% It may be distributed under the conditions of the
%% LaTeX Project Public License in the version distributed together
%% with KOMA-Script, see file `lppl.txt' or `lppl-de.txt'.
%% 
%% This file may only be distributed together with a copy of the
%% KOMA-Script bundle.  You may however distribute the
%% KOMA-Script bundle without all such generated files.  See also
%% `lppl.txt' or `lppl-de.txt' for additional information.
%% 
%% The list of files belonging to KOMA-Script distribution is given in
%% the file `manifest.txt'.  See also `lppl.txt' or `lppl-de.txt' for
%% additional information.
%% 
%% If this file is a beta version, you are not allowed to distribute it.
%% 
%% English and German manuals are part of KOMA-Script bundle.
%% ----------------------------------------------------------
%% 
%% See `README'.
%% 
%% The KOMA-Script bundle (but maybe not this file) was based upon the
%% LaTeX2.09 Script family created by Frank Neukam 1993 and the LaTeX2e
%% standard classes created by The LaTeX3 Project 1994-1996.
%% 
%%% From File: scrkvers.dtx
\begingroup
  \makeatletter
  \ifx\KOMAScriptVersion\undefined
    \newcommand*{\@CheckKOMAScriptVersion}[1]{%
      \gdef\KOMAScriptVersion{#1}%
    }%
  \else
    \newcommand*{\@CheckKOMAScriptVersion}[1]{%
      \def\@tempa{#1}%
      \ifx\KOMAScriptVersion\@tempa\else
        \@latex@warning@no@line{%
          \noexpand\KOMAScriptVersion\space is
          `\KOMAScriptVersion',\MessageBreak
          but `#1' was expected!\MessageBreak
          You should not use classes, packages or files
          from\MessageBreak
          different KOMA-Script versions%
        }%
      \fi
    }
  \fi
  \@CheckKOMAScriptVersion{2007/03/02 v2.97 KOMA-Script}%
\endgroup
%%% From File: scrkbase.dtx
\ProvidesPackage{scrkbase}[%
  \KOMAScriptVersion\space package (basics and keyval use)]
\RequirePackage{keyval}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname ifcsname\endcsname
  \newcommand{\scr@ifundefined}[1]{%
    \ifcsname #1\endcsname
      \expandafter\@secondoftwo
    \else
      \expandafter\@firstoftwo
    \fi
  }
\else
  \newcommand{\scr@ifundefined}[1]{%
    \begingroup\expandafter\expandafter\expandafter\endgroup
    \expandafter\ifx\csname #1\endcsname\relax
      \expandafter\@firstoftwo
    \else
      \expandafter\@secondoftwo
    \fi
  }
\fi
\newcommand*{\DeclareKeyValOption}[2][%
  \ifx\@currext\@clsextension\OptionNotUsed\else\@unkownoptionerror\fi
]{%
  \DeclareOption*{%
    \def\@tempa##1=##2=##3\@nil{%
      \scr@ifundefined{KV@#2@##1}{#1}{%
        \@expandtwoargs\setkeys{#2}\CurrentOption
      }%
    }%
    \expandafter\@tempa\CurrentOption==\@nil
  }%
}
\newcommand*{\KOMA@key}{\define@key{KOMA}}
\newcommand*{\dont@let@as@internal@defined}{/}
\KOMA@key{internalonly}{%
  \begingroup
    \@expandtwoargs\in@{#1}\dont@let@as@internal@defined
  \expandafter\endgroup
  \ifin@\else\g@addto@macro\dont@let@as@internal@defined{#1/}\fi
}
\DeclareKeyValOption{KOMA}
\ProcessOptions\relax
\newcommand*{\@globaloptionslist}{}
\scr@ifundefined{XKV@classooptionslist}{%
  \let\@globaloptionslist\@classoptionslist
}{%
  \let\@globaloptionslist\XKV@classoptionslist
}
\@expandtwoargs\in@{,internalonly=}{,\@globaloptionslist}
\ifin@
  \begingroup
    \catcode`\=12\catcode`\:=12
    \def\@do@internalonly #1internalonly=#2\@nil{%
      \ifx\relax#1\relax\setkeys{KOMA}{internalonly=#2}\fi
      \@expandtwoargs\@removeelement{internalonly=#2}\@unusedoptionlist
      \@unusedoptionlist
    }%
    \expandafter\@for\expandafter\@tempa\expandafter:\expandafter=%
    \@globaloptionslist\do{%
      \expandafter\@do@internalonly\@tempa\@nil
    }%
    \global\let\@unusedoptionlist\@unusedoptionlist
  \endgroup
\fi
%%% From File: scrlfile.dtx
\def\scrlfileversion{2006/07/19 v2.96}
\edef\@tempa{\noexpand\RequirePackage{scrlfile}[\scrlfileversion]}
\@tempa
%%% From File: scrkbase.dtx
\newif\if@atdocument
\AtBeginDocument{\@atdocumenttrue}
\@onlypreamble\@atdocumentrue
\@onlypreamble\@atdocumentfalse
\newcommand*{\let@as@internal@defined}[1]{%
  \begingroup
    \@expandtwoargs\in@{/#1/}\dont@let@as@internal@defined
  \expandafter\endgroup
  \ifin@
    \PackageInfo{%
      scrkbase%
    }{%
      \expandafter\string\csname #1\endcsname\space excluded from being
      defined%
    }%
  \else
    \@ifundefined{#1}{%
      \begingroup
        \expandafter\def\expandafter\@tempa
          \expandafter{\csname scr@#1\endcsname}
        \expandafter\def\expandafter\@tempb
          \expandafter{\csname #1\endcsname}
      \expandafter\expandafter\expandafter\endgroup
      \expandafter\expandafter\expandafter\let\expandafter\@tempb\@tempa
      \if@atdocument\else
        \g@addto@macro\document{%
          \expandafter\ifx\csname #1\expandafter\endcsname
          \csname scr@#1\endcsname
          \else
            \PackageWarning{scrkbase}{%
              \expandafter\string\csname #1\endcsname\space was
              redefined\MessageBreak
              at the document preamble.\MessageBreak
              If you did not redefine it by yourself, have a\MessageBreak
              a look at the description of this command at\MessageBreak
              the manual of every package you are using\@gobble
            }%
          \fi
        }%
      \fi
    }{%
      \PackageInfo{%
        scrkbase%
      }{%
        \expandafter\string\csname #1\endcsname\space already
        defined.\MessageBreak
        If \expandafter\string\csname #1\endcsname\space does not behave
        like\MessageBreak
        it was described at the KOMA-Script manual, try to\MessageBreak
        load `scrkbase.sty' earlier or find out at which\MessageBreak
        package or class \expandafter\string\csname #1\endcsname\space
        was defined before\@gobble
      }%
    }%
  \fi
}
\let@as@internal@defined{ifundefined}
\scr@ifundefined{ifcsname}{%
  \newcommand{\ifnotundefined}[1]{%
    \begingroup\expandafter\expandafter\expandafter\endgroup
    \expandafter\ifx\csname #1\endcsname\relax
      \expandafter\@secondoftwo
    \else
      \expandafter\@firstoftwo
    \fi
  }%
}{%
  \newcommand{\ifnotundefined}[1]{%
    \ifcsname #1\endcsname
      \expandafter\@firstoftwo
    \else
      \expandafter\@secondoftwo
    \fi
  }%
}
\newcommand\ifstr[2]{%
  \begingroup\edef\@tempa{#1}\edef\@tempb{#2}%
  \ifx\@tempa\@tempb
    \endgroup\expandafter\@firstoftwo
  \else
    \endgroup\expandafter\@secondoftwo
  \fi
}
\newcommand\ifnumber[1]{%
  \begingroup\@tempswafalse\let\scr@next\test@number
  \expandafter\scr@next#1\scr@next
  \if@tempswa
    \endgroup\expandafter\@firstoftwo
  \else
    \endgroup\expandafter\@secondoftwo
  \fi
}
\newcommand*{\test@number}[1]{%
  \ifx \scr@next#1
    \let\scr@next\relax
  \else
    \@tempcnta=\expandafter\expandafter\expandafter\number
    \expandafter`#1\relax
    \ifnum \@tempcnta>47
      \ifnum \@tempcnta<58
        \@tempswatrue
      \else\@tempswafalse\fi
    \else\@tempswafalse\fi
    \if@tempswa\else\let\scr@next\gobble@till@scr@next\fi
  \fi
  \scr@next
}
\newcommand*{\gobble@till@scr@next}{}
\def\gobble@till@scr@next#1\scr@next{}
\newcommand{\ifdimen}[1]{%
  \begingroup\@tempswatrue\let\scr@next\test@posdimen
  \expandafter\test@dimen#1\scr@next
  \if@tempswa
    \endgroup\expandafter\@firstoftwo
  \else
    \endgroup\expandafter\@secondoftwo
  \fi
}
\newcommand*{\test@dimen}[1]{%
  \ifx -#1\else\ifx +#1\else
      \def\scr@next{\let\scr@next\test@posdimen\scr@next#1}\fi\fi
  \scr@next
}
\newcommand*{\test@posdimen}[1]{%
  \ifx \scr@next#1%
    \@tempswafalse\let\scr@next\relax
  \else
    \if .#1\else\if ,#1\else
        \@tempcnta=%
        \expandafter\expandafter\expandafter\number\expandafter`#1\relax
        \ifnum \@tempcnta>47
          \ifnum \@tempcnta<58
          \else\def\scr@next{\test@dimunt#1}\fi
        \else\def\scr@next{\test@dimunt#1}\fi
    \fi\fi
  \fi
  \scr@next
}
\newcommand*{\test@dimunt}{}
\def\test@dimunt#1\scr@next{%
  \expandafter\test@trueunt#1truetrue\test@trueunt
}
\newcommand*{\test@trueunt}{}
\def\test@trueunt#1true#2true#3\test@trueunt{%
  \edef\@tempa{#1}
  \ifx\@tempa\@empty\test@@ifdimunt{#2}\else\test@@ifdimunt{#1}\fi
}
\newcommand*\test@@ifdimunt[1]{%
  \@tempswafalse
  \ifstr{#1}{pt}{\@tempswatrue}{%
    \ifstr{#1}{pc}{\@tempswatrue}{%
      \ifstr{#1}{in}{\@tempswatrue}{%
        \ifstr{#1}{bp}{\@tempswatrue}{%
          \ifstr{#1}{cm}{\@tempswatrue}{%
            \ifstr{#1}{mm}{\@tempswatrue}{%
              \ifstr{#1}{dd}{\@tempswatrue}{%
                \ifstr{#1}{cc}{\@tempswatrue}{%
                  \ifstr{#1}{sp}{\@tempswatrue}{}%
                }%
              }%
            }%
          }%
        }%
      }%
    }%
  }%
}
\newcommand{\scr@ifpdftex}{\ifnotundefined{pdftexversion}}
\let@as@internal@defined{ifpdftex}
\BeforePackage{pdfcprot}{\let\ifpdftex\relax}
\AfterPackage{pdfcprot}{\let@as@internal@defined{ifpdftex}}
\newcommand{\scr@ifvtex}{\ifnotundefined{VTeXversion}}
\let@as@internal@defined{ifvtex}
\newcommand{\scr@ifpdfoutput}{%
  \scr@ifundefined{pdfoutput}{%
    \scr@ifundefined{OpMode}{%
      \expandafter\@secondoftwo%
    }{%
      \ifnum\OpMode=1
        \expandafter\@firstoftwo
      \else
        \expandafter\@secondoftwo
      \fi
    }%
  }{%
    \ifnum\pdfoutput>0
      \expandafter\@firstoftwo
    \else
      \expandafter\@secondoftwo
    \fi
  }%
}%
\let@as@internal@defined{ifpdfoutput}
\newcommand*{\scr@ifpsoutput}{%
  \ifnotundefined{if@dvips}{%
    \if@dvips
      \expandafter\@firstoftwo
    \else
      \expandafter\@secondoftwo
    \fi
  }{%
    \ifnotundefined{OpMode}{%
      \ifnum\OpMode=2
        \expandafter\@firstoftwo
      \else
        \expandafter\@secondoftwo
      \fi
    }{%
      \expandafter\@secondoftwo
    }%
  }%
}
\let@as@internal@defined{ifpsoutput}
\newcommand*{\scr@ifdvioutput}{%
  \scr@ifundefined{pdfoutput}{%
    \scr@ifundefined{OpMode}{%
      \expandafter\@firstoftwo
    }{%
      \ifnum\OpMode=0
        \expandafter\@firstoftwo
      \else
        \expandafter\@secondoftwo
      \fi
    }%
  }{%
    \ifnum\pdfoutput=0
      \expandafter\@firstoftwo
    \else
      \expandafter\@secondoftwo
    \fi
  }%
}
\let@as@internal@defined{ifdvioutput}
\newcommand*{\KOMAoptions}[1]{%
  \let\post@kopt@hook\@empty
  \setkeys{KOMA}{#1}%
  \post@kopt@hook\let\post@kopt@hook\relax
}
\newcommand*{\post@kopt@hook}{}
\let\post@kopt@hook\relax
\newcommand*{\AfterKOMAoptions}{%
  \ifx\post@kopt@hook\relax
    \PackageWarning{scrkbase}{%
      \string\AfterKOMAoptions\space can only be used inside a\MessageBreak
      KOMA-Script option that is called using \space\KOMAoptions.\MessageBreak
      Because if this, command will be ignored%
    }%
    \expandafter\@gobbletwo
  \else
    \expandafter\l@addto@macro
  \fi
  \post@kopt@hook
}
\KOMA@key{nokey}{%
  \PackageError{%
    scrkeyval%
  }{%
    unknown KOMA option `#1'%
  }{%
    You've tried to use the KOMA option `#1'.\MessageBreak
    But there is no KOMA option with that name.\MessageBreak
    See the manual of KOMA-Script for information about known KOMA
    options.%
  }%
}%
\KOMA@key{noval}{%
  \PackageError{%
    scrkbase%
  }{%
    KOMA option `#1' needs a value%
  }{%
    You've tried to use the KOMA option `#1' without a
    value.\MessageBreak
    But this option has no default value, so you have to set a
    value.\MessageBreak
    See the manual of KOMA-Script for information about the option and
    all known\MessageBreak
    values.%
  }%
}%
\newcommand*{\KOMA@unknown@keyval}[3]{%
  \PackageError{%
    scrkbase%
  }{%
    KOMA option `#1' has no value `#2'%
  }{%
    You've tried to set option `#1' to value `#2'.\MessageBreak
    But allowed values are only:\MessageBreak
    #3.\MessageBreak
    See the KOMA-Script manual for more information.%
  }%
}
\newcommand*{\KOMA@ifkey}[2]{%
  \@ifundefined{if#2}{%
    \expandafter\newif\csname if#2\endcsname
  }{}%
  \KOMA@key{#1}[true]{\KOMA@set@ifkey{#1}{#2}{##1}}%
}
\newcommand*{\KOMA@set@ifkey}[3]{%
  \ifstr{#3}{true}{\@nameuse{#2true}}{%
    \ifstr{#3}{on}{\@nameuse{#2true}}{%
      \ifstr{#3}{yes}{\@nameuse{#2true}}{%
        \ifstr{#3}{false}{\@nameuse{#2false}}{%
          \ifstr{#3}{off}{\@nameuse{#2false}}{%
            \ifstr{#3}{no}{\@nameuse{#2false}}{%
              \KOMA@unknown@keyval{#1}{#3}{%
                `true', `on', `yes', `false', `off', `no'%
              }%
            }%
          }%
        }%
      }%
    }%
  }%
}
\newcommand*{\KOMA@ncmdkey}[1]{%
  \@ifnextchar [%]
    {\KOMA@@ncmdkey{#1}}{\KOMA@@ncmdkey{#1}[]}%
}
\newcommand*{\KOMA@@ncmdkey}{}
\def\KOMA@@ncmdkey#1[#2]#3#4{%
  \ifx\relax#2\relax\else
    \@namedef{KV@KOMA@#1@default\expandafter}\expandafter{%
      \csname KV@KOMA@#1\endcsname{#2}%
    }%
  \fi
  \@ifundefined{#3}{\@namedef{#3}{0}}%
  \KOMA@key{#1}{\KOMA@set@ncmdkey{#1}{#3}{#4}{##1}}%
}
\newcommand*{\KOMA@set@ncmdkey}[4]{%
  \begingroup
    \edef\@searched{#4}%
    \let\@tempa=\@empty
    \let\@tempb=\@empty
    \@tempswafalse
    \@for\@valuelist:=#3\do{%
      \if@tempswa\else
        \edef\@tempc{\expandafter\@firstoftwo\@valuelist}%
        \edef\@tempa{\@tempa\@tempb`\@tempc'}%
        \edef\@tempb{, }%
        \ifx\@tempc\@searched
          \@tempswatrue
          \edef\@tempa{\expandafter\@secondoftwo\@valuelist}%
        \fi
      \fi
    }%
    \if@tempswa
      \edef\@tempa{\endgroup
        \noexpand\@namedef{#2}{\@tempa}%
      }%
    \else
      \KOMA@unknown@keyval{#1}{#4}{\@tempa}%
      \let\@tempa=\endgroup
    \fi
  \@tempa
}
\newcommand*{\scr@sr@co}{}
\newcommand*{\KOMA@DeclareObsoleteOption}[3][\@gobbletwo]{%
  \DeclareOption{#2}{%
    \let\scr@sr@co\CurrentOption
    \KOMA@UseObsolete{option}{#1}{#2}{#3}%
    \let\CurrentOption\scr@sr@co
  }%
}
\newcommand*{\KOMA@UseObsolete}[4]{%
  #2{%
    scrkbase%
  }{%
    You've used the obsolete #1 `#3'.\MessageBreak
    \protect\KOMAoptions{#4} will be used instead.\MessageBreak
    You should do this change too%
  }%
  \KOMAoptions{#4}%
}
\newcommand*{\KOMA@newobsoletecommand}[3][\@gobbletwo]{%
  \newcommand*{#2}{\KOMA@UseObsolete{command}{#1}{\string#2}{#3}}%
}
%%% From File: scrlogo.dtx
\@ifundefined{KOMAScript}{%
  \DeclareRobustCommand{\KOMAScript}{\textsf{K\kern.05em O\kern.05em%
      M\kern.05em A\kern.1em-\kern.1em Script}}}{}
\endinput
%%
%% End of file `scrkbase.sty'.
