%%
%% This is file `embedfile.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% embedfile.dtx  (with options: `package')
%% 
%% This is a generated file.
%% 
%% Copyright (C) 2006 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
%% 
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3 of this license or (at your option) any later
%% version. The latest version of this license is in
%%    http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%% 
%% This work has the LPPL maintenance status "maintained".
%% 
%% This Current Maintainer of this work is Heiko Oberdiek.
%% 
%% This work consists of the main source file embedfile.dtx
%% and the derived files
%%    embedfile.sty, embedfile.pdf, embedfile.ins, embedfile.drv,
%%    dtx-attach.sty, embedfile-example-plain.tex.
%% 
\begingroup
  \expandafter\let\expandafter\x\csname ver@embedfile.sty\endcsname
  \ifcase 0%
    \ifx\x\relax % plain
    \else
      \ifx\x\empty % LaTeX
      \else
        1%
      \fi
    \fi
  \else
    \expandafter\ifx\csname PackageInfo\endcsname\relax
      \def\x#1#2{%
        \immediate\write-1{Package #1 Info: #2.}%
      }%
    \else
      \def\x#1#2{\PackageInfo{#1}{#2, stopped}}%
    \fi
    \x{embedfile}{The package is already loaded}%
    \endgroup
    \expandafter\endinput
  \fi
\endgroup
\begingroup
  \expandafter\ifx\csname ProvidesPackage\endcsname\relax
    \def\x#1#2#3[#4]{\endgroup
      \immediate\write-1{Package: #3 #4}%
      \xdef#1{#4}%
    }%
  \else
    \def\x#1#2[#3]{\endgroup
      #2[{#3}]%
      \ifx#1\relax
        \xdef#1{#3}%
      \fi
    }%
  \fi
\expandafter\x\csname ver@embedfile.sty\endcsname
\ProvidesPackage{embedfile}%
  [2006/08/16 v1.0 embed files into PDF (HO)]
\edef\EmbedFileRestoreCatcodes{%
  \catcode39 \the\catcode39 % '
  \catcode40 \the\catcode40 % (
  \catcode41 \the\catcode41 % )
  \catcode47 \the\catcode47 % /
  \catcode60 \the\catcode60 % <
  \catcode62 \the\catcode62 % >
  \catcode64 \the\catcode64 % @
  \catcode91 \the\catcode91 % [
  \catcode93 \the\catcode93 % ]
  \catcode96 \the\catcode96 % `
}
\catcode39 12 % '
\catcode40 12 % (
\catcode41 12 % )
\catcode47 12 % /
\catcode60 12 % <
\catcode62 12 % >
\catcode64 11 % @
\catcode91 12 % [
\catcode93 12 % ]
\catcode96 12 % `
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname PackageError\endcsname\relax
  \def\EmbedFile@PackageError#1#2{%
    \errhelp{#2}%
    \errmessage{Package embedfile Error: #1.}%
  }%
\else
  \def\EmbedFile@PackageError#1#2{%
    \begingroup
      \let\on@line\empty
      \PackageError{embedfile}{#1}{#2}%
    \endgroup
  }%
\fi
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname RequirePackage\endcsname\relax
  \def\EmbedFile@RequirePackage#1#2{%
    \expandafter\ifx\csname #2\encsname\relax
      \input #1.sty\relax
    \fi
  }%
\else
  \def\EmbedFile@RequirePackage#1#2{%
    \expandafter\ifx\csname #2\endcsname\relax
      \RequirePackage{#1}%
    \fi
  }%
\fi
\EmbedFile@RequirePackage{ifpdf}{ifpdf}
\ifpdf
\else
  \EmbedFile@PackageError{%
    Missing pdfTeX in PDF mode%
  }{%
    Currently other drivers are not supported. Package loading is aborted.%
  }%
  \EmbedFileRestoreCatcodes
  \expandafter\endinput
\fi
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname pdffilesize\endcsname\relax
  \EmbedFile@PackageError{%
    Unsupported pdfTeX version%
  }{%
    At least version 1.30 is necessary. Package loading is aborted.%
  }%
  \EmbedFileRestoreCatcodes
  \expandafter\endinput
\fi
\EmbedFile@RequirePackage{keyval}{define@key}
\def\EmbedFile@DefineKey#1#2{%
  \define@key{EmbedFile}{#1}{%
    \expandafter\def\csname EmbedFile@#1\endcsname{##1}%
  }%
  \expandafter\def\csname EmbedFile@#1\endcsname{#2}%
}
\EmbedFile@DefineKey{mimetype}{}
\EmbedFile@DefineKey{filespec}{\EmbedFile@file}
\EmbedFile@DefineKey{filesystem}{}
\EmbedFile@DefineKey{desc}{}
\EmbedFile@DefineKey{stringmethod}{%
  \ifx\pdfstringdef\@undefined
    escape%
  \else
    \ifx\pdfstringdef\relax
      escape%
    \else
      psd%
    \fi
  \fi
}
\def\embedfilesetup{%
  \setkeys{EmbedFile}%
}
\def\embedfile{%
  \@ifnextchar[\EmbedFile@embedfile{\EmbedFile@embedfile[]}%
}
\def\EmbedFile@embedfile[#1]#2{%
  \ifEmbedFile@finished
    \EmbedFile@PackageError{%
      \string\embedfile\space after \string\embedfilefinish
    }{%
      The list of embedded files is already written.%
    }%
  \else
    \begingroup
      \def\EmbedFile@file{#2}%
      \setkeys{EmbedFile}{#1}%
      \expandafter\ifx\expandafter\\\pdffilesize{\EmbedFile@file}\\%
        \EmbedFile@PackageError{%
          File `\EmbedFile@file' not found%
        }{%
          The unknown file is not embedded.%
        }%
      \else
        \EmbedFile@convert\EmbedFile@filespec\EmbedFile@@filespec
        \ifx\EmbedFile@desc\empty
          \let\EmbedFile@@desc\empty
        \else
          \EmbedFile@convert\EmbedFile@desc\EmbedFile@@desc
        \fi
        \immediate\pdfobj stream attr{%
          /Type/EmbeddedFile%
          \ifx\EmbedFile@mimetype\empty
          \else
            /Subtype/\pdfescapename{\EmbedFile@mimetype}%
          \fi
          /Params<<%
            /ModDate(\pdffilemoddate{\EmbedFile@file})%
            /Size \pdffilesize{\EmbedFile@file}%
            /CheckSum<\pdfmdfivesum file{\EmbedFile@file}>%
          >>%
        }file{\EmbedFile@file}\relax
        \immediate\pdfobj{%
          <<%
            /Type/Filespec%
            \ifx\EmbedFile@filesystem\empty
            \else
            /FS/\pdfescapename{\EmbedFile@filesystem}%
            \fi
            /F(\EmbedFile@@filespec)%
            \ifx\EmbedFile@@desc\empty
            \else
              /Desc(\EmbedFile@@desc)%
            \fi
            /EF<<%
              /F \the\pdflastobj\space 0 R%
            >>%
          >>%
        }%
        \EmbedFile@add{%
          \EmbedFile@@filespec
        }{\the\pdflastobj\space 0 R}%
      \fi
    \endgroup
  \fi
}
\def\EmbedFile@convert#1#2{%
  \ifnum\pdfstrcmp{\EmbedFile@stringmethod}{psd}=0 %
    \pdfstringdef\EmbedFile@temp{#1}%
    \let#2\EmbedFile@temp
  \else
    \edef#2{\pdfescapestring{#1}}%
  \fi
}
\global\let\EmbedFile@list\empty
\def\EmbedFile@add#1#2{%
  \begingroup
    \edef\key{\pdfescapehex{#1}}%
    \ifx\EmbedFile@list\empty
      \xdef\EmbedFile@list{\noexpand\do{\key}{#2}}%
    \else
      \def\do##1##2{%
        \ifnum\pdfstrcmp{##1}{\key}>0 %
          \edef\x{%
            \toks@{%
              \the\toks@%
              \noexpand\do{\key}{#2}%
              \noexpand\do{##1}{##2}%
            }%
          }%
          \x
          \def\do####1####2{%
            \toks@\expandafter{\the\toks@\do{####1}{####2}}%
          }%
          \def\stop{%
            \xdef\EmbedFile@list{\the\toks@}%
          }%
        \else
          \toks@\expandafter{\the\toks@\do{##1}{##2}}%
        \fi
      }%
      \def\stop{%
        \xdef\EmbedFile@list{\the\toks@\noexpand\do{\key}{#2}}%
      }%
      \toks@{}%
      \EmbedFile@list\stop
    \fi
  \endgroup
}
\newif\ifEmbedFile@finished
\def\embedfilefinish{%
  \ifEmbedFile@finished
    \EmbedFile@PackageError{%
      Too many invocations of \string\embedfilefinish
    }{%
      The list of embedded files is already written.%
    }%
  \else
    \ifx\EmbedFile@list\empty
    \else
      \global\EmbedFile@finishedtrue
      \begingroup
        \def\do##1##2{%
          <##1>##2%
        }%
        \immediate\pdfobj{%
          <<%
            /Names[\EmbedFile@list]%
          >>%
        }%
        \pdfnames{%
          /EmbeddedFiles \the\pdflastobj\space 0 R%
        }%
      \endgroup
    \fi
  \fi
}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname AtEndDocument\endcsname\relax
\else
  \AtEndDocument{\embedfilefinish}%
\fi
\EmbedFileRestoreCatcodes
\endinput
%%
%% End of file `embedfile.sty'.
