64c3814
==== TABLE OF CONTENTS ====
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//boundary.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//capacity-three.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//conclusion.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//construction.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//descriptions.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//global-gap-filters.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//lists.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//paper.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgf.revision.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcore.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorearrows.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreexternal.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoregraphicstate.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreimage.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorelayers.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreobjects.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathconstruct.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathprocessing.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathusage.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepatterns.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepoints.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorequick.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorerdf.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorescopes.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreshade.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoretransformations.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoretransparency.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgffor.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfint.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfkeys.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfkeyslibraryfiltered.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibraryarrows.meta.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibrarydecorations.pathreplacing.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibraryplothandlers.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmath.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathcalc.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfloat.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.base.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.basic.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.comparison.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.integerarithmetics.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.misc.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.random.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.round.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.trigonometric.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathparser.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathutil.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduledecorations.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmodulematrix.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduleplot.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduleshapes.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfrcs.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsys.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsysprotocol.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsyssoftpath.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfutil-common.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//separators.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//shared-cutoff.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//switch-localization.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikz.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarycalc.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarydecorations.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarydecorations.pathreplacing.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarypositioning.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarytopaths.code.tex
A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//references.bib
===========================

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//boundary.tex ====
\section{Preserving the global boundary invariants}\label{sec:boundary}

We verify Invariants~\ref{inv:past} and~\ref{inv:swap}
for a child \(W'=(a',b')\) of \(W=(a,b)\).
All notation is in the working frame of the child edge.
In a same update this is also the parent's tag frame.
In a switch update the old list is not carried; the newly constructed
upsets are used instead.

Preparatory changes to the schedule of \(W\) preserve the parent
invariants. Its boundary triples and all earlier exterior jobs
stay fixed, so Invariant~\ref{inv:past} is unchanged.
Invariant~\ref{inv:swap} already quantifies over every feasible
reordering of \(W\).

\subsection{Excluding distant qualifiers}

\begin{lemma}\label{lem:past}
The updated child list satisfies Invariant~\ref{inv:past}.
\end{lemma}
\begin{proof}
It suffices to prove the assertion before pruning, since pruning only
removes qualifiers. Let \(z\) qualify for the pre-pruning child list and be scheduled
at or before \(a'\).

If \(a<\operatorname{time}(z)\le a'\), the job belongs to the normalized
open side \(E\) of the parent. By \Cref{lem:update-labels}, it is
high at the edge cutoff \(S\). The local separator at \(a'\) puts
it in \(P_{a'}\) when strictly earlier, and membership in the
triple puts it in \(\wP{a'}\) when its time equals \(a'\).

Now suppose \(z\) is at or before \(a\).
The new injection \(D_a\setminus P_b\) cannot contain such a job.
Nor can either switch entry, by \Cref{lem:G} and the strictness
of \(D_a\). Thus the only remaining case is a same-direction
carry qualifier.
The parent's Invariant~\ref{inv:past} supplies a job \(y\in a\)
with \(z=y\) or \(z\prec y\).
The carry is a global upset, so \(y\) also qualifies by carry.
In particular \(a\) is actual. If \(a'=a\), we are done.

Assume \(a'>a\), and write \(a'=s_i\), with edge cutoff \(S=S_i\).
Follow all the strict advances of the walk from \(a\) through
promotion \(i\), including intermediate advances not retained as marks.
Every cutoff used in this portion of the walk is contained in \(S_i\).
On \(W\), the final carry is exactly \(O\setminus S_i\).
Consequently every carry qualifier in \(E\) is high, and has worse
priority than the low exceptions, at every one of these advances.

The first advance needs the parent exchange invariant, because
\(a\) lies outside the normalized open side \(E\).
Consider that first actual advance off \(a\), with earliest exception
\(x\) at its target \(t\).
All \emph{global} predecessors of \(x\) are before \(a\).
To verify this stronger readiness assertion, every predecessor is
temporally before \(t\). If one were at \(a\), then \(x\in D_a\).
If one were strictly between \(a\) and \(t\), it would belong to
the contiguous side \(E\), be low, and descend from \(a\) by
earliestness of the exception. Again \(x\in D_a\), a contradiction.
There is no other possible predecessor at or after \(a\).

Also \(x\in X=W\setminus D_a\), so Invariant~\ref{inv:cones}
puts it among the old qualifiers, outside the starting low set.
It has already been promoted by stage \(i\), so its old key is
strictly below the least unpromoted key at \(S_i\).
By \Cref{lem:carry}, the boundary job \(y\) has old key at least
that least unpromoted key.
The parent's Invariant~\ref{inv:swap}, applied after the current
preparatory reorderings of \(W\), therefore prohibits exchanging
\(x\) and \(y\) in the complete schedule.

If \(y\) had no global successor at or before \(t\), that exchange
would be feasible. All global predecessors of \(x\) lie strictly before \(a\);
moving it earlier preserves its successor constraints, and delaying
\(y\) to \(t\) preserves its predecessor constraints and, under
the supposition, its successor constraints. Thus \(y\) must have
a strict successor by \(t\).
Such a successor is in \(E\) and is still a carry qualifier.

Any carry job strictly between \(a\) and \(t\) must likewise have
a successor by \(t\): otherwise exchange it with \(x\) within
\(E\), contradicting its lexicographic normalization.
The carry is an upset, so these successors remain in the carry.
Iterating along strictly increasing times reaches a carry job
at \(t\). It cannot be \(x\), which is low and lies outside
the final carry.

At every subsequent advance, the local readiness and exchange argument
from \Cref{lem:shared} applies inside \(E\). All carry jobs remain
high at that advance, so each carry job at its starting slot
has a carry descendant at its target. Tracing from the descendant
of \(y\) at the first target eventually gives a descendant of
\(y\) at \(a'\).
Hence \(z\in\wP{a'}\), as required.
\end{proof}

\subsection{Exchanges after future child reorderings}

\begin{lemma}\label{lem:swap}
The pruned child list satisfies Invariant~\ref{inv:swap},
with its quantifier over all feasible reorderings of \(W'\).
\end{lemma}
\begin{proof}
Take any feasible reordering of \(W'\) in its slots.
Suppose \(x\in W'\setminus D_{a'}\), that \(y\in a'\)
qualifies for the child list, and that the new key of \(x\)
is smaller than the new key of \(y\).
Invariant~\ref{inv:cones}, already proved for the child in
\Cref{lem:update-labels}, ensures that \(x\) qualifies.
By \Cref{lem:prune}, the same comparison holds in the new list
before pruning.

First let \(a'>a\). Both \(x\) and \(y\) are in the parent's
normalized side \(E\), and both are high at its edge cutoff \(S\),
by \Cref{lem:update-labels}. The pre-pruning key order agrees with
the priority order used to normalize \(E\). Thus \(x\) has
better priority than \(y\).
The child reordering changes only slots strictly after \(a'\).
A feasible exchange of \(x,y\) in the complete schedule would
therefore give a feasible full schedule of the same \(E\)
with a better prefix at \(a'\), contrary to
\Cref{lem:lex-prefix}.

Now let \(a'=a\).
In the switch case there is no new qualifier at \(a\), so no
such \(y\) exists.
In the same case neither \(x\) nor \(y\) belongs to the new
injection: \(x\notin D_a\), and no job at \(a\) is a strict
descendant of \(a\).
Their pre-pruning comparison therefore uses only carry entries.
By \Cref{lem:carry}, it implies the same old key comparison
in the parent's list.
Moreover \(x\in W\setminus D_a\).
The preparatory reorderings and the arbitrary subsequent reordering
of \(W'\) together form a feasible reordering confined to \(W\).
The parent's Invariant~\ref{inv:swap} rules out the proposed
exchange.
\end{proof}

\begin{proposition}\label{prop:construction-valid}
Starting from any feasible full schedule, the marking and list
construction is defined at every node. Its pruned lists are global
upset lists of length at most five, with fewer than \(40\) leaves
per entry, and satisfy Invariants~\ref{inv:cones}--\ref{inv:swap}.
Every branch terminates.
\end{proposition}
\begin{proof}
Proceed by depth from the root data of \Cref{sec:construction}.
Given valid ancestor and parent data, the center and the two
normalized sides exist by \Cref{cor:any-ideal,lem:reorder}.
The shared walk and \Cref{lem:edge-labels} define the children.
For a same update the new list is direct. For a switch,
\Cref{lem:old-low,lem:G} construct the needed global upset
using only earlier data, as explained at the end of
\Cref{sec:lists}.
Then \Cref{lem:update-labels,lem:list-length,lem:entry-size}
give the first invariant and the bounds.
\Cref{lem:past,lem:swap} give the other two invariants without
using a claim about any deeper child.
This completes the simultaneous induction.
Every child omits the center, so its size decreases strictly.
\end{proof}

Invariant~\ref{inv:past} will let a bounded predicate distinguish
the child from qualifiers arbitrarily far in the past.
Invariant~\ref{inv:swap} is what allows that first invariant to
continue propagating after recursive reorderings. Neither is
replaced by an assertion only about local separators.
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//boundary.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//capacity-three.tex ====
\begin{tikzpicture}[x=1cm,y=1cm,font=\small,>=stealth,
  job/.style={circle,draw,fill=white,minimum size=6.8mm,inner sep=0pt}]
  \draw[black!55,rounded corners=2pt] (-.15,-.25) rectangle (10.75,2.85);
  \node[anchor=west] at (-.15,3.13) {Parent $W$};
  \node at (4,3.13) {Child $W'$};
  \node at (9.1,3.13) {$b'\subset W$, $|b'|=3$};

  \fill[black!5] (8.55,-.12) rectangle (9.65,2.72);
  \foreach \yy/\ii/\xx/\cc in {2.2/1/3.55/blue!65!black,1.3/2/4/teal!65!black,.4/3/4.45/violet!70!black} {
    \draw[draw=\cc,fill=\cc!5,rounded corners=3pt]
      (.03,\yy-.34) rectangle (10.57,\yy+.34);
    \node[text=\cc] at (1.05,\yy) {$I_{\ii}\cap W$};
    \node[text=\cc] at (2.5,\yy) {$\cdots$};
    \node[job,draw=\cc] (x\ii) at (\xx,\yy) {$x_{\ii}$};
    \node[job,draw=\cc] (z\ii) at (9.1,\yy) {$z_{\ii}$};
    \draw[->,draw=\cc] (x\ii) -- node[above,font=\footnotesize] {$\prec$} (z\ii);
    \node[text=\cc] at (10.05,\yy) {$\cdots$};
  }
  \draw[dashed,black!60,rounded corners=2pt] (3.03,-.12) rectangle (4.98,2.72);
  \draw[black!60,rounded corners=2pt] (8.55,-.12) rectangle (9.65,2.72);
  \node[anchor=west,font=\footnotesize] at (-.15,-.64)
    {$x_i\in I_i,\ x_i\prec z_i\ \Longrightarrow\ z_i\in I_i$
     };
  \node[anchor=east,font=\footnotesize] at (10.75,-.64)
    {$I_i\cap I_j\cap W=\varnothing\ (i\ne j)\ \Longrightarrow\ z_i\ne z_j$};
\end{tikzpicture}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//capacity-three.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//conclusion.tex ====
\section{Conclusion}\label{sec:conclusion}

The finite search succeeds because every interval in a suitable recursive
schedule decomposition has a global description of bounded size,
independent of its depth. Local separator descriptions alone do not give
that guarantee: the short upset lists, the exterior boundary invariants,
and the simplification at direction changes prevent the accumulation of
ancestor information.

The resulting algorithm constructs an exact optimum for the stated
three-machine model. The fixed leaf allowance $10000$ and the explicit
large exponent establish polynomial time for the stated model.
The proof supplies no practical performance guarantee.
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//conclusion.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//construction.tex ====
\section{The interval construction and its invariants}\label{sec:construction}

We now construct the hierarchy from a feasible full schedule of \(J\).
Each node has a \emph{tag}, one of the two frames, and a witnessing
complete schedule. Descending to a child changes only the jobs inside
that child; its boundary triples and exterior schedule remain fixed.
Branches can retain separate witnesses, as allowed in
\Cref{def:hierarchy}.

\subsection{Global lists and boundary conditions}

In the tag frame of a node \(W=(a,b)\), attach an ordered list
\(\K=(K_1,\ldots,K_\ell)\) of global upsets.
Define the global qualifier set and the local old-high set by
\[
 \Qual(\K)=\bigcup_{i=1}^{\ell}K_i,
 \qquad O=W\cap\Qual(\K).
\]
For every globally qualifying job \(x\), set
\begin{equation}
 \key_{\K}(x)=
 \left(\max\{i:x\in K_i\},\,\rk(x)\right),
 \label{eq:key}
\end{equation}
with lexicographic comparison. Entries may overlap. Their largest index,
not their smallest one, is used.
Because each entry is an upset, \(x\prec y\) with \(x\) qualifying
implies that \(y\) qualifies and
\(\key_{\K}(x)<\key_{\K}(y)\).

We maintain the following three invariants in the node's tag frame.
\begin{enumerate}[label=\textup{(I\arabic*)},ref=I\arabic*]
 \item\label{inv:cones}
 \(O\subseteq P_b\), and \(W\setminus O\subseteq D_a\).
 \item\label{inv:past}
 Every global qualifier scheduled at or before \(a\) belongs to
 \(\wP a\).
 \item\label{inv:swap}
 After \emph{any} feasible reordering of \(W\) in its existing slots,
 there is no feasible direct exchange between
 \(x\in W\setminus D_a\) and a qualifying job \(y\) at \(a\) when
 \(\key_{\K}(x)<\key_{\K}(y)\).
\end{enumerate}
Invariant~\ref{inv:cones} controls the jobs inside the interval;
Invariant~\ref{inv:past} controls qualifiers outside its left boundary,
and Invariant~\ref{inv:swap} makes that control persist after later
reorderings.

The exchange in Invariant~\ref{inv:swap} is tested for feasibility in
the complete schedule. The hypothetical exchanged schedule need not
preserve any decomposition or any of the list invariants.
The key of \(x\) is defined because Invariant~\ref{inv:cones} implies
\(W\setminus D_a\subseteq O\). A sentinel has no boundary jobs, so
the corresponding exchange condition is vacuous.

Lexicographic minimality within an interval controls exchanges of its
interior jobs; it gives no such control over exchanges with an exterior
boundary job. Invariant~\ref{inv:swap} supplies the latter control.
Suppose a qualifying job \(x\in W\setminus D_a\) has all its
predecessors strictly before \(a\), and its key is smaller than
that of a qualifying \(y\in a\). If \(y\) had no successor at or
before the slot of \(x\), their exchange would be feasible.
Invariant~\ref{inv:swap} therefore forces such a successor.
The proof in \Cref{sec:boundary} uses this first successor to
connect exterior qualifiers to the local separator walk.

All predicates are frozen global subsets of \(J\) once constructed.
In particular, a cone used in an old predicate continues to refer to
its fixed triple of jobs; it is not redefined after later reorderings.
We shall prove, simultaneously with the three invariants, that each
pruned list has at most five entries and each entry has fewer than
40 leaves.

At the root, use the original frame, the two sentinels, and the one-entry
list \((J)\). Invariant~\ref{inv:cones} follows from the sentinel cones,
and Invariants~\ref{inv:past} and~\ref{inv:swap} are vacuous.

\subsection{A center and two open sides}

In either working frame, let \(a,b\) now mean the left and right
boundaries of \(W\) in that frame, and write
\[
 X=W\setminus D_a,\qquad Y=W\setminus P_b.
\]
Invariant~\ref{inv:cones} gives
\begin{equation}
 W\subseteq D_a\cup P_b,\qquad X\subseteq P_b,\qquad Y\subseteq D_a.
 \label{eq:cover}
\end{equation}
This cover is unchanged by reversal: the two boundary cones exchange
roles. In either frame \(X\) is an ideal in \(W\), and \(Y\) an
upset. The list, \(O\), and the other two invariants are used in their
stated form only in the tag frame.

In the tag frame choose an actual center \(v\) separating
the ideal \(W\cap P_b\), using \Cref{cor:any-ideal} and, if needed,
reordering \(W\). Mark \(v\). At the root use the last slot as
center; it separates the ideal \(J\).
The center triple and the job sets on its two sides are now fixed.

Treat each side as an open prefix \(E=(a,v)\), in the frame that
makes it a prefix. Call that side \(\same\) if its working frame is
the node's tag and \(\switch\) otherwise. Recompute all boundary
notation in that working frame. The center is a separator at cutoff
\begin{equation}
 S_*=
 \begin{cases}
 W\cap P_b,&\same,\\
 X=W\setminus D_a,&\switch.
 \end{cases}
 \label{eq:center-cutoff}
\end{equation}
Indeed the second formula is the complement of the original center-low
set after reversing order and time, so
\Cref{lem:separator-description} applies.

Use the following priority orders on \(W\), and the following nested
low cutoffs.
\begin{description}[style=nextline,leftmargin=1.5em]
 \item[Same direction.]
 Begin with \(S_0=(W\setminus O)\cap P_b\).
 Order \(S_0\) first by increasing rank, then \(O\) by increasing
 \(\key_{\K}\), and then \(Y\) by increasing rank.
 Promote the jobs of \(O\) in that key order.
 \item[Switched direction.]
 Begin with \(S_0=\varnothing\).
 Order \(X\) first and \(W\cap D_a\) second, each by increasing
 rank in the switched frame.
 Promote the jobs of \(X\) in that order.
\end{description}
These are total orders extending precedence.
For the same case, \(S_0\) is an ideal, \(Y\) is an upset,
and the key order on the middle group extends precedence.
The groups partition \(W\) since \(O\subseteq P_b\).
For the switch case use idealness of \(X\).
Every cutoff lies in \(P_b\) on \(W\), by \eqref{eq:cover},
and the initial low set lies in \(D_a\).

Normalize the open side \(E\) using the restriction of its priority
order to \(E\). This can be done independently on the two sides
before constructing children. It preserves feasibility by
\Cref{lem:reorder} and preserves the center separator, since neither
side's job set changes.
The resulting sequence of low subsets of \(W\) is
\[
 S_0,S_1,\ldots,S_q=S_* .
\]
Some promoted jobs may lie outside \(E\).
Starting at its exterior left boundary \(s_0=a\), use
\Cref{lem:shared} for every promotion, taking \(s_i\) to be the
\emph{final} position of that promotion. Thus
\begin{equation}
 a=s_0\le s_1\le\cdots\le s_qd\), or \(j=d\) and its rank is at least \(r\).
Whenever selected, its largest old membership is retained.
Reindexing applies the same strictly increasing shift to these retained
largest indices, and leaves the rank tiebreak unchanged. Rank suffixes
are upsets because rank is a linear extension.
\end{proof}

\Needspace{3\baselineskip}
\begin{lemma}[The comparison preserved by pruning]\label{lem:prune}
Let a list be pruned on \(W'\). Suppose \(x\in W'\) qualifies
and \(y\) is any global qualifier of the pruned list. If the pruned
key of \(x\) is smaller than the pruned key of \(y\), the same
comparison held before pruning.
\end{lemma}
\begin{proof}
Use original indices for the retained entries; their eventual
reindexing preserves order. Let \(M(z)\) be the largest membership
index before pruning and \(R(z)\) the largest retained one.
Every entry containing \(x\) survives, so \(R(x)=M(x)\), whereas
\(R(y)\le M(y)\). If \(R(x)M(x)\) or the rank comparison remains the
tiebreak. Both cases give the asserted old key comparison.
\end{proof}

\subsection{The two updates}

For a same-direction edge, the old list is in the working frame.
If \(O\setminus S=\varnothing\), its carry is empty.
Otherwise let \((d,r)\) be the smallest key of a job of
\(O\setminus S\), and use \eqref{eq:carry}.
Append the \emph{injection}
\begin{equation}
 I=D_a\cap(J\setminus P_b).
 \label{eq:injection}
\end{equation}
Then prune on \(W'\).

For a switched edge, we shall construct a global upset \(G\) in the
new working frame with the following properties:
\begin{equation}
 W\setminus D_a\subseteq G,
 \qquad
 G\cap\{x:\text{\(x\) is scheduled at or before \(a\)}\}
 =\varnothing .
 \label{eq:G-properties}
\end{equation}
Choose \(h\) so that the still-high part of
\(X=W\setminus D_a\) is exactly \(X\cap\{\rk\ge h\}\).
Take \(h=N+1\) if this part is empty.
Discard the old list and begin a new list with the ordered pair
\begin{equation}
 G\cap\{\rk\ge h\},\qquad D_a.
 \label{eq:switch-pair}
\end{equation}
Then prune on \(W'\). Notice that \eqref{eq:G-properties} covers
\emph{all} of the parent's \(X\), not only the jobs in this child.

\begin{lemma}\label{lem:update-labels}
For either update, assuming \eqref{eq:G-properties} in the switch
case, the pre-pruning qualifier union on \(W\) is exactly
\(W\setminus S\). On these high jobs the pre-pruning key order
agrees with the side's priority order. After pruning, the qualifiers
on \(W'\) are exactly \(W'\setminus S\), and
Invariant~\ref{inv:cones} holds for the child.
\end{lemma}
\begin{proof}
In the same case, \Cref{lem:carry} gives exactly \(O\setminus S\)
on \(W\), in its old key order. The injection gives exactly \(Y\):
use \(Y\subseteq D_a\) in \eqref{eq:cover}. It is disjoint from
the old qualifier union on \(W\), which is contained in \(P_b\).
Since the injection is last, the pre-pruning order is the unpromoted
part of \(O\), followed by \(Y\) in rank order, as required.

In the switch case, coverage of \(X\) makes the first entry select
exactly the unpromoted part of \(X\) there. The second entry selects
all of \(W\cap D_a\). Even if the two entries overlap, the larger
index of the second puts this whole group last. The ordering
therefore agrees with the switched priority.

Pruning changes no membership on \(W'\). Its high jobs lie in
\(P_{b'}\), and its other jobs lie in \(D_{a'}\), by
\Cref{lem:edge-labels}. These are precisely the two assertions of
Invariant~\ref{inv:cones} for the child.
\end{proof}

\subsection{Why only five entries survive}

A \emph{run} is a chain of nodes with the same tag, starting at the
root or just after a switch. Its initial entries are the root's
single entry, or the two entries in \eqref{eq:switch-pair}.
Same-direction updates only take suffixes, restrict entries by rank
suffixes, and append injections. Multiple restrictions of an entry
by rank suffixes in the same frame combine into one tightest threshold.

Figure~\ref{fig:capacity-three} isolates the use of machine capacity
in the following bound.

\Needspace{3\baselineskip}
\begin{lemma}\label{lem:list-length}
Every pruned list produced by this construction has at most five entries.
At most three of them are injections from its current run.
\end{lemma}
\begin{proof}
The root and switch updates have at most two initial entries.
Consider a same update from \(W\) to \(W'\).
Injections retained into this child are pairwise disjoint on \(W\).
To see this, consider any pair and the time the later one was
introduced. It was disjoint on its then-current parent from all
previous carried entries, by \Cref{lem:update-labels}.
That parent contains the current \(W\), and subsequent carries
only restrict the older predicates. The disjointness persists on \(W\).

Each surviving injection contains some \(x\in W'\).
It is a high job, so \(x\prec z\) for some \(z\in b'\).
Global upward closure puts \(z\) in that same injection.
The actual triple \(b'\) lies in \(W\). Pairwise disjointness on
\(W\) thus forces distinct surviving injections to contain distinct
members of \(b'\). There are only three such members.
Together with the at most two initial entries this proves the bound.
\end{proof}

The freshly formed same-update list may have six entries before
pruning. We will use the five-entry bound only for pruned lists
or for a carry taken from such a list \emph{before} appending a
new injection.

\begin{figure}[t]
\centering
\input{figures/capacity-three}
\caption{Why at most three injections survive a same-direction update.
For each surviving injection, choose a high job $x_i$ in the child
and a successor $z_i$ in its ending triple $b'$.
Upward closure puts $z_i$ in the same injection; disjointness on the
parent $W$ makes the chosen $z_i$ distinct.
The three-injection case is drawn; arrows denote precedence.
Only witness pairs are shown:
the injections may contain other jobs and may overlap outside $W$.}
\label{fig:capacity-three}
\end{figure}


\subsection{Flattening the history of a run}

Only the first entry of a switch pair can carry a complicated predicate
from an earlier run. The following lemma removes it whenever we need
to reconstruct an old cutoff on a descendant parent.

\begin{lemma}[Local flattening]\label{lem:flatten}
Suppose a run began with a switch out of a node \(Q_0\), using
left boundary \(a_0\) in the resulting run frame, and entries
\[
 G_0\cap\{\rk\ge h_0\},\qquad D_{a_0},
 \qquad Q_0\setminus D_{a_0}\subseteq G_0 .
\]
Let \(U\subseteq Q_0\) be a later parent in that run. If the entry derived from the first displayed entry
survives into an unpruned carry out of \(U\), write its
current form as \(G_0\cap\{\rk\ge k\}\). Then the carried portion
of this pair has the same union on \(U\) as the global upset
\begin{equation}
 D_{a_0}\cup\{\rk\ge k\}.
 \label{eq:flatten}
\end{equation}
\end{lemma}
\begin{proof}
Track the original entries through later reindexings.
As long as the first entry survives, a suffix operation cannot
trim or discard the second entry: a cutoff at that later index
would already discard the first, permanently.
Thus the second entry is either still carried untrimmed, or was
pruned because it was empty on some intermediate node containing
\(U\). In the latter case \(D_{a_0}\cap U=\varnothing\).

On \(U\cap D_{a_0}\), the second entry, when this set is nonempty,
therefore selects every job. Every job of
\(U\setminus D_{a_0}\) lies in \(G_0\), because \(U\subseteq Q_0\).
On that remainder the first entry selects exactly the rank suffix
\(\rk\ge k\). This proves equality of the two unions on \(U\).
Both factors in \eqref{eq:flatten} are upsets, so their union is
globally upward closed, although it need not agree with the
carried pair outside \(U\).
\end{proof}

A new switch out of a node \(W\) uses the edge \(U\to W\)
by which \(W\) was created. Let \(H_-\) be that incoming
edge's low cutoff, in its own working frame, and reserve \(S\)
for the cutoff of the new outgoing edge. We need an extension
of \(H_-\) that does not retain a complicated switch predicate
from an earlier run. Local flattening provides it using lists and
covering properties belonging to already constructed ancestors.

\begin{lemma}[A short extension of an earlier low set]\label{lem:old-low}
Consider an already constructed edge from a parent \(U\) to a child
\(W\), in its old working frame. Its low cutoff \(H_-\subseteq U\)
has a global downset extension \(H_-^*\) agreeing with it on \(U\).
This extension can be chosen with at most \(21\) leaves.
\end{lemma}
\begin{proof}
Use the boundary notation of \(U\) in that old frame for this proof.
If the edge was a switch relative to the tag of \(U\), its low
cutoff is a rank prefix of \(U\setminus D_a\). Thus
\[
 (J\setminus D_a)\cap\{\rk\le r\}
\]
is the required global downset, using at most two leaves.

If the edge was same, its low cutoff on \(U\) equals \(P_b\)
minus its unpruned carry union, without the fresh injection.
The old list on \(U\) has at most five entries by
\Cref{lem:list-length}. If its run began at the root, all carry
entries are simple: the root base or injections, possibly rank-trimmed.
If it began at a switch, the only possibly complicated carry
entry is the first of that switch pair. If it is present in the carry,
replace the carried pair by \eqref{eq:flatten}; if it is absent from
the carry, every carried entry is already simple.

This gives a global upset agreeing with the carry union on \(U\).
It has at most five terms, each with at most four leaves.
Indeed an injection with a rank trim has three leaves; a root
base or a second switch base with a trim has at most two; and
the flattened pair has two. Taking \(P_b\) minus this union
gives a global downset with at most \(1+5\cdot4=21\) leaves.
An empty carry is represented by false.
\end{proof}

\subsection{Constructing the new switch upset}

Suppose a switch out of \(W\) produces a nonempty child.
By \Cref{lem:edge-labels}, \(W\) is not the root.
Let \(U\) be the parent that produced \(W\).
That preceding edge was taken in the tag frame of \(W\), which
is opposite to the current working frame.
In the current frame write \(a_-,b_-\) for the boundaries of \(U\)
and \(v_-\) for its center. The temporal arrangement is
\begin{equation}
 a_-0\), Levey and Rothvoß
obtained a \((1+\varepsilon)\)-approximation using linear programming
(LP) hierarchies
\citep{LeveyRothvoss2016}; Garg improved the running time to
quasipolynomial \citep{Garg2018}. Li replaced LP conditioning by
combinatorial guesses and obtained the bound
\(n^{O((m^4/\varepsilon^3)(\log\log n)^3)}\) \citep{Li2021}.
Das and Wiese later gave a simpler combinatorial quasipolynomial-time
approximation scheme \citep{DasWiese2022}.
These works give a related perspective on the recursive structure of
nearly optimal schedules. The exact separator and global-description
statements used here are established separately.

\paragraph{Why a finite search can suffice.}
After adding isolated jobs, we may assume that every slot contains three
jobs. If selected slots are removed from a feasible schedule, the remaining
open gaps can be scheduled independently: reordering the jobs of one gap
does not change their temporal relation to any exterior job. This suggests
a recursive search whose subproblems are the sets of jobs in those gaps.
The obstacle is their number. Naming a gap by its two boundary triples
does not by itself determine its job set, and repeatedly intersecting
descriptions inherited from its ancestors can require an unbounded formula.

We prove that every feasible instance has a recursive decomposition in
which each gap is described \emph{globally}, as a subset of all jobs, by a
Boolean formula of bounded size. The permitted tests are precedence to or
from a triple of jobs, membership in that triple, and rank thresholds in
a fixed linear extension or its reverse. The bound is independent of the
depth of the decomposition. There are therefore only polynomially many
sets that the algorithm must consider. Compatible selected triples connect
smaller accepted gap sets, and their concatenation gives the schedule.

The structural proof chooses lexicographically minimal schedules only as
existence witnesses; the algorithm enumerates the descriptions instead of
computing those witnesses. Fix a priority order extending precedence,
and call its current initial segment low and the remaining jobs high.
A selected slot separates this cutoff when every earlier high job is a
precedence predecessor of a job in that slot, and every later low job is
a precedence successor of one. In a normalized interval, we promote
jobs one at a time from high to low and move a separator forward. Each pair
of successive selected slots separates one common cutoff: each low job
in the intervening gap has a predecessor in its left slot, and each high
job has a successor in its right slot.

The two sides of a center slot are treated by the same construction:
for one side we reverse both time and precedence. To describe a gap
without remembering all its ancestors, we maintain a short list of sets
closed under taking successors in the current direction. A boundary slot limits the number of new list entries that can
survive. A global boundary condition excludes distant jobs, while an
exchange condition keeps that control valid after later reorderings.
At a change of direction, a paired form of the inherited entries lets us
replace their history by a bounded formula. The distinction between
agreement inside a known interval and a description valid on all jobs is
what makes this last step necessary.

\paragraph{Organization.}
\Cref{sec:preliminaries,sec:algorithm} specify a finite description family
and the uniform algorithm. \Cref{sec:separators} supplies common cutoffs,
and \Cref{sec:construction} uses them to form smaller child intervals.
\Cref{sec:lists} bounds inherited predicate information;
\Cref{sec:boundary} proves the global boundary invariants.
\Cref{sec:descriptions} describes whole intervals and marked
splits by bounded formulas, completing the hierarchy proof.
\Cref{sec:complexity} gives the explicit running-time bound.

\section{Full schedules, frames, and descriptions}\label{sec:preliminaries}

We write \(x\prec y\) if there is a directed path of positive length
from \(x\) to \(y\). Transitive reachability can be computed in polynomial
time. All restrictions of the precedence order below mean restrictions of
this transitive order, including when a path in the original graph uses
vertices outside the restricted set.

\subsection{Padding and interval reorderings}

If \(n>3T\), reject. Otherwise add \(3T-n\) isolated jobs and let \(J\)
be the resulting set, with \(N=|J|=3T\).
A \emph{full schedule} of a set \(W\subseteq J\) is an ordered sequence
of antichain triples partitioning \(W\), respecting \(\prec\).
Its length is necessarily \(|W|/3\). The empty set has the empty full
schedule.

\begin{lemma}\label{lem:padding}
The original deadline is feasible if and only if \(J\) has a full schedule.
The padded instance has polynomial size in the stated input encoding.
\end{lemma}
\begin{proof}
A schedule of the original jobs leaves exactly \(3T-n\) vacant positions
among the three machines and \(T\) slots. Fill them with the isolated jobs.
Conversely, delete the isolated jobs from a full schedule.
Since \(T\le n\) and the vertices are explicitly listed, \(N=3T\le3n\)
is polynomially bounded.
\end{proof}

A schedule's slots will also denote their job triples. An \emph{open
interval} \((a,b)\) consists of all slots strictly between two boundary
slots; we use the same symbol \(W\) for that interval's job set.
Virtual boundaries before the first and after the last slot are allowed.

\begin{lemma}\label{lem:reorder}
Replacing the schedule inside an open interval by any full schedule of
its job set preserves feasibility of the complete schedule.
\end{lemma}
\begin{proof}
All exterior jobs are either before the entire interval or after it.
Their order relative to every interior job is unchanged. Interior
precedences hold by the assumed feasibility of the replacement.
\end{proof}

\subsection{The two frames}

Fix a linear extension of the order on \(J\), with rank
\(\rk:J\to\{1,\ldots,N\}\). A deterministic choice is obtained by
successively removing a minimal job, breaking ties by its identifier.
We also use the reversed order, reversed time, and reversed linear
extension. These are our two \emph{frames}. The two ranks of a job sum
to \(N+1\). Unless a frame is specified otherwise, all time comparisons,
precedence relations, and ranks in an argument belong to its working frame.

For an actual slot \(a\), identified with its job triple, define global cones
\[
 D_a=\{x\in J:\exists y\in a,\ y\prec x\},
 \qquad
 P_a=\{x\in J:\exists y\in a,\ x\prec y\},
 \qquad
 \wD a=D_a\cup a,\quad \wP a=P_a\cup a .
\]
At the left sentinel take \(D_a=\wD a=J\) and
\(P_a=\wP a=\varnothing\). At the right sentinel use the opposite
convention. Reversal exchanges \(D\) and \(P\), and exchanges their
weak versions. In a fixed frame the \(D\)-cones and weak \(D\)-cones are
upward closed, whereas the \(P\)-cones and weak \(P\)-cones are downward
closed.

Cone membership always concerns the whole poset \(J\), even when a formula
is evaluated on an interval. A job that is temporally earlier than a block
need not be a predecessor of that block.

\subsection{A fixed finite family}

Let \(\F\) be the family of subsets of \(J\) described by Boolean formulas
with at most \(K=10000\) leaves. Leaves are the following atomic tests or
their negations:
\begin{itemize}
 \item true and false;
 \item rank thresholds \(\rk\le k\) and \(\rk\ge k\), with
 \(0\le k\le N+1\), in either frame;
 \item membership in a triple of jobs, or in any of its four cones
 \(P,D,\widehat P,\widehat D\), in either frame.
\end{itemize}
Internal nodes are binary conjunctions and disjunctions. Negating a formula
does not increase its number of leaves: apply De Morgan's laws and push
negations to the leaves. Sentinel tests are constants.
We distinguish a \emph{global description} \(W=F\), with \(F\in\F\),
from a \emph{relative description} \(L=W\cap F\).

\begin{lemma}\label{lem:family}
The family \(\F\) can be generated deterministically in polynomial time
and represented by \(N\)-bit vectors.
\end{lemma}
\begin{proof}
There are \(O(N^3)\) atomic tests. The number of binary tree shapes and
connective assignments with at most \(K\) leaves is a constant depending
only on \(K\). Labelling the leaves therefore gives \(O(N^{3K})\)
formulas, with a constant implicit factor. Compute their truth sets after
precomputing reachability, then deduplicate by comparing the bit vectors
pairwise. This is a deterministic finite procedure with polynomial cost.
\end{proof}

\section{The algorithm and its structural certificate}\label{sec:algorithm}

The algorithm accepts or rejects each \(W\in\F\), in increasing order
of cardinality. Write \(\A(W)\) for its acceptance value, and regard
\(\A(U)\) as false when \(U\notin\F\).
Set \(\A(\varnothing)\) to true, and reject sets whose sizes are not
divisible by three.

For each remaining nonempty \(W\), form states
\[
 (L,Z,R),\qquad W=L\dotcup Z\dotcup R,
\]
where \(Z\) is an antichain triple and \(L=W\cap F\) for some \(F\in\F\).
Keep a state only if the displayed order of its three parts is
\emph{compatible}: no job in a later part precedes a job in an earlier
part. This test uses the transitive order on \(J\).
Declare the state initial when \(\A(L)\) is true and final when
\(\A(R)\) is true. Add an edge
\[
 (L,Z,R)\longrightarrow(L',Z',R')
\]
exactly when
\begin{equation}
 L\cup Z\subseteq L',
 \qquad
 \A\bigl(L'\setminus(L\cup Z)\bigr)=\mathrm{true}.
 \label{eq:transition}
\end{equation}
All acceptance values consulted concern smaller sets.
Set \(\A(W)\) to true if an initial state reaches a final state,
allowing a path consisting of a single state.
Return \(\YES\) precisely when \(\A(J)\) is true.

\begin{proposition}\label{prop:algorithm}
This is a uniform deterministic polynomial-time algorithm. Every set it
accepts has a full schedule, which the algorithm can explicitly return.
With \(K=10000\), its deadline decision and schedule construction take
\(O((L+2)^{150020})\) deterministic multitape steps.
\end{proposition}
\begin{proof}
For soundness, consider a path with triples \(Z_1,\ldots,Z_k\) and
left sets \(L_1,\ldots,L_k\). Put
\[
 A_0=L_1,\qquad
 A_i=L_{i+1}\setminus(L_i\cup Z_i)\ (1\le i0pt%
    \pgf@arrows@inner@line@width@dep{#2}{#3}%
  \else%
    \advance\pgf@x by#2\pgflinewidth%
  \fi%
}
\def\pgf@arrows@inner@line@width@dep#1#2{%
  \pgf@xa\pgflinewidth%
  \pgf@xb-.5\pgflinewidth%
  \pgf@xb#2\pgf@xb%
  \advance\pgf@xa by\pgf@xb%
  \pgf@xb\pgfinnerlinewidth%
  \pgf@xb-.5\pgf@xb
  \advance\pgf@xa by#2\pgf@xb%
  \advance\pgf@x by#1\pgf@xa%
}


\def\pgfarrowslengthdependent#1#2#3#4{%
  #4#1%
  \advance#4by#2\pgfarrowlength%
  \advance#4by#3\pgflinewidth%
}




\def\pgf@arrow@fullname#1{pgf@@ar@#1@\the\pgflinewidth @\pgfinnerlinewidth @\ifpgfarrowreversed r\fi @\pgf@arrows@stroke@color @\pgf@arrows@fill@color @\csname pgf@ar@par@#1\endcsname}
\def\pgf@arrow@id@count{0}%


\def\pgfarrows@getid#1#2{%
  \let\pgf@arrows@late@options\pgfutil@empty%
  \csname pgf@ar@defaults@#1\endcsname%
  \pgf@arrows@options@scope
  #2\relax%
  \pgf@arrows@nested@options%
  \pgf@arrows@late@options%
  \pgfarrows@scale@list%
  \expandafter\global\expandafter\let\expandafter\pgf@arrow@id\csname\pgf@arrow@fullname{#1}\endcsname\relax%
  \ifx\pgf@arrow@id\relax%
    \pgf@arrows@instantiate{#1}
  \fi%
}

\def\pgf@arrows@instantiate#1{%
  \pgfutil@tempcnta\pgf@arrow@id@count\relax%
  \advance\pgfutil@tempcnta by1\relax%
  \xdef\pgf@arrow@id@count{\the\pgfutil@tempcnta}%
  \expandafter\global\expandafter\let\csname\pgf@arrow@fullname{#1}\endcsname\pgf@arrow@id@count%
  \global\let\pgf@arrow@id\pgf@arrow@id@count%
  {%
    \pgfclearid%
    \csname pgf@ar@setup@#1\endcsname%
    \ifpgfarrowreversed%
      \pgf@arrows@handle@reverse%
    \fi%
    \expandafter\global\expandafter\let\csname pgf@ar@saves@\pgf@arrow@id\endcsname\pgf@arrows@saves%
    \expandafter\global\expandafter\let\csname pgf@ar@hull@\pgf@arrow@id\endcsname\pgf@arrows@convexhull%
    \expandafter\xdef\csname pgf@ar@ends@\pgf@arrow@id\endcsname{{\pgf@arrows@the@tipend}{\pgf@arrows@the@backend}{\pgf@arrows@the@lineend}}%
    \expandafter\xdef\csname pgf@ar@visual@\pgf@arrow@id\endcsname{{\pgf@arrows@the@visualtipend}{\pgf@arrows@the@visualbackend}{}}%
    \edef\pgf@arrow@code{%
      \ifpgfarrowreversed\noexpand\pgftransformxscale{-1}\fi%
      \expandafter\noexpand\csname pgf@ar@code@#1\endcsname%
    }%
    \expandafter\global\expandafter\let\csname pgf@ar@inst@code@\pgf@arrow@id\endcsname\pgf@arrow@code%
    \expandafter\ifx\csname pgf@ar@do@cache@#1\endcsname\pgf@truetext%
      \pgfsysprotocol@getcurrentprotocol\pgf@arrow@temp%
      {%
        \pgfinterruptpath%
          \let\pgfusepath=\pgf@nousepath@here%
          \pgf@relevantforpicturesizefalse%
          \pgftransformreset%
          \pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
          \pgfsysprotocol@bufferedtrue%
          \pgfscope%
          \pgf@arrow@code%
          \endpgfscope%
          \pgfsysprotocol@getcurrentprotocol\pgf@@arrow@temp%
          \expandafter\gdef\expandafter\pgf@arrow@code\expandafter{\expandafter\pgfsysprotocol@literal\expandafter{\pgf@@arrow@temp}}%
        \endpgfinterruptpath%
      }%
      \pgfsysprotocol@setcurrentprotocol\pgf@arrow@temp%
    \fi%
    \expandafter\global\expandafter\let\csname pgf@ar@cache@\pgf@arrow@id\endcsname\pgf@arrow@code%
  }%
}
\def\pgf@truetext{true}

\def\pgf@arrows@copy@tipend{\pgf@arrows@the@tipend}
\def\pgf@arrows@copy@backend{\pgf@arrows@the@backend}
\def\pgf@arrows@copy@lineend{\pgf@arrows@the@lineend}
\def\pgf@arrows@zeropt{0pt}%

\let\pgf@arrows@saves\pgfutil@empty%
\let\pgf@arrows@convexhull\pgfutil@empty%
\let\pgf@arrows@the@tipend\pgf@arrows@zeropt%
\let\pgf@arrows@the@backend\pgf@arrows@zeropt%
\let\pgf@arrows@the@lineend\pgf@arrows@zeropt%
\let\pgf@arrows@the@visualtipend\pgf@arrows@copy@tipend%
\let\pgf@arrows@the@visualbackend\pgf@arrows@copy@backend%


\def\pgf@arrows@handle@reverse{%
  \pgf@x\pgf@arrows@the@visualtipend\pgf@x-\pgf@x%
  \pgf@y\pgf@arrows@the@visualbackend\pgf@y-\pgf@y
  \edef\pgf@arrows@the@visualtipend{\the\pgf@y}%
  \edef\pgf@arrows@the@visualbackend{\the\pgf@x}%
  \pgf@x\pgf@arrows@the@tipend\pgf@x-\pgf@x%
  \pgf@y\pgf@arrows@the@backend\pgf@y-\pgf@y
  \edef\pgf@arrows@the@tipend{\the\pgf@y}%
  \edef\pgf@arrows@the@backend{\the\pgf@x}%
  \pgf@x\pgf@arrows@the@lineend\pgf@x-\pgf@x\edef\pgf@arrows@the@lineend{\the\pgf@x}%
  \let\pgf@temp\pgf@arrows@convexhull%
  \let\pgf@arrows@convexhull\pgfutil@empty%
  \let\pgf@arrow@hull@point\pgf@arrow@hull@point@reverse%
  \pgf@temp%
}
\def\pgf@arrow@hull@point@reverse#1#2{%
  \pgf@x#1%
  \pgfarrowshullpoint{-\pgf@x}{#2}%
}

\def\pgf@nousepath@here#1{\pgferror{The definition of an arrow may not use \string\pgfusepath}}

\def\pgfarrowssavethe#1{%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgf@arrows@saves%
  \expandafter\expandafter\expandafter{\expandafter\pgf@arrows@saves\expandafter#1\the#1\relax}
}

\def\pgfarrowssave#1{%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgf@arrows@saves%
  \expandafter\expandafter\expandafter{\expandafter\pgf@arrows@saves\expandafter\def\expandafter#1\expandafter{#1}}
}

\def\pgfarrowshullpoint#1#2{%
  \pgf@x#1\relax%
  \pgf@y#2\relax%
  \edef\pgf@arrows@temp{\noexpand\pgf@arrows@convexhull\noexpand\pgf@arrow@hull@point{\the\pgf@x}{\the\pgf@y}}%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgf@arrows@convexhull\expandafter\expandafter\expandafter{\pgf@arrows@temp}%
}

\def\pgfarrowsupperhullpoint#1#2{%
  \pgf@x#1\relax%
  \pgf@y#2\relax%
  \ifdim\pgf@y>0pt
    \edef\pgf@arrows@temp{\noexpand\pgf@arrows@convexhull\noexpand\pgf@arrow@hull@point{\the\pgf@x}{\the\pgf@y}\ifpgfarrowharpoon\else\noexpand\pgf@arrow@hull@point{\the\pgf@x}{-\the\pgf@y}\fi}%
  \else
    \edef\pgf@arrows@temp{\noexpand\pgf@arrows@convexhull\noexpand\pgf@arrow@hull@point{\the\pgf@x}{\the\pgf@y}}%
  \fi
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgf@arrows@convexhull\expandafter\expandafter\expandafter{\pgf@arrows@temp}%
}

\def\pgfarrowssettipend#1{\pgf@x#1\edef\pgf@arrows@the@tipend{\the\pgf@x}}
\def\pgfarrowssetbackend#1{\pgf@x#1\edef\pgf@arrows@the@backend{\the\pgf@x}}
\def\pgfarrowssetlineend#1{\pgf@x#1\edef\pgf@arrows@the@lineend{\the\pgf@x}}
\def\pgfarrowssetvisualtipend#1{\pgf@x#1\edef\pgf@arrows@the@visualtipend{\the\pgf@x}}
\def\pgfarrowssetvisualbackend#1{\pgf@x#1\edef\pgf@arrows@the@visualbackend{\the\pgf@x}}



\def\pgf@arrow@compute@shortening#1{%
  \let\pgf@arrow@handle\pgf@arrow@compute@shortening@
  \let\pgf@arrow@handle@dot\pgf@arrow@after@line@endtrue%
  \pgf@arrow@after@line@endfalse%
  \pgf@xa0pt%
  \pgf@xb0pt%
  #1%
}
\newif\ifpgf@arrow@after@line@end

\def\pgf@arrow@compute@shortening@#1#2{%
  {\pgfarrows@getid{#1}{#2}\ifnum\pgf@arrow@flex@mode>0\relax\global\pgf@precise@shorteningtrue\fi\expandafter}\expandafter\pgf@x\the\pgfarrowsep%
  \expandafter\expandafter\expandafter\pgf@arrow@cont@short\csname pgf@ar@ends@\pgf@arrow@id\endcsname%
}
\def\pgf@dot@text{.}

\def\pgf@arrow@cont@short#1#2#3{%
  \advance\pgf@xb by#1%
  \pgf@xc#2%
  \advance\pgf@xb by-\pgf@xc%
  \advance\pgf@xb by\pgf@x%
  \ifpgf@arrow@after@line@end%
    \advance\pgf@xa by#1%
    \advance\pgf@xa by\pgf@x%
    \pgf@xc#2%
    \advance\pgf@xa by-\pgf@xc%
  \else%
    \pgf@xa#1%
    \advance\pgf@xa by\pgf@x%
    \pgf@xc#3%
    \advance\pgf@xa by-\pgf@xc%
  \fi%
}



\def\pgf@arrow@rigid@arrow#1#2{%
  {%
    \pgf@xb=#2%
    \pgftransformxshift{-\pgf@xb}%
    \let\pgf@arrow@handle\pgf@arrow@rigid
    \let\pgf@arrow@handle@dot\relax%
    #1%
  }%
}


\def\pgf@arrow@rigid#1#2{%
  {%
    \pgfarrows@getid{#1}{#2}%
    \expandafter\expandafter\expandafter\pgf@arrow@drawer@shift\csname pgf@ar@ends@\pgf@arrow@id\endcsname%
    \ifdim\pgfarrows@slant pt=0pt%
    \else%
      \pgftransformxslant{\pgfarrows@slant}%
    \fi%
    \ifpgfarrowswap%
      \pgftransformyscale{-1}%
    \fi%
    {%
      \csname pgf@ar@saves@\pgf@arrow@id\endcsname%
      \pgf@arrows@rigid@hull%
    }%
  \expandafter}%
  \expandafter\pgftransformxshift\expandafter{\the\pgf@xc}%
}





\def\pgf@arrow@draw@arrow#1#2{%
  {%
    \pgf@xb=#2%
    \pgftransformxshift{-\pgf@xb}%
    \let\pgf@arrow@handle\pgf@arrow@drawer
    \let\pgf@arrow@handle@dot\relax%
    #1%
  }%
}


\def\pgf@arrow@drawer#1#2{%
  {%
    \pgfarrows@getid{#1}{#2}%
    \expandafter\expandafter\expandafter\pgf@arrow@drawer@shift\csname pgf@ar@ends@\pgf@arrow@id\endcsname%
    \ifdim\pgfarrows@slant pt=0pt%
    \else%
      \pgftransformxslant{\pgfarrows@slant}%
    \fi%
    \ifpgfarrowswap%
      \pgftransformyscale{-1}%
    \fi%
    {%
      \csname pgf@ar@saves@\pgf@arrow@id\endcsname%
      \pgfscope%
        \pgf@arrows@color@setup%
        \pgflowlevelsynccm\csname pgf@ar@cache@\pgf@arrow@id\endcsname%
      \endpgfscope%
      \pgf@arrows@rigid@hull%
    }%
  \expandafter}%
  \expandafter\pgftransformxshift\expandafter{\the\pgf@xc}%
}

\def\pgf@arrows@color@setup@restore@std@colors{%
  \pgfutil@namelet{\string\color@pgfstrokecolor}{pgf@strokecolor@global}%
  \pgfutil@namelet{\string\color@pgffillcolor}{pgf@fillcolor@global}%
}%

\def\pgf@arrows@color@setup{%
  \ifx\pgf@arrows@stroke@color\pgfutil@empty\else\pgfsetstrokecolor{\pgf@arrows@stroke@color}\fi%
  \ifx\pgf@arrows@fill@color\pgfutil@empty%
    \ifx\pgf@strokecolor@global\pgf@fillcolor@global
    \else
      \pgf@arrows@color@setup@restore@std@colors
      \pgfsetfillcolor{pgfstrokecolor}%
    \fi%
  \else%
    \pgf@arrows@color@setup@restore@std@colors
    \pgfsetfillcolor{\pgf@arrows@fill@color}%
  \fi%
}

\def\pgf@arrow@drawer@shift#1#2#3{%
  \pgf@xb#2\pgftransformxshift{-\pgf@xb}%
  \pgf@xc#1%
  \advance\pgf@xc by\pgfarrowsep%
  \advance\pgf@xc by-\pgf@xb%
}

\def\pgf@arrows@rigid@hull{%
  \ifpgf@relevantforpicturesize%
    \expandafter\let\expandafter\pgf@temp\csname pgf@ar@hull@\pgf@arrow@id\endcsname%
    \ifx\pgf@temp\pgfutil@empty\else%
      \let\pgf@arrow@hull@point\pgf@arrow@hull@point@first%
      \pgf@temp%
      \pgf@arrow@update@bb%
    \fi%
  \fi
}



\def\pgf@arrow@hull@point@first#1#2{%
  \pgf@x#1\pgf@y#2%
  \pgf@xa\pgf@pt@aa\pgf@x%
  \advance\pgf@xa by\pgf@pt@ba\pgf@y%
  \pgf@ya\pgf@pt@ab\pgf@x%
  \advance\pgf@ya by\pgf@pt@bb\pgf@y%
  \pgf@xb\pgf@xa\pgf@yb\pgf@ya%
  \let\pgf@arrow@hull@point\pgf@arrow@hull@point@other%
}
\def\pgf@arrow@hull@point@other#1#2{%
  \pgfutil@tempdima#1\pgfutil@tempdimb#2%
  \pgf@x\pgf@pt@aa\pgfutil@tempdima%
  \advance\pgf@x by\pgf@pt@ba\pgfutil@tempdimb%
  \pgf@y\pgf@pt@ab\pgfutil@tempdima%
  \advance\pgf@y by\pgf@pt@bb\pgfutil@tempdimb%
  \ifdim\pgf@x<\pgf@xa\pgf@xa\pgf@x\else\ifdim\pgf@x>\pgf@xb\pgf@xb\pgf@x\fi\fi%
  \ifdim\pgf@y<\pgf@ya\pgf@ya\pgf@y\else\ifdim\pgf@y>\pgf@yb\pgf@yb\pgf@y\fi\fi%
}

\def\pgf@arrow@update@bb{%
  \advance\pgf@xa by\pgf@pt@x%
  \advance\pgf@ya by\pgf@pt@y%
  \advance\pgf@xb by\pgf@pt@x%
  \advance\pgf@yb by\pgf@pt@y%
  \ifdim\pgf@picmaxx=-16000pt\relax%
    \global\pgf@picminx\pgf@xa%
    \global\pgf@picmaxx\pgf@xb%
    \global\pgf@picminy\pgf@ya%
    \global\pgf@picmaxy\pgf@yb%
  \else%
    \ifdim\pgf@xa<\pgf@picminx\global\pgf@picminx\pgf@xa\fi%
    \ifdim\pgf@ya<\pgf@picminy\global\pgf@picminy\pgf@ya\fi%
    \ifdim\pgf@xb>\pgf@picmaxx\global\pgf@picmaxx\pgf@xb\fi%
    \ifdim\pgf@yb>\pgf@picmaxy\global\pgf@picmaxy\pgf@yb\fi%
  \fi%
}




\def\pgfsetarrows#1{\pgf@arrows#1\pgf@stop}
\def\pgf@arrows{\pgfutil@ifnextchar[\pgf@arrows@test@opt\pgf@arrows@}%
\def\pgf@arrows@#1-#2\pgf@stop{%
  \pgfsetarrowsstart{#1}%
  \pgfsetarrowsend{#2}%
}
\def\pgf@arrows@test@opt[{%
  \pgfutil@ifnextchar-{\pgf@arrows@[}%
  \pgf@arrows@test@opt@%
}
\def\pgf@arrows@test@opt@#1]{%
  \pgfutil@ifnextchar\pgf@stop{%
    \let\pgf@arrows@options\pgf@arrows@options@scope%
    \pgfkeys{/pgf/arrow keys/.cd,#1}%
    \let\pgf@arrows@options@scope\pgf@arrows@options%
    \pgfutil@gobble%
  }{%
    \pgf@arrows@[#1]%
  }%
}

\let\pgf@arrows@options@scope\pgfutil@empty







\pgfdeclarearrow{
  name = .,
  drawing code =
}



\pgfdeclarearrow{
  name = _,
  defaults = {sep},
  drawing code =
}




\pgfdeclarearrow{ name = To,  means = } %
\pgfdeclarearrow{ name = Bar, means = } %
\pgfkeys{
  <-> /.tip           = {To},
  >-< /.tip           = {>[reversed]},
  | /.tip             = {Bar}
}




\pgfkeys {}

\def\pgf@arrows@direct@def#1#2{\expandafter\pgf@arrows@direct@def@\expandafter{\csname pgf@ar@means@#2\endcsname}{#1}}
\def\pgf@arrows@direct@def@#1#2{\expandafter\def\csname pgf@arrows@direct@name@#2\endcsname{\pgf@arrow@handle@shorthand@empty{#1}}}
\pgf@arrows@direct@def{start@[}{]}
\pgf@arrows@direct@def{start@]}{[}
\pgf@arrows@direct@def{start@spaced [}{spaced ]}
\pgf@arrows@direct@def{start@spaced ]}{spaced [}
\pgf@arrows@direct@def{end@[}{[}
\pgf@arrows@direct@def{end@]}{]}
\pgf@arrows@direct@def{end@spaced [}{spaced [}
\pgf@arrows@direct@def{end@spaced ]}{spaced ]}

\def\pgfsetarrowoptions#1#2{\expandafter\def\csname pgf@arrow@compat@opt@#1\endcsname{#2}}
\def\pgfgetarrowoptions#1{\csname pgf@arrow@compat@opt@#1\endcsname}
\def\pgfarrowsdeclare#1#2#3#4{%
  \pgfdeclarearrow{ name  ={#1}-{#2}, setup code ={#3}, drawing code={#4}, parameters/.expand once={\csname pgf@arrow@compat@opt@#2\endcsname}}%
  \expandafter\def\csname pgf@arrow@compat@opt@#2\endcsname{0}}
\def\pgfarrowsleftextend#1{\pgfmathsetlength\pgf@xa{#1}\pgfarrowssetbackend{\pgf@xa}}
\def\pgfarrowsrightextend#1{\pgfmathsetlength\pgf@xb{#1}\pgfarrowssettipend{\pgf@xb}}
\def\pgfarrowsdeclarealias#1#2#3#4{\pgfdeclarearrow{ name  ={#1}-{#2}, means ={#4} } }
\def\pgfarrowsdeclarereversed#1#2#3#4{\pgfdeclarearrow{ name ={#1}-{#2}, means={{#4}[reversed]}}}
\def\pgfarrowsdeclarecombine{\pgfutil@ifnextchar*{\pgfarrowsdeclarecombine@star}{\pgf@@arrowsdeclarecombine}}
\def\pgf@@arrowsdeclarecombine{\pgfutil@ifnextchar[{\pgf@arrowsdeclarecombine}{\pgf@arrowsdeclarecombine[0pt]}}
\def\pgf@arrowsdeclarecombine[#1]#2#3#4#5#6#7{\def\pgf@@temp{#1}\ifx\pgf@@temp\pgf@linewidthtext\def\pgf@@temp{+0pt 1}\fi%
  \pgfdeclarearrow{name ={#2}-{#3}, means={#5[sep/.expand once=\pgf@@temp]#6}}}
\def\pgf@linewidth@text{\pgflinewidth}
\def\pgfarrowsdeclarecombine@star*{\pgfutil@ifnextchar[{\pgf@arrowsdeclarecombine@star}{\pgf@arrowsdeclarecombine@star[0pt]}}
\def\pgf@arrowsdeclarecombine@star[#1]#2#3#4#5#6#7{\def\pgf@@temp{#1}\ifx\pgf@@temp\pgf@linewidthtext\def\pgf@@temp{+0pt 1}\fi%
  \pgfdeclarearrow{name ={#2}-{#3}, means={#5[sep/.expand once=\pgf@@temp].#6}}}
\def\pgfarrowsdeclaredouble{\pgfutil@ifnextchar[{\pgf@arrowsdeclaredouble}{\pgf@arrowsdeclaredouble[0pt]}}
\def\pgf@arrowsdeclaredouble[#1]#2#3#4#5{\pgfarrowsdeclarecombine[#1]{#2}{#3}{#4}{#5}{#4}{#5}}
\def\pgfarrowsdeclaretriple{\pgfutil@ifnextchar[{\pgf@arrowsdeclaretriple}{\pgf@arrowsdeclaretriple[0pt]}}
\def\pgf@arrowsdeclaretriple[#1]#2#3#4#5{ \pgfarrowsdeclarecombine[#1]{pgf@trip@#2}{pgf@trip@#3}{#4}{#5}{#4}{#5}%
  \pgfarrowsdeclarecombine[#1]{#2}{#3}{pgf@trip@#2}{pgf@trip@#3}{#4}{#5}}
\def\pgf@linewidthtext{\pgflinewidth}

\pgfarrowsdeclare{stealth}{stealth}
{
  \pgfutil@tempdima=0.28pt%
  \pgfutil@tempdimb=\pgflinewidth%
  \ifdim\pgfinnerlinewidth>0pt%
    \pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth-.4*\pgfinnerlinewidth}%
  \fi%
  \advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
  \pgfarrowsleftextend{+-3\pgfutil@tempdima}
  \pgfarrowsrightextend{+5\pgfutil@tempdima}
}
{
  \pgfutil@tempdima=0.28pt%
  \pgfutil@tempdimb=\pgflinewidth%
  \ifdim\pgfinnerlinewidth>0pt%
    \pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth-.4*\pgfinnerlinewidth}%
  \fi%
  \advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
  \pgfpathmoveto{\pgfqpoint{5\pgfutil@tempdima}{0pt}}
  \pgfpathlineto{\pgfqpoint{-3\pgfutil@tempdima}{4\pgfutil@tempdima}}
  \pgfpathlineto{\pgfpointorigin}
  \pgfpathlineto{\pgfqpoint{-3\pgfutil@tempdima}{-4\pgfutil@tempdima}}
  \pgfusepathqfill
}
\pgfarrowsdeclarereversed{stealth reversed}{stealth reversed}{stealth}{stealth}
\pgfarrowsdeclare{to}{to}
{
  \pgfutil@tempdima=-0.84pt%
  \advance\pgfutil@tempdima by-1.3\pgflinewidth%
  \pgfutil@tempdimb=0.21pt%
  \advance\pgfutil@tempdimb by.625\pgflinewidth%
  \pgfarrowsleftextend{+\pgfutil@tempdima}
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.28pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfsetlinewidth{0.8\pgflinewidth}
  \pgfsetdash{}{+0pt}
  \pgfsetroundcap
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfqpoint{-3\pgfutil@tempdima}{4\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{-2.75\pgfutil@tempdima}{2.5\pgfutil@tempdima}}
  {\pgfqpoint{0pt}{0.25\pgfutil@tempdima}}
  {\pgfqpoint{0.75\pgfutil@tempdima}{0pt}}
  \pgfpathcurveto
  {\pgfqpoint{0pt}{-0.25\pgfutil@tempdima}}
  {\pgfqpoint{-2.75\pgfutil@tempdima}{-2.5\pgfutil@tempdima}}
  {\pgfqpoint{-3\pgfutil@tempdima}{-4\pgfutil@tempdima}}
  \pgfusepathqstroke
}
\pgfkeys{To /.tip = to}
\pgfarrowsdeclare{to reversed}{to reversed}
{
  \pgfutil@tempdima=-0.21pt%
  \advance\pgfutil@tempdima by-0.475\pgflinewidth%
  \pgfutil@tempdimb=0.98pt%
  \advance\pgfutil@tempdimb by1.45\pgflinewidth%
  \pgfarrowsleftextend{+\pgfutil@tempdima}
  \pgfarrowsrightextend{+\pgfutil@tempdimb}
}
{
  \pgfutil@tempdima=0.28pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfsetlinewidth{+0.8\pgflinewidth}
  \pgfsetdash{}{+0pt}
  \pgfsetroundcap
  \pgfsetroundjoin
  \pgfpathmoveto{\pgfqpoint{3.5\pgfutil@tempdima}{4\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{3.25\pgfutil@tempdima}{2.5\pgfutil@tempdima}}
  {\pgfqpoint{0.5\pgfutil@tempdima}{0.25\pgfutil@tempdima}}
  {\pgfqpoint{-0.25\pgfutil@tempdima}{0\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{0.5\pgfutil@tempdima}{-0.25\pgfutil@tempdima}}
  {\pgfqpoint{3.25\pgfutil@tempdima}{-2.5\pgfutil@tempdima}}
  {\pgfqpoint{3.5\pgfutil@tempdima}{-4\pgfutil@tempdima}}
  \pgfusepathqstroke
}
\pgfarrowsdeclare{latex}{latex}
{
  \pgfutil@tempdima=0.28pt%
  \pgfutil@tempdimb=\pgflinewidth%
  \ifdim\pgfinnerlinewidth>0pt%
    \pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth-.4*\pgfinnerlinewidth}%
  \fi%
  \advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
  \pgfarrowsleftextend{+-1\pgfutil@tempdima}
  \pgfarrowsrightextend{+9\pgfutil@tempdima}
}
{
  \pgfutil@tempdima=0.28pt%
  \pgfutil@tempdimb=\pgflinewidth%
  \ifdim\pgfinnerlinewidth>0pt%
    \pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth-.4*\pgfinnerlinewidth}%
  \fi%
  \advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
  \pgfpathmoveto{\pgfqpoint{9\pgfutil@tempdima}{0pt}}
  \pgfpathcurveto
  {\pgfqpoint{6.3333\pgfutil@tempdima}{.5\pgfutil@tempdima}}
  {\pgfqpoint{2\pgfutil@tempdima}{2\pgfutil@tempdima}}
  {\pgfqpoint{-1\pgfutil@tempdima}{3.75\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{-1\pgfutil@tempdima}{-3.75\pgfutil@tempdima}}
  \pgfpathcurveto
  {\pgfqpoint{2\pgfutil@tempdima}{-2\pgfutil@tempdima}}
  {\pgfqpoint{6.3333\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
  {\pgfqpoint{9\pgfutil@tempdima}{0pt}}
  \pgfusepathqfill
}
\pgfarrowsdeclarereversed{latex reversed}{latex reversed}{latex}{latex}
\pgfarrowsdeclare{@bar}{@bar}
{
  \pgfarrowsleftextend{+-0.25\pgflinewidth}
  \pgfarrowsrightextend{+.75\pgflinewidth}
}
{
  \pgfutil@tempdima=2pt%
  \advance\pgfutil@tempdima by1.5\pgflinewidth%
  \pgfsetdash{}{+0pt}
  \pgfsetrectcap
  \pgfpathmoveto{\pgfqpoint{0.25\pgflinewidth}{-\pgfutil@tempdima}}
  \pgfpathlineto{\pgfqpoint{0.25\pgflinewidth}{\pgfutil@tempdima}}
  \pgfusepathqstroke
}
\pgfkeys{Bar /.tip = @bar}
\pgfarrowsdeclare{space}{space}
{
  \pgfutil@tempdima=0.88pt%
  \advance\pgfutil@tempdima by.3\pgflinewidth%
  \pgfarrowsleftextend{0pt}
  \pgfarrowsrightextend{\pgfutil@tempdima}
}
{}



\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorearrows.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreexternal.code.tex ====

\ProvidesFileRCS{pgfcoreexternal.code.tex}



\newif\ifpgfexternal@aux@in@dpth
\newif\ifpgfexternal@info

\pgfkeys{
    /pgf/images/include external/.code={\pgfimage{#1}},
    /pgf/images/aux in dpth/.is if=pgfexternal@aux@in@dpth,
    /pgf/images/aux in dpth/.default=true,
    /pgf/images/trim external/.code n args={4}{%
        \def\pgf@external@kern@left{#1}%
        \def\pgf@external@kern@bottom{#2}%
        \def\pgf@external@kern@right{#3}%
        \def\pgf@external@kern@top{#4}%
        \ifx\pgf@external@kern@left\pgfutil@empty\def\pgf@external@kern@left{0sp}\fi%
        \ifx\pgf@external@kern@bottom\pgfutil@empty\def\pgf@external@kern@bottom{0sp}\fi%
        \ifx\pgf@external@kern@right\pgfutil@empty\def\pgf@external@kern@right{0sp}\fi%
        \ifx\pgf@external@kern@top\pgfutil@empty\def\pgf@external@kern@top{0sp}\fi%
    },
    /pgf/images/trim external={1truein}{1truein}{1truein}{1truein},
    /pgf/images/external info/.is if=pgfexternal@info,
    /pgf/images/external info/.default=true,
}



\newif\ifpgfexternalreadmainaux
\pgfexternalreadmainauxtrue


\def\pgfrealjobname#1{%
  \global\let\pgfactualjobname=\jobname
  \edef\pgf@tempa{\expandafter\string\csname #1\endcsname}%
  \edef\pgf@tempb{\expandafter\string\csname\jobname\endcsname}%
  \ifx\pgf@tempa\pgf@tempb%
  \else%
    \pgf@external@grabshipouttrue%
    \pgfexternal@nofiles%
    \ifpgfexternalreadmainaux
        \gdef\jobname{#1}%
    \fi
    \ifpgfexternal@aux@in@dpth
        \csname newwrite\endcsname\w@pgfexternal@auxout
    \fi
    \pgfexternal@geometry@compatibility
  \fi%
  \gdef\pgfrealjobname##1{}%
}

\def\pgfexternal@geometry@compatibility{%
    \pgfutil@ifundefined{geometry}{%
    }{%
        \pgf@typeout{Package TikZ externalization: calling \string\geometry{driver=none} during externalization.^^J}%
        \geometry{driver=none}%
    }%
}%

\def\pgfexternal@nofiles{%
    \let\pgfexternal@nofiles@=\relax
    \def\relax{\relax}%
    \csname nofiles\endcsname
    \let\relax=\pgfexternal@nofiles@
}%

\newif\ifpgf@external@grabshipout
\newbox\pgfexternal@startupbox

\pgfutil@ifundefined{AtBeginDocument}{}{%
    \AtBeginDocument{%
      \ifpgf@external@grabshipout%
        \global\let\pgfexternal@originalshipout=\shipout%
        \global\def\shipout{\setbox\pgfpic=}%
        \maxdeadcycles=10000%
        {%
          \output{\global\setbox\pgfexternal@startupbox=\vbox{\csname @begindvi\endcsname\unvbox255}}%
          \hbox{}\eject%
        }%
      \fi%
    }
}%

\pgfutil@ifundefined{AtEndDocument}{}{%
    \AtEndDocument{%
      \ifpgf@external@grabshipout
        \pgfutil@ifundefined{pgfexternal@did@a@shipout}{%
          \pgfexternal@error@no@shipout
        }{}%
      \fi
    }%
}

\def\pgfexternal@error@no@shipout{%
    \pgferror{Sorry, image externalization failed: the resulting image was EMPTY. I tried to externalize '\pgfactualjobname'. Perhaps there was a typo somewhere? Please check that your document contains '\string\beginpgfgraphicnamed{\pgfactualjobname} ... \string\endpgfgraphicnamed'}%
}%



\def\pgf@externalbegin#1{%
  \let\pgf@next=\pgf@external@normal%
  \ifpgf@external@grabshipout%
    \edef\pgf@tempa{\expandafter\string\csname #1\endcsname}%
    \edef\pgf@tempb{\expandafter\string\csname\pgfactualjobname\endcsname}%
    \ifx\pgf@tempa\pgf@tempb%
      \let\pgf@next=\pgf@external@grab%
    \fi%
  \fi%
  \pgf@next{#1}%
}


\AtBeginDocument{
  \let\beginpgfgraphicnamed=\pgf@externalbegin%
  \let\endpgfgraphicnamed=\unskip
}


\def\pgf@external@normal#1{%
  \let\pgf@filename=\pgfutil@empty%
  \expandafter\pgf@findfile\pgfsys@imagesuffixlist:+{#1}%
  \ifx\pgf@filename\pgfutil@empty%
    \let\pgf@next=\relax%
  \else%
    \let\pgf@next=\pgf@replacepicturebygraphic%
  \fi%
  \pgf@next%
}

\long\def\pgf@replacepicturebygraphic#1\endpgfgraphicnamed{%
    \expandafter\pgfincludeexternalgraphics\expandafter{\pgf@filename}\unskip
}

\def\pgfincludeexternalgraphics#1{%
    \begingroup
    \pgfexternalreaddpth{#1}%
    \pgfkeysifdefined{/pgf/images/include external/#1/.@cmd}{%
        \pgfkeysgetvalue{/pgf/images/include external/#1/.@cmd}\pgf@tempa
        \pgfkeyslet{/pgf/images/include external/.@cmd}\pgf@tempa
    }{}%
    \setbox1=\hbox{\pgfkeysvalueof{/pgf/images/include external/.@cmd}{#1}\pgfeov}%
    \ifdim\pgfexternaltrimleft=0sp \else \kern\pgfexternaltrimleft\relax \fi
    \ifdim\pgfexternaldepth=0pt
        \box1
    \else
        \dimen0=\pgfexternaldepth\relax
        \hbox{\lower\dimen0 \box1 }%
    \fi
    \ifdim\pgfexternaltrimright=0sp \else \kern\pgfexternaltrimright\relax \fi
    \endgroup
}

\def\pgfexternalreaddpth#1{%
    \edef\pgfexternalreaddpth@restore{%
        \noexpand\endlinechar=\the\endlinechar\space
        \noexpand\catcode`\noexpand\@=\the\catcode`\@\space
    }%
    \def\pgfexternaldepth{0sp}%
    \def\pgfexternaltrimleft{0sp}%
    \def\pgfexternaltrimright{0sp}%
    \endlinechar=-1 %
    \catcode`\@=11
    \openin\r@pgf@reada=#1.dpth
    \pgfincludeexternalgraphics@read@dpth
    \pgfexternalreaddpth@restore
}%
\def\pgfincludeexternalgraphics@read@dpth{%
    \ifeof\r@pgf@reada
        \closein\r@pgf@reada
    \else
        \read\r@pgf@reada to\pgfincludeexternalgraphics@auxline
        \ifx\pgfincludeexternalgraphics@auxline\pgfutil@empty
        \else
            \expandafter\pgfincludeexternalgraphics@read@dpth@line\pgfincludeexternalgraphics@auxline\pgfincludeexternalgraphics@read@dpth@line@EOI
        \fi
        \expandafter\pgfincludeexternalgraphics@read@dpth
    \fi
}%

\def\pgfexternal@restore#1{#1}%

\long\def\pgfincludeexternalgraphics@read@dpth@line@getfirst#1#2\pgfincludeexternalgraphics@read@dpth@line@EOI{%
    \def\pgf@first{#1}%
}%
\long\def\pgfincludeexternalgraphics@read@dpth@line#1\pgfincludeexternalgraphics@read@dpth@line@EOI{%
    \pgfincludeexternalgraphics@read@dpth@line@getfirst#1\pgfincludeexternalgraphics@read@dpth@line@EOI
    \expandafter\ifcat\expandafter\noexpand\pgf@first\relax
        \expandafter\ifx\pgf@first\pgfexternal@restore
            #1%
        \else
            \pgfutil@ifundefined{if@filesw}{%
            }{%
                \if@filesw
                    {%
                    \toks0={#1}%
                    \immediate\write\@auxout{%
                        \noexpand\def\noexpand\dpthimport{\the\toks0}\noexpand\dpthimport}%
                    }%
                \fi
            }%
        \fi
    \else%
        \def\pgfexternaldepth{#1}%
    \fi
}%

\def\pgfexternalstorecommand#1{%
}%
\def\pgfexternalstorecommand@isexporting#1{%
    \immediate\write\w@pgfexternal@auxout{\noexpand\pgfexternal@restore{#1}}%
}%



\def\pgf@external@grab#1{%
  \def\pgf@filename{#1}%
  \ifpgfexternal@aux@in@dpth
    \begingroup
    \pgf@external@init@aux@in@dpth
    \let\G@refundefinedtrue=\pgf@external@grab@refundefinedtrue
  \fi
  \gdef\pgf@trimleft@final{0sp}%
  \gdef\pgf@trimright@final{0sp}%
  \setbox\pgfpic=\hbox\bgroup\bgroup%
    \let\endpgfgraphicnamed=\pgf@externalend%
}

{\catcode`\^=12 \gdef\pgfexternal@hat{^}}

\expandafter\let\expandafter\pgf@external@grab@refundefinedtrue@orig\csname G@refundefinedtrue\endcsname

\def\pgf@external@grab@refundefinedtrue{%
    \pgf@external@grab@refundefinedtrue@orig
    \begingroup
    \def\n{\pgfexternal@hat\pgfexternal@hat J}%
    \pgfexternalstorecommand{%
      \pgf@external@grab@refundefinedtrue@code
      \noexpand\immediate\noexpand\write16{\pgf@external@grab@refundefinedtrue@warning}%
      \noexpand\G@refundefinedtrue
    }%
    \endgroup
}%

\def\pgf@external@grab@refundefinedtrue@code{}

\def\pgf@external@grab@refundefinedtrue@warning{%
    LaTeX Warning: External picture `\pgfactualjobname' contains undefined references\noexpand\on@line.\n
}%

\let\pgf@external@@protected@write@orig=\protected@write
\long\def\pgf@external@@protected@write@immediate#1#2#3{%
  \begingroup
    \let\pgf@write@=\write
    \def\write{\noexpand\immediate\pgf@write@}%
    \pgf@external@@protected@write@orig{#1}{#2}{#3}%
  \endgroup
}%

\def\pgf@external@init@aux@in@dpth{%
  \let\pgfexternalstorecommand=\pgfexternalstorecommand@isexporting
  \csname @fileswtrue\endcsname
  \immediate\openout\w@pgfexternal@auxout=\pgf@filename.dpth
  \let\@auxout=\w@pgfexternal@auxout
  \let\protected@write=\pgf@external@@protected@write@immediate
}%

\def\pgf@externalend@storeshifts#1{%
  \immediate\write#1{\the\dp\pgfpic}%
  \ifx\pgf@trimleft@final\pgfutil@empty\else
    \immediate\write#1{\noexpand\pgfexternal@restore{\noexpand\def\noexpand\pgfexternaltrimleft{\pgf@trimleft@final}}}%
  \fi
  \ifx\pgf@trimright@final\pgfutil@empty\else
    \immediate\write#1{\noexpand\pgfexternal@restore{\noexpand\def\noexpand\pgfexternaltrimright{\pgf@trimright@final}}}%
  \fi
  \ifpgfexternal@info
    \immediate\write#1{\noexpand\pgfexternal@restore{\noexpand\def\noexpand\pgfexternalwidth{\the\wd\pgfpic}}}%
    \immediate\write#1{\noexpand\pgfexternal@restore{\noexpand\def\noexpand\pgfexternalheight{\the\dimen0}}}%
  \fi
}
\def\pgf@externalend{%
  \unskip\egroup\egroup%
  {%
    \def\pgf@external@trim{0}%
    \def\pgf@external@store@dpth{0}%
    \ifpgf@trim@lowlevel
      \gdef\pgf@trimleft@final{}%
      \gdef\pgf@trimright@final{}%
    \else
      \ifdim\pgf@trimleft@final=0sp  \gdef\pgf@trimleft@final{}  \else\def\pgf@external@trim{1}\fi
      \ifdim\pgf@trimright@final=0sp \gdef\pgf@trimright@final{} \else\def\pgf@external@trim{1}\fi
      \if1\pgf@external@trim
          \setbox\pgfpic=\hbox{%
              \ifx\pgf@trimleft@final\pgfutil@empty\else\kern-\pgf@trimleft@final\fi
              \box\pgfpic
              \ifx\pgf@trimright@final\pgfutil@empty\else\kern-\pgf@trimright@final\fi
          }%
          \def\pgf@external@store@dpth{1}%
      \fi
    \fi
    \parindent0pt %
    \hoffset=0pt %
    \voffset=0pt
    \dimen0\ht\pgfpic%
    \advance\dimen0\dp\pgfpic%
    \ifdim\dp\pgfpic=0pt\relax
    \else%
      \def\pgf@external@store@dpth{1}%
    \fi
    \ifpgfexternal@info
      \def\pgf@external@store@dpth{1}%
    \fi
    \if1\pgf@external@store@dpth
      \ifpgfexternal@aux@in@dpth
        \pgf@externalend@storeshifts\@auxout
        \immediate\closeout\@auxout
      \else
        \immediate\openout\pgf@plotwrite=\pgf@filename.dpth
        \pgf@externalend@storeshifts\pgf@plotwrite
        \immediate\closeout\pgf@plotwrite
      \fi
    \fi
    \pgfsys@prepare@papersize{\the\wd\pgfpic}{\the\dimen0}%
    \setbox0=\vbox{%
      \kern -\pgf@external@kern@top\relax%
      \hbox{%
        \kern -\pgf@external@kern@left\relax%
        \hbox to0pt{%
          \wd\pgfexternal@startupbox=0pt %
          \ht\pgfexternal@startupbox=0pt %
          \dp\pgfexternal@startupbox=0pt %
          \box\pgfexternal@startupbox%
          \pgfsys@atbegindocument\hss}%
        \box\pgfpic%
        \kern\pgf@external@kern@right\relax%
      }%
      \kern\pgf@external@kern@bottom\relax%
    }%
    \let\pgfexternal@nointerlineskip@orig=\nointerlineskip
    \let\nointerlineskip=\pgfexternal@nointerlineskip
    \pgfexternal@originalshipout\box0 %
    \gdef\pgfexternal@did@a@shipout{1}%
  }%
  \ifpgfexternal@aux@in@dpth
    \endgroup
  \fi
}

\def\pgfexternal@nointerlineskip{%
    \ifvmode
      \pgfexternal@nointerlineskip@orig
    \else
      \relax%
    \fi
}%

\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreexternal.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoregraphicstate.code.tex ====

\ProvidesFileRCS{pgfcoregraphicstate.code.tex}


\newdimen\pgflinewidth



\def\pgfsetlinewidth#1{%
  \pgfmathsetlength\pgflinewidth{#1}%
  \global\pgflinewidth=\pgflinewidth%
  \pgfsys@setlinewidth{\the\pgflinewidth}%
  \ignorespaces}



\def\pgfsetinnerlinewidth#1{%
  \pgfmathsetlength\pgf@x{#1}%
  \edef\pgfinnerlinewidth{\the\pgf@x}%
}
\def\pgfinnerlinewidth{0pt}



\def\pgfsetinnerstrokecolor#1{\def\pgfinnerstrokecolor{#1}}
\def\pgfinnerstrokecolor{white}



\def\pgfsetmiterlimit#1{%
  \ifdim#1pt<1pt\pgferror{miter limit cannot be less than 1}\fi%
  \pgfsys@setmiterlimit{#1}%
  \ignorespaces}



\def\pgfsetdash#1#2{%
  \def\pgf@temp{}%
  \def\pgf@next{\pgf@strip}%
  \pgf@strip#1{pgf@stop}%
  \pgfmathsetlength\pgf@x{#2}%
  \pgfsys@setdash{\pgf@temp}{\the\pgf@x}%
  \ignorespaces}

\def\pgf@strip#1{%
  \def\pgf@@temp{#1}%
  \ifx\pgf@@temp\pgf@stop%
    \let\pgf@next=\relax%
  \else%
    \pgfmathsetlength\pgf@x{#1}%
    \ifx\pgf@temp\pgfutil@empty%
      \edef\pgf@temp{\the\pgf@x}%
    \else%
      \edef\pgf@temp{\pgf@temp,\the\pgf@x}%
    \fi%
  \fi\pgf@next}

\def\pgf@stop{pgf@stop}



\def\pgfsetstrokecolor#1{%
  \pgfutil@colorlet{pgfstrokecolor}{#1}%
  \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgfstrokecolor}}%
  \expandafter\let\expandafter\pgf@temp\csname\string\color@pgfstrokecolor\endcsname
  \global\let\pgf@strokecolor@global=\pgf@temp
  \expandafter\pgf@setstrokecolor\pgf@temp%
}
\def\pgf@setstrokecolor#1#2#3#4#5{%
  \expandafter\ifx\csname pgfsys@color@#4@stroke\endcsname\relax%
    \pgferror{Unsupported color model `#4'. Sorry}%
  \else%
    \edef\pgf@colmarshal{\expandafter\noexpand\csname pgfsys@color@#4@stroke\endcsname}%
    \pgf@uncomma#5,,%
    \pgf@colmarshal%
  \fi}

\def\pgf@uncomma#1,{%
  \def\pgf@coltest{#1}%
  \ifx\pgf@coltest\pgfutil@empty%
    \let\pgf@colnext=\relax%
  \else%
    \expandafter\def\expandafter\pgf@colmarshal\expandafter{\pgf@colmarshal{#1}}%
    \let\pgf@colnext=\pgf@uncomma%
  \fi%
  \pgf@colnext%
}



\def\pgfsetfillcolor#1{%
  \pgfutil@colorlet{pgffillcolor}{#1}%
  \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgffillcolor}}%
  \expandafter\let\expandafter\pgf@temp\csname\string\color@pgffillcolor\endcsname
  \global\let\pgf@fillcolor@global=\pgf@temp
  \expandafter\pgf@setfillcolor\pgf@temp
}
\def\pgf@setfillcolor#1#2#3#4#5{%
  \expandafter\ifx\csname pgfsys@color@#4@fill\endcsname\relax%
    \pgferror{Unsupported color model `#4'. Sorry}%
  \else%
    \edef\pgf@colmarshal{\expandafter\noexpand\csname pgfsys@color@#4@fill\endcsname}%
    \pgf@uncomma#5,,%
    \pgf@colmarshal%
  \fi}




\def\pgfsetcolor#1{%
  \pgfutil@colorlet{pgfstrokecolor}{#1}%
  \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgfstrokecolor}}%
  \expandafter\let\expandafter\pgf@temp\csname\string\color@pgfstrokecolor\endcsname
  \global\let\pgf@strokecolor@global=\pgf@temp
  \global\let\pgf@fillcolor@global=\pgf@temp
  \expandafter\pgf@setcolor\pgf@temp%
}
\def\pgf@setcolor#1#2#3#4#5{%
  \expandafter\ifx\csname pgfsys@color@#4\endcsname\relax%
    \pgferror{Unsupported color model `#4'. Sorry}%
  \else%
    \edef\pgf@colmarshal{\expandafter\noexpand\csname pgfsys@color@#4\endcsname}%
    \pgf@uncomma#5,,%
    \pgf@colmarshal%
  \fi}

\def\XC@bcolor{\pgfsys@color@reset}


\def\pgfsetbuttcap{\pgfsys@buttcap\ignorespaces}



\def\pgfsetroundcap{\pgfsys@roundcap\ignorespaces}



\def\pgfsetrectcap{\pgfsys@rectcap\ignorespaces}



\def\pgfsetmiterjoin{\pgfsys@miterjoin\ignorespaces}



\def\pgfsetbeveljoin{\pgfsys@beveljoin\ignorespaces}



\def\pgfsetroundjoin{\pgfsys@roundjoin\ignorespaces}



\def\pgfseteorule{\pgfsys@eoruletrue\ignorespaces}



\def\pgfsetnonzerorule{\pgfsys@eorulefalse\ignorespaces}



\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoregraphicstate.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreimage.code.tex ====

\ProvidesFileRCS{pgfcoreimage.code.tex}




\def\pgfdeclareimage{\pgfutil@ifnextchar[{\pgf@declareimage}{\pgf@declareimage[]}}
\def\pgf@declareimage[#1]#2#3{%
  \pgfqkeys{/pgf/images}{height=,width=,page=,interpolate=false,mask=,#1}%
  \gdef\pgf@filename{}%
  \ifx\pgf@imagepage\pgfutil@empty%
  \else%
  \expandafter\pgf@findfile\pgfsys@imagesuffixlist:+{#3.page\pgf@imagepage}%
  \fi%
  \ifx\pgf@filename\pgfutil@empty%
    \expandafter\pgf@findfile\pgfsys@imagesuffixlist:+{#3}%
  \else%
    \pgfkeys{/pgf/images/page=}%
  \fi%
  \ifx\pgf@filename\pgfutil@empty%
    \pgfwarning%
    {File "#3" not found when defining image "#2".
      Tried all extensions in "\pgfsys@imagesuffixlist"}%
    \pgf@declaredraftimage{#2}{#3}%
  \else%
    \ifpgf@draftmode%
      \pgf@declaredraftimage{#2}{#3}%
    \else%
      \pgfsys@defineimage%
    \fi%
  \fi%
  \expandafter\global\expandafter\let\csname pgf@image@#2!\endcsname=\pgf@image%
}


\pgfkeys{
    /pgf/images/draft/.is if=pgf@draftmode,
    /pgf/images/draft/.default=true}
\pgfkeys{/pgf/images/width/.estore in=\pgf@imagewidth}
\pgfkeys{/pgf/images/height/.estore in=\pgf@imageheight}
\pgfkeys{/pgf/images/page/.estore in=\pgf@imagepage}
\pgfkeys{/pgf/images/interpolate/.cd,.code=\edef\pgf@imageinterpolate{#1},.default=true}
\let\pgf@imageinterpolate\pgfutil@empty
\pgfkeys{/pgf/images/mask/.code=%
  {%
    \edef\pgf@imagemask{#1}%
    \ifx\pgf@imagemask\pgfutil@empty%
    \else%
      \pgfutil@ifundefined{pgf@mask@#1}%
      {\pgferror{Undefined mask "#1".}%
        \edef\pgf@imagemask{}}%
      {\edef\pgf@imagemask{\csname pgf@mask@#1\endcsname}%
      }%
    \fi%
  }}


\def\pgf@findfile#1:#2+#3{%
  \pgfutil@IfFileExists{#3#1}%
  {\xdef\pgf@filename{#3#1}}%
  {\def\pgf@mightbeempty{#2}%
    \ifx\pgf@mightbeempty\pgfutil@empty\else%
    \pgf@findfile#2+{#3}%
    \fi}}

\def\pgf@declaredraftimage#1#2{%
  \ifx\pgf@imagewidth\pgfutil@empty%
    \pgfwarning{Missing width for image "#1" ("#2") in draft mode. Using 1cm instead}%
    \edef\pgf@imagewidth{1cm}%
  \fi%
  \ifx\pgf@imageheight\pgfutil@empty%
    \pgfwarning{Missing height for image "#1" ("#2") in draft mode. Using 1cm instead}%
    \edef\pgf@imageheight{1cm}%
  \fi%
  \ifx\pgf@imagepage\pgfutil@empty\else\edef\pgf@imagepagetext{ page \pgf@imagepage}\fi%
  \edef\pgf@image{%
    \hbox to \pgf@imagewidth{%
      \vrule\kern-0.4pt%
      \vbox to \pgf@imageheight{%
        \hrule\vfil%
        \hbox to \pgf@imagewidth{\hskip-10cm\hfil\noexpand\pgfutil@font@tiny#2\pgf@imagepage\hfil\hskip-10cm}%
        \vfil\hrule}%
      \kern-0.4pt\vrule}%
  }%
}




\def\pgfdeclaremask{\pgfutil@ifnextchar[\pgf@declaremask{\pgf@declaremask[]}}
\def\pgf@declaremask[#1]#2#3{%
  \pgfqkeys{/pgf/images/mask}{matte={1 1 1},#1}%
  \def\pgf@mask{}%
  \gdef\pgf@filename{}%
  \expandafter\pgf@findfile\pgfsys@imagesuffixlist:+{#3}%
  \ifx\pgf@filename\pgfutil@empty%
    \pgfwarning%
    {File "#3" not found when defining mask "#2".
      Tried all extensions in "\pgfsys@imagesuffixlist"}%
  \else%
    \pgfsys@definemask%
  \fi%
  \expandafter\global\expandafter\let\csname pgf@mask@#2\endcsname=\pgf@mask%
}

\pgfkeys{/pgf/images/mask/matte/.cd,.estore in=\pgf@maskmatte,.value required}




\def\pgfaliasimage#1#2{%
  \expandafter\global\expandafter\let\expandafter\pgf@temp\expandafter=\csname pgf@image@#2!\endcsname%
  \expandafter\global\expandafter\let\csname pgf@image@#1!\endcsname=\pgf@temp%
  }



\def\pgfuseimage#1{%
  \def\pgf@imagename{pgf@image@#1}%
  \pgf@tryextensions{\pgf@imagename}{\pgfalternateextension}%
  \expandafter\pgfutil@ifundefined\expandafter{\pgf@imagename}%
  {\pgferror{Undefined image "#1"}}%
  {{\leavevmode\csname\pgf@imagename\endcsname}}}

\def\pgf@tryextensions#1#2{%
  \edef\pgf@args{[#2!]}\expandafter\pgf@@tryextensions\pgf@args{#1}}
\def\pgf@@tryextensions[#1!#2]#3{%
  \expandafter\pgfutil@ifundefined\expandafter{#3#1!#2}%
  {\def\pgf@temp{#2}%
    \ifx\pgf@temp\pgfutil@empty%
    \edef#3{#3!}%
    \else%
    \pgf@@tryextensions[#2]{#3}%
    \fi}%
  {\edef#3{#3#1!#2}}}



\def\pgfalternateextension{}




\def\pgfimage{\pgfutil@ifnextchar[\pgf@imagecom{\pgf@imagecom[]}}
\def\pgf@imagecom[#1]#2{%
  \pgfdeclareimage[#1]{pgflastimage}{#2}%
  \pgfuseimage{pgflastimage}}


\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreimage.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorelayers.code.tex ====

\ProvidesFileRCS{pgfcorelayers.code.tex}



\def\pgfdeclarelayer#1{%
  \pgfutil@ifundefined{pgf@layerbox@#1}{%
    \expandafter\expandafter\csname pgf@newbox\endcsname\csname pgf@layerbox@#1\endcsname%
    \expandafter\expandafter\csname pgf@newbox\endcsname\csname pgf@layerboxsaved@#1\endcsname%
  }{}%
}
\let\pgf@newbox=\newbox %


\def\pgfsetlayers#1{%
  \let\pgf@layerlist\pgfutil@empty%
  \pgf@dosetlayer#1,,\relax%
}

\def\pgf@dosetlayer#1,#2,\relax{%
  \ifx\pgf@layerlist\pgfutil@empty%
    \edef\pgf@layerlist{\pgfutil@trimspaces{#1}}%
  \else
    \edef\pgf@layerlist{\pgf@layerlist,\pgfutil@trimspaces{#1}}%
  \fi
  \def\pgf@test{#2}%
  \ifx\pgf@test\pgfutil@empty%
  \else%
    \pgf@dosetlayer#2,\relax%
  \fi%
}

\pgfsetlayers{main}


\def\pgfonlayer@name{main}

\def\pgfonlayer#1{%
  \pgfutil@ifundefined{pgf@layerbox@#1}{%
     \pgferror{Sorry, the requested layer '#1' could not be found. Maybe you misspelled it?}%
   \bgroup
     \begingroup
  }{%
      \begingroup
        \edef\pgf@temp{#1}%
        \ifx\pgf@temp\pgfonlayer@name
          \def\pgf@temp{%
            \bgroup
            \begingroup
          }%
      \else
        \let\pgfonlayer@name=\pgf@temp
        \pgfonlayer@assert@is@active
        \def\pgf@temp{%
          \expandafter\global\expandafter%
          \setbox\csname pgf@layerbox@#1\endcsname=\hbox to 0pt%
            \bgroup%
              \expandafter\box\csname pgf@layerbox@#1\endcsname%
              \begingroup%
        }%
      \fi
   \pgfsetlinewidth{0.4pt}%
   \pgf@temp
  }%
}
\def\endpgfonlayer{%
      \endgroup%
      \hss
    \egroup%
  \endgroup
}

\let\startpgfonlayer=\pgfonlayer
\let\stoppgfonlayer=\endpgfonlayer

\def\pgfdiscardlayername{discard}

\def\pgfonlayer@assert@is@active{%
  \ifx\pgfonlayer@name\pgfdiscardlayername
  \else
    \begingroup
    \def\pgfonlayer@isactive{0}%
    \expandafter\pgf@assert@layer@is@active@loop\pgf@layerlist,,\relax%
    \if0\pgfonlayer@isactive
       \pgfonlayer@assert@fail
    \fi
    \endgroup
  \fi
}%
\def\pgfonlayer@assert@fail{%
  \pgferror{Sorry, the requested layer '\pgfonlayer@name' is not 
   part of the layer list. Please verify that you provided 
   \string\pgfsetlayers\space and that '\pgfonlayer@name' is part of this list}%
}%
\def\pgf@assert@layer@is@active@loop#1,#2,\relax{%
  \edef\pgf@test{#1}%
  \ifx\pgf@test\pgfonlayer@name
     \def\pgfonlayer@isactive{1}%
  \else
    \def\pgf@test{#2}%
    \ifx\pgf@test\pgfutil@empty%
    \else%
    \pgf@assert@layer@is@active@loop#2,\relax%
    \fi%
  \fi
}


\def\pgf@insertlayers{%
  \expandafter\pgf@dolayer\pgf@layerlist,,\relax%
}
\def\pgf@maintext{main}%
\def\pgf@dolayer#1,#2,\relax{%
  \def\pgf@test{#1}%
  \ifx\pgf@test\pgf@maintext%
    \box\pgf@layerbox@main%
  \else%
    \pgfsys@beginscope%
      \expandafter\box\csname pgf@layerbox@#1\endcsname%
    \pgfsys@endscope%
  \fi%
  \def\pgf@test{#2}%
  \ifx\pgf@test\pgfutil@empty%
  \else%
    \pgf@dolayer#2,\relax%
  \fi%
}

\def\pgf@savelayers{%
  \expandafter\pgf@dosavelayer\pgf@layerlist,,\relax%
}
\def\pgf@dosavelayer#1,#2,\relax{%
  \def\pgf@test{#1}%
  \ifx\pgf@test\pgf@maintext%
  \else%
    \setbox\csname pgf@layerboxsaved@#1\endcsname=\box\csname pgf@layerbox@#1\endcsname%
  \fi%
  \def\pgf@test{#2}%
  \ifx\pgf@test\pgfutil@empty%
  \else%
    \pgf@dosavelayer#2,\relax%
  \fi%
}

\def\pgf@restorelayers{%
  \expandafter\pgf@dorestorelayer\pgf@layerlist,,\relax%
}
\def\pgf@dorestorelayer#1,#2,\relax{%
  \def\pgf@test{#1}%
  \ifx\pgf@test\pgf@maintext%
  \else%
    \global\setbox\csname pgf@layerbox@#1\endcsname=\box\csname pgf@layerboxsaved@#1\endcsname%
  \fi%
  \def\pgf@test{#2}%
  \ifx\pgf@test\pgfutil@empty%
  \else%
    \pgf@dorestorelayer#2,\relax%
  \fi%
}

\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorelayers.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreobjects.code.tex ====

\ProvidesFileRCS{pgfcoreobjects.code.tex}





\def\pgfdefobject#1#2#3#4{%
  \pgfinterruptpath%
    \pgf@relevantforpicturesizefalse%
    \pgfsys@defobject{#1}{#2}{#3}{#4}%
  \endpgfinterruptpath%
  \ignorespaces%
}



\def\pgfuseobject#1{\pgfsys@beginscope\pgfsys@useobject{#1}{}\pgfsys@endscope}



\def\pgfuseobjectmagnify#1{%
  \pgfsys@beginscope%
  \pgfsys@useobject{#1}{\pgfsys@transformxyscale{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}}%
  \pgfsys@endscope%
}


\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreobjects.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathconstruct.code.tex ====

\ProvidesFileRCS{pgfcorepathconstruct.code.tex}


\newdimen\pgf@path@lastx
\newdimen\pgf@path@lasty

\let\pgfgetpath=\pgfsyssoftpath@getcurrentpath
\let\pgfsetpath=\pgfsyssoftpath@setcurrentpath




\newif\ifpgf@arccorners

\def\pgfsetcornersarced#1{%
  \pgf@process{#1}%
  \edef\pgf@corner@arc{{\the\pgf@x}{\the\pgf@y}}%
  \pgf@arccornerstrue%
  \ifdim\pgf@x=0pt%
    \ifdim\pgf@y=0pt\relax%
      \pgf@arccornersfalse%
    \fi%
  \fi%
}

\def\pgf@roundcornerifneeded{%
  \ifpgf@arccorners\expandafter\pgfsyssoftpath@specialround\pgf@corner@arc\fi%
}




\def\pgf@lt@moveto#1#2{%
  \pgf@protocolsizes{#1}{#2}%
  \pgfsyssoftpath@moveto{\the#1}{\the#2}%
}
\def\pgf@lt@lineto#1#2{%
  \pgf@protocolsizes{#1}{#2}%
  \pgfsyssoftpath@lineto{\the#1}{\the#2}%
}
\def\pgf@lt@curveto#1#2#3#4#5#6{%
  \pgf@protocolsizes{#1}{#2}%
  \pgf@protocolsizes{#3}{#4}%
  \pgf@protocolsizes{#5}{#6}%
  \pgfsyssoftpath@curveto{\the#1}{\the#2}{\the#3}{\the#4}{\the#5}{\the#6}%
}

\let\pgf@lt@closepath\pgfsyssoftpath@closepath

\let\pgf@nlt@moveto\pgf@lt@moveto
\let\pgf@nlt@lineto\pgf@lt@lineto
\let\pgf@nlt@curveto\pgf@lt@curveto
\let\pgf@nlt@closepath\pgf@lt@closepath

\let\pgf@nlt@list\pgfutil@empty %



\def\pgfpathmoveto#1{%
  \pgfpointtransformed{#1}%
  \pgf@nlt@moveto{\pgf@x}{\pgf@y}%
  \global\pgf@path@lastx=\pgf@x%
  \global\pgf@path@lasty=\pgf@y%
}

\def\pgf@protocolsizes#1#2{%
  \ifpgf@relevantforpicturesize%
    \ifdim#1<\pgf@picminx\global\pgf@picminx#1\fi%
    \ifdim#1>\pgf@picmaxx\global\pgf@picmaxx#1\fi%
    \ifdim#2<\pgf@picminy\global\pgf@picminy#2\fi%
    \ifdim#2>\pgf@picmaxy\global\pgf@picmaxy#2\fi%
    \ifpgf@size@hooked%
      \let\pgf@size@hook@x#1\let\pgf@size@hook@y#2\pgf@path@size@hook%
    \fi%
  \fi%
  \ifdim#1<\pgf@pathminx\global\pgf@pathminx#1\fi%
  \ifdim#1>\pgf@pathmaxx\global\pgf@pathmaxx#1\fi%
  \ifdim#2<\pgf@pathminy\global\pgf@pathminy#2\fi%
  \ifdim#2>\pgf@pathmaxy\global\pgf@pathmaxy#2\fi%
}
\newif\ifpgf@size@hooked
\let\pgf@path@size@hook=\pgfutil@empty%

\def\pgf@resetpathsizes{%
  \global\pgf@pathmaxx=-16000pt\relax%
  \global\pgf@pathminx=16000pt\relax%
  \global\pgf@pathmaxy=-16000pt\relax%
  \global\pgf@pathminy=16000pt\relax%
}

\def\pgf@getpathsizes#1{%
  \edef#1{{\the\pgf@pathmaxx}{\the\pgf@pathminx}{\the\pgf@pathmaxy}{\the\pgf@pathminy}}%
}
\def\pgf@setpathsizes#1{%
  \expandafter\pgf@@setpathsizes#1%
}
\def\pgf@@setpathsizes#1#2#3#4{%
  \global\pgf@pathmaxx=#1\relax%
  \global\pgf@pathminx=#2\relax%
  \global\pgf@pathmaxy=#3\relax%
  \global\pgf@pathminy=#4\relax%
}






\def\pgfpathlineto#1{%
  \pgfpointtransformed{#1}%
  \pgf@roundcornerifneeded%
  \pgf@nlt@lineto{\pgf@x}{\pgf@y}%
  \global\pgf@path@lastx=\pgf@x%
  \global\pgf@path@lasty=\pgf@y%
}




\def\pgfpathclose{%
  \pgf@roundcornerifneeded%
  \pgf@nlt@closepath%
}



\def\pgfpathcurveto#1#2#3{%
  \pgfpointtransformed{#3}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgfpointtransformed{#2}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgfpointtransformed{#1}%
  \pgf@roundcornerifneeded%
  \pgf@nlt@curveto{\pgf@x}{\pgf@y}{\pgf@xa}{\pgf@ya}{\pgf@xb}{\pgf@yb}%
  \global\pgf@path@lastx=\pgf@xb%
  \global\pgf@path@lasty=\pgf@yb%
}




\def\pgfpathquadraticcurveto#1#2{%
  \pgfpointtransformed{#2}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgfpointtransformed{#1}%
  \pgf@xc=.6666666\pgf@x%
  \pgf@yc=.6666666\pgf@y%
  \pgf@xa=.33333333\pgf@xb%
  \pgf@ya=.33333333\pgf@yb%
  \advance\pgf@xa by\pgf@xc%
  \advance\pgf@ya by\pgf@yc%
  \advance\pgf@xc by.3333333\pgf@path@lastx%
  \advance\pgf@yc by.3333333\pgf@path@lasty%
  \pgf@roundcornerifneeded%
  \pgf@nlt@curveto{\pgf@xc}{\pgf@yc}{\pgf@xa}{\pgf@ya}{\pgf@xb}{\pgf@yb}%
  \global\pgf@path@lastx=\pgf@xb%
  \global\pgf@path@lasty=\pgf@yb%
}





\def\pgfpatharc#1#2#3{%
  {%
    \pgfmathparse{#1}\let\pgf@temp@a=\pgfmathresult%
    \pgfmathparse{#2}\let\pgf@temp@b=\pgfmathresult%
    \pgfutil@in@{and }{#3}%
    \ifpgfutil@in@%
      \pgf@arc@get@radii#3\pgf@arc@stop%
    \else
      \pgf@arc@get@radii#3and #3\pgf@arc@stop%
    \fi%
    \pgf@arc@local@angle@a=\pgf@temp@a pt%
    \pgf@arc@local@angle@b=\pgf@temp@b pt%
    \loop%
      \pgfutil@tempdima=\pgf@arc@local@angle@a%
      \advance\pgfutil@tempdima by-\pgf@arc@local@angle@b\relax%
      \ifdim\pgfutil@tempdima<0pt\relax%
        \pgfutil@tempdima=-\pgfutil@tempdima\relax%
      \fi%
    \ifdim\pgfutil@tempdima>90pt\relax%
      \ifdim\pgfutil@tempdima>115pt\relax%
        \pgf@arc@temp=90pt%
      \else%
        \pgf@arc@temp=60pt%
      \fi%
      \ifdim\pgf@arc@local@angle@b>\pgf@arc@local@angle@a\relax%
        {%
          \pgf@arc@local@angle@b=\pgf@arc@local@angle@a\relax%
          \advance\pgf@arc@local@angle@b by\pgf@arc@temp\relax%
          \pgf@arc%
        }
        \advance\pgf@arc@local@angle@a by\pgf@arc@temp\relax%
      \else
        {%
          \pgf@arc@local@angle@b=\pgf@arc@local@angle@a\relax%
          \advance\pgf@arc@local@angle@b by-\pgf@arc@temp\relax%
          \pgf@arc%
        }%
        \advance\pgf@arc@local@angle@a by-\pgf@arc@temp\relax%
      \fi%
    \repeat%
    \pgf@roundcornerifneeded%
    \pgf@arc%
  }%
}
\dimendef\pgf@arc@local@angle@a=0
\dimendef\pgf@arc@local@angle@b=1
\dimendef\pgf@arc@temp=2

\def\pgf@arc@get@radii#1and #2\pgf@arc@stop{%
  \pgfmathparse{#1}\let\pgf@arc@radius@a=\pgfmathresult%
  \pgfmathparse{#2}\let\pgf@arc@radius@b=\pgfmathresult%
}


\def\pgf@arc{%
  {%
  \pgfutil@tempdima=\pgf@arc@radius@a pt%
  \pgfutil@tempdimb=\pgf@arc@radius@b pt%
  \pgf@xa=\pgf@arc@local@angle@a\relax%
  \pgf@xb=\pgf@arc@local@angle@b\relax%
  \advance\pgf@xb by-\pgf@xa\relax%
  \ifdim\pgf@xb<0pt\relax%
    \pgf@xb=-\pgf@xb\relax%
  \fi%
  \ifdim\pgf@xb=90.0pt%
    \def\pgfmathresult{0.55228475}%
  \else%
    \pgfmathparse{1.333333333*tan(.25*\pgf@sys@tonumber{\pgf@xb})}%
  \fi%
  \pgfutil@tempdima=\pgfmathresult\pgfutil@tempdima%
  \pgfutil@tempdimb=\pgfmathresult\pgfutil@tempdimb%
  \pgf@xa=\pgf@arc@local@angle@a\relax%
  \ifdim\pgf@arc@local@angle@b>\pgf@arc@local@angle@a\relax%
    \advance\pgf@xa by 90pt\relax%
  \else%
    \advance\pgf@xa by -90pt\relax%
  \fi%
  \edef\pgf@arc@angle{\pgf@sys@tonumber{\pgf@xa}}%
  \pgfpointtransformed{\pgfpointpolar{\pgf@arc@angle}{\pgfutil@tempdima and \pgfutil@tempdimb}}%
  \advance\pgf@x by-\pgf@pt@x%
  \advance\pgf@y by-\pgf@pt@y%
  \pgf@xa=\pgf@path@lastx%
  \pgf@ya=\pgf@path@lasty%
  \advance\pgf@xa by \pgf@x%
  \advance\pgf@ya by \pgf@y%
  \pgfpointtransformed{\pgfpointpolar{\pgf@sys@tonumber{\pgf@arc@local@angle@a}}{\pgf@arc@radius@a pt and \pgf@arc@radius@b pt}}%
  \pgf@xb=\pgf@path@lastx%
  \pgf@yb=\pgf@path@lasty%
  \advance\pgf@xb by -\pgf@x%
  \advance\pgf@yb by -\pgf@y%
  \pgfpointtransformed{\pgfpointpolar{\pgf@sys@tonumber{\pgf@arc@local@angle@b}}{\pgf@arc@radius@a pt and \pgf@arc@radius@b pt}}%
  \advance\pgf@xb by \pgf@x%
  \advance\pgf@yb by \pgf@y%
  \ifdim\pgf@arc@local@angle@b>\pgf@arc@local@angle@a\relax%
    \advance\pgf@arc@local@angle@b by -90pt\relax%
  \else%
    \advance\pgf@arc@local@angle@b by 90pt\relax%
  \fi%
  \pgfpointtransformed{\pgfpointpolar{\pgf@sys@tonumber{\pgf@arc@local@angle@b}}{\pgfutil@tempdima and \pgfutil@tempdimb}}%
  \advance\pgf@x by-\pgf@pt@x%
  \advance\pgf@y by-\pgf@pt@y%
  \pgf@xc=\pgf@xb\relax%
  \pgf@yc=\pgf@yb\relax%
  \advance \pgf@xc by \pgf@x\relax%
  \advance \pgf@yc by \pgf@y\relax%
  \pgf@nlt@curveto{\pgf@xa}{\pgf@ya}{\pgf@xc}{\pgf@yc}{\pgf@xb}{\pgf@yb}%
  \global\pgf@path@lastx=\pgf@xb%
  \global\pgf@path@lasty=\pgf@yb%
  }%
}



\def\pgfpatharcaxes#1#2#3#4{%
  {%
    \pgftransformtriangle{\pgfpointorigin}{#3}{#4}%
    \pgfpatharc{#1}{#2}{1pt}%
  }%
}




\def\pgfpatharcto#1#2#3#4#5#6{%
  {%
    \pgfmathsetmacro\pgf@arcto@rx{abs(#1)}%
    \pgfmathsetmacro\pgf@arcto@ry{abs(#2)}%
    \ifdim\pgf@arcto@rx pt=0pt%
      \gdef\pgf@marshal{\pgfpathlineto{#6}}%
    \else
    \ifdim\pgf@arcto@ry pt=0pt%
      \gdef\pgf@marshal{\pgfpathlineto{#6}}%
    \else
    \pgfmathsetmacro\pgf@arcto@phi{#3}%
    \pgfmathsetmacro\pgf@arcto@fA{#4}%
    \ifdim\pgf@arcto@fA pt=0pt
    \else
      \pgfmathsetmacro\pgf@arcto@fA{1.0} %
    \fi
    \pgfmathsetmacro\pgf@arcto@fS{#5}%
    \ifdim\pgf@arcto@fS pt=0pt
    \else
      \pgfmathsetmacro\pgf@arcto@fS{1.0} %
    \fi
    \pgf@process{#6}
    \edef\pgf@arcto@xb{\the\pgf@x}%
    \edef\pgf@arcto@yb{\the\pgf@y}%
    \pgftransforminvert%
    \pgf@process{\pgfpointtransformed{\pgfqpoint{\pgf@path@lastx}{\pgf@path@lasty}}}
    \edef\pgf@arcto@xa{\the\pgf@x}
    \edef\pgf@arcto@ya{\the\pgf@y}
    \edef\pgf@temp@a{\pgf@arcto@xa,\pgf@arcto@ya}
    \edef\pgf@temp@b{\pgf@arcto@xb,\pgf@arcto@yb}
    \ifx\pgf@temp@a\pgf@temp@b%
      \global\let\pgf@marshal\pgfutil@empty
    \else
    \pgftransformreset
    \pgftransformrotate{-\pgf@arcto@phi}
    \pgf@process{
      \pgfpointtransformed{\pgfpointscale{.5}{\pgfpointdiff
          {\pgfqpoint{\pgf@arcto@xb}{\pgf@arcto@yb}}
          {\pgfqpoint{\pgf@arcto@xa}{\pgf@arcto@ya}}
        }
      }
    }
    \edef\pgf@arcto@xaprime{\pgf@sys@tonumber\pgf@x}
    \edef\pgf@arcto@yaprime{\pgf@sys@tonumber\pgf@y}
    \pgfmathsetmacro\pgf@arcto@frac@x{\pgf@arcto@xaprime/\pgf@arcto@rx}
    \pgfmathsetmacro\pgf@arcto@frac@y{\pgf@arcto@yaprime/\pgf@arcto@ry}
    \pgfmathsetmacro\pgf@arcto@lambda{
      \pgf@arcto@frac@x*\pgf@arcto@frac@x+\pgf@arcto@frac@y*\pgf@arcto@frac@y
    }
    \ifdim\pgf@arcto@lambda pt>1pt%
      \pgfmathsetmacro\pgf@arcto@sqrt@lambda{sqrt(\pgf@arcto@lambda)}
      \pgfmathsetmacro\pgf@arcto@rx{\pgf@arcto@sqrt@lambda*\pgf@arcto@rx}
      \pgfmathsetmacro\pgf@arcto@ry{\pgf@arcto@sqrt@lambda*\pgf@arcto@ry}
    \fi
    \pgfmathsetmacro\pgf@arcto@xaprime@abs{abs(\pgf@arcto@xaprime)}
    \pgfmathsetmacro\pgf@arcto@yaprime@abs{abs(\pgf@arcto@yaprime)}
    \pgfmathmax@{\pgf@arcto@rx,\pgf@arcto@ry,\pgf@arcto@xaprime@abs,\pgf@arcto@yaprime@abs}
    \pgfmathsetmacro\pgf@arcto@scaling{20/\pgfmathresult}
    \pgfmathsetmacro\pgf@arcto@rx@scaled{\pgf@arcto@scaling*\pgf@arcto@rx}
    \pgfmathsetmacro\pgf@arcto@ry@scaled{\pgf@arcto@scaling*\pgf@arcto@ry}
    \pgfmathsetmacro\pgf@arcto@xaprime@scaled{\pgf@arcto@scaling*\pgf@arcto@xaprime}
    \pgfmathsetmacro\pgf@arcto@yaprime@scaled{\pgf@arcto@scaling*\pgf@arcto@yaprime}
    \ifdim\pgf@arcto@rx pt>\pgf@arcto@ry pt%
      \pgfmathsetmacro\pgf@arcto@rx@over@ry{\pgf@arcto@rx/\pgf@arcto@ry}
      \pgfmathsetmacro\pgf@arcto@ry@over@rx{\pgf@arcto@ry/\pgf@arcto@rx}
      \pgfmathsetmacro\pgf@arcto@temp{\pgf@arcto@ry@over@rx*\pgf@arcto@xaprime@scaled}
      \pgfmathsetmacro\pgf@arcto@numerator{
        \pgf@arcto@ry@scaled*\pgf@arcto@ry@scaled-
        \pgf@arcto@yaprime@scaled*\pgf@arcto@yaprime@scaled-
        \pgf@arcto@temp*\pgf@arcto@temp
      }
      \pgfmathsetmacro\pgf@arcto@denominator{
        \pgf@arcto@yaprime@scaled*\pgf@arcto@yaprime@scaled+
        \pgf@arcto@temp*\pgf@arcto@temp
      }
    \else
      \pgfmathsetmacro\pgf@arcto@rx@over@ry{\pgf@arcto@rx/\pgf@arcto@ry}
      \pgfmathsetmacro\pgf@arcto@ry@over@rx{\pgf@arcto@ry/\pgf@arcto@rx}
      \pgfmathsetmacro\pgf@arcto@temp{\pgf@arcto@rx@over@ry*\pgf@arcto@yaprime@scaled}
      \pgfmathsetmacro\pgf@arcto@numerator{
        \pgf@arcto@rx@scaled*\pgf@arcto@rx@scaled-
        \pgf@arcto@xaprime@scaled*\pgf@arcto@xaprime@scaled-
        \pgf@arcto@temp*\pgf@arcto@temp
      }
      \pgfmathsetmacro\pgf@arcto@denominator{
        \pgf@arcto@xaprime@scaled*\pgf@arcto@xaprime@scaled+
        \pgf@arcto@temp*\pgf@arcto@temp
      }
    \fi
    \pgfmathsetmacro\pgf@arcto@frac{
      \pgf@arcto@numerator/\pgf@arcto@denominator
    }
    \ifdim\pgf@arcto@frac pt<0pt
      \pgfmathsetmacro\pgf@arcto@factor{0}
    \else
      \pgfmathsetmacro\pgf@arcto@factor{sqrt(\pgf@arcto@frac)}
    \fi
    \ifx\pgf@arcto@fA\pgf@arcto@fS
      \pgfmathsetmacro\pgf@arcto@factor{-\pgf@arcto@factor}
    \fi
    \pgfmathsetmacro\pgf@arcto@cxprime{
      \pgf@arcto@factor*\pgf@arcto@rx@over@ry*\pgf@arcto@yaprime
    }
    \pgfmathsetmacro\pgf@arcto@cyprime{
      -\pgf@arcto@factor*\pgf@arcto@ry@over@rx*\pgf@arcto@xaprime
    }
    \pgftransformreset
    \pgftransformrotate{\pgf@arcto@phi}
    \pgf@process{
      \pgfpointtransformed{\pgfqpoint{\pgf@arcto@cxprime pt}{\pgf@arcto@cyprime pt}}
    }
    \edef\pgf@arcto@temp{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
    \pgf@process{\pgfpointadd{\pgf@arcto@temp}{
        \pgfpointscale{.5}{
          \pgfpointadd
          {\pgfqpoint{\pgf@arcto@xa}{\pgf@arcto@ya}}
          {\pgfqpoint{\pgf@arcto@xb}{\pgf@arcto@yb}}        }
      }
    }
    \edef\pgf@arcto@cx{\the\pgf@x}
    \edef\pgf@arcto@cy{\the\pgf@y}
    \pgfmathsetmacro\pgf@arcto@vec@x{(\pgf@arcto@xaprime-\pgf@arcto@cxprime)/\pgf@arcto@rx}
    \pgfmathsetmacro\pgf@arcto@vec@y{(\pgf@arcto@yaprime-\pgf@arcto@cyprime)/\pgf@arcto@ry}
    \pgfmathsetmacro\pgf@arcto@denominator{veclen(\pgf@arcto@vec@x,\pgf@arcto@vec@y)}
    \pgfmathsetmacro\pgf@arcto@frac{\pgf@arcto@vec@x/\pgf@arcto@denominator}
    \pgfmathsetmacro\pgf@arcto@theta@start{acos(\pgf@arcto@frac)}
    \ifdim\pgf@arcto@vec@y pt<0pt
      \pgfmathsetmacro\pgf@arcto@theta@start{-\pgf@arcto@theta@start}
    \fi
    \pgfmathsetmacro\pgf@arcto@vec@x{(-\pgf@arcto@xaprime-\pgf@arcto@cxprime)/\pgf@arcto@rx}
    \pgfmathsetmacro\pgf@arcto@vec@y{(-\pgf@arcto@yaprime-\pgf@arcto@cyprime)/\pgf@arcto@ry}
    \pgfmathsetmacro\pgf@arcto@denominator{veclen(\pgf@arcto@vec@x,\pgf@arcto@vec@y)}
    \pgfmathsetmacro\pgf@arcto@frac{\pgf@arcto@vec@x/\pgf@arcto@denominator}
    \pgfmathsetmacro\pgf@arcto@theta@end{acos(\pgf@arcto@frac)}
    \ifdim\pgf@arcto@vec@y pt<0pt
      \pgfmathsetmacro\pgf@arcto@theta@end{-\pgf@arcto@theta@end}
    \fi
    \pgfmathsetmacro\pgf@arcto@delta@theta{abs(\pgf@arcto@theta@start-\pgf@arcto@theta@end)}
    \ifdim\pgf@arcto@fA pt=0pt%
      \ifdim\pgf@arcto@delta@theta pt>180pt%
        \ifdim\pgf@arcto@theta@end pt>\pgf@arcto@theta@start pt
          \pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end-360}
        \else
          \pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end+360}
        \fi
      \fi
    \else
      \ifdim\pgf@arcto@delta@theta pt<180pt%
        \ifdim\pgf@arcto@theta@end pt>\pgf@arcto@theta@start pt
          \pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end-360}
        \else
          \pgfmathsetmacro\pgf@arcto@theta@end{\pgf@arcto@theta@end+360}
        \fi
      \fi
    \fi
    \xdef\pgf@marshal{\noexpand
      \pgfpatharcaxes{\pgf@arcto@theta@start}{\pgf@arcto@theta@end}
      {\noexpand\pgfpointpolar{\pgf@arcto@phi}{\pgf@arcto@rx}}
      {\noexpand\pgfpointpolar{\pgf@arcto@phi+90}{\pgf@arcto@ry}}
    }
    \fi\fi\fi
  }
  \pgf@marshal
}



\def\pgfpatharctomaxstepsize{45}

\def\pgfpatharctoprecomputed#1#2#3#4#5#6#7#8{%
    \begingroup
    \pgf@process{#1}%
    \edef\pgfpath@center@x{\the\pgf@x}%
    \edef\pgfpath@center@y{\the\pgf@y}%
    \def\pgfpath@completearcend{#4}%
    \pgf@xa=#2pt
    \pgf@xb=#3pt
    \edef\pgfpath@startangle{#2pt}%
    \edef\pgfpath@endangle{\pgf@sys@tonumber\pgf@xb}%
    \pgf@ya=\pgf@xb
    \advance\pgf@ya by-\pgf@xa
    \ifx\pgfpatharctomaxstepsize\pgfutil@empty
        \def\pgfpath@N{1}%
        \pgf@xc=\pgf@ya
    \else
        \pgf@xc=\pgf@ya%
        \ifdim\pgf@xc<0pt
            \multiply\pgf@xc by-1
        \fi
        \divide\pgf@xc by\pgfpatharctomaxstepsize\relax
        \afterassignment\pgfutil@gobble@until@relax
        \c@pgf@counta=\the\pgf@xc\relax
        \advance\c@pgf@counta by1
        \edef\pgfpath@N{\the\c@pgf@counta}%
        \pgf@xc=\pgf@ya
        \divide\pgf@xc by\c@pgf@counta
    \fi
    \edef\pgfpath@h{\pgf@sys@tonumber\pgf@xc}%
    \pgf@xc=0.116355283466289\pgf@xc %
    \divide\pgf@xc by20
    \pgf@xa=#7\pgf@xc
    \edef\pgfpath@scale@A{\pgf@sys@tonumber\pgf@xa}%
    \pgf@xa=#8\pgf@xc
    \edef\pgfpath@scale@B{\pgf@sys@tonumber\pgf@xa}%
    \c@pgf@countd=1
    \pgfutil@loop
    \ifnum\c@pgf@countd<\pgfpath@N\relax
        \pgf@xa=\pgfpath@startangle %
        \pgf@xb=\pgfpath@h pt
        \multiply\pgf@xb by\c@pgf@countd
        \advance\pgf@xa by\pgf@xb
        \edef\pgfpath@angle@i{\pgf@sys@tonumber\pgf@xa}%
        \pgfpatharcofellipse@{%
            \pgfpoint
                {\pgfpath@center@x + #5*cos(\pgfpath@angle@i)}
                {\pgfpath@center@y + #6*sin(\pgfpath@angle@i)}%
        }%
        \advance\c@pgf@countd by1
    \pgfutil@repeat
    \pgfpatharcofellipse@{\pgfpath@completearcend}%
    \endgroup
}%
\def\pgfpatharcofellipse@#1{%
    \begingroup
    \pgf@process{#1}%
    \edef\pgfpath@endpt{\global\pgf@x=\the\pgf@x\space\global\pgf@y=\the\pgf@y\space}%
    \pgfpathcurveto{
        \begingroup
        \global\pgf@x=\pgf@path@lastx
        \global\pgf@y=\pgf@path@lasty
        \pgf@xa=\pgf@x \advance\pgf@xa by-\pgfpath@center@x
        \pgf@ya=\pgf@y \advance\pgf@ya by-\pgfpath@center@y
        \global\advance\pgf@x by-\pgfpath@scale@A\pgf@ya
        \global\advance\pgf@y by \pgfpath@scale@B\pgf@xa
        \endgroup
    }{%
        \begingroup
        \pgfpath@endpt
        \pgf@xa=\pgf@x \advance\pgf@xa by-\pgfpath@center@x
        \pgf@ya=\pgf@y \advance\pgf@ya by-\pgfpath@center@y
        \global\advance\pgf@x by \pgfpath@scale@A\pgf@ya
        \global\advance\pgf@y by-\pgfpath@scale@B\pgf@xa
        \endgroup
    }{%
        \pgfpath@endpt
    }%
    \endgroup
}










\def\pgfpathellipse#1#2#3{%
  \pgfpointtransformed{#1}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgfpointtransformed{#2}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \advance\pgf@xa by-\pgf@pt@x%
  \advance\pgf@ya by-\pgf@pt@y%
  \pgfpointtransformed{#3}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \advance\pgf@xb by-\pgf@pt@x%
  \advance\pgf@yb by-\pgf@pt@y%
  {%
    \advance\pgf@xa by\pgf@xc%
    \advance\pgf@ya by\pgf@yc%
    \pgf@nlt@moveto{\pgf@xa}{\pgf@ya}%
  }%
  \pgf@x=0.55228475\pgf@xb%
  \pgf@y=0.55228475\pgf@yb%
  \advance\pgf@x by\pgf@xa%
  \advance\pgf@y by\pgf@ya%
  \advance\pgf@x by\pgf@xc%
  \advance\pgf@y by\pgf@yc%
  \edef\pgf@temp{\pgf@xc\the\pgf@x\pgf@yc\the\pgf@y}%
  \pgf@x=0.55228475\pgf@xa%
  \pgf@y=0.55228475\pgf@ya%
  \advance\pgf@x by\pgf@xb%
  \advance\pgf@y by\pgf@yb%
  {%
    \advance\pgf@x by\pgf@xc%
    \advance\pgf@y by\pgf@yc%
    \advance\pgf@xb by\pgf@xc%
    \advance\pgf@yb by\pgf@yc%
    \pgf@temp%
    \pgf@nlt@curveto{\pgf@xc}{\pgf@yc}{\pgf@x}{\pgf@y}{\pgf@xb}{\pgf@yb}%
  }%
  \pgf@xa=-\pgf@xa%
  \pgf@ya=-\pgf@ya%
  \pgf@x=0.55228475\pgf@xa%
  \pgf@y=0.55228475\pgf@ya%
  \advance\pgf@x by\pgf@xb%
  \advance\pgf@y by\pgf@yb%
  \advance\pgf@x by\pgf@xc%
  \advance\pgf@y by\pgf@yc%
  \edef\pgf@temp{\pgf@xc\the\pgf@x\pgf@yc\the\pgf@y}%
  \pgf@x=0.55228475\pgf@xb%
  \pgf@y=0.55228475\pgf@yb%
  \advance\pgf@x by\pgf@xa%
  \advance\pgf@y by\pgf@ya%
  {%
    \advance\pgf@x by\pgf@xc%
    \advance\pgf@y by\pgf@yc%
    \advance\pgf@xa by\pgf@xc%
    \advance\pgf@ya by\pgf@yc%
    \pgf@temp%
    \pgf@nlt@curveto{\pgf@xc}{\pgf@yc}{\pgf@x}{\pgf@y}{\pgf@xa}{\pgf@ya}%
  }%
  \pgf@xb=-\pgf@xb%
  \pgf@yb=-\pgf@yb%
  \pgf@x=0.55228475\pgf@xb%
  \pgf@y=0.55228475\pgf@yb%
  \advance\pgf@x by\pgf@xa%
  \advance\pgf@y by\pgf@ya%
  \advance\pgf@x by\pgf@xc%
  \advance\pgf@y by\pgf@yc%
  \edef\pgf@temp{\pgf@xc\the\pgf@x\pgf@yc\the\pgf@y}%
  \pgf@x=0.55228475\pgf@xa%
  \pgf@y=0.55228475\pgf@ya%
  \advance\pgf@x by\pgf@xb%
  \advance\pgf@y by\pgf@yb%
  {%
    \advance\pgf@x by\pgf@xc%
    \advance\pgf@y by\pgf@yc%
    \advance\pgf@xb by\pgf@xc%
    \advance\pgf@yb by\pgf@yc%
    \pgf@temp%
    \pgf@nlt@curveto{\pgf@xc}{\pgf@yc}{\pgf@x}{\pgf@y}{\pgf@xb}{\pgf@yb}%
  }%
  \pgf@xa=-\pgf@xa%
  \pgf@ya=-\pgf@ya%
  \pgf@x=0.55228475\pgf@xa%
  \pgf@y=0.55228475\pgf@ya%
  \advance\pgf@x by\pgf@xb%
  \advance\pgf@y by\pgf@yb%
  \advance\pgf@x by\pgf@xc%
  \advance\pgf@y by\pgf@yc%
  \edef\pgf@temp{\pgf@xc\the\pgf@x\pgf@yc\the\pgf@y}%
  \pgf@x=0.55228475\pgf@xb%
  \pgf@y=0.55228475\pgf@yb%
  \advance\pgf@x by\pgf@xa%
  \advance\pgf@y by\pgf@ya%
  {%
    \advance\pgf@x by\pgf@xc%
    \advance\pgf@y by\pgf@yc%
    \advance\pgf@xa by\pgf@xc%
    \advance\pgf@ya by\pgf@yc%
    \pgf@temp%
    \pgf@nlt@curveto{\pgf@xc}{\pgf@yc}{\pgf@x}{\pgf@y}{\pgf@xa}{\pgf@ya}%
  }%
  \pgf@nlt@closepath%
  \pgf@nlt@moveto{\pgf@xc}{\pgf@yc}%
}




\def\pgfpathcircle#1#2{\pgfpathellipse{#1}{\pgfpoint{#2}{0pt}}{\pgfpoint{0pt}{#2}}}





\def\pgfpathrectangle{%
  \let\pgfrect@next=\pgf@specialrect%
  \ifpgf@pt@identity%
    \ifpgf@arccorners%
    \else%
      \ifx\pgf@nlt@list\pgfutil@empty%
        \let\pgfrect@next=\pgf@normalrect%
      \fi%
    \fi%
  \fi%
  \pgfrect@next%
}

\def\pgf@normalrect#1#2{%
  \pgf@process{#2}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgfpointtransformed{#1}%
  \pgfsyssoftpath@rect{\the\pgf@x}{\the\pgf@y}{\the\pgf@xa}{\the\pgf@ya}%
  \pgf@protocolsizes{\pgf@x}{\pgf@y}%
  \advance\pgf@x by\pgf@xa\relax%
  \advance\pgf@y by\pgf@ya\relax%
  \pgf@protocolsizes{\pgf@x}{\pgf@y}%
}

\def\pgf@specialrect#1#2{%
  \pgf@process{#2}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{#1}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \advance\pgf@xa by\pgf@xb%
  \advance\pgf@ya by\pgf@yb%
  \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@ya}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}%
  \pgfpathclose%
  \pgfpathmoveto{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
}


\def\pgfpathrectanglecorners#1#2{%
  \pgf@process{#2}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgf@process{#1}%
  \advance\pgf@xc by-\pgf@x%
  \advance\pgf@yc by-\pgf@y%
  \pgfpathrectangle{#1}{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
}



\pgfkeys{
  /pgf/stepx/.initial=1cm,
  /pgf/stepy/.initial=1cm,
  /pgf/step/.code={\pgf@process{#1}\pgfkeysalso{/pgf/stepx/.expanded=\the\pgf@x,/pgf/stepy/.expanded=\the\pgf@y}},
  /pgf/step/.value required
}

\def\pgfpathgrid{\pgfutil@ifnextchar[{\pgf@pathgrid}{\pgf@pathgrid[]}}
\def\pgf@pathgrid[#1]#2#3{%
  \pgfset{#1}%
  \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/stepx}}%
  \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/stepy}}%
  \pgf@process{#3}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@process{#2}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \ifdim\pgf@xa>\pgf@xb%
    \pgf@x=\pgf@xb%
    \pgf@xb=\pgf@xa%
    \pgf@xa=\pgf@x%
  \fi%
  \ifdim\pgf@ya>\pgf@yb%
    \pgf@y=\pgf@yb%
    \pgf@yb=\pgf@ya%
    \pgf@ya=\pgf@y%
  \fi%
  \ifdim \pgf@yc > .01pt\relax%
    \c@pgf@counta=\pgf@ya\relax%
    \c@pgf@countb=\pgf@yc\relax%
    \divide\c@pgf@counta by\c@pgf@countb\relax%
    \pgfutil@tempdima=\c@pgf@counta\pgf@yc\relax%
    \ifdim\pgfutil@tempdima<\pgf@ya%
      \advance\pgfutil@tempdima by\pgf@yc%
    \fi%
    \pgfutil@tempdimb\pgf@x
    \pgfutil@loop%
      {%
        \pgf@xa=\pgfutil@tempdimb%
        \pgf@ya=\pgfutil@tempdima%
        \pgf@pos@transform{\pgf@xa}{\pgf@ya}
        \pgf@nlt@moveto{\pgf@xa}{\pgf@ya}%
        \pgf@xa=\pgf@xb%
        \pgf@ya=\pgfutil@tempdima%
        \pgf@pos@transform{\pgf@xa}{\pgf@ya}
        \pgf@nlt@lineto{\pgf@xa}{\pgf@ya}%
      }%
    \advance\pgfutil@tempdima by\pgf@yc%
    \ifdim\pgfutil@tempdima<\pgf@yb%
    \pgfutil@repeat%
    \advance\pgfutil@tempdima by-0.01pt\relax%
    \ifdim\pgfutil@tempdima<\pgf@yb%
      {%
        \pgf@xa=\pgfutil@tempdimb%
        \pgf@ya=\pgfutil@tempdima%
        \pgf@pos@transform{\pgf@xa}{\pgf@ya}
        \pgf@nlt@moveto{\pgf@xa}{\pgf@ya}%
        \pgf@xa=\pgf@xb%
        \pgf@ya=\pgfutil@tempdima%
        \pgf@pos@transform{\pgf@xa}{\pgf@ya}
        \pgf@nlt@lineto{\pgf@xa}{\pgf@ya}%
      }%
    \fi%
  \fi%
  \ifdim \pgf@xc > .01pt\relax%
    \c@pgf@counta=\pgf@xa\relax%
    \c@pgf@countb=\pgf@xc\relax%
    \divide\c@pgf@counta by\c@pgf@countb\relax%
    \pgfutil@tempdimb=\c@pgf@counta\pgf@xc\relax%
    \ifdim\pgfutil@tempdimb<\pgf@xa%
      \advance\pgfutil@tempdimb by\pgf@xc%
    \fi%
    \pgfutil@loop%
      {%
        \pgf@xc=\pgfutil@tempdimb%
        \pgf@yc=\pgf@ya%
        \pgf@pos@transform{\pgf@xc}{\pgf@yc}
        \pgf@nlt@moveto{\pgf@xc}{\pgf@yc}%
        \pgf@xc=\pgfutil@tempdimb%
        \pgf@yc=\pgf@yb%
        \pgf@pos@transform{\pgf@xc}{\pgf@yc}
        \pgf@nlt@lineto{\pgf@xc}{\pgf@yc}%
      }%
      \advance\pgfutil@tempdimb by\pgf@xc%
    \ifdim\pgfutil@tempdimb<\pgf@xb%
    \pgfutil@repeat%
    \advance\pgfutil@tempdimb by-0.01pt\relax%
    \ifdim\pgfutil@tempdimb<\pgf@xb%
      {%
        \pgf@xc=\pgfutil@tempdimb%
        \pgf@yc=\pgf@ya%
        \pgf@pos@transform{\pgf@xc}{\pgf@yc}
        \pgf@nlt@moveto{\pgf@xc}{\pgf@yc}%
        \pgf@xc=\pgfutil@tempdimb%
        \pgf@yc=\pgf@yb%
        \pgf@pos@transform{\pgf@xc}{\pgf@yc}
        \pgf@nlt@lineto{\pgf@xc}{\pgf@yc}%
      }%
    \fi%
  \fi%
  \pgf@process{#3}%
  \pgf@pos@transform{\pgf@x}{\pgf@y}%
  \pgf@nlt@moveto{\pgf@x}{\pgf@y}%
}




\def\pgfpathparabola#1#2{%
  {%
    \pgf@process{#2}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgf@process{#1}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgfutil@tempswatrue%
    \ifdim\pgf@xb=0pt\relax%
      \ifdim\pgf@yb=0pt\relax%
        \pgfutil@tempswafalse%
      \fi%
    \fi%
    {%
      \ifpgfutil@tempswa%
        \pgf@arccornersfalse
      \else%
      \fi%
      \pgfutil@tempswatrue%
      \ifdim\pgf@xc=0pt\relax%
        \ifdim\pgf@yc=0pt\relax%
          \pgfutil@tempswafalse%
        \fi%
      \fi%
      \ifpgfutil@tempswa
      {%
        \pgf@pt@x=\pgf@path@lastx%
        \pgf@pt@y=\pgf@path@lasty%
        \pgfpathcurveto%
          {\pgfqpoint{.1125\pgf@xc}{.225\pgf@yc}}%
          {\pgfqpoint{.5\pgf@xc}{\pgf@yc}}%
          {\pgfqpoint{\pgf@xc}{\pgf@yc}}%
      }%
      \fi%
    }%
    \ifpgfutil@tempswa%
      \pgf@xc=\pgf@xb%
      \pgf@yc=\pgf@yb%
      {%
        \pgf@pt@x=\pgf@path@lastx%
        \pgf@pt@y=\pgf@path@lasty%
        \pgfpathcurveto%
          {\pgfqpoint{.5\pgf@xc}{0\pgf@yc}}%
          {\pgfqpoint{.8875\pgf@xc}{.775\pgf@yc}}%
          {\pgfqpoint{\pgf@xc}{\pgf@yc}}%
      }%
    \fi%
  }%
}





\def\pgfpathsine#1{%
  {%
    \pgf@process{#1}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgf@pt@x=\pgf@path@lastx%
    \pgf@pt@y=\pgf@path@lasty%
    \pgfpathcurveto%
      {\pgfqpoint{.3260\pgf@xc}{.5120\pgf@yc}}%
      {\pgfqpoint{.6380\pgf@xc}{\pgf@yc}}%
      {\pgfqpoint{\pgf@xc}{\pgf@yc}}%
  }%
}


\def\pgfpathcosine#1{%
  {%
    \pgf@process{#1}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgf@pt@x=\pgf@path@lastx%
    \pgf@pt@y=\pgf@path@lasty%
    \pgfpathcurveto%
      {\pgfqpoint{.3620\pgf@xc}{0pt}}%
      {\pgfqpoint{.6740\pgf@xc}{.4880\pgf@yc}}%
      {\pgfqpoint{\pgf@xc}{\pgf@yc}}%
  }%
}



\def\pgfpathcurvebetweentime{\pgf@ignoremovetofalse\pgf@@pathcurvebetweentime}
\def\pgfpathcurvebetweentimecontinue{\pgf@ignoremovetotrue\pgf@@pathcurvebetweentime}
\newif\ifpgf@ignoremoveto

\def\pgf@@pathcurvebetweentime#1#2#3#4#5#6{%
  \pgfmathparse{#1}%
  \let\pgf@time@s=\pgfmathresult%
  \pgfmathparse{#2}%
  \let\pgf@time@t=\pgfmathresult%
  \ifdim\pgf@time@s pt>\pgf@time@t pt\relax%
    \pgfmathsetmacro\pgf@time@s{1-#1}%
    \pgfmathsetmacro\pgf@time@t{1-#2}%
    \pgf@@@pathcurvebetweentime{\pgf@time@t}{#6}{#5}{#4}{#3}%
  \else%
    \pgf@@@pathcurvebetweentime{\pgf@time@t}{#3}{#4}{#5}{#6}%
  \fi%
}

\def\pgf@@@pathcurvebetweentime#1#2#3#4#5{%
  \pgf@process{#2}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgf@process{%
    \pgf@process{#3}%
    \pgf@xa=#1\pgf@x%
    \pgf@ya=#1\pgf@y%
    \pgf@process{#2}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \advance\pgf@x by-#1\pgf@xb%
    \advance\pgf@y by-#1\pgf@yb%
    \advance\pgf@x by\pgf@xa%
    \advance\pgf@y by\pgf@ya%
  }%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@process{%
    \pgf@process{#4}%
    \pgf@xa=#1\pgf@x%
    \pgf@ya=#1\pgf@y%
    \pgf@process{#3}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \advance\pgf@xc by-#1\pgf@x%
    \advance\pgf@yc by-#1\pgf@y%
    \pgf@x=\pgf@xb%
    \pgf@y=\pgf@yb%
    \advance\pgf@x by#1\pgf@xa%
    \advance\pgf@y by#1\pgf@ya%
    \advance\pgf@x by-#1\pgf@xb%
    \advance\pgf@y by-#1\pgf@yb%
    \advance\pgf@x by#1\pgf@xc%
    \advance\pgf@y by#1\pgf@yc%
  }%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{\pgfpointcurveattime{#1}{#2}{#3}{#4}{#5}}%
  \ifx#1\pgf@time@t%
    \pgfmathdivide@{\pgf@time@s}{\pgf@time@t}%
    \pgfmathadd@{-\pgfmathresult}{1}%
    \let\pgf@time@s=\pgfmathresult%
    \edef\pgf@marshal{%
      \noexpand\pgf@@@pathcurvebetweentime{\noexpand\pgf@time@s}%
        {\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
        {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
    }%
  \else%
    \ifpgf@ignoremoveto%
      \edef\pgf@marshal{%
        \noexpand\pgfpathcurveto{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
          {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
      }%
    \else%
      \edef\pgf@marshal{%
        \noexpand\pgfpathmoveto{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
        \noexpand\pgfpathcurveto{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
          {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
      }%
    \fi%
  \fi%
  \pgf@marshal%
}


\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathconstruct.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathprocessing.code.tex ====

\ProvidesFileRCS{pgfcorepathprocessing.code.tex}



\def\pgfprocesssplitpath#1{%
  \let\pgfprocessresultpathprefix\pgfutil@empty%
  \let\pgfprocessresultpathsuffix\pgfutil@empty%
  \let\pgf@next\pgf@process@split%
  \expandafter\pgf@process@split#1\pgfsyssoftpath@movetotoken{}{}\pgf@stop%
}

\def\pgf@process@split#1\pgfsyssoftpath@movetotoken#2#3#4{%
  \ifx#4\pgf@stop%
    \expandafter\def\expandafter\pgfprocessresultpathsuffix\expandafter{\pgfprocessresultpathsuffix#1}%
    \let\pgf@next\pgfutil@gobble%
  \else%
    \expandafter\expandafter\expandafter\def%
    \expandafter\expandafter\expandafter\pgfprocessresultpathprefix%
    \expandafter\expandafter\expandafter{\expandafter\pgfprocessresultpathprefix\pgfprocessresultpathsuffix#1}%
    \def\pgfprocessresultpathsuffix{\pgfsyssoftpath@movetotoken{#2}{#3}}%
  \fi%
  \pgf@next#4%
}




\def\pgfprocesssplitsubpath#1{%
  \let\pgf@tempa\pgfutil@emtpy%
  \let\pgf@tempb\pgfutil@emtpy%
  \let\pgf@tempc\pgfutil@emtpy%
  \let\pgf@tempd\pgfutil@emtpy%
  \let\pgfprocessresultsubpathprefix\pgfutil@empty%
  \let\pgfprocessresultsubpathsuffix\pgfutil@empty%
  \let\pgf@next\pgf@split@subpath%
  \expandafter\pgf@split@subpath#1\pgf@stop%
}

\newif\ifpgf@split@move

\def\pgf@split@subpath#1#2#3#4{%
  \ifx#4\pgf@stop%
    \expandafter\def\expandafter\pgfprocessresultsubpathsuffix\expandafter{\pgfprocessresultsubpathsuffix#1{#2}{#3}}%
    \let\pgf@next\pgfutil@gobble%
  \else%
    \pgf@split@movetrue%
    \ifx#1\pgfsyssoftpath@curvetosupportatoken%
      \pgf@split@movefalse%
    \else
      \ifx#1\pgfsyssoftpath@curvetosupportbtoken%
        \pgf@split@movefalse%
      \fi%
    \fi%
    \ifpgf@split@move%
      \expandafter\expandafter\expandafter\def%
      \expandafter\expandafter\expandafter\pgfprocessresultsubpathprefix%
      \expandafter\expandafter\expandafter{%
        \expandafter\pgfprocessresultsubpathprefix\pgfprocessresultsubpathsuffix}%
      \def\pgfprocessresultsubpathsuffix{#1{#2}{#3}}%
    \else%
      \expandafter\def\expandafter\pgfprocessresultsubpathsuffix\expandafter{\pgfprocessresultsubpathsuffix#1{#2}{#3}}%
    \fi%
  \fi%
  \pgf@next#4%
}





\def\pgfprocesspathextractpoints#1{%
  \ifx#1\pgfutil@empty%
    \let\pgfpointfirstonpath=\pgfpointorigin%
    \let\pgfpointsecondonpath=\pgfpointorigin%
    \let\pgfpointsecondlastonpath=\pgfpointorigin%
    \let\pgfpointlastonpath=\pgfpointorigin%
  \else%
    \expandafter\pgf@extractprocessorfirst#1\pgf@stop%
  \fi%
}

\def\pgf@extractprocessorfirst#1#2#3#4{%
  \def\pgfpointfirstonpath{\pgfqpoint{#2}{#3}}%
  \ifx#4\pgf@stop%
    \let\pgfpointsecondonpath=\pgfpointfirstonpath%
    \let\pgfpointsecondlastonpath=\pgfpointfirstonpath%
    \let\pgfpointlastonpath=\pgfpointfirstonpath%
    \let\next=\pgfutil@gobble%
  \else
    \let\next=\pgf@extractprocessorsecond%
  \fi%
  \next#4%
}

\def\pgf@extractprocessorsecond#1{%
  \ifx#1\pgfsyssoftpath@movetotoken%
    \let\pgf@next=\pgf@extractprocessorfirst%
  \else%
    \let\pgf@next=\pgf@@extractprocessorsecond%
  \fi%
  \pgf@next#1%
}
\def\pgf@@extractprocessorsecond#1#2#3#4{%
  \def\pgfpointsecondonpath{\pgfqpoint{#2}{#3}}%
  \let\pgfpointsecondlastonpath=\pgfpointfirstonpath%
  \let\pgfpointlastonpath=\pgfpointsecondonpath%
  \ifx#4\pgf@stop%
    \let\next=\pgfutil@gobble%
  \else
    \let\next=\pgf@extractprocessorother%
  \fi%
  \next#4%
}

\def\pgf@extractprocessorother#1{%
  \ifx#1\pgfsyssoftpath@movetotoken%
    \let\pgf@next=\pgf@extractprocessorfirst%
  \else%
    \let\pgf@next=\pgf@@extractprocessorother%
  \fi%
  \pgf@next#1%
}
\def\pgf@@extractprocessorother#1#2#3#4{%
  \let\pgfpointsecondlastonpath=\pgfpointlastonpath%
  \def\pgfpointlastonpath{\pgfqpoint{#2}{#3}}%
  \ifx#4\pgf@stop%
    \let\next=\pgfutil@gobble%
  \fi%
  \next#4%
}




\def\pgfprocesscheckclosed#1#2{%
  {%
    \global\let\pgf@proc@todo=\relax%
    \let\pgfsyssoftpath@movetotoken=\pgfutil@gobbletwo%
    \let\pgfsyssoftpath@linetotoken=\pgfutil@gobbletwo%
    \let\pgfsyssoftpath@curvetosupportatoken=\pgfutil@gobbletwo%
    \let\pgfsyssoftpath@curvetosupportbtoken=\pgfutil@gobbletwo%
    \let\pgfsyssoftpath@curvetotoken=\pgfutil@gobbletwo%
    \def\pgfsyssoftpath@rectcornertoken{\gdef\pgf@proc@todo{#2}\pgfutil@gobbletwo}%
    \def\pgfsyssoftpath@rectsizetoken{\gdef\pgf@proc@todo{#2}\pgfutil@gobbletwo}%
    \def\pgfsyssoftpath@closepathtoken{\gdef\pgf@proc@todo{#2}\pgfutil@gobbletwo}%
    #1%
  }%
  \pgf@proc@todo%
}



\def\pgfprocessround#1#2{%
  \expandafter\pgf@processroundcheck\expandafter#1\expandafter#2#1\pgfsyssoftpath@specialroundtoken\pgf@stop%
}

\def\pgf@processroundcheck#1#2#3\pgfsyssoftpath@specialroundtoken#4\pgf@stop{%
  \def\pgf@test{#4}%
  \ifx\pgf@test\pgfutil@empty%
    \let#2=#1%
  \else%
    \pgf@@processround#1#2%
  \fi%
}


\def\pgf@@processround#1#2{%
  \let\pgfprocess@newpath\pgfutil@empty%
  \let\pgfprocess@moveto\pgfutil@empty%
  \let\pgfprocess@firstto\pgfutil@empty%
  \let\pgfprocess@segment\pgfutil@empty%
  \pgf@xa=0pt%
  \pgf@ya=0pt%
  \expandafter\pgfprocess@round#1\pgf@stop{0pt}{0pt}%
  \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@moveto}%
  \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@segment}%
  \let#2=\pgfprocess@newpath%
}

\def\pgfprocess@round#1#2#3{%
  \ifx#1\pgf@stop%
    \let\next=\relax%
  \else%
    \ifx#1\pgfsyssoftpath@specialroundtoken%
      \def\pgfprocess@savex{#2}%
      \def\pgfprocess@savey{#3}%
      \let\next=\pgfprocess@specialround%
      \ifdim#2=0pt%
        \ifdim#3=0pt%
          \let\next=\pgfprocess@round%
        \fi%
      \fi%
    \else%
      \ifx\pgfprocess@firstto\pgfutil@empty%
        \def\pgfprocess@firstto{{#2}{#3}}%
      \fi%
      \pgf@xa=#2%
      \pgf@ya=#3%
      \ifx#1\pgfsyssoftpath@movetotoken%
        \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@moveto}%
        \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@newpath\expandafter{\pgfprocess@segment}%
        \def\pgfprocess@moveto{#1{#2}{#3}}%
        \let\pgfprocess@firstto=\pgfutil@empty%
        \let\pgfprocess@segment=\pgfutil@empty%
      \else%
        \pgfutil@g@addto@macro\pgfprocess@segment{#1{#2}{#3}}%
      \fi%
      \let\next=\pgfprocess@round%
    \fi%
  \fi%
  \next%
}

\def\pgfprocess@specialround#1#2#3{%
  \ifx\pgfprocess@firstto\pgfutil@empty%
    \def\pgfprocess@firstto{{#2}{#3}}%
  \fi%
  \let\next=\pgfprocess@round%
  \ifx#1\pgfsyssoftpath@linetotoken%
    \let\next=\pgfprocess@specialroundcope%
  \else%
    \ifx#1\pgfsyssoftpath@curvetosupportatoken%
      \let\next=\pgfprocess@specialroundcurveto%
    \else%
      \ifx#1\pgfsyssoftpath@closepathtoken%
        \let\next=\pgfprocess@specialroundclose%
      \fi%
    \fi%
  \fi%
  \next#1{#2}{#3}%
}%

\def\pgfprocess@specialroundcope#1#2#3#4#5#6{%
  \let\next=\pgfprocess@round%
  \let\pgfprocess@continueafterrounding=\pgfprocess@round%
  \ifx#4\pgfsyssoftpath@linetotoken%
    \pgf@xc=#5%
    \pgf@yc=#6%
    \let\next=\pgfprocess@@specialround%
  \else%
    \ifx#4\pgfsyssoftpath@curvetosupportatoken%
      \pgf@xc=#5%
      \pgf@yc=#6%
      \let\next=\pgfprocess@@specialround%
    \else%
      \ifx#4\pgfsyssoftpath@closepathtoken%
        \pgf@xc=#5%
        \pgf@yc=#6%
        \let\next=\pgfprocess@@specialround%
      \else
        \ifx#4\pgfsyssoftpath@specialroundtoken%
          \let\next=\pgfprocess@@findrightcoordinates%
        \fi%
      \fi%
    \fi%
  \fi%
  \next#1{#2}{#3}#4{#5}{#6}%
}

\def\pgfprocess@@findrightcoordinates#1#2#3#4#5#6#7#8#9{%
  \pgf@xc=#8%
  \pgf@yc=#9%
  \pgfprocess@@specialround#1{#2}{#3}#4{#5}{#6}#7{#8}{#9}%
}

\def\pgfprocess@@specialround#1#2#3{%
  \pgfutil@g@addto@macro\pgfprocess@segment{#1}%
  \pgf@xb=#2%
  \pgf@yb=#3%
  \edef\pgf@marshal%
  {\noexpand\pgfpointlineatdistance{\pgfprocess@savex}%
    {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
    {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}}%
  \pgf@process{\pgf@marshal}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \edef\pgfprocess@addition{{\the\pgf@x}{\the\pgf@y}}%
  \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
  \edef\pgf@marshal%
  {\noexpand\pgfpointlineatdistance{\pgfprocess@savey}%
    {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
    {\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}}%
  \pgf@process{\pgf@marshal}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  {%
    \pgf@x=\pgf@xb%
    \pgf@y=\pgf@yb%
    \advance\pgf@x by-\pgf@xa%
    \advance\pgf@y by-\pgf@ya%
    \advance\pgf@xa by 0.5522847\pgf@x%
    \advance\pgf@ya by 0.5522847\pgf@y%
    \edef\pgfprocess@addition{\noexpand\pgfsyssoftpath@curvetosupportatoken{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
  }%
  {%
    \pgf@x=\pgf@xb%
    \pgf@y=\pgf@yb%
    \advance\pgf@x by-\pgf@xc%
    \advance\pgf@y by-\pgf@yc%
    \advance\pgf@xc by 0.5522847\pgf@x%
    \advance\pgf@yc by 0.5522847\pgf@y%
    \edef\pgfprocess@addition{\noexpand\pgfsyssoftpath@curvetosupportbtoken{\the\pgf@xc}{\the\pgf@yc}}%
    \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
  }%
  \edef\pgfprocess@addition{\noexpand\pgfsyssoftpath@curvetotoken{\the\pgf@xc}{\the\pgf@yc}}%
  \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}%
  \pgf@xa=#2%
  \pgf@ya=#3%
  \pgfprocess@continueafterrounding%
}

\def\pgfprocess@specialroundcurveto#1#2#3#4#5#6{%
  \pgfutil@g@addto@macro\pgfprocess@segment{#1{#2}{#3}#4{#5}{#6}}%
  \pgf@xa=#5%
  \pgf@ya=#6%
  \pgfprocess@specialroundcope}

\def\pgfprocess@specialroundclose{%
  \let\next=\pgfprocess@round%
  \ifx\pgfprocess@moveto\pgfutil@empty%
  \else%
    \ifx\pgfprocess@firstto\pgfutil@empty%
    \else%
      \expandafter\pgfprocess@@specialclosetarget\pgfprocess@firstto%
      \let\pgfprocess@continueafterrounding=\pgfprocess@cleanupafterclose%
      \edef\next{%
        \noexpand\pgfprocess@@specialround%
        \expandafter\expandafter\expandafter\noexpand\expandafter\pgfprocess@@specialclosemoveto\pgfprocess@moveto%
      }%
    \fi%
  \fi%
  \next%
}

\def\pgfprocess@@specialclosetarget#1#2{%
  \pgf@xc=#1%
  \pgf@yc=#2%
}

\def\pgfprocess@@specialclosemoveto#1#2#3{%
  \pgfsyssoftpath@linetotoken{#2}{#3}%
}


\def\pgfprocess@cleanupafterclose#1#2#3{%
  \edef\pgfprocess@moveto{\noexpand\pgfsyssoftpath@movetotoken{\the\pgf@xc}{\the\pgf@yc}}%
  \edef\pgf@marshal{\noexpand\pgfprocess@round\noexpand\pgfsyssoftpath@closepathtoken{\the\pgf@xc}{\the\pgf@yc}}%
  \pgf@marshal%
}



\def\pgfprocesspathreplacestartandend#1#2#3{%
  \ifx#1\pgfutil@empty%
  \else%
  {%
    \pgfsyssoftpath@getcurrentpath\pgf@replace@origpath%
    \let\pgf@prepath=\pgfutil@empty%
    \pgf@process{#3}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{#2}%
    \expandafter\pgf@replaceprocessfirst#1\pgf@stop%
    \pgfsyssoftpath@getcurrentpath\pgf@restpath%
    \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\gdef%
    \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter#1%
    \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter{%
      \expandafter\expandafter\expandafter\pgf@prepath%
      \expandafter\pgf@newstart\pgf@restpath}%
    \pgfsyssoftpath@setcurrentpath\pgf@replace@origpath%
  }%
  \fi%
}

\def\pgf@replaceprocessfirst#1#2#3#4{%
  \def\pgf@origstart{#1{#2}{#3}}%
  \edef\pgf@newstart{\noexpand#1{\the\pgf@x}{\the\pgf@y}}%
  \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
  \ifx#4\pgf@stop%
    \let\pgf@next=\pgfutil@gobble%
  \else%
    \let\pgf@next=\pgf@replaceprocessother%
    \let\pgf@@next=\pgf@@replaceprocessother%
  \fi%
  \pgf@next#4%
}

\def\pgf@replaceprocessother#1{%
  \ifx#1\pgfsyssoftpath@movetotoken%
    \pgf@replace@handle@move%
  \fi%
  \pgf@@next#1%
}
\def\pgf@@replaceprocessother#1#2#3#4{%
  \ifx#4\pgf@stop%
    \edef\pgf@restpathaddition{{\noexpand#1{\the\pgf@xa}{\the\pgf@ya}}}%
    \expandafter\pgfsyssoftpath@addtocurrentpath\pgf@restpathaddition%
    \let\pgf@next=\pgfutil@gobble%
  \else%
    \pgfsyssoftpath@addtocurrentpath{#1{#2}{#3}}%
  \fi%
  \pgf@next#4%
}

\def\pgf@replace@handle@move{%
  \pgfsyssoftpath@getcurrentpath\pgf@restpath%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\gdef%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\pgf@prepath%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter{%
    \expandafter\expandafter\expandafter\pgf@prepath%
    \expandafter\pgf@origstart\pgf@restpath}%
  \let\pgf@@next=\pgf@replaceprocessfirst%
}

\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathprocessing.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathusage.code.tex ====

\ProvidesFileRCS{pgfcorepathusage.code.tex}



\pgfkeys{
  /pgf/stroke/.code=\let\pgf@up@stroke\pgf@up@stroke@text\pgf@up@path@neededtrue,
  /pgf/draw/.code=\let\pgf@up@stroke\pgf@up@stroke@text\pgf@up@path@neededtrue,
  /pgf/fill/.code=\let\pgf@up@fill\pgf@up@fill@text\pgf@up@path@neededtrue,
  /pgf/clip/.code=\let\pgf@up@clip\pgf@up@clip@text\pgf@up@path@neededtrue,
  /pgf/discard/.code=,
  /pgf/use as bounding box/.code=\let\pgf@up@bb\pgf@do@up@bb,
  /pgf/arrow keys/flex/.code=\pgferror{You need to say \string\usetikzlibrary{bending} for flexing and bending arrows},
  /pgf/arrow keys/flex'/.code=\pgferror{You need to say \string\usetikzlibrary{bending} for flexing and bending arrows},
  /pgf/arrow keys/bend/.code=\pgferror{You need to say \string\usetikzlibrary{bending} for flexing and bending arrows},
  /pgf/arrow keys/quick/.code=\pgfarrowsaddtooptions{\let\pgf@arrow@flex@mode\pgf@arrow@mode@is@quick},
}

\pgfkeys{
  /pgf/.cd,
  tips/.is choice,
  tips/.default=true,
  tips/proper/.code=\let\pgf@tips@mode\pgf@tips@mode@onproper,
  tips/on proper draw/.code=\let\pgf@tips@mode\pgf@tips@mode@onproperdraw,
  tips/true/.code=\let\pgf@tips@mode\pgf@tips@mode@true,
  tips/on draw/.code=\let\pgf@tips@mode\pgf@tips@mode@ondraw,
  tips/never/.code=\let\pgf@tips@mode\pgf@tips@mode@false,
  tips/false/.code=\let\pgf@tips@mode\pgf@tips@mode@false,
}
\def\pgf@tips@mode@onproper{4}
\def\pgf@tips@mode@onproperdraw{3}
\def\pgf@tips@mode@true{2}
\def\pgf@tips@mode@ondraw{1}
\def\pgf@tips@mode@false{0}
\let\pgf@tips@mode\pgf@tips@mode@ondraw


\newif\ifpgf@precise@shortening
\def\pgf@arrow@mode@is@quick{0}
\let\pgf@arrow@flex@mode\pgf@arrow@mode@is@quick

\newif\ifpgf@up@path@needed
\newif\ifpgf@up@draw@arrows
\def\pgf@up@stroke@text{stroke}
\def\pgf@up@fill@text{fill}
\def\pgf@up@clip@text{clip}
\def\pgf@do@up@bb{\pgf@relevantforpicturesizefalse}

\def\pgfusepath#1{%
  \pgf@up@path@neededfalse%
  \pgf@up@draw@arrowsfalse%
  \let\pgf@up@stroke\pgfutil@empty%
  \let\pgf@up@fill\pgfutil@empty%
  \let\pgf@up@clip\pgfutil@empty%
  \let\pgf@up@bb\pgfutil@empty%
  \pgfset{#1}%
  \expandafter\def\expandafter\pgf@up@action\expandafter{\csname pgfsys@\pgf@up@fill\pgf@up@stroke\endcsname}%
  \ifnum\pgf@tips@mode=2\relax%
    \pgf@up@path@neededtrue%
  \fi%
  \ifnum\pgf@tips@mode=4\relax%
    \pgf@up@path@neededtrue%
  \fi%
  \ifpgf@up@path@needed%
  \else%
    \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
  \fi%
  \ifx\pgf@up@stroke\pgfutil@empty%
    \ifx\pgf@up@fill\pgfutil@empty%
      \let\pgf@up@action=\pgfutil@empty%
      \ifx\pgf@up@clip\pgfutil@empty%
      \else%
        \let\pgf@up@action=\pgfsys@discardpath%
      \fi%
    \fi%
  \fi%
  \pgfsyssoftpath@getcurrentpath\pgf@last@processed@path
  \pgfprocessround{\pgf@last@processed@path}{\pgf@last@processed@path}%
  \pgfsyssoftpath@setcurrentpath\pgf@last@processed@path%
  \ifpgf@relevantforpicturesize%
    \ifx\pgf@up@stroke\pgfutil@empty%
    \else%
      \ifdim\pgf@picmaxx=-16000pt\relax%
      \else%
        \pgf@x=\pgf@pathminx\advance\pgf@x by-.5\pgflinewidth%
        \ifdim\pgf@x<\pgf@picminx\global\pgf@picminx\pgf@x\fi%
        \pgf@y=\pgf@pathminy\advance\pgf@y by-.5\pgflinewidth%
        \ifdim\pgf@y<\pgf@picminy\global\pgf@picminy\pgf@y\fi%
        \pgf@x=\pgf@pathmaxx\advance\pgf@x by.5\pgflinewidth%
        \ifdim\pgf@x>\pgf@picmaxx\global\pgf@picmaxx\pgf@x\fi%
        \pgf@y=\pgf@pathmaxy\advance\pgf@y by.5\pgflinewidth%
        \ifdim\pgf@y>\pgf@picmaxy\global\pgf@picmaxy\pgf@y\fi%
      \fi%
    \fi%
  \fi%
  \ifx\pgf@up@clip\pgfutil@empty%
    \ifx\pgf@up@stroke\pgfutil@empty%
      \ifx\pgf@up@action\pgfutil@empty%
        \ifnum\pgf@tips@mode=2\relax%
          \pgf@up@draw@arrows@only%
        \fi%
        \ifnum\pgf@tips@mode=4\relax%
          \pgf@up@draw@arrows@only%
        \fi%
      \else%
        \pgfsyssoftpath@invokecurrentpath%
        \pgf@up@action%
      \fi%
    \else%
      \pgfgetpath\pgf@arrowpath%
      \pgf@path@setup@tempswa%
      \pgfprocesscheckclosed{\pgf@arrowpath}{\pgfutil@tempswafalse}%
      \pgf@path@check@proper%
      \ifpgfutil@tempswa%
        \pgf@check@for@arrow@and@animation%
        \pgf@prepare@end@of@path%
        \begingroup%
          \pgf@prepare@start@of@path%
      \fi%
          \pgfsyssoftpath@invokecurrentpath%
          \pgf@up@action%
          \ifdim\pgfinnerlinewidth>0pt\relax%
            \pgf@stroke@inner@line%
          \fi%
      \ifpgfutil@tempswa%
          \pgf@add@arrow@at@start%
        \endgroup%
        \pgf@add@arrow@at@end%
      \fi%
    \fi%
  \else%
    \pgfsyssoftpath@invokecurrentpath%
    \pgfsys@clipnext%
    \pgf@up@action%
    \pgf@relevantforpicturesizefalse%
  \fi%
  \pgf@up@bb%
  \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
  \pgf@resetpathsizes%
  \ignorespaces%
}
\def\pgf@path@setup@tempswa{%
  \ifnum\pgf@tips@mode>0\relax
    \pgfutil@tempswatrue%
  \else
    \pgfutil@tempswafalse%
  \fi%
}
\def\pgf@up@draw@arrows@only{%
  \pgfgetpath\pgf@arrowpath%
  \pgfutil@tempswatrue%
  \pgfprocesscheckclosed{\pgf@arrowpath}{\pgfutil@tempswafalse}%
  \pgf@path@check@proper%
  \ifpgfutil@tempswa%
    \pgf@check@for@arrow@and@animation%
    \pgf@prepare@end@of@path%
    \begingroup%
      \pgf@prepare@start@of@path%
      \pgf@add@arrow@at@start%
    \endgroup%
    \pgf@add@arrow@at@end%
  \fi%
}

\def\pgf@check@for@arrow@and@animation{\pgfsys@if@fresh@currentid{\pgf@check@for@arrow@and@animation@}{}}%
\def\pgf@check@for@arrow@and@animation@{%
  \expandafter\ifx\csname pgfsysanim@path@is@animated@\pgf@sys@id@current@id @\pgfsys@current@type\endcsname\pgfutil@empty%
    \ifx\pgf@end@tip@sequence\pgfutil@empty%
      \ifx\pgf@start@tip@sequence\pgfutil@empty%
      \else%
        \pgf@check@for@arrow@and@animation@error%
      \fi%
    \else%
      \pgf@check@for@arrow@and@animation@error%
    \fi%
  \fi%
}
\def\pgf@check@for@arrow@and@animation@error{\pgferror{Animated path may not have normal arrow tips. Use a base path with arrow tips}}

\def\pgf@path@check@proper{%
  \ifpgfutil@tempswa%
    \ifnum\pgf@tips@mode>2\relax%
      \pgf@path@check@proper@%
    \fi%
  \fi%
}

\def\pgf@path@check@proper@{%
  {%
    \pgf@x0pt\pgf@y\pgf@x%
    \pgfutil@tempswatrue%
    \let\pgfsyssoftpath@movetotoken\pgf@path@proper@init%
    \let\pgfsyssoftpath@linetotoken\pgf@path@proper@test%
    \let\pgfsyssoftpath@curvetosupportatoken\pgf@path@proper@test%
    \let\pgfsyssoftpath@curvetosupportbtoken=\pgf@path@proper@test%
    \let\pgfsyssoftpath@curvetotoken\pgf@path@proper@test%
    \let\pgfsyssoftpath@rectcornertoken\pgf@path@proper@test%
    \let\pgfsyssoftpath@rectsizetoken\pgf@path@proper@zero@test%
    \let\pgfsyssoftpath@closepathtoken\pgf@path@proper@test%
    \pgf@arrowpath%
    \expandafter
  }%
  \ifpgfutil@tempswa\pgfutil@tempswafalse\else\pgfutil@tempswatrue\fi%
}

\def\pgf@path@proper@init#1#2{\pgfutil@tempswatrue\pgf@x#1\pgf@y#2}%
\def\pgf@path@proper@test#1#2{%
  \ifdim\pgf@x=#1\relax\else\pgfutil@tempswafalse\fi%
  \ifdim\pgf@y=#2\relax\else\pgfutil@tempswafalse\fi}
\def\pgf@path@proper@zero@test#1#2{%
  \ifdim\pgf@x=0pt\relax\else\pgfutil@tempswafalse\fi%
  \ifdim\pgf@y=0pt\relax\else\pgfutil@tempswafalse\fi}




\def\pgf@stroke@inner@line{%
  \let\pgf@temp@save=\pgf@strokecolor@global
  \pgfsys@beginscope%
  {%
    \pgfsys@setlinewidth{\pgfinnerlinewidth}%
    \pgfsetstrokecolor{\pgfinnerstrokecolor}%
    \pgfsyssoftpath@invokecurrentpath%
    \pgfsys@stroke%
  }%
  \pgfsys@endscope%
  \global\let\pgf@strokecolor@global=\pgf@temp@save
}

\let\pgf@prepare@start@of@path\relax%





\def\pgfsetshortenstart#1{\pgfmathsetlength\pgf@shorten@start@additional{#1}}
\def\pgfsetshortenend#1{\pgfmathsetlength\pgf@shorten@end@additional{#1}}

\newdimen\pgf@shorten@end@additional
\newdimen\pgf@shorten@start@additional




\newif\ifpgf@worry



\def\pgf@prepare@end@of@path{%
  \let\pgfprocessresultpathsuffix\relax%
  \let\pgfprocessresultsubpathsuffix\relax%
  \pgfsyssoftpath@getcurrentpath\pgf@arrowpath%
  \ifx\pgf@arrowpath\pgfutil@empty\else%
    \pgf@worryfalse%
    \ifx\pgf@end@tip@sequence\pgfutil@empty%
    \else%
      \pgf@worrytrue%
    \fi%
    \pgf@precise@shorteningfalse%
    \pgf@arrow@compute@shortening\pgf@end@tip@sequence%
    \advance\pgf@xa by\pgf@shorten@end@additional%
    \advance\pgf@xb by\pgf@shorten@end@additional%
    \ifdim\pgf@xa=0pt\relax\else\pgf@worrytrue\fi%
    \edef\pgf@path@shortening@distance{\the\pgf@xa}%
    \edef\pgf@arrow@tip@total@length{\the\pgf@xb}%
    \ifpgf@worry%
      \pgfprocesssplitpath{\pgf@arrowpath}%
      \pgfprocesssplitsubpath{\pgfprocessresultpathsuffix}%
      \expandafter\pgf@parse@end\pgfprocessresultsubpathsuffix\pgf@stop\pgf@stop\pgf@stop%
      \pgf@prep@end%
      \ifdim\pgf@path@shortening@distance=0pt\else\pgf@do@shorten@end\fi%
      \expandafter\expandafter\expandafter\def%
      \expandafter\expandafter\expandafter\pgf@arrowpath%
      \expandafter\expandafter\expandafter{\expandafter\pgfprocessresultpathprefix\pgfprocessresultpathsuffix}%
      \pgfsyssoftpath@setcurrentpath\pgf@arrowpath%
    \fi%
  \fi%
}

\def\pgf@parse@end#1#2#3#4#5#6{%
  \ifx#4\pgf@stop%
    \def\pgfpointlastonpath{\pgfqpoint{#2}{#3}}%
    \let\pgf@next\relax%
    \let\pgf@do@shorten@end\relax%
    \let\pgf@do@draw@end\pgf@do@draw@straightend%
    \let\pgf@prep@end\pgf@prep@movetoend%
  \else\ifx#4\pgfsyssoftpath@curvetosupportatoken%
    \def\pgfsubpathfourthlasttoken{#1}%
    \def\pgfpointfourthlastonpath{\pgfqpoint{#2}{#3}}%
    \def\pgfpointthirdlastonpath{\pgfqpoint{#5}{#6}}%
    \ifpgf@precise@shortening%
      \let\pgf@do@shorten@end\pgf@do@shorten@curvedend%
      \let\pgf@do@draw@end\pgf@do@draw@curvedend%
      \let\pgf@prep@end\pgf@prep@curveend%
    \else%
      \def\pgfsubpathstart{\noexpand#1{#2}{#3}\noexpand#4{#5}{#6}}%
      \let\pgf@do@shorten@end\pgf@do@shorten@straightend%
      \let\pgf@do@draw@end\pgf@do@draw@straightend%
      \let\pgf@prep@end\pgf@prep@straightend%
    \fi%
    \let\pgf@next\pgf@parse@end@curve@cont%
  \else%
    \def\pgfsubpathstart{\noexpand#1{#2}{#3}\noexpand#4}%
    \def\pgfpointsecondlastonpath{\pgfqpoint{#2}{#3}}%
    \def\pgfpointlastonpath{\pgfqpoint{#5}{#6}}%
    \let\pgfpointfourthlastonpath\relax%
    \let\pgfpointthirdlastonpath\relax%
    \let\pgf@next\pgf@parse@end@gobble@three%
    \let\pgf@do@shorten@end\pgf@do@shorten@straightend%
    \let\pgf@do@draw@end\pgf@do@draw@straightend%
    \let\pgf@prep@end\pgf@prep@straightend%
  \fi\fi%
  \pgf@next%
}

\def\pgf@parse@end@gobble@three#1#2#3{}%
\def\pgf@parse@end@curve@cont#1#2#3#4#5#6#7#8#9{%
  \def\pgfpointsecondlastonpath{\pgfqpoint{#2}{#3}}%
  \def\pgfpointlastonpath{\pgfqpoint{#5}{#6}}%
  \ifpgf@precise@shortening%
  \else%
    \expandafter\def\expandafter\pgfsubpathstart\expandafter{\pgfsubpathstart\noexpand#1{#2}{#3}\noexpand#4}%
  \fi%
}

\def\pgf@prep@movetoend{%
  \pgf@process{\pgfpointlastonpath}%
  \pgf@xb\pgf@x
  \pgf@yb\pgf@y
  \pgf@xc\pgf@x
  \pgf@yc\pgf@y
}
\def\pgf@prep@straightend{%
  \let\pgf@ref\pgfpointsecondlastonpath
  \ifx\pgfpointlastonpath\pgfpointsecondlastonpath%
    \ifx\pgfpointthirdlastonpath\relax%
    \else%
      \ifx\pgfpointlastonpath\pgfpointthirdlastonpath%
        \let\pgf@ref\pgfpointfourthlastonpath%
      \else
        \let\pgf@ref\pgfpointthirdlastonpath%
      \fi%
    \fi%
  \fi%
  \pgfpointlineatdistance{\pgf@path@shortening@distance}{\pgfpointlastonpath}{\pgf@ref}%
  \pgf@xa\pgf@x%
  \pgf@ya\pgf@y%
}


\def\pgf@do@shorten@straightend{%
  \edef\pgfprocessresultsubpathsuffix{\pgfsubpathstart{\the\pgf@xa}{\the\pgf@ya}}%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgfprocessresultpathsuffix%
  \expandafter\expandafter\expandafter{\expandafter\pgfprocessresultsubpathprefix\pgfprocessresultsubpathsuffix}%
}



\def\pgf@add@arrow@at@end{%
  \ifx\pgf@arrowpath\pgfutil@empty\else%
    \ifx\pgf@end@tip@sequence\pgfutil@empty\else%
      \pgf@do@draw@end%
    \fi%
  \fi%
}

\def\pgf@do@draw@straightend{%
  {%
    \pgftransformreset%
    \pgftransformarrow{\pgfqpoint{\pgf@xc}{\pgf@yc}}{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
    \pgf@arrow@draw@arrow\pgf@end@tip@sequence\pgf@arrow@tip@total@length%
  }%
}







\def\pgf@prepare@start@of@path{%
  \ifx\pgf@arrowpath\pgfutil@empty\else%
    \pgf@worryfalse%
    \ifx\pgf@start@tip@sequence\pgfutil@empty\else\pgf@worrytrue\fi%
    \pgf@precise@shorteningfalse%
    \pgf@arrow@compute@shortening\pgf@start@tip@sequence%
    \advance\pgf@xa by\pgf@shorten@start@additional%
    \advance\pgf@xb by\pgf@shorten@start@additional%
    \ifdim\pgf@xa=0pt\relax\else\pgf@worrytrue\fi%
    \edef\pgf@path@shortening@distance{\the\pgf@xa}%
    \edef\pgf@arrow@tip@total@length{\the\pgf@xb}%
    \ifpgf@worry%
      \ifx\pgfprocessresultpathsuffix\relax%
        \pgfprocesssplitpath{\pgf@arrowpath}%
      \fi%
      \expandafter\pgf@parse@start\pgfprocessresultpathsuffix\pgf@stop\pgf@stop\pgf@stop%
      \pgf@prep@start%
      \ifdim\pgf@path@shortening@distance=0pt\else\pgf@do@shorten@start\fi%
      \expandafter\expandafter\expandafter\def%
      \expandafter\expandafter\expandafter\pgf@arrowpath%
      \expandafter\expandafter\expandafter{\expandafter\pgfprocessresultpathprefix\pgfprocessresultpathsuffix}%
      \pgfsyssoftpath@setcurrentpath\pgf@arrowpath%
    \fi%
  \fi%
}

\def\pgf@parse@start#1#2#3#4#5#6{%
  \def\pgfpointfirstonpath{\pgfqpoint{#2}{#3}}%
  \def\pgfpointsecondonpath{\pgfqpoint{#5}{#6}}%
  \let\pgfpointthirdonpath\relax%
  \let\pgfpointfourthonpath\relax%
  \def\pgfsubpathfirsttoken{\noexpand#1}%
  \def\pgfsubpathsecondtoken{\noexpand#4}%
  \ifx#4\pgf@stop%
    \let\pgf@next\relax%
    \let\pgf@do@shorten@start\relax%
    \let\pgf@prep@start\pgf@prep@movetostart%
    \let\pgf@do@draw@start\pgf@do@draw@straightstart%
  \else\ifx#4\pgfsyssoftpath@curvetosupportatoken%
    \ifpgf@precise@shortening%
      \let\pgf@next\pgf@parse@start@curve@cont%
      \let\pgf@do@shorten@start\pgf@do@shorten@curvedstart%
      \let\pgf@do@draw@start\pgf@do@draw@curvedstart%
      \let\pgf@prep@start\pgf@prep@curvedstart%
    \else%
      \let\pgf@next\pgf@parse@start@curve@cont@straight%
      \let\pgf@do@shorten@start\pgf@do@shorten@straightstart%
      \let\pgf@do@draw@start\pgf@do@draw@straightstart%
      \let\pgf@prep@start\pgf@prep@straightstart%
    \fi%
  \else%
    \let\pgf@next\pgf@parse@start@till@stop%
    \let\pgf@do@shorten@start\pgf@do@shorten@straightstart%
    \let\pgf@do@draw@start\pgf@do@draw@straightstart%
    \let\pgf@prep@start\pgf@prep@straightstart%
  \fi\fi%
  \pgf@next%
}

\def\pgf@parse@start@till@stop#1\pgf@stop\pgf@stop\pgf@stop{\def\pgfsubpathend{#1}}%

\def\pgf@parse@start@curve@cont#1#2#3#4#5#6#7\pgf@stop\pgf@stop\pgf@stop{%
  \def\pgfpointthirdonpath{\pgfqpoint{#2}{#3}}%
  \def\pgfpointfourthonpath{\pgfqpoint{#5}{#6}}%
  \def\pgfsubpathend{#7}%
}

\def\pgf@parse@start@curve@cont@straight#1#2#3#4#5#6#7\pgf@stop\pgf@stop\pgf@stop{%
  \def\pgfpointthirdonpath{\pgfqpoint{#2}{#3}}%
  \def\pgfpointfourthonpath{\pgfqpoint{#5}{#6}}%
  \def\pgfsubpathend{#1{#2}{#3}#4{#5}{#6}#7}%
}

\def\pgf@prep@movetostart{%
  \pgf@process{\pgfpointfirstonpath}%
  \pgf@xb\pgf@x
  \pgf@yb\pgf@y
  \pgf@xc\pgf@x
  \pgf@yc\pgf@y
}
\def\pgf@prep@straightstart{%
  \let\pgf@ref\pgfpointsecondonpath
  \ifx\pgfpointfirstonpath\pgfpointsecondonpath%
    \ifx\pgfpointthirdonpath\relax%
    \else%
      \ifx\pgfpointfirstonpath\pgfpointthirdonpath%
        \let\pgf@ref\pgfpointfourthonpath%
      \else
        \let\pgf@ref\pgfpointthirdonpath%
      \fi%
    \fi%
  \fi%
  \pgfpointlineatdistance{\pgf@path@shortening@distance}{\pgfpointfirstonpath}{\pgf@ref}%
  \pgf@xa\pgf@x%
  \pgf@ya\pgf@y%
}

\def\pgf@do@shorten@straightstart{%
  \edef\pgfprocessresultpathsuffix{\pgfsubpathfirsttoken{\the\pgf@xa}{\the\pgf@ya}\pgfsubpathsecondtoken{\the\pgf@xc}{\the\pgf@yc}}%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\pgfprocessresultpathsuffix%
  \expandafter\expandafter\expandafter{\expandafter\pgfprocessresultpathsuffix\pgfsubpathend}%
}



\def\pgf@add@arrow@at@start{%
  \ifx\pgf@arrowpath\pgfutil@empty\else%
    \ifx\pgf@start@tip@sequence\pgfutil@empty\else%
      \pgf@do@draw@start%
    \fi%
  \fi%
}

\def\pgf@do@draw@straightstart{%
  {%
    \pgftransformreset%
    \pgftransformarrow{\pgfqpoint{\pgf@xc}{\pgf@yc}}{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
    \pgf@arrow@draw@arrow\pgf@start@tip@sequence\pgf@arrow@tip@total@length%
  }%
}



\let\pgf@shorten@end=\pgfutil@empty
\let\pgf@shorten@start=\pgfutil@empty


\endinput%
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepathusage.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepatterns.code.tex ====

\ProvidesFileRCS{pgfcorepatterns.code.tex}

\def\pgfdeclarepatternformonly{%
  \def\pgf@pattern@type{formonly}%
  \pgfutil@ifnextchar[{\pgf@declarepattern@checkarg}{\pgf@declarepattern@checkarg[]}%
}


\def\pgfdeclarepatterninherentlycolored{%
  \def\pgf@pattern@type{inherentlycolored}%
  \pgfutil@ifnextchar[{\pgf@declarepattern@checkarg}{\pgf@declarepattern@checkarg[]}%
}





\def\pgf@declarepattern@checkarg[#1]{%
  \def\pgf@pattern@tempvars{#1}%
  \ifx\pgf@pattern@tempvars\pgfutil@empty%
    \expandafter\let\expandafter\pgf@next\csname pgf@declarepattern\pgf@pattern@type\endcsname%
  \else%
    \expandafter\let\expandafter\pgf@next\csname pgf@declarepattern\pgf@pattern@type @mutable\endcsname%
  \fi%
  \pgf@next}

\long\def\pgf@declarepatternformonly#1#2#3#4#5{\pgf@declarepattern{#1}{#2}{#3}{#4}{#5}{0}}

\long\def\pgf@declarepatterninherentlycolored#1#2#3#4#5{\pgf@declarepattern{#1}{#2}{#3}{#4}{#5}{1}}

\long\def\pgf@declarepatternformonly@mutable#1#2#3#4#5{%
  \def\pgf@marshal{\pgf@declarepatternmutable{#1}}%
  \expandafter\pgf@marshal\expandafter{\pgf@pattern@tempvars}{#2}{#3}{#4}{#5}{2}%
}

\long\def\pgf@declarepatterninherentlycolored@mutable#1#2#3#4#5#6{%
  \def\pgf@marshal{\pgf@declarepatternmutable{#1}}%
  \expandafter\pgf@marshal\expandafter{\pgf@pattern@tempvars}{#2}{#3}{#4}{#5}{3}%
}

\def\pgfsys@patternmatrix{{1.0}{0.0}{0.0}{1.0}{0.0pt}{0.0pt}}
\def\pgf@declarepattern#1#2#3#4#5#6{%
  \pgfutil@ifundefined{pgf@pattern@name@#1}{%
  \pgfsysprotocol@getcurrentprotocol\pgf@pattern@temp%
  {%
    \pgfinterruptpath%
      \pgfpicturetrue%
      \pgf@relevantforpicturesizefalse%
      \pgftransformreset%
      \pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
      \pgfsysprotocol@bufferedtrue%
      \pgfsys@beginscope%
      \pgfsetarrows{-}%
      #5%
      \pgfsys@endscope%
      \pgfsysprotocol@getcurrentprotocol\pgf@pattern@code%
      \global\let\pgf@pattern@code=\pgf@pattern@code%
    \endpgfinterruptpath%
    \pgf@process{#2}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{#3}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgf@process{#4}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgfutil@tempcnta=\pgf@pattern@number%
    \advance\pgfutil@tempcnta by1\relax%
    \xdef\pgf@pattern@number{\the\pgfutil@tempcnta}%
    \expandafter\xdef\csname pgf@pattern@name@#1\endcsname{\the\pgfutil@tempcnta}%
    \expandafter\gdef\csname pgf@pattern@type@#1\endcsname{#6}%
    \xdef\pgf@marshal{\noexpand\pgfsys@declarepattern
      {\csname pgf@pattern@name@#1\endcsname}%
      {\the\pgf@xa}{\the\pgf@ya}{\the\pgf@xb}{\the\pgf@yb}%
      {\the\pgf@xc}{\the\pgf@yc}%
      \pgfsys@patternmatrix%
      {\pgf@pattern@code}{#6}}%
  }%
  \pgfsysprotocol@setcurrentprotocol\pgf@pattern@temp%
  \expandafter\global\expandafter\let\csname pgf@pattern@instantiate@#1\endcsname=\pgf@marshal%
  }
  {%
    \pgferror{Pattern `#1' already defined}%
  }%
}

\def\pgf@pattern@number{0}%

\def\pgf@declarepatternmutable#1#2#3#4#5#6#7{%
  \pgfutil@ifundefined{pgf@pattern@name@#1}{%
    \expandafter\gdef\csname pgf@pattern@name@#1\endcsname{#1}%
    \expandafter\gdef\csname pgf@pattern@variables@#1\endcsname{#2}%
    \expandafter\gdef\csname pgf@pattern@lowerleft@#1\endcsname{#3}%
    \expandafter\gdef\csname pgf@pattern@upperright@#1\endcsname{#4}%
    \expandafter\gdef\csname pgf@pattern@tilesize@#1\endcsname{#5}%
    \expandafter\long\expandafter\gdef\csname pgf@pattern@code@#1\endcsname{#6}%
    \expandafter\gdef\csname pgf@pattern@type@#1\endcsname{#7}%
  }{\pgferror{The pattern `#1' is already defined}}%
}

\def\pgf@ifpatternisinherentlycolored#1#2#3{%
  \expandafter\ifodd\csname pgf@pattern@type@#1\endcsname\relax#2\else#3\fi%
}

\def\pgf@ifpatternismutable#1#2#3{%
  \expandafter\ifnum\csname pgf@pattern@type@#1\endcsname>1\relax#2\else#3\fi%
}

\def\pgfpatternreleasename#1{\expandafter\let\csname pgf@pattern@name@#1\endcsname\relax}






\def\pgfsetfillpattern#1#2{%
  \pgfutil@ifundefined{pgf@pattern@name@#1}%
  {%
    \pgferror{Undefined pattern `#1'}%
  }%
  {%
    \pgf@ifpatternismutable{#1}%
    {%
      \let\pgf@pattern@tempvars\pgfutil@empty%
      \expandafter\expandafter\expandafter\pgf@pattern@check@vars%
        \csname pgf@pattern@variables@#1\endcsname,\pgf@stop,%
      \edef\pgf@pattern@nametemp{pgf@pattern@#1@\pgf@pattern@tempvars}%
      \expandafter\pgfutil@ifundefined\expandafter{\pgf@pattern@nametemp}%
      {%
        \pgf@ifpatternisinherentlycolored{#1}%
          {\let\pgf@set@fillpattern@declare\pgfdeclarepatterninherentlycolored}%
          {\let\pgf@set@fillpattern@declare\pgfdeclarepatternformonly}%
        \pgf@set@fillpattern@declare%
          {\pgf@pattern@nametemp}%
          {\csname pgf@pattern@lowerleft@#1\endcsname}%
          {\csname pgf@pattern@upperright@#1\endcsname}%
          {\csname pgf@pattern@tilesize@#1\endcsname}%
          {\csname pgf@pattern@code@#1\endcsname}%
      }%
      {%
      }%
      \expandafter\pgf@set@fillpattern\expandafter{\pgf@pattern@nametemp}{#2}%
      \expandafter\gdef\csname\pgf@pattern@nametemp\endcsname{#1}%
    }%
    {%
      \pgf@set@fillpattern{#1}{#2}%
    }%
  }%
}


\def\pgf@set@fillpattern#1#2{%
  \pgfutil@ifundefined{pgf@pattern@name@#1}{%
    \pgferror{Undefined pattern `#1'}}
  {%
    \csname pgf@pattern@instantiate@#1\endcsname%
    \expandafter\global\expandafter\let\csname pgf@pattern@instantiate@#1\endcsname=\relax%
    \pgf@ifpatternisinherentlycolored{#1}{%
      \pgfsys@setpatterncolored{\csname pgf@pattern@name@#1\endcsname}%
    }{%
      \pgfutil@colorlet{pgf@tempcolor}{#2}%
      \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgf@tempcolor}}%
      \pgfutil@extractcolorspec{pgf@tempcolor}{\pgf@tempcolor}%
      \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{rgb}{\pgf@rgbcolor}%
      \expandafter\pgf@set@fill@patternuncolored\pgf@rgbcolor\relax{#1}%
    }%
  }%
}

\def\pgf@set@fill@patternuncolored#1,#2,#3\relax#4{%
  \pgfsys@setpatternuncolored{\csname pgf@pattern@name@#4\endcsname}{#1}{#2}{#3}%
}

\def\pgf@pattern@check@vars#1,{%
  \ifx#1\pgf@stop%
    \let\pgf@next\relax%
  \else%
    \afterassignment\pgfmath@gobbletilpgfmath@%
    \expandafter\let\expandafter\pgf@pattern@char#1#1\pgfmath@%
    \ifx\pgf@pattern@char/%
      \edef\pgf@pattern@tempvar{(\pgfkeysvalueof{#1})}%
    \else%
      \expandafter\ifcat\pgf@pattern@char\relax%
        \edef\pgf@pattern@tempvar{(\the#1)}%
      \else%
        \edef\pgf@pattern@tempvar{(#1)}%
      \fi%
    \fi%
    \edef\pgf@pattern@tempvars{\pgf@pattern@tempvars\pgf@pattern@tempvar}%
    \let\pgf@next\pgf@pattern@check@vars%
  \fi%
  \pgf@next%
}

\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepatterns.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepoints.code.tex ====

\ProvidesFileRCS{pgfcorepoints.code.tex}

\newdimen\pgf@picminx
\newdimen\pgf@picmaxx
\newdimen\pgf@picminy
\newdimen\pgf@picmaxy

\newdimen\pgf@pathminx
\newdimen\pgf@pathmaxx
\newdimen\pgf@pathminy
\newdimen\pgf@pathmaxy

\newif\ifpgf@relevantforpicturesize

\def\pgf@process#1{{#1\global\pgf@x=\pgf@x\global\pgf@y=\pgf@y}}


\def\pgfextract@process#1#2{%
    \pgf@process{#2}%
    \edef#1{\noexpand\global\pgf@x=\the\pgf@x\noexpand\relax\noexpand\global\pgf@y=\the\pgf@y\noexpand\relax}%
}
\let\pgfsavepgf@process\pgfextract@process%



\def\pgfpoint#1#2{%
  \pgfmathsetlength\pgf@x{#1}%
  \pgfmathsetlength\pgf@y{#2}\ignorespaces}



\def\pgfqpoint#1#2{\global\pgf@x=#1\relax\global\pgf@y=#2\relax}




\def\pgfpointorigin{\global\pgf@x=0pt \global\pgf@y=\pgf@x\ignorespaces}




\def\pgfpointtransformed#1{%
  \pgf@process{%
    #1%
    \pgf@pos@transform@glob%
  }%
}



\def\pgfpointdiff#1#2{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{#2}%
  \global\advance\pgf@x by-\pgf@xa\relax%
  \global\advance\pgf@y by-\pgf@ya\relax\ignorespaces}


\def\pgfpointadd#1#2{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{#2}%
  \global\advance\pgf@x by\pgf@xa%
  \global\advance\pgf@y by\pgf@ya}




\def\pgfpointscale#1#2{%
  \pgf@process{#2}%
  \pgfmathparse{#1}%
  \global\pgf@x=\pgfmathresult\pgf@x%
  \global\pgf@y=\pgfmathresult\pgf@y%
}
\def\pgfqpointscale#1#2{%
  \pgf@process{#2}%
  \global\pgf@x=#1\pgf@x%
  \global\pgf@y=#1\pgf@y%
}



\def\pgfpointintersectionoflines#1#2#3#4{%
  {%
    \pgf@process{#2}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{#1}%
    \advance\pgf@xa by-\pgf@x%
    \advance\pgf@ya by-\pgf@y%
    \pgf@ya=-\pgf@ya%
    \c@pgf@counta=\pgf@xa%
    \ifnum\c@pgf@counta<0\relax%
      \c@pgf@counta=-\c@pgf@counta\relax%
    \fi%
    \c@pgf@countb=\pgf@ya%
    \ifnum\c@pgf@countb<0\relax%
      \c@pgf@countb=-\c@pgf@countb\relax%
    \fi%
    \advance\c@pgf@counta by\c@pgf@countb\relax%
    \divide\c@pgf@counta by 65536\relax%
    \ifnum\c@pgf@counta>0\relax%
      \divide\pgf@xa by\c@pgf@counta\relax%
      \divide\pgf@ya by\c@pgf@counta\relax%
    \fi%
    \pgf@xc=\pgf@sys@tonumber{\pgf@ya}\pgf@x%
    \advance\pgf@xc by\pgf@sys@tonumber{\pgf@xa}\pgf@y%
    \pgf@process{#4}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgf@process{#3}%
    \advance\pgf@xb by-\pgf@x%
    \advance\pgf@yb by-\pgf@y%
    \pgf@yb=-\pgf@yb%
    \c@pgf@counta=\pgf@xb%
    \ifnum\c@pgf@counta<0\relax%
      \c@pgf@counta=-\c@pgf@counta\relax%
    \fi%
    \c@pgf@countb=\pgf@yb%
    \ifnum\c@pgf@countb<0\relax%
      \c@pgf@countb=-\c@pgf@countb\relax%
    \fi%
    \advance\c@pgf@counta by\c@pgf@countb\relax%
    \divide\c@pgf@counta by 65536\relax%
    \ifnum\c@pgf@counta>0\relax%
      \divide\pgf@xb by\c@pgf@counta\relax%
      \divide\pgf@yb by\c@pgf@counta\relax%
    \fi%
    \pgf@yc=\pgf@sys@tonumber{\pgf@yb}\pgf@x%
    \advance\pgf@yc by\pgf@sys@tonumber{\pgf@xb}\pgf@y%
    \pgfsettransform{{\pgf@sys@tonumber\pgf@ya}{\pgf@sys@tonumber\pgf@yb}{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@xb}{0pt}{0pt}}%
    \pgftransforminvert%
    \pgf@process{\pgfpointtransformed{\pgfpoint{\pgf@xc}{\pgf@yc}}}%
  }%
}



\def\pgfpointintersectionofcircles#1#2#3#4#5{%
  {%
    \pgf@process{#1}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgfmathsetlength{\pgf@xc}{#3}%
    \pgf@process{#2}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgfmathsetlength{\pgf@yc}{#4}%
    \c@pgf@counta=1\relax%
    \loop%
      \pgf@scale@downfalse%
      \ifdim\pgf@xc>50pt\relax%
        \pgf@scale@downtrue%
      \fi%
      \ifdim\pgf@yc>50pt\relax%
        \pgf@scale@downtrue%
      \fi%
    \ifpgf@scale@down%
      \multiply\c@pgf@counta by2\relax%
      \divide\pgf@xa by2\relax%
      \divide\pgf@ya by2\relax%
      \divide\pgf@xb by2\relax%
      \divide\pgf@yb by2\relax%
      \divide\pgf@xc by2\relax%
      \divide\pgf@yc by2\relax%
    \repeat%
    \dimen0=\pgf@xb%
    \advance\dimen0 by-\pgf@xa%
    \dimen1=\pgf@yb%
    \advance\dimen1 by-\pgf@ya%
    \pgf@x=\dimen0\relax%
    \pgf@x=\pgf@sys@tonumber{\pgf@x}\pgf@x%
    \dimen3=\pgf@x%
    \pgf@x=\dimen1\relax%
    \advance\dimen3 by\pgf@sys@tonumber{\pgf@x}\pgf@x%
    \pgfmathparse{sqrt(\the\dimen3)}%
    \dimen2=\pgfmathresult pt%
    \pgfmathreciprocal@{\pgfmathresult}%
    \dimen5=\pgfmathresult pt%
    \dimen4=\dimen3\relax%
    \pgf@x=\pgf@xc%
    \advance\dimen4 by\pgf@sys@tonumber{\pgf@x}\pgf@x\relax%
    \pgf@x=\pgf@yc%
    \advance\dimen4 by-\pgf@sys@tonumber{\pgf@x}\pgf@x\relax%
    \dimen4=.5\dimen4%
    \dimen4=\pgf@sys@tonumber{\dimen5}\dimen4%
    \dimen7=\pgf@sys@tonumber{\dimen4}\dimen4\relax%
    \pgfmathparse{sqrt(\pgf@sys@tonumber{\pgf@xc}\pgf@xc-\the\dimen7)}%
    \dimen6=\pgfmathresult pt%
    \dimen8=\pgf@sys@tonumber{\dimen4}\dimen5\relax%
    \dimen9=\pgf@sys@tonumber{\dimen6}\dimen5\relax%
    \ifnum#5=1\relax%
      \pgf@x=\pgf@xa%
      \advance\pgf@x by\pgf@sys@tonumber{\dimen0}\dimen8\relax%
      \advance\pgf@x by\pgf@sys@tonumber{\dimen1}\dimen9\relax%
      \pgf@y=\pgf@ya%
      \advance\pgf@y by\pgf@sys@tonumber{\dimen1}\dimen8\relax%
        \pgf@xb=\pgf@sys@tonumber{\dimen0}\dimen9%
        \pgf@xb=-\pgf@xb%
      \advance\pgf@y by\pgf@xb\relax%
    \else%
      \pgf@x=\pgf@xa%
      \advance\pgf@x by\pgf@sys@tonumber{\dimen0}\dimen8\relax%
        \pgf@xb=\pgf@sys@tonumber{\dimen1}\dimen9%
        \pgf@xb=-\pgf@xb%
      \advance\pgf@x by\pgf@xb\relax%
      \pgf@y=\pgf@ya%
      \advance\pgf@y by\pgf@sys@tonumber{\dimen1}\dimen8\relax%
      \advance\pgf@y by\pgf@sys@tonumber{\dimen0}\dimen9\relax%
    \fi%
    \pgf@x=\c@pgf@counta\pgf@x%
    \pgf@y=\c@pgf@counta\pgf@y%
    \pgf@process{}%
  }%
}
\newif\ifpgf@scale@down



\def\pgfpointlineattime#1#2#3{%
  \pgf@process{#3}%
  \pgf@xa\pgf@x%
  \pgf@ya\pgf@y%
  \pgf@xc\pgf@x%
  \pgf@yc\pgf@y%
  \pgf@process{#2}%
  \pgf@xb\pgf@x%
  \pgf@yb\pgf@y%
  \pgfmathsetmacro\pgf@temp{#1}%
  \advance\pgf@xa by-\pgf@x%
  \advance\pgf@ya by-\pgf@y%
  \global\advance\pgf@x by\pgf@temp\pgf@xa%
  \global\advance\pgf@y by\pgf@temp\pgf@ya%
}



\def\pgfpointlineatdistance#1#2#3{%
  \pgfmathsetlength\pgf@xa{#1}%
  \pgf@process{#2}%
  \pgf@xb\pgf@x%
  \pgf@yb\pgf@y%
  \pgf@process{#3}%
  \pgf@xc\pgf@x%
  \pgf@yc\pgf@y%
  \global\advance\pgf@x by-\pgf@xb\relax%
  \global\advance\pgf@y by-\pgf@yb\relax%
  \pgf@process{\pgfpointnormalised{}}%
  \pgf@ya=\pgf@xa\relax%
  \pgf@xa=\pgf@sys@tonumber{\pgf@x}\pgf@xa%
  \pgf@ya=\pgf@sys@tonumber{\pgf@y}\pgf@ya%
  \global\pgf@x=\pgf@xb\relax%
  \global\pgf@y=\pgf@yb\relax%
  \global\advance\pgf@x by\pgf@xa\relax%
  \global\advance\pgf@y by\pgf@ya\relax%
}



\def\pgfpointcurveattime#1#2#3#4#5{%
  \pgfmathparse{#1}%
  \let\pgf@time@s=\pgfmathresult%
  \global\pgf@x=\pgfmathresult pt%
  \global\pgf@x=-\pgf@x%
  \advance\pgf@x by 1pt%
  \edef\pgf@time@t{\pgf@sys@tonumber{\pgf@x}}%
  \pgf@process{#5}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgf@process{#4}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@process{#3}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{#2}%
  \global\pgf@x=\pgf@time@t\pgf@x\global\advance\pgf@x by\pgf@time@s\pgf@xa%
  \global\pgf@y=\pgf@time@t\pgf@y\global\advance\pgf@y by\pgf@time@s\pgf@ya%
  \pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
  \pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
  \pgf@xb=\pgf@time@t\pgf@xb\advance\pgf@xb by\pgf@time@s\pgf@xc%
  \pgf@yb=\pgf@time@t\pgf@yb\advance\pgf@yb by\pgf@time@s\pgf@yc%
  \global\pgf@x=\pgf@time@t\pgf@x\global\advance\pgf@x by\pgf@time@s\pgf@xa%
  \global\pgf@y=\pgf@time@t\pgf@y\global\advance\pgf@y by\pgf@time@s\pgf@ya%
  \pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
  \pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \global\pgf@x=\pgf@time@t\pgf@x\global\advance\pgf@x by\pgf@time@s\pgf@xa%
  \global\pgf@y=\pgf@time@t\pgf@y\global\advance\pgf@y by\pgf@time@s\pgf@ya%
}




\def\pgfpointarcaxesattime#1#2#3#4#5#6{%
  \pgfmathsetmacro\pgf@angle@start{#5}%
  \pgfmathsetmacro\pgf@angle@end{#6}%
  \pgfmathparse{#1}%
  \global\pgf@x=\pgfmathresult pt%
  \global\pgf@x=-\pgf@x%
  \advance\pgf@x by 1pt%
  \pgfmathsetmacro\pgf@angle@mid{\pgf@angle@end*\pgfmathresult+\pgf@angle@start*\pgf@sys@tonumber{\pgf@x}}%
  \pgfmathcos@{\pgf@angle@mid}%
  \let\pgf@angle@cos\pgfmathresult%
  \pgfmathsin@{\pgf@angle@mid}%
  \let\pgf@angle@sin\pgfmathresult%
  \pgf@process{#3}%
  \edef\pgf@angle@zero@axis{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
  \pgf@process{#4}%
  \edef\pgf@angle@ninety@axis{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
  \pgf@process{\pgfpointadd{\pgfpointscale{\pgf@angle@sin}{\pgf@angle@zero@axis}}%
    {\pgfpointscale{-\pgf@angle@cos}{\pgf@angle@ninety@axis}}}%
  \ifdim\pgf@angle@start pt>\pgf@angle@end pt%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
  \else%
    \pgf@xa=-\pgf@x%
    \pgf@ya=-\pgf@y%
  \fi%
  \pgf@process{\pgfpointadd{#2}{%
      \pgfpointadd{\pgfpointscale{\pgf@angle@cos}{\pgf@angle@zero@axis}}%
    {\pgfpointscale{\pgf@angle@sin}{\pgf@angle@ninety@axis}}}}%
}



\newdimen\pgf@xx
\newdimen\pgf@xy
\newdimen\pgf@yx
\newdimen\pgf@yy
\newdimen\pgf@zx
\newdimen\pgf@zy




\def\pgfpointpolar#1#2{%
  \pgfutil@in@{and }{#2}%
  \ifpgfutil@in@%
    \pgf@polar@#2\@@%
  \else%
    \pgf@polar@#2 and #2\@@%
  \fi%
  \pgfmathparse{#1}%
  \let\pgfpoint@angle=\pgfmathresult%
  \pgfmathcos@{\pgfpoint@angle}%
  \global\pgf@x=\pgfmathresult\pgf@x%
  \pgfmathsin@{\pgfpoint@angle}%
  \global\pgf@y=\pgfmathresult\pgf@y%
}

\def\pgf@polar@#1and #2\@@{%
  \pgfmathsetlength{\pgf@y}{#2}%
  \pgfmathsetlength{\pgf@x}{#1}%
}


\def\pgfqpointpolar#1#2{%
  \global\pgf@x=#2%
  \global\pgf@y=\pgf@x%
  \pgfmathcos@{#1}%
  \global\pgf@x=\pgfmathresult\pgf@x%
  \pgfmathsin@{#1}%
  \global\pgf@y=\pgfmathresult\pgf@y\relax%
}





\def\pgfpointpolarxy#1#2{%
  \pgfutil@in@{and }{#2}%
  \ifpgfutil@in@%
    \pgf@polarxy@#2\@@%
  \else%
    \pgf@polarxy@#2and #2\@@%
  \fi%
  \pgfmathparse{#1}%
  \let\pgfpoint@angle=\pgfmathresult%
  \pgfmathcos@{\pgfpoint@angle}%
  \pgf@xa=\pgfmathresult\pgf@xa%
  \pgfmathsin@{\pgfpoint@angle}%
  \pgf@ya=\pgfmathresult\pgf@ya%
  \global\pgf@x=\pgf@sys@tonumber{\pgf@xa}\pgf@xx%
  \global\advance\pgf@x by \pgf@sys@tonumber{\pgf@ya}\pgf@yx%
  \global\pgf@y=\pgf@sys@tonumber{\pgf@xa}\pgf@xy%
  \global\advance\pgf@y by \pgf@sys@tonumber{\pgf@ya}\pgf@yy}

\def\pgf@polarxy@#1and #2\@@{%
  \pgfmathsetlength{\pgf@xa}{#1}%
  \pgfmathsetlength{\pgf@ya}{#2}%
}




\def\pgfpointcylindrical#1#2#3{%
  \pgfpointpolarxy{#1}{#2}%
  \pgfmathparse{#3}%
  \global\advance\pgf@x by \pgfmathresult\pgf@zx%
  \global\advance\pgf@y by \pgfmathresult\pgf@zy}



\def\pgfpointspherical#1#2#3{%
  \pgfmathparse{#1}%
  \let\pgfpoint@angle=\pgfmathresult%
  \pgfmathsin@{\pgfpoint@angle}%
  \pgf@xb=\pgfmathresult\pgf@xx%
  \pgf@yb=\pgfmathresult\pgf@xy%
  \pgfmathcos@{\pgfpoint@angle}%
  \advance\pgf@xb by \pgfmathresult\pgf@yx%
  \advance\pgf@yb by \pgfmathresult\pgf@yy%
  \pgfmathparse{#2}%
  \let\pgfpoint@angle=\pgfmathresult%
  \pgfmathcos@{\pgfpoint@angle}%
  \pgf@xc=\pgfmathresult\pgf@xb%
  \pgf@yc=\pgfmathresult\pgf@yb%
  \pgfmathsin@{\pgfpoint@angle}%
  \advance\pgf@xc by \pgfmathresult\pgf@zx%
  \advance\pgf@yc by \pgfmathresult\pgf@zy%
  \pgfmathparse{#3}%
  \global\pgf@x=\pgfmathresult\pgf@xc%
  \global\pgf@y=\pgfmathresult\pgf@yc\relax%
}



\def\pgfpointxy#1#2{%
  \pgfmathparse{#1}%
  \let\pgftemp@x=\pgfmathresult%
  \pgfmathparse{#2}%
  \let\pgftemp@y=\pgfmathresult%
  \global\pgf@x=\pgftemp@x\pgf@xx%
  \global\advance\pgf@x by \pgftemp@y\pgf@yx%
  \global\pgf@y=\pgftemp@x\pgf@xy%
  \global\advance\pgf@y by \pgftemp@y\pgf@yy}


\def\pgfqpointxy#1#2{%
  \global\pgf@x=#1\pgf@xx%
  \global\advance\pgf@x by #2\pgf@yx%
  \global\pgf@y=#1\pgf@xy%
  \global\advance\pgf@y by #2\pgf@yy}


\def\pgfpointxyz#1#2#3{%
  \pgfmathparse{#1}%
  \let\pgftemp@x=\pgfmathresult%
  \pgfmathparse{#2}%
  \let\pgftemp@y=\pgfmathresult%
  \pgfmathparse{#3}%
  \let\pgftemp@z=\pgfmathresult%
  \global\pgf@x=\pgftemp@x\pgf@xx%
  \global\advance\pgf@x by \pgftemp@y\pgf@yx%
  \global\advance\pgf@x by \pgftemp@z\pgf@zx%
  \global\pgf@y=\pgftemp@x\pgf@xy%
  \global\advance\pgf@y by \pgftemp@y\pgf@yy%
  \global\advance\pgf@y by \pgftemp@z\pgf@zy}

\def\pgfqpointxyz#1#2#3{%
  \global\pgf@x=#1\pgf@xx%
  \global\advance\pgf@x by #2\pgf@yx%
  \global\advance\pgf@x by #3\pgf@zx%
  \global\pgf@y=#1\pgf@xy%
  \global\advance\pgf@y by #2\pgf@yy%
  \global\advance\pgf@y by #3\pgf@zy}




\def\pgfsetxvec#1{%
  \pgf@process{#1}%
  \pgf@xx=\pgf@x%
  \pgf@xy=\pgf@y%
  \ignorespaces}



\def\pgfsetyvec#1{%
  \pgf@process{#1}%
  \pgf@yx=\pgf@x%
  \pgf@yy=\pgf@y%
  \ignorespaces}



\def\pgfsetzvec#1{%
  \pgf@process{#1}%
  \pgf@zx=\pgf@x%
  \pgf@zy=\pgf@y%
  \ignorespaces}



\pgfsetxvec{\pgfpoint{1cm}{0cm}}
\pgfsetyvec{\pgfpoint{0cm}{1cm}}
\pgfsetzvec{\pgfpoint{-0.385cm}{-0.385cm}}





\def\pgfpointnormalised#1{%
  \pgf@process{#1}%
  \pgfmathatantwo{\the\pgf@y}{\the\pgf@x}%
  \let\pgf@tmp=\pgfmathresult%
  \pgfmathcos@{\pgf@tmp}%
  \pgf@x=\pgfmathresult pt\relax%
  \pgfmathsin@{\pgf@tmp}%
  \pgf@y=\pgfmathresult pt\relax%
}






\def\pgfpointborderrectangle#1#2{%
  \pgf@process{#2}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \ifnum\pgf@xa<0\relax%
    \global\pgf@x=-\pgf@x%
  \fi%
  \ifnum\pgf@ya<0\relax%
    \global\pgf@y=-\pgf@y%
  \fi%
  \pgf@xc=.125\pgf@x%
  \pgf@yc=.125\pgf@y%
  \c@pgf@counta=\pgf@xc%
  \c@pgf@countb=\pgf@yc%
  \ifnum\c@pgf@countb<\c@pgf@counta%
    \ifnum\c@pgf@counta<255\relax%
      \global\pgf@y=\pgf@yb\relax%
      \global\pgf@x=0pt\relax%
    \else%
      \pgf@xc=8192pt%
      \divide\pgf@xc by\c@pgf@counta%
      \global\pgf@y=\pgf@sys@tonumber{\pgf@xc}\pgf@y%
      \global\pgf@y=\pgf@sys@tonumber{\pgf@xb}\pgf@y%
      \ifnum\pgf@y<\pgf@yb%
        \global\pgf@x=\pgf@xb%
      \else%
        \ifnum\c@pgf@countb<255\relax%
          \global\pgf@x=\pgf@xb\relax%
          \global\pgf@y=0pt\relax%
        \else%
          \pgf@yc=8192pt%
          \divide\pgf@yc by\c@pgf@countb%
          \global\pgf@x=\pgf@sys@tonumber{\pgf@yc}\pgf@x%
          \global\pgf@x=\pgf@sys@tonumber{\pgf@yb}\pgf@x%
          \global\pgf@y=\pgf@yb%
        \fi%
      \fi%
    \fi%
  \else%
    \ifnum\c@pgf@countb<255\relax%
      \global\pgf@x=\pgf@xb\relax%
      \global\pgf@y=0pt\relax%
    \else%
      \pgf@yc=8192pt%
      \divide\pgf@yc by\c@pgf@countb%
      \global\pgf@x=\pgf@sys@tonumber{\pgf@yc}\pgf@x%
      \global\pgf@x=\pgf@sys@tonumber{\pgf@yb}\pgf@x%
      \ifnum\pgf@x<\pgf@xb%
        \global\pgf@y=\pgf@yb%
      \else%
        \ifnum\c@pgf@counta<255\relax%
          \global\pgf@y=\pgf@yb\relax%
          \global\pgf@x=0pt\relax%
        \else%
          \pgf@xc=8192pt%
          \divide\pgf@xc by\c@pgf@counta%
          \global\pgf@y=\pgf@sys@tonumber{\pgf@xc}\pgf@y%
          \global\pgf@y=\pgf@sys@tonumber{\pgf@xb}\pgf@y%
          \global\pgf@x=\pgf@xb%
        \fi%
      \fi%
    \fi%
  \fi%
  \ifnum\pgf@xa<0\relax\global\pgf@x=-\pgf@x\fi%
  \ifnum\pgf@ya<0\relax\global\pgf@y=-\pgf@y\fi%
}





\def\pgfpointborderellipse#1#2{%
  \pgf@process{#2}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \ifdim\pgf@xa=\pgf@ya%
    \pgf@process{\pgfpointnormalised{#1}}%
    \global\pgf@x=\pgf@sys@tonumber{\pgf@xa}\pgf@x%
    \global\pgf@y=\pgf@sys@tonumber{\pgf@xa}\pgf@y%
  \else%
    \ifdim\pgf@xa<\pgf@ya%
      \c@pgf@countb=\pgf@ya%
      \divide\c@pgf@countb by65536\relax%
      \global\divide\pgf@x by\c@pgf@countb%
      \global\divide\pgf@y by\c@pgf@countb%
      \pgf@xc=\pgf@x%
      \pgf@yc=8192pt%
      \global\pgf@y=.125\pgf@y%
      \c@pgf@countb=\pgf@y%
      \divide\pgf@yc by\c@pgf@countb%
      \pgf@process{#1}%
      \global\pgf@y=\pgf@sys@tonumber{\pgf@yc}\pgf@y%
      \global\pgf@y=\pgf@sys@tonumber{\pgf@xc}\pgf@y%
      \pgf@process{\pgfpointnormalised{}}%
      \global\pgf@x=\pgf@sys@tonumber{\pgf@xa}\pgf@x%
      \global\pgf@y=\pgf@sys@tonumber{\pgf@ya}\pgf@y%
    \else%
      \c@pgf@countb=\pgf@xa%
      \divide\c@pgf@countb by65536\relax%
      \global\divide\pgf@x by\c@pgf@countb%
      \global\divide\pgf@y by\c@pgf@countb%
      \pgf@yc=\pgf@y%
      \pgf@xc=8192pt%
      \global\pgf@x=.125\pgf@x%
      \c@pgf@countb=\pgf@x%
      \divide\pgf@xc by\c@pgf@countb%
      \pgf@process{#1}%
      \global\pgf@x=\pgf@sys@tonumber{\pgf@yc}\pgf@x%
      \global\pgf@x=\pgf@sys@tonumber{\pgf@xc}\pgf@x%
      \pgf@process{\pgfpointnormalised{}}%
      \global\pgf@x=\pgf@sys@tonumber{\pgf@xa}\pgf@x%
      \global\pgf@y=\pgf@sys@tonumber{\pgf@ya}\pgf@y%
    \fi%
  \fi%
}






\def\pgfextractx#1#2{%
  \pgf@process{#2}%
  #1=\pgf@x\relax}



\def\pgfextracty#1#2{%
  \pgf@process{#2}%
  #1=\pgf@y\relax}


\def\pgfgetlastxy#1#2{%
    \edef#1{\the\pgf@x}%
    \edef#2{\the\pgf@y}%
}%


\def\pgf@def#1#2#3{\expandafter\def\csname pgf@#1#2\endcsname{#3}}
\pgf@def{cosfrac}{0}{1}
\pgf@def{cosfrac}{1}{0.99995}    \pgf@def{cosfrac}{2}{0.9998}
\pgf@def{cosfrac}{3}{0.99955}    \pgf@def{cosfrac}{4}{0.999201}
\pgf@def{cosfrac}{5}{0.998752}   \pgf@def{cosfrac}{6}{0.998205}
\pgf@def{cosfrac}{7}{0.997559}   \pgf@def{cosfrac}{8}{0.996815}
\pgf@def{cosfrac}{9}{0.995974}   \pgf@def{cosfrac}{10}{0.995037}
\pgf@def{cosfrac}{11}{0.994004}  \pgf@def{cosfrac}{12}{0.992877}
\pgf@def{cosfrac}{13}{0.991656}  \pgf@def{cosfrac}{14}{0.990342}
\pgf@def{cosfrac}{15}{0.988936}  \pgf@def{cosfrac}{16}{0.987441}
\pgf@def{cosfrac}{17}{0.985856}  \pgf@def{cosfrac}{18}{0.984183}
\pgf@def{cosfrac}{19}{0.982424}  \pgf@def{cosfrac}{20}{0.980581}
\pgf@def{cosfrac}{21}{0.978653}  \pgf@def{cosfrac}{22}{0.976644}
\pgf@def{cosfrac}{23}{0.974555}  \pgf@def{cosfrac}{24}{0.972387}
\pgf@def{cosfrac}{25}{0.970143}  \pgf@def{cosfrac}{26}{0.967823}
\pgf@def{cosfrac}{27}{0.965429}  \pgf@def{cosfrac}{28}{0.962964}
\pgf@def{cosfrac}{29}{0.960429}  \pgf@def{cosfrac}{30}{0.957826}
\pgf@def{cosfrac}{31}{0.955157}  \pgf@def{cosfrac}{32}{0.952424}
\pgf@def{cosfrac}{33}{0.949629}  \pgf@def{cosfrac}{34}{0.946773}
\pgf@def{cosfrac}{35}{0.943858}  \pgf@def{cosfrac}{36}{0.940887}
\pgf@def{cosfrac}{37}{0.937862}  \pgf@def{cosfrac}{38}{0.934784}
\pgf@def{cosfrac}{39}{0.931655}  \pgf@def{cosfrac}{40}{0.928477}
\pgf@def{cosfrac}{41}{0.925252}  \pgf@def{cosfrac}{42}{0.921982}
\pgf@def{cosfrac}{43}{0.918669}  \pgf@def{cosfrac}{44}{0.915315}
\pgf@def{cosfrac}{45}{0.911922}  \pgf@def{cosfrac}{46}{0.90849}
\pgf@def{cosfrac}{47}{0.905024}  \pgf@def{cosfrac}{48}{0.901523}
\pgf@def{cosfrac}{49}{0.89799}   \pgf@def{cosfrac}{50}{0.894427}
\pgf@def{cosfrac}{51}{0.890835}  \pgf@def{cosfrac}{52}{0.887217}
\pgf@def{cosfrac}{53}{0.883573}  \pgf@def{cosfrac}{54}{0.879905}
\pgf@def{cosfrac}{55}{0.876216}  \pgf@def{cosfrac}{56}{0.872506}
\pgf@def{cosfrac}{57}{0.868777}  \pgf@def{cosfrac}{58}{0.865031}
\pgf@def{cosfrac}{59}{0.861269}  \pgf@def{cosfrac}{60}{0.857493}
\pgf@def{cosfrac}{61}{0.853704}  \pgf@def{cosfrac}{62}{0.849903}
\pgf@def{cosfrac}{63}{0.846092}  \pgf@def{cosfrac}{64}{0.842271}
\pgf@def{cosfrac}{65}{0.838444}  \pgf@def{cosfrac}{66}{0.834609}
\pgf@def{cosfrac}{67}{0.83077}   \pgf@def{cosfrac}{68}{0.826927}
\pgf@def{cosfrac}{69}{0.82308}   \pgf@def{cosfrac}{70}{0.819232}
\pgf@def{cosfrac}{71}{0.815383}  \pgf@def{cosfrac}{72}{0.811534}
\pgf@def{cosfrac}{73}{0.807687}  \pgf@def{cosfrac}{74}{0.803842}
\pgf@def{cosfrac}{75}{0.8}       \pgf@def{cosfrac}{76}{0.796162}
\pgf@def{cosfrac}{77}{0.792329}  \pgf@def{cosfrac}{78}{0.788502}
\pgf@def{cosfrac}{79}{0.784682}  \pgf@def{cosfrac}{80}{0.780869}
\pgf@def{cosfrac}{81}{0.777064}  \pgf@def{cosfrac}{82}{0.773268}
\pgf@def{cosfrac}{83}{0.769481}  \pgf@def{cosfrac}{84}{0.765705}
\pgf@def{cosfrac}{85}{0.761939}  \pgf@def{cosfrac}{86}{0.758185}
\pgf@def{cosfrac}{87}{0.754443}  \pgf@def{cosfrac}{88}{0.750714}
\pgf@def{cosfrac}{89}{0.746997}  \pgf@def{cosfrac}{90}{0.743294}
\pgf@def{cosfrac}{91}{0.739605}  \pgf@def{cosfrac}{92}{0.735931}
\pgf@def{cosfrac}{93}{0.732272}  \pgf@def{cosfrac}{94}{0.728628}
\pgf@def{cosfrac}{95}{0.724999}  \pgf@def{cosfrac}{96}{0.721387}
\pgf@def{cosfrac}{97}{0.717792}  \pgf@def{cosfrac}{98}{0.714213}
\pgf@def{cosfrac}{99}{0.710651}  \pgf@def{cosfrac}{100}{0.707107}





\let\pgfpointtransformednonlinear\pgfpointtransformed


\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorepoints.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorequick.code.tex ====

\ProvidesFileRCS{pgfcorequick.code.tex}



\def\pgfpathqmoveto#1#2{\pgfsyssoftpath@moveto{#1}{#2}}



\def\pgfpathqlineto#1#2{\pgfsyssoftpath@lineto{#1}{#2}}



\def\pgfpathqcurveto#1#2#3#4#5#6{\pgfsyssoftpath@curveto{#1}{#2}{#3}{#4}{#5}{#6}}





\def\pgfpathqcircle#1{%
  {%
    \pgf@x=#1%
    \pgf@y=0.5522847\pgf@x%
    \pgfsyssoftpath@moveto{\the\pgf@x}{0pt}%
    \pgfsyssoftpath@curveto{\the\pgf@x}{\the\pgf@y}{\the\pgf@y}{\the\pgf@x}{0pt}{\the\pgf@x}%
    \pgfsyssoftpath@curveto{-\the\pgf@y}{\the\pgf@x}{-\the\pgf@x}{\the\pgf@y}{-\the\pgf@x}{0pt}%
    \pgfsyssoftpath@curveto{-\the\pgf@x}{-\the\pgf@y}{-\the\pgf@y}{-\the\pgf@x}{0pt}{-\the\pgf@x}%
    \pgfsyssoftpath@curveto{\the\pgf@y}{-\the\pgf@x}{\the\pgf@x}{-\the\pgf@y}{\the\pgf@x}{0pt}%
    \pgfsyssoftpath@closepath%
  }%
}




\def\pgfusepathqstroke{%
  \pgfsyssoftpath@flushcurrentpath%
  \pgfsys@stroke%
  \pgf@resetpathsizes%
}



\def\pgfusepathqfill{%
  \pgfsyssoftpath@flushcurrentpath%
  \pgfsys@fill%
  \pgf@resetpathsizes%
}



\def\pgfusepathqfillstroke{%
  \pgfsyssoftpath@flushcurrentpath%
  \pgfsys@fillstroke%
  \pgf@resetpathsizes%
}


\def\pgfusepathqclip{%
  \pgfsyssoftpath@flushcurrentpath%
  \pgfsys@clipnext%
  \pgfsys@discardpath%
  \pgf@resetpathsizes%
}


\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorequick.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorerdf.code.tex ====

\ProvidesFileRCS{pgfcorerdf.code.tex}









\def\pgfrdfabout#1{\pgfsys@rdf@about{#1}}




\def\pgfrdfcontent#1{\pgfsys@rdf@content{#1}}




\def\pgfrdfdatatype#1{\pgfsys@rdf@datatype{#1}}




\def\pgfrdfhref#1{\pgfsys@rdf@href{#1}}




\def\pgfrdfinlist{\pgfsys@rdf@inlist}





\def\pgfrdfprefix#1{\pgfsys@rdf@prefix{#1}}





\def\pgfrdfproperty#1{\pgfsys@rdf@property{#1}}




\def\pgfrdfrel#1{\pgfsys@rdf@rel{#1}}



\def\pgfrdfresource#1{\pgfsys@rdf@resource{#1}}





\def\pgfrdfrev#1{\pgfsys@rdf@rev{#1}}





\def\pgfrdfsrc#1{\pgfsys@rdf@src{#1}}





\def\pgfrdftypeof#1{\pgfsys@rdf@typeof{#1}}





\def\pgfrdfvocab#1{\pgfsys@rdf@vocab{#1}}





\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorerdf.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorescopes.code.tex ====

\ProvidesFileRCS{pgfcorescopes.code.tex}


\newbox\pgfpic
\newbox\pgf@hbox

\newbox\pgf@layerbox@main

\newcount\pgf@picture@serial@count



\newif\ifpgfrememberpicturepositiononpage







\def\pgfscope{%
  \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
  \pgfsys@beginscope%
    \pgf@resetpathsizes%
    \edef\pgfscope@linewidth{\the\pgflinewidth}%
    \let\pgfscope@stroke@color=\pgf@strokecolor@global%
    \let\pgfscope@fill@color=\pgf@fillcolor@global%
    \begingroup}
\def\endpgfscope{%
    \endgroup%
    \global\pgflinewidth=\pgfscope@linewidth%
    \global\let\pgf@strokecolor@global=\pgfscope@stroke@color%
    \global\let\pgf@fillcolor@global=\pgfscope@fill@color%
  \pgfsys@endscope}





\def\pgfqbox#1{%
  \pgfsys@hbox#1%
}



\def\pgfqboxsynced#1{%
  \pgfsys@hboxsynced#1%
}



\def\pgftext{\pgfutil@ifnextchar[\pgf@text{\pgf@text[]}}%
\def\pgf@text[#1]{%
  \def\pgf@text@options{#1}%
  \pgf@maketext\pgf@after@text}
\def\pgf@after@text{%
  {%
  \def\pgf@text@hshift{center}%
  \def\pgf@text@vshift{center}%
  \expandafter\pgf@text@setkeys\expandafter{\pgf@text@options}%
  \csname pgf@halign\pgf@text@hshift\endcsname%
  \csname pgf@valign\pgf@text@vshift\endcsname%
  \pgfapproximatenonlineartransformation%
  \pgf@process{\pgfpointtransformed{\pgfqpoint{0pt}{\dp\pgf@hbox}}}%
  \pgf@protocolsizes{\pgf@x}{\pgf@y}%
  \pgf@process{\pgfpointtransformed{\pgfqpoint{\wd\pgf@hbox}{\dp\pgf@hbox}}}%
  \pgf@protocolsizes{\pgf@x}{\pgf@y}%
  \pgf@process{\pgfpointtransformed{\pgfqpoint{0pt}{\ht\pgf@hbox}}}%
  \pgf@protocolsizes{\pgf@x}{\pgf@y}%
  \pgf@process{\pgfpointtransformed{\pgfqpoint{\wd\pgf@hbox}{\ht\pgf@hbox}}}%
  \pgf@protocolsizes{\pgf@x}{\pgf@y}%
  \pgfqboxsynced{\pgf@hbox}%
  }%
}
\def\pgf@text@setkeys{\pgfqkeys{/pgf/text}}%

\pgfkeys{/pgf/text/left/.code=\def\pgf@text@hshift{left}}
\pgfkeys{/pgf/text/center/.code=}
\pgfkeys{/pgf/text/right/.code=\def\pgf@text@hshift{right}}
\pgfkeys{/pgf/text/top/.code=\def\pgf@text@vshift{top}}
\pgfkeys{/pgf/text/bottom/.code=\def\pgf@text@vshift{bottom}}
\pgfkeys{/pgf/text/base/.code=\def\pgf@text@vshift{base}}
\pgfkeys{/pgf/text/at/.cd,.code=\pgftransformshift{#1},.value required}
\pgfkeys{/pgf/text/x/.cd,.code=\pgftransformxshift{#1},.value required}
\pgfkeys{/pgf/text/y/.cd,.code=\pgftransformyshift{#1},.value required}
\pgfkeys{/pgf/text/rotate/.cd,.code=\pgftransformrotate{#1},.value required}

\def\pgf@halignleft{}%
\def\pgf@haligncenter{\pgftransformxshift{+-.5\wd\pgf@hbox}}
\def\pgf@halignright{\pgftransformxshift{+-\wd\pgf@hbox}}%
\def\pgf@valignbase{}%
\def\pgf@valignbottom{\pgftransformyshift{+\dp\pgf@hbox}}%
\def\pgf@valigncenter{\pgftransformyshift{+.5\dp\pgf@hbox}\pgftransformyshift{+-.5\ht\pgf@hbox}}%
\def\pgf@valigntop{\pgftransformyshift{+-\ht\pgf@hbox}}%


\def\pgf@maketext#1{%
  \def\pgf@@maketextafter{#1}%
  \setbox\pgf@hbox=\hbox\bgroup%
    \pgfinterruptpicture%
      \bgroup%
        \aftergroup\pgf@collectresetcolor%
        \let\next=%
}
\def\pgf@collectresetcolor{%
  \pgfutil@ifnextchar\reset@color%
  {\reset@color\afterassignment\pgf@collectresetcolor\let\pgf@temp=}%
  {\pgf@textdone}%
}
\def\pgf@textdone{%
    \endpgfinterruptpicture%
  \egroup%
  \pgf@@maketextafter%
}

\long\def\pgf@makehbox#1{%
  \setbox\pgf@hbox=\hbox{{%
    \pgfinterruptpicture%
      #1%
    \endpgfinterruptpicture%
    }}}




\def\pgfresetboundingbox{%
    \global\pgf@picmaxx=-16000pt\relax%
    \global\pgf@picminx=16000pt\relax%
    \global\pgf@picmaxy=-16000pt\relax%
    \global\pgf@picminy=16000pt\relax%
}%

\def\pgfpicture{%
  \begingroup%
    \pgfpicturetrue%
    \global\advance\pgf@picture@serial@count by1\relax%
    \edef\pgfpictureid{pgfid\the\pgf@picture@serial@count}%
    \let\pgf@nodecallback=\pgfutil@gobble%
    \pgf@picmaxx=-16000pt\relax%
    \pgf@picminx=16000pt\relax%
    \pgf@picmaxy=-16000pt\relax%
    \pgf@picminy=16000pt\relax%
    \pgf@relevantforpicturesizetrue%
    \pgf@resetpathsizes%
    \pgfutil@ifnextchar\bgroup\pgf@oldpicture\pgf@picture}
\def\pgf@oldpicture#1#2#3#4{%
  \pgfmathsetlength\pgf@picminx{#1}%
  \pgfmathsetlength\pgf@picminy{#2}%
  \pgfmathsetlength\pgf@picmaxx{#3}%
  \pgfmathsetlength\pgf@picmaxy{#4}%
  \pgf@relevantforpicturesizefalse%
  \pgf@picture}

\def\pgf@picture{%
  \setbox\pgfpic\hbox to0pt\bgroup%
    \begingroup%
    \pgfsys@beginpicture%
      \pgfsys@beginscope%
        \begingroup%
        \pgfsetcolor{.}%
        \pgfsetlinewidth{0.4pt}%
        \pgftransformreset%
        \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
        \begingroup%
          \let\pgf@setlengthorig=\setlength%
          \let\pgf@addtolengthorig=\addtolength%
          \let\pgf@selectfontorig=\selectfont%
          \let\setlength=\pgf@setlength%
          \let\addtolength=\pgf@addtolength%
          \let\selectfont=\pgf@selectfont%
          \nullfont\spaceskip0pt\xspaceskip0pt%
          \tracinglostchars=%
            \ifnum\tracinglostchars>2 2\else\tracinglostchars\fi
          \setbox\pgf@layerbox@main\hbox to0pt\bgroup%
            \begingroup%
  }
\def\endpgfpicture{%
              \ifpgfrememberpicturepositiononpage%
                \hbox to0pt{\pgfsys@markposition{\pgfpictureid}}%
              \fi%
              \ifdim\pgf@picmaxx=-16000pt\relax%
                \global\pgf@picmaxx=0pt\relax%
                \global\pgf@picminx=0pt\relax%
                \global\pgf@picmaxy=0pt\relax%
                \global\pgf@picminy=0pt\relax%
              \fi%
              \pgf@relevantforpicturesizefalse%
              \pgf@process{\pgf@baseline}%
              \xdef\pgf@shift@baseline{\the\pgf@y}%
              \pgf@process{\pgf@trimleft}%
              \global\advance\pgf@x by-\pgf@picminx
              \xdef\pgf@trimleft@final{-\the\pgf@x}%
              \pgf@process{\pgf@trimright}%
              \global\advance\pgf@x by-\pgf@picmaxx
              \xdef\pgf@trimright@final{\the\pgf@x}%
        \pgf@remember@layerlist@globally
            \endgroup%
            \hss%
          \egroup%
      \pgf@restore@layerlist@from@global
          \pgf@insertlayers%
        \endgroup%
        \pgfsys@discardpath%
        \endgroup%
      \pgfsys@endscope%
    \pgfsys@endpicture%
    \endgroup%
    \hss
  \egroup%
  \pgfsys@typesetpicturebox\pgfpic%
  \endgroup%
}

\def\pgf@remember@layerlist@globally{%
  \global\let\pgf@layerlist@=\pgf@layerlist
}%
\def\pgf@restore@layerlist@from@global{%
  \let\pgf@layerlist=\pgf@layerlist@
}%
\def\pgf@insertlayers{%
  \box\pgf@layerbox@main%
}

\def\pgf@selectfont{\pgf@selectfontorig\nullfont}

\def\pgf@setlength#1#2{%
  \begingroup%
    \pgfutil@selectfont%
    \pgf@setlengthorig#1{#2}%
    \expandafter%
  \endgroup%
  \expandafter#1\expandafter=\the#1\relax}
\def\pgf@addtolength#1#2{%
  \begingroup%
    \pgfutil@selectfont%
    \pgf@addtolengthorig#1{#2}%
    \expandafter%
  \endgroup%
  \expandafter#1\expandafter=\the#1\relax}



\def\pgfsetbaselinepointlater#1{\def\pgf@baseline{#1}}



\def\pgfsetbaselinepointnow#1{%
  \pgf@process{#1}%
  \edef\pgf@setter@baseline{\noexpand\pgfpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgfsetbaselinepointlater{\pgf@setter@baseline}%
}

\def\pgf@default@text{default}%


\def\pgfsetbaseline#1{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgf@default@text
    \pgfsetbaseline{\pgf@picminy}%
  \else
    \pgfsetbaselinepointlater{\pgfpoint{0pt}{#1}}%
  \fi
}
\pgfsetbaseline{\pgf@picminy}

\newif\ifpgf@trim@lowlevel
\pgfkeys{
  /pgf/trim lowlevel/.is if=pgf@trim@lowlevel,
  /pgf/trim lowlevel/.default=true,
}

\def\pgfsettrimleftpointlater#1{\def\pgf@trimleft{#1}}
\def\pgfsettrimleftpointnow#1{%
  \pgf@process{#1}%
  \edef\pgf@setter@baseline{\noexpand\pgfpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgfsettrimleftpointlater{\pgf@setter@baseline}%
}
\def\pgfsettrimleft#1{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgf@default@text
    \pgfsettrimleft{\pgf@picminx}
  \else
    \pgfsettrimleftpointlater{\pgfpoint{#1}{0pt}}%
  \fi
}
\pgfsettrimleft{\pgf@picminx}

\def\pgfsettrimrightpointlater#1{\def\pgf@trimright{#1}}
\def\pgfsettrimrightpointnow#1{%
  \pgf@process{#1}%
  \edef\pgf@setter@baseline{\noexpand\pgfpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgfsettrimrightpointlater{\pgf@setter@baseline}%
}
\def\pgfsettrimright#1{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgf@default@text
    \pgfsettrimright{\pgf@picmaxx}%
  \else
    \pgfsettrimrightpointlater{\pgfpoint{#1}{0pt}}%
  \fi
}
\pgfsettrimright{\pgf@picmaxx}



\def\pgfinterruptpath
{%
  \begingroup%
  \edef\pgf@interrupt@savex{\the\pgf@path@lastx}%
  \edef\pgf@interrupt@savey{\the\pgf@path@lasty}%
  \pgf@getpathsizes\pgf@interrupt@pathsizes%
  \pgfsyssoftpath@getcurrentpath\pgf@interrupt@path%
  \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
  \let\pgf@interrupt@lastmoveto=\pgfsyssoftpath@lastmoveto%
  \begingroup%
}
\def\endpgfinterruptpath
{%
  \endgroup%
  \pgfsyssoftpath@setcurrentpath\pgf@interrupt@path%
  \pgf@setpathsizes\pgf@interrupt@pathsizes%
  \global\pgf@path@lastx\pgf@interrupt@savex%
  \global\pgf@path@lasty\pgf@interrupt@savey%
  \global\let\pgfsyssoftpath@lastmoveto\pgf@interrupt@lastmoveto%
  \endgroup%
}




\def\pgfinterruptboundingbox
{%
  \begingroup%
    \edef\pgf@interrupt@savemaxx{\the\pgf@picmaxx}%
    \edef\pgf@interrupt@saveminx{\the\pgf@picminx}%
    \edef\pgf@interrupt@savemaxy{\the\pgf@picmaxy}%
    \edef\pgf@interrupt@saveminy{\the\pgf@picminy}%
    \pgf@picmaxx=-16000pt\relax%
    \pgf@picminx=16000pt\relax%
    \pgf@picmaxy=-16000pt\relax%
    \pgf@picminy=16000pt\relax%
    \pgf@size@hookedfalse%
    \let\pgf@path@size@hook=\pgfutil@empty%
}
\def\endpgfinterruptboundingbox
{%
    \global\pgf@picmaxx=\pgf@interrupt@savemaxx%
    \global\pgf@picmaxy=\pgf@interrupt@savemaxy%
    \global\pgf@picminx=\pgf@interrupt@saveminx%
    \global\pgf@picminy=\pgf@interrupt@saveminy%
  \endgroup%
}





\def\pgfidscope{\pgfsys@begin@idscope}
\def\endpgfidscope{\pgfsys@end@idscope}

\let\startpgfidscope\pgfidscope
\let\stoppgfidscope\pgfendidscope





\def\pgfuseid#1{%
  \edef\pgf@temp{#1}%
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \pgf@lookup@id{#1}%
    \pgfsys@use@id{\pgf@next@id}%
    \expandafter\xdef\csname pgf@id@names@#1\endcsname{{\pgf@next@id}{}}%
  \fi%
}

\def\pgf@lookup@id#1{%
  \expandafter\let\expandafter\pgf@id@name\csname pgf@id@names@#1\endcsname%
  \ifx\pgf@id@name\relax%
    \let\pgf@prev@id\pgfutil@empty%
    \let\pgf@next@id\pgfutil@empty%
  \else%
    \expandafter\pgf@id@parse\pgf@id@name%
  \fi%
  \ifx\pgf@next@id\pgfutil@empty%
    \pgfsys@new@id\pgf@next@id%
    \expandafter\xdef\csname pgf@id@names@#1\endcsname{{\pgf@prev@id}{\pgf@next@id}}%
  \fi%
}
\def\pgf@id@parse#1#2{%
  \def\pgf@prev@id{#1}%
  \def\pgf@next@id{#2}%
}




\def\pgfclearid{%
  \pgfsys@clear@id%
}



\def\pgfidrefnextuse#1#2{%
  \edef\pgf@temp{#2}\ifx\pgf@temp\pgfutil@empty\pgferror{Missing name reference for ``\string#1''}\fi%
  \pgf@lookup@id{#2}%
  \let#1\pgf@next@id%
}



\def\pgfidrefprevuse#1#2{%
  \edef\pgf@temp{#2}\ifx\pgf@temp\pgfutil@empty\pgferror{Missing name reference for ``\string#1''}\fi%
  \pgf@lookup@id{#2}%
  \let#1\pgf@prev@id%
}



\def\pgfusetype#1{%
  \edef\pgf@temp{#1}%
  \expandafter\pgfutil@ifnextchar\expandafter.\expandafter\pgf@id@use@type@add\expandafter\pgf@id@use@type@replace\pgf@temp\pgf@stop
}
\def\pgf@id@use@type@add.#1\pgf@stop{\pgfsys@append@type{#1}}
\def\pgf@id@use@type@replace#1\pgf@stop{\pgfsys@use@type{#1}}


\def\pgfpushtype{\pgfsys@push@type}



\def\pgfpoptype{\pgfsys@pop@type}





\def\pgfaliasid#1#2{%
  \expandafter\let\expandafter\pgf@temp\csname pgf@id@names@#2\endcsname%
  \expandafter\let\csname pgf@id@names@#1\endcsname\pgf@temp%
}
\def\pgfgaliasid#1#2{%
  \expandafter\let\expandafter\pgf@temp\csname pgf@id@names@#2\endcsname%
  \expandafter\global\expandafter\let\csname pgf@id@names@#1\endcsname\pgf@temp%
}



\def\pgfifidreferenced#1#2#3{%
  \expandafter\let\expandafter\pgf@id@name\csname pgf@id@names@#1\endcsname%
  \ifx\pgf@id@name\relax%
    #3%
  \else
    \expandafter\pgf@id@parse\pgf@id@name%
    \ifx\pgf@next@id\pgfutil@empty%
      #3%
    \else%
      #2%
    \fi%
  \fi%
}



\def\pgfinterruptpicture
{%
  \begingroup%
    \csname tikz@inside@picturefalse\endcsname%
    \pgfinterruptboundingbox%
      \pgftransformreset%
      \pgfinterruptpath%
        \ifx\pgf@selectfontorig\@undefined%
        \else%
          \let\setlength\pgf@setlengthorig%
          \let\addtolength\pgf@addtolengthorig%
          \let\selectfont\pgf@selectfontorig%
        \fi%
        \pgfutil@selectfont%
        \pgfpicturefalse%
        \let\pgf@positionnodelater@macro\relax%
        \pgf@savelayers%
}
\def\endpgfinterruptpicture
{%
        \pgf@restorelayers%
      \endpgfinterruptpath%
    \endpgfinterruptboundingbox%
  \endgroup%
}

\let\pgf@savelayers=\relax
\let\pgf@restorelayers=\relax

\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcorescopes.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreshade.code.tex ====

\ProvidesFileRCS{pgfcoreshade.code.tex}

\newdimen\pgf@max
\newcount\pgf@sys@shading@range@num
\def\pgf@parsefunc#1{%
  \edef\temp{{#1}}%
  \expandafter\pgf@convertstring\temp%
  \edef\temp{{\pgf@conv}}%
  \expandafter\pgf@@parsefunc\temp}
\def\pgf@@parsefunc#1{%
  \let\pgf@bounds=\pgfutil@empty%
  \let\pgf@funcs=\pgfutil@empty%
  \let\pgf@psfuncs=\pgfutil@empty%
  \let\pgf@encode=\pgfutil@empty%
  \let\pgf@sys@shading@ranges=\pgfutil@empty%
  \pgf@sys@shading@range@num=0\relax%
  \csname pgf@parsefirst\pgf@shading@model\endcsname[#1; ]%
  \csname pgf@parselastdom\pgf@shading@model\endcsname[#1; ]%
  \csname pgf@parsemid\pgf@shading@model\endcsname[#1; ]%
  \ifx\pgf@bounds\pgfutil@empty%
    \edef\pgf@pdfparseddomain{0 1}%
    \edef\pgf@pdfparsedfunction{\pgf@singlefunc\space}%
  \else%
    \edef\pgf@pdfparseddomain{\pgf@doma\space\pgf@domb}%
    \edef\pgf@pdfparsedfunction{%
      << /FunctionType 3 /Domain [\pgf@doma\space\pgf@domb] /Functions
      [\pgf@funcs\space] /Bounds [\pgf@bounds] /Encode [0 1 \pgf@encode]
      >> }%
  \fi%
  \xdef\pgf@psfuncs{\pgf@psfuncs}%
  }
\def\pgf@parsefirstrgb[rgb(#1)=(#2,#3,#4)#5]{%
  \pgfmathsetlength\pgf@x{#1}%
  \edef\pgf@sys@shading@start@pos{\the\pgf@x}%
  \pgf@sys@bp@correct\pgf@x%
  \edef\pgf@doma{\pgf@sys@tonumber{\pgf@x}}%
  \edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
  \pgf@getrgbtuplewithmixin{#2}{#3}{#4}%
  \edef\pgf@sys@shading@start@rgb{\pgf@sys@rgb}%
  \let\pgf@sys@prevcolor=\pgf@sys@shading@start@rgb%
  \let\pgf@sys@prevpos=\pgf@sys@shading@start@pos%
  \edef\pgf@prevcolor{\pgf@rgb}%
  \edef\pgf@firstcolor{\pgf@rgb}}
\def\pgf@parselastdomrgb[rgb(#1)=(#2,#3,#4); {%
  \pgfutil@ifnextchar]{%
    \pgfmathsetlength\pgf@x{#1}%
    \edef\pgf@sys@shading@end@pos{\the\pgf@x}%
    \pgf@max=\pgf@x\relax%
    \pgf@sys@bp@correct\pgf@x%
    \edef\pgf@domb{\pgf@sys@tonumber{\pgf@x}}%
    \pgf@getrgbtuplewithmixin{#2}{#3}{#4}%
    \edef\pgf@sys@shading@end@rgb{\pgf@sys@rgb}%
    \pgfutil@gobble}{\pgf@parselastdomrgb[}}
\def\pgf@parsemidrgb[rgb(#1)=(#2,#3,#4); {\pgf@parserestrgb[}
\def\pgf@parserestrgb[rgb(#1)=(#2,#3,#4); {%
  \advance\pgf@sys@shading@range@num by1\relax%
  \pgfutil@ifnextchar]{%
    \pgf@getrgbtuplewithmixin{#2}{#3}{#4}%
    \edef\pgf@singlefunc{\space%
      << /FunctionType 2 /Domain [0 1] /C0
      [\pgf@prevcolor] /C1 [\pgf@rgb] /N 1 >> }%
    \edef\pgf@funcs{\pgf@funcs\space%
      << /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
      [\pgf@prevcolor] /C1 [\pgf@rgb] /N 1 >> }%
    \edef\pgf@psfuncs{\pgf@prevx\space \pgf@rgb\space \pgf@prevcolor\space pgfshade \pgf@psfuncs}%
    \pgfmathsetlength\pgf@x{#1}%
    \edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{{\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@rgb}}}%
    \edef\pgf@sys@prevpos{\the\pgf@x}%
    \let\pgf@sys@prevcolor=\pgf@sys@rgb%
    \pgfutil@gobble}{%
    \pgfmathsetlength\pgf@x{#1}%
    \pgf@getrgbtuplewithmixin{#2}{#3}{#4}%
    \edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{{\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@rgb}}}%
    \edef\pgf@sys@prevpos{\the\pgf@x}%
    \let\pgf@sys@prevcolor=\pgf@sys@rgb%
    \edef\pgf@psfuncs{\pgf@prevx\space \pgf@rgb\space \pgf@prevcolor\space pgfshade \pgf@psfuncs}%
    \pgf@sys@bp@correct\pgf@x%
    \edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
    \edef\pgf@bounds{\pgf@bounds\space\pgf@sys@tonumber{\pgf@x}}%
    \edef\pgf@encode{\pgf@encode\space0 1}%
    \edef\pgf@singlefunc{\space%
      << /FunctionType 2 /Domain [0 1] /C0
      [\pgf@prevcolor] /C1 [\pgf@rgb] /N 1 >> }%
    \edef\pgf@funcs{\pgf@funcs\space%
      << /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
      [\pgf@prevcolor] /C1 [\pgf@rgb] /N 1 >> }%
    \edef\pgf@prevcolor{\pgf@rgb}%
    \pgf@parserestrgb[}}

\def\pgf@getrgbtuplewithmixin#1#2#3{%
  \pgfutil@definecolor{pgfshadetemp}{rgb}{#1,#2,#3}%
  \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgfshadetemp}}%
  \pgfutil@extractcolorspec{pgfshadetemp}{\pgf@tempcolor}%
  \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{rgb}{\pgf@rgbcolor}%
  \expandafter\pgf@getrgb@@\pgf@rgbcolor!}
\def\pgf@getrgb@@#1,#2,#3!{%
  \def\pgf@rgb{#1 #2 #3}%
  \def\pgf@sys@rgb{{#1}{#2}{#3}}%
}

\def\pgf@parsefirstcmyk[cmyk(#1)=(#2,#3,#4,#5)#6]{%
  \pgfmathsetlength\pgf@x{#1}%
  \edef\pgf@sys@shading@start@pos{\the\pgf@x}%
  \pgf@sys@bp@correct\pgf@x%
  \edef\pgf@doma{\pgf@sys@tonumber{\pgf@x}}%
  \edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
  \pgf@getcmyktuplewithmixin{#2}{#3}{#4}{#5}%
  \edef\pgf@sys@shading@start@cmyk{\pgf@sys@cmyk}%
  \let\pgf@sys@prevcolor=\pgf@sys@shading@start@cmyk%
  \let\pgf@sys@prevpos=\pgf@sys@shading@start@pos%
  \edef\pgf@prevcolor{\pgf@cmyk}%
  \edef\pgf@firstcolor{\pgf@cmyk}}
\def\pgf@parselastdomcmyk[cmyk(#1)=(#2,#3,#4,#5); {%
  \pgfutil@ifnextchar]{%
    \pgfmathsetlength\pgf@x{#1}%
    \edef\pgf@sys@shading@end@pos{\the\pgf@x}%
    \pgf@max=\pgf@x\relax%
    \pgf@sys@bp@correct\pgf@x%
    \edef\pgf@domb{\pgf@sys@tonumber{\pgf@x}}%
    \pgf@getcmyktuplewithmixin{#2}{#3}{#4}{#5}%
    \edef\pgf@sys@shading@end@cmyk{\pgf@sys@cmyk}%
    \pgfutil@gobble}{\pgf@parselastdomcmyk[}}
\def\pgf@parsemidcmyk[cmyk(#1)=(#2,#3,#4,#5); {\pgf@parserestcmyk[}
\def\pgf@parserestcmyk[cmyk(#1)=(#2,#3,#4,#5); {%
  \advance\pgf@sys@shading@range@num by1\relax%
  \pgfutil@ifnextchar]{%
    \pgf@getcmyktuplewithmixin{#2}{#3}{#4}{#5}%
    \edef\pgf@singlefunc{\space%
      << /FunctionType 2 /Domain [0 1] /C0
      [\pgf@prevcolor] /C1 [\pgf@cmyk] /N 1 >> }%
    \edef\pgf@funcs{\pgf@funcs\space%
      << /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
      [\pgf@prevcolor] /C1 [\pgf@cmyk] /N 1 >> }%
    \edef\pgf@psfuncs{\pgf@prevx\space
      \pgf@cmyk\space \pgf@prevcolor\space pgfshade \pgf@psfuncs}%
    \pgfmathsetlength\pgf@x{#1}%
    \edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{%
      {\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@cmyk}}}%
    \edef\pgf@sys@prevpos{\the\pgf@x}%
    \let\pgf@sys@prevcolor=\pgf@sys@cmyk%
    \pgfutil@gobble}{%
    \pgfmathsetlength\pgf@x{#1}%
    \pgf@getcmyktuplewithmixin{#2}{#3}{#4}{#5}%
    \edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{%
      {\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@cmyk}}}%
    \edef\pgf@sys@prevpos{\the\pgf@x}%
    \let\pgf@sys@prevcolor=\pgf@sys@cmyk%
    \edef\pgf@psfuncs{\pgf@prevx\space \pgf@cmyk\space
      \pgf@prevcolor\space pgfshade \pgf@psfuncs}%
    \pgf@sys@bp@correct\pgf@x%
    \edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
    \edef\pgf@bounds{\pgf@bounds\space\pgf@sys@tonumber{\pgf@x}}%
    \edef\pgf@encode{\pgf@encode\space0 1}%
    \edef\pgf@singlefunc{\space%
      << /FunctionType 2 /Domain [0 1] /C0
      [\pgf@prevcolor] /C1 [\pgf@cmyk] /N 1 >> }%
    \edef\pgf@funcs{\pgf@funcs\space%
      << /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
      [\pgf@prevcolor] /C1 [\pgf@cmyk] /N 1 >> }%
    \edef\pgf@prevcolor{\pgf@cmyk}%
    \pgf@parserestcmyk[}}

\def\pgf@getcmyktuplewithmixin#1#2#3#4{%
  \pgfutil@definecolor{pgfshadetemp}{cmyk}{#1,#2,#3,#4}%
  \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgfshadetemp}}%
  \pgfutil@extractcolorspec{pgfshadetemp}{\pgf@tempcolor}%
  \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{cmyk}{\pgf@cmykcolor}%
  \expandafter\pgf@getcmyk@@\pgf@cmykcolor!}
\def\pgf@getcmyk@@#1,#2,#3,#4!{%
  \def\pgf@cmyk{#1 #2 #3 #4}%
  \def\pgf@sys@cmyk{{#1}{#2}{#3}{#4}}%
}

\def\pgf@parsefirstgray[gray(#1)=(#2)#3]{%
  \pgfmathsetlength\pgf@x{#1}%
  \edef\pgf@sys@shading@start@pos{\the\pgf@x}%
  \pgf@sys@bp@correct\pgf@x%
  \edef\pgf@doma{\pgf@sys@tonumber{\pgf@x}}%
  \edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
  \pgf@getgraytuplewithmixin{#2}%
  \edef\pgf@sys@shading@start@gray{\pgf@sys@gray}%
  \let\pgf@sys@prevcolor=\pgf@sys@shading@start@gray%
  \let\pgf@sys@prevpos=\pgf@sys@shading@start@pos%
  \edef\pgf@prevcolor{\pgf@gray}%
  \edef\pgf@firstcolor{\pgf@gray}}
\def\pgf@parselastdomgray[gray(#1)=(#2); {%
  \pgfutil@ifnextchar]{%
    \pgfmathsetlength\pgf@x{#1}%
    \edef\pgf@sys@shading@end@pos{\the\pgf@x}%
    \pgf@max=\pgf@x\relax%
    \pgf@sys@bp@correct\pgf@x%
    \edef\pgf@domb{\pgf@sys@tonumber{\pgf@x}}%
    \pgf@getgraytuplewithmixin{#2}%
    \edef\pgf@sys@shading@end@gray{\pgf@sys@gray}%
    \pgfutil@gobble}{\pgf@parselastdomgray[}}
\def\pgf@parsemidgray[gray(#1)=(#2); {\pgf@parserestgray[}
\def\pgf@parserestgray[gray(#1)=(#2); {%
  \advance\pgf@sys@shading@range@num by1\relax%
  \pgfutil@ifnextchar]{%
    \pgf@getgraytuplewithmixin{#2}%
    \edef\pgf@singlefunc{\space%
      << /FunctionType 2 /Domain [0 1] /C0
      [\pgf@prevcolor] /C1 [\pgf@gray] /N 1 >> }%
    \edef\pgf@funcs{\pgf@funcs\space%
      << /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
      [\pgf@prevcolor] /C1 [\pgf@gray] /N 1 >> }%
    \edef\pgf@psfuncs{\pgf@prevx\space \pgf@gray\space
      \pgf@prevcolor\space pgfshade \pgf@psfuncs}%
    \pgfmathsetlength\pgf@x{#1}%
    \edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{%
      {\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@gray}}}%
    \edef\pgf@sys@prevpos{\the\pgf@x}%
    \let\pgf@sys@prevcolor=\pgf@sys@gray%
    \pgfutil@gobble}{%
    \pgfmathsetlength\pgf@x{#1}%
    \pgf@getgraytuplewithmixin{#2}%
    \edef\pgf@sys@shading@ranges{\pgf@sys@shading@ranges{%
      {\pgf@sys@prevpos}{\the\pgf@x}{\pgf@sys@prevcolor}{\pgf@sys@gray}}}%
    \edef\pgf@sys@prevpos{\the\pgf@x}%
    \let\pgf@sys@prevcolor=\pgf@sys@gray%
    \edef\pgf@psfuncs{\pgf@prevx\space \pgf@gray\space
      \pgf@prevcolor\space pgfshade \pgf@psfuncs}%
    \pgf@sys@bp@correct\pgf@x%
    \edef\pgf@prevx{\pgf@sys@tonumber{\pgf@x}}%
    \edef\pgf@bounds{\pgf@bounds\space\pgf@sys@tonumber{\pgf@x}}%
    \edef\pgf@encode{\pgf@encode\space0 1}%
    \edef\pgf@singlefunc{\space%
      << /FunctionType 2 /Domain [0 1] /C0
      [\pgf@prevcolor] /C1 [\pgf@gray] /N 1 >> }%
    \edef\pgf@funcs{\pgf@funcs\space%
      << /FunctionType 2 /Domain [\pgf@doma\space\pgf@domb] /C0
      [\pgf@prevcolor] /C1 [\pgf@gray] /N 1 >> }%
    \edef\pgf@prevcolor{\pgf@gray}%
    \pgf@parserestgray[}}

\def\pgf@getgraytuplewithmixin#1{%
  \pgfutil@definecolor{pgfshadetemp}{gray}{#1}%
  \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{pgfshadetemp}}%
  \pgfutil@extractcolorspec{pgfshadetemp}{\pgf@tempcolor}%
  \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{gray}{\pgf@graycolor}%
  \expandafter\pgf@getgray@@\pgf@graycolor!}
\def\pgf@getgray@@#1!{%
  \def\pgf@gray{#1}%
  \def\pgf@sys@gray{{#1}}%
}

\def\pgf@convertstring#1{%
  \def\pgf@conv{}%
  \pgf@convert#1]%
  }
\def\pgf@convert{%
  \pgfutil@ifnextchar]{\pgfutil@gobble}%
  {%
    \pgfutil@ifnextchar;{\pgf@grabsemicolor}%
    {%
      \pgfutil@ifnextchar c{\pgf@gobblec}%
      {%
        \pgfutil@ifnextchar g{\pgf@grabgray}%
        {%
          \pgfutil@ifnextchar o{\pgf@grabcolor}%
          {%
            \pgfutil@ifnextchar m{\pgf@grabcmyk}%
            {%
              \pgfutil@ifnextchar r{\pgf@grabrgb}%
                {\pgferror{Illformed shading
                 specification}\pgf@convert}%
            }%
          }%
        }%
      }%
    }%
  }%
}
\def\pgf@savecolor#1{%
  \pgfutil@extractcolorspec{pgf@tempcol}{\pgf@tempcolor}%
  \expandafter\pgfutil@convertcolorspec\pgf@tempcolor
    {\pgf@shading@model}{\pgf@color}%
  \expandafter\pgf@convget@\expandafter{\pgf@color}{#1}%
}
\def\pgf@grabsemicolor;{%
  \edef\pgf@conv{\pgf@conv; }\pgf@convert}
\def\pgf@gobblec c{\pgf@convert}
\def\pgf@grabrgb rgb(#1)=(#2,#3,#4){%
  \pgfutil@definecolor{pgf@tempcol}{rgb}{#2,#3,#4}%
  \pgf@savecolor{#1}%
}
\def\pgf@grabcmyk myk(#1)=(#2,#3,#4,#5){%
  \pgfutil@definecolor{pgf@tempcol}{cmyk}{#2,#3,#4,#5}%
  \pgf@savecolor{#1}%
}
\def\pgf@grabgray gray(#1)=(#2){%
  \pgfutil@definecolor{pgf@tempcol}{gray}{#2}%
  \pgf@savecolor{#1}%
}
\def\pgf@grabcolor olor(#1)=(#2){%
  \pgfutil@colorlet{pgf@tempcol}{#2}%
  \pgf@savecolor{#1}%
}
\def\pgf@convget@#1#2{%
  \edef\pgf@conv{\pgf@conv \pgf@shading@model(#2)=(#1)}\pgf@convert}


\newcount\pgf@shadingcount
\pgf@shadingcount=0
{
  \catcode`\/=0
  \catcode`\\=12
  /gdef/pgf@shadingnum{\/the/pgf@shadingcount\}
}


\newif\ifpgfshadingmodelrgb
\newif\ifpgfshadingmodelcmyk
\newif\ifpgfshadingmodelgray
\def\pgf@setup@shading@model{%
  \pgfshadingmodelrgbtrue
  \pgfshadingmodelcmykfalse
  \pgfshadingmodelgrayfalse
  \XC@sdef\pgf@mod@test{\XC@tgt@mod{natural}}%
  \def\pgf@shading@device{/DeviceRGB}%
  \def\pgf@shading@ps@device{setrgbcolor}%
  \def\pgf@shading@functional@range{0 1 0 1 0 1}%
  \def\pgf@shading@model{rgb}%
  \ifx\pgf@mod@test\XC@mod@cmyk
    \def\pgf@shading@device{/DeviceCMYK}%
    \def\pgf@shading@ps@device{setcmykcolor}%
    \def\pgf@shading@functional@range{0 1 0 1 0 1 0 1}%
    \def\pgf@shading@model{cmyk}%
    \pgfshadingmodelrgbfalse
    \pgfshadingmodelcmyktrue
  \fi
  \ifx\pgf@mod@test\XC@mod@gray
    \def\pgf@shading@device{/DeviceGray}%
    \def\pgf@shading@ps@device{setgray}%
    \def\pgf@shading@functional@range{0 1}%
    \def\pgf@shading@model{gray}%
    \pgfshadingmodelrgbfalse
    \pgfshadingmodelgraytrue
  \fi
  \edef\pgf@sys@driver@dvisvgm{pgfsys-dvisvgm.def}%
  \ifx\pgfsysdriver\pgf@sys@driver@dvisvgm
    \def\pgf@shading@model{rgb}%
  \fi
  \edef\pgf@sys@driver@texforht{pgfsys-tex4ht.def}%
  \ifx\pgfsysdriver\pgf@sys@driver@texforht
    \def\pgf@shading@model{rgb}%
  \fi
}



\def\pgfdeclarehorizontalshading{%
  \pgf@setup@shading@model
  \pgfutil@ifnextchar[%
    \pgf@declarehorizontalshading{\pgf@declarehorizontalshading[]}}
\def\pgf@declarehorizontalshading[#1]#2#3#4{%
  \expandafter\def\csname pgf@deps@pgfshading#2!\endcsname{#1}%
  \expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\pgfutil@empty%
    \global\expandafter\let\csname pgf@num@pgfshading#2!\endcsname\pgfutil@empty
    \pgfsys@horishading{#2}{#3}{#4}%
  \else%
    \global\advance\pgf@shadingcount 1\relax
    \global\expandafter\edef\csname pgf@num@pgfshading#2!\endcsname{\pgf@shadingnum}%
    \expandafter\def\csname pgf@func@pgfshading#2!\endcsname{\pgfsys@horishading}%
    \expandafter\def\csname pgf@args@pgfshading#2!\endcsname{{#3}{#4}}%
    \expandafter\let\csname @pgfshading#2!\endcsname=\pgfutil@empty%
  \fi}



\def\pgfdeclareverticalshading{%
  \pgf@setup@shading@model
  \pgfutil@ifnextchar[%
    \pgf@declareverticalshading{\pgf@declareverticalshading[]}}
\def\pgf@declareverticalshading[#1]#2#3#4{%
  \expandafter\def\csname pgf@deps@pgfshading#2!\endcsname{#1}%
  \expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\pgfutil@empty%
    \global\expandafter\let\csname pgf@num@pgfshading#2!\endcsname=\pgfutil@empty
    \pgfsys@vertshading{#2}{#3}{#4}%
  \else%
    \global\advance\pgf@shadingcount 1\relax
    \global\expandafter\edef\csname pgf@num@pgfshading#2!\endcsname{\pgf@shadingnum}%
    \expandafter\def\csname pgf@func@pgfshading#2!\endcsname{\pgfsys@vertshading}%
    \expandafter\def\csname pgf@args@pgfshading#2!\endcsname{{#3}{#4}}%
    \expandafter\let\csname @pgfshading#2!\endcsname=\pgfutil@empty%
  \fi}



\def\pgfdeclareradialshading{%
  \pgf@setup@shading@model
  \pgfutil@ifnextchar[%
    \pgf@declareradialshading{\pgf@declareradialshading[]}}
\def\pgf@declareradialshading[#1]#2#3#4{%
  \expandafter\def\csname pgf@deps@pgfshading#2!\endcsname{#1}%
  \expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\pgfutil@empty%
    \global\expandafter\let\csname pgf@num@pgfshading#2!\endcsname=\pgfutil@empty
    \pgfsys@radialshading{#2}{#3}{#4}%
  \else%
    \global\advance\pgf@shadingcount 1\relax
    \global\expandafter\edef\csname pgf@num@pgfshading#2!\endcsname{\pgf@shadingnum}%
    \expandafter\def\csname pgf@func@pgfshading#2!\endcsname{\pgfsys@radialshading}%
    \expandafter\def\csname pgf@args@pgfshading#2!\endcsname{{#3}{#4}}%
    \expandafter\let\csname @pgfshading#2!\endcsname=\pgfutil@empty%
  \fi}





\def\pgfdeclarefunctionalshading{%
  \pgf@setup@shading@model
  \pgfutil@ifnextchar[%
    \pgf@declarefunctionalshading{\pgf@declarefunctionalshading[]}}
\def\pgf@declarefunctionalshading[#1]#2#3#4#5#6{%
  \expandafter\def\csname pgf@deps@pgfshading#2!\endcsname{#1}%
  \expandafter\ifx\csname pgf@deps@pgfshading#2!\endcsname\pgfutil@empty%
    \global\expandafter\let\csname pgf@num@pgfshading#2!\endcsname=\pgfutil@empty
    \pgfshade@functionaldo{#2}{#3}{#4}{#5}{#6}%
  \else%
    \global\advance\pgf@shadingcount 1\relax
    \global\expandafter\edef\csname pgf@num@pgfshading#2!\endcsname{\pgf@shadingnum}%
    \expandafter\def\csname pgf@func@pgfshading#2!\endcsname{\pgfshade@functionaldo}%
    \expandafter\def\csname pgf@args@pgfshading#2!\endcsname{{#3}{#4}{#5}{#6}}%
    \expandafter\let\csname @pgfshading#2!\endcsname=\pgfutil@empty%
  \fi}
\def\pgfshade@functionaldo#1#2#3#4#5{%
  \begingroup
    #4%
    \pgfsys@functionalshading{#1}{#2}{#3}{#5}%
    \expandafter\pgfmath@smuggleone\csname @pgfshading#1!\endcsname
  \endgroup
}

\def\pgfshadecolortorgb#1#2{%
  \pgfutil@colorlet{pgf@tempcol}{#1}%
  \pgfutil@extractcolorspec{pgf@tempcol}{\pgf@tempcolor}%
  \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{rgb}{\pgf@rgbcolor}%
  \expandafter\pgfshading@rgb\pgf@rgbcolor\relax%
  \edef#2{\pgf@sys@tonumber{\pgf@xa}\space\pgf@sys@tonumber{\pgf@xb}\space\pgf@sys@tonumber{\pgf@xc}\space}%
  \c@pgf@counta\escapechar%
  \escapechar-1\relax%
  \expandafter\edef\csname\string#2red\endcsname{\pgf@sys@tonumber{\pgf@xa}\space}%
  \expandafter\edef\csname\string#2green\endcsname{\pgf@sys@tonumber{\pgf@xb}\space}%
  \expandafter\edef\csname\string#2blue\endcsname{\pgf@sys@tonumber{\pgf@xc}\space}%
  \escapechar\c@pgf@counta%
}
\def\pgfshading@rgb#1,#2,#3\relax{%
  \pgf@xa=#1pt%
  \pgf@xb=#2pt%
  \pgf@xc=#3pt%
}

\def\pgfshadecolortocmyk#1#2{%
  \pgfutil@colorlet{pgf@tempcol}{#1}%
  \pgfutil@extractcolorspec{pgf@tempcol}{\pgf@tempcolor}%
  \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{cmyk}{\pgf@cmykcolor}%
  \expandafter\pgfshading@cmyk\pgf@cmykcolor\relax%
  \edef#2{\pgf@sys@tonumber{\pgf@xa}\space\pgf@sys@tonumber{\pgf@xb}\space
    \pgf@sys@tonumber{\pgf@xc}\space\pgf@sys@tonumber{\pgf@xd}\space}%
  \c@pgf@counta\escapechar%
  \escapechar-1\relax%
  \expandafter\edef\csname\string#2cyan\endcsname{%
    \pgf@sys@tonumber{\pgf@xa}\space}%
  \expandafter\edef\csname\string#2magenta\endcsname{%
    \pgf@sys@tonumber{\pgf@xb}\space}%
  \expandafter\edef\csname\string#2yellow\endcsname{%
    \pgf@sys@tonumber{\pgf@xc}\space}%
  \expandafter\edef\csname\string#2black\endcsname{%
    \pgf@sys@tonumber{\pgf@xd}\space}%
  \escapechar\c@pgf@counta
}
\def\pgfshading@cmyk#1,#2,#3,#4\relax{%
  \pgf@xa=#1pt%
  \pgf@xb=#2pt%
  \pgf@xc=#3pt%
  \pgf@xd=#4pt%
}

\def\pgfshadecolortogray#1#2{%
  \pgfutil@colorlet{pgf@tempcol}{#1}%
  \pgfutil@extractcolorspec{pgf@tempcol}{\pgf@tempcolor}%
  \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{gray}{\pgf@graycolor}%
  \expandafter\pgfshading@gray\pgf@graycolor\relax
  \edef#2{\pgf@sys@tonumber{\pgf@xa}\space}%
  \c@pgf@counta\escapechar
  \escapechar-1\relax
  \expandafter\edef\csname\string#2gray\endcsname{%
    \pgf@sys@tonumber{\pgf@xa}\space}%
  \escapechar\c@pgf@counta
}
\def\pgfshading@gray#1\relax{%
  \pgf@xa=#1pt%
}


\def\pgffuncshadingrgbtocmyk{%
  1.0 exch sub 3 1 roll
  1.0 exch sub 3 1 roll
  1.0 exch sub 3 1 roll
  3 copy
  2 copy gt { exch } if pop
  2 copy gt { exch } if pop
  dup 3 1 roll sub
  0.0 2 copy lt { exch } if pop
  1.0 2 copy gt { exch } if pop
  4 1 roll
  dup 3 1 roll sub
  0.0 2 copy lt { exch } if pop
  1.0 2 copy gt { exch } if pop
  4 1 roll
  dup 3 1 roll sub
  0.0 2 copy lt { exch } if pop
  1.0 2 copy gt { exch } if pop
  4 1 roll
}

\def\pgffuncshadingrgbtogray{%
  0.11 mul exch 0.59 mul add exch 0.3 mul add
}

\def\pgffuncshadingcmyktorgb{%
  dup 3 1 roll add
  1.0 2 copy gt { exch } if pop
  4 1 roll
  dup 3 1 roll add
  1.0 2 copy gt { exch } if pop
  4 1 roll
  add
  1.0 2 copy gt { exch } if pop
  3 1 roll
  1.0 exch sub
  3 1 roll
  1.0 exch sub
  3 1 roll
  1.0 exch sub
  3 1 roll
}

\def\pgffuncshadingcmyktogray{%
  exch 0.11 mul add exch 0.59 mul add exch 0.3 mul add
  1.0 2 copy gt { exch } if pop
  1.0 exch sub
}

\def\pgffuncshadinggraytorgb{%
  dup dup
}

\def\pgffuncshadinggraytocmyk{%
  0.0 0.0 0.0
  4 3 roll
}


\def\pgfuseshading#1{%
  \edef\pgf@shadingname{@pgfshading#1}%
  \pgf@tryextensions{\pgf@shadingname}{\pgfalternateextension}%
  \expandafter\pgfutil@ifundefined\expandafter{\pgf@shadingname}%
  {\pgferror{Undefined shading "#1"}}%
  {%
    \edef\pgf@shade@adds{\csname pgf@num\pgf@shadingname\endcsname}%
    \pgfutil@ifundefined{pgf@deps\pgf@shadingname}%
    {}%
    {%
      \pgf@setup@shading@model
      \begingroup
        \pgfutil@globalcolorsfalse
        \edef\@list{\csname pgf@deps\pgf@shadingname\endcsname}%
        \pgfutil@for\@temp:=\@list\do{%
          \pgfutil@ifundefined{applycolormixins}{}{\applycolormixins{\@temp}}%
          \pgfutil@extractcolorspec{\@temp}{\pgf@tempcolor}%
          \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{\pgf@shading@model}{\pgf@color}%
          \edef\pgf@shade@adds{\pgf@shade@adds,\pgf@color}%
        }%
        \pgfmath@smuggleone\pgf@shade@adds
      \endgroup
    }%
    \expandafter\pgf@strip@shadename\pgf@shadingname!!%
    \edef\pgf@shadingxname{@pgfshading\pgf@basename\pgf@shade@adds!}%
    \pgfutil@ifundefined{\pgf@shadingxname}%
    {%
      \begingroup
        \edef\@temp{\expandafter\noexpand\csname pgf@func\pgf@shadingname\endcsname}%
        \edef\@args{{\pgf@basename\pgf@shade@adds}}%
        \expandafter\expandafter\expandafter\def
        \expandafter\expandafter\expandafter\@@args
        \expandafter\expandafter\expandafter{\csname pgf@args\pgf@shadingname\endcsname}%
        \expandafter\expandafter\expandafter\@temp\expandafter\@args\@@args
        \expandafter\pgfmath@smuggleone\csname\pgf@shadingxname\endcsname
      \endgroup
    }%
    {}%
    \pgf@invokeshading{\csname\pgf@shadingxname\endcsname}%
  }%
}

\def\pgf@strip@shadename @pgfshading#1!!!{\def\pgf@basename{#1}}

\def\pgf@invokeshading#1{%
  \ifpgfpicture%
    \pgfsys@shadinginsidepgfpicture{#1}%
  \else%
    \pgfsys@shadingoutsidepgfpicture{#1}%
  \fi%
}



\def\pgfaliasshading#1#2{%
  \expandafter\let\expandafter\pgf@temp\expandafter=\csname @pgfshading#2!\endcsname%
  \expandafter\let\csname @pgfshading#1!\endcsname=\pgf@temp%
  \expandafter\let\expandafter\pgf@temp\expandafter=\csname pgf@num@pgfshading#2!\endcsname%
  \expandafter\let\csname pgf@num@pgfshading#1!\endcsname=\pgf@temp%
  \expandafter\let\expandafter\pgf@temp\expandafter=\csname pgf@deps@pgfshading#2!\endcsname%
  \expandafter\let\csname pgf@deps@pgfshading#1!\endcsname=\pgf@temp%
  \expandafter\let\expandafter\pgf@temp\expandafter=\csname pgf@func@pgfshading#2!\endcsname%
  \expandafter\let\csname pgf@func@pgfshading#1!\endcsname=\pgf@temp%
  \expandafter\let\expandafter\pgf@temp\expandafter=\csname pgf@args@pgfshading#2!\endcsname%
  \expandafter\let\csname pgf@args@pgfshading#1!\endcsname=\pgf@temp%
}





\def\pgfshadepath#1#2{%
  \ifdim\pgf@pathminx=16000pt%
    \pgfwarning{No path specified that can be filled}%
  \else%
    \begingroup%
      \pgf@xb=.5\pgf@pathmaxx%
      \advance\pgf@xb by.5\pgf@pathminx%
      \pgf@yb=.5\pgf@pathmaxy%
      \advance\pgf@yb by.5\pgf@pathminy%
      \pgfmathparse{#2}%
      \let\pgfshade@angle=\pgfmathresult
      \pgfmathsin@\pgfshade@angle
      \let\pgfshade@sin=\pgfmathresult
      \pgfmathcos@\pgfshade@angle
      \let\pgfshade@cos=\pgfmathresult
      \pgf@xa=\pgf@pathmaxx
      \advance\pgf@xa by-\pgf@pathminx
      \pgf@ya=\pgf@pathmaxy
      \advance\pgf@ya by-\pgf@pathminy
      \pgfmathabs@\pgfshade@sin
      \let\pgfshade@abssin=\pgfmathresult
      \pgfmathabs@\pgfshade@cos
      \let\pgfshade@abscos=\pgfmathresult
      \pgf@xc=\pgfshade@abscos\pgf@xa
      \advance\pgf@xc by\pgfshade@abssin\pgf@ya
      \pgf@yc=\pgfshade@abssin\pgf@xa
      \advance\pgf@yc by\pgfshade@abscos\pgf@ya
      \pgfmathadd@\pgfshade@abscos\pgfshade@abssin
      \pgfmathdivide@{.01992528}{\pgfmathresult}%
      \pgf@xc=\pgfmathresult\pgf@xc
      \pgf@yc=\pgfmathresult\pgf@yc
      \ifdim\pgf@xc<0.0001pt
        \ifdim\pgf@xc>-0.0001pt
          \pgf@no@shadetrue
        \fi
      \fi
      \ifdim\pgf@yc<0.0001pt
        \ifdim\pgf@yc>-0.0001pt
          \pgf@no@shadetrue
        \fi
      \fi
      \ifpgf@no@shade\else
        \pgfsys@beginscope
          \pgfsyssoftpath@invokecurrentpath
          \pgfsys@clipnext
          \pgfsys@discardpath
          \pgfsys@transformcm{1}{0}{0}{1}{\the\pgf@xb}{\the\pgf@yb}%
          \pgf@x=\pgfshade@sin pt%
          \pgf@xa=-\pgf@x%
          \pgfsys@transformcm{\pgfshade@cos}{\pgfshade@sin}{\pgf@sys@tonumber{\pgf@xa}}{\pgfshade@cos}{0pt}{0pt}%
          \pgfsys@transformcm{\pgf@sys@tonumber{\pgf@xc}}{0}{0}{\pgf@sys@tonumber{\pgf@yc}}{0pt}{0pt}%
          \ifx\pgf@shade@extra@transform\pgfutil@empty%
          \else%
            \pgflowlevel{\pgf@shade@extra@transform}%
          \fi%
          \pgfuseshading{#1}%
        \pgfsys@endscope%
      \fi%
    \endgroup%
  \fi%
}

\newif\ifpgf@no@shade


\def\pgfsetadditionalshadetransform#1{\def\pgf@shade@extra@transform{#1}}
\let\pgf@shade@extra@transform=\pgfutil@empty





\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoreshade.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoretransformations.code.tex ====

\ProvidesFileRCS{pgfcoretransformations.code.tex}



\newdimen\pgf@pt@x
\newdimen\pgf@pt@y

\newdimen\pgf@pt@temp

\newif\ifpgf@pt@identity
\pgf@pt@identitytrue

\def\pgf@pt@aa{1.0} \def\pgf@pt@ab{0.0}
\def\pgf@pt@ba{0.0} \def\pgf@pt@bb{1.0}




\def\pgfgettransform#1{%
  \edef#1{{\pgf@pt@aa}{\pgf@pt@ab}{\pgf@pt@ba}{\pgf@pt@bb}{\the\pgf@pt@x}{\the\pgf@pt@y}}%
}

\def\pgfgettransformentries#1#2#3#4#5#6{%
  \edef#1{\pgf@pt@aa}%
  \edef#2{\pgf@pt@ab}%
  \edef#3{\pgf@pt@ba}%
  \edef#4{\pgf@pt@bb}%
  \edef#5{\the\pgf@pt@x}%
  \edef#6{\the\pgf@pt@y}%
}%
\def\pgfsettransformentries#1#2#3#4#5#6{%
  \pgfsettransform{{#1}{#2}{#3}{#4}{#5}{#6}}%
}%


\def\pgfsettransform#1{%
  \edef\pgf@temp{#1}%
  \expandafter\pgf@settransform\pgf@temp%
}
\def\pgf@settransform#1#2#3#4#5#6{%
  \def\pgf@pt@aa{#1}%
  \def\pgf@pt@ab{#2}%
  \def\pgf@pt@ba{#3}%
  \def\pgf@pt@bb{#4}%
  \pgf@pt@x=#5%
  \pgf@pt@y=#6%
  \edef\pgf@idtest{#1,#2,#3,#4}%
  \ifx\pgf@idtest\pgf@idmatrixtext%
    \pgf@pt@identitytrue%
  \else%
    \pgf@pt@identityfalse%
  \fi%
}

\def\pgf@idmatrixtext{1.0,0.0,0.0,1.0}
\def\pgf@zerozerotext{0.0,0.0}
\def\pgf@one@text{1.0}
\def\pgf@zero@text{0.0}


\def\pgf@pos@transform#1#2{%
  \ifpgf@pt@identity%
  \else%
    \pgf@pt@temp=#1%
    #1=\pgf@pt@aa#1%
    \advance#1 by\pgf@pt@ba#2%
    #2=\pgf@pt@bb#2%
    \advance#2 by\pgf@pt@ab\pgf@pt@temp%
  \fi%
  \advance#1 by\pgf@pt@x%
  \advance#2 by\pgf@pt@y%
}
\def\pgf@pos@transform@glob{%
  \ifpgf@pt@identity%
  \else%
    \pgf@pt@temp=\pgf@x%
    \global\pgf@x=\pgf@pt@aa\pgf@x%
    \global\advance\pgf@x by\pgf@pt@ba\pgf@y%
    \global\pgf@y=\pgf@pt@bb\pgf@y%
    \global\advance\pgf@y by\pgf@pt@ab\pgf@pt@temp%
  \fi%
  \global\advance\pgf@x by\pgf@pt@x%
  \global\advance\pgf@y by\pgf@pt@y%
}



\def\pgftransforminvert{%
  \pgf@pt@x=-\pgf@pt@x
  \pgf@pt@y=-\pgf@pt@y
  \ifpgf@pt@identity%
  \else%
    \edef\pgf@zerotest{\pgf@pt@ab,\pgf@pt@ba}%
    \ifx\pgf@zerotest\pgf@zerozerotext%
      \pgfmathreciprocal@{\pgf@pt@aa}%
      \let\pgf@pt@aa\pgfmathresult%
      \pgfmathreciprocal@{\pgf@pt@bb}%
      \let\pgf@pt@bb\pgfmathresult%
    \else%
      {%
        \pgfutil@tempdima=\pgf@pt@aa pt%
        \pgfutil@tempdima=\pgf@pt@bb\pgfutil@tempdima%
        \pgfutil@tempdimb=\pgf@pt@ba pt%
        \pgfutil@tempdimb=\pgf@pt@ab\pgfutil@tempdimb%
        \advance\pgfutil@tempdima by -\pgfutil@tempdimb%
        \pgfmathreciprocal@{\pgf@sys@tonumber{\pgfutil@tempdima}}%
        \pgfutil@tempdima=\pgfmathresult pt%
        \pgf@x=\pgf@pt@bb\pgfutil@tempdima%
        \xdef\pgf@new@pt@aa{\pgf@sys@tonumber{\pgf@x}}%
        \pgf@x=\pgf@pt@aa\pgfutil@tempdima%
        \xdef\pgf@new@pt@bb{\pgf@sys@tonumber{\pgf@x}}%
        \pgfutil@tempdima=-\pgfutil@tempdima%
        \pgf@x=\pgf@pt@ba\pgfutil@tempdima%
        \xdef\pgf@new@pt@ba{\pgf@sys@tonumber{\pgf@x}}%
        \pgf@x=\pgf@pt@ab\pgfutil@tempdima%
        \xdef\pgf@new@pt@ab{\pgf@sys@tonumber{\pgf@x}}%
      }%
      \let\pgf@pt@aa\pgf@new@pt@aa%
      \let\pgf@pt@ab\pgf@new@pt@ab%
      \let\pgf@pt@ba\pgf@new@pt@ba%
      \let\pgf@pt@bb\pgf@new@pt@bb%
    \fi%
    \pgf@pt@temp=\pgf@pt@x%
    \pgf@pt@x=\pgf@pt@aa\pgf@pt@x%
    \advance\pgf@pt@x by\pgf@pt@ba\pgf@pt@y%
    \pgf@pt@y=\pgf@pt@bb\pgf@pt@y%
    \advance\pgf@pt@y by\pgf@pt@ab\pgf@pt@temp%
  \fi%
}





\def\pgftransformcm#1#2#3#4#5{%
  \edef\pgf@marshal{\noexpand\pgf@transformcm{#1}{#2}{#3}{#4}}%
  \pgf@marshal{#5}%
}
\def\pgf@transformcm#1#2#3#4#5{%
  {%
    \pgf@process{#5}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgfmathsetlength\pgf@x{#1}%
    \pgfmathsetlength\pgf@y{#2}%
    \pgf@xa=\pgf@pt@aa\pgf@x%
    \advance\pgf@xa by \pgf@pt@ba\pgf@y%
    \pgf@ya=\pgf@pt@ab\pgf@x%
    \advance\pgf@ya by \pgf@pt@bb\pgf@y%
    \pgfmathsetlength\pgf@x{#3}%
    \pgfmathsetlength\pgf@y{#4}%
    \pgf@xb=\pgf@pt@aa\pgf@x%
    \advance\pgf@xb by \pgf@pt@ba\pgf@y%
    \pgf@yb=\pgf@pt@ab\pgf@x%
    \advance\pgf@yb by \pgf@pt@bb\pgf@y%
    \pgf@x=\pgf@pt@aa\pgf@xc%
    \advance\pgf@x by\pgf@pt@ba\pgf@yc%
    \advance\pgf@x by\pgf@pt@x%
    \pgf@y=\pgf@pt@ab\pgf@xc%
    \advance\pgf@y by\pgf@pt@bb\pgf@yc%
    \advance\pgf@y by\pgf@pt@y%
    \global\pgf@x=\pgf@x%
    \global\pgf@y=\pgf@y%
    \xdef\pgf@tempaa{\pgf@sys@tonumber{\pgf@xa}}%
    \xdef\pgf@tempab{\pgf@sys@tonumber{\pgf@ya}}%
    \xdef\pgf@tempba{\pgf@sys@tonumber{\pgf@xb}}%
    \xdef\pgf@tempbb{\pgf@sys@tonumber{\pgf@yb}}%
  }%
  \pgf@pt@x=\pgf@x%
  \pgf@pt@y=\pgf@y%
  \let\pgf@pt@aa=\pgf@tempaa%
  \let\pgf@pt@ba=\pgf@tempba%
  \let\pgf@pt@ab=\pgf@tempab%
  \let\pgf@pt@bb=\pgf@tempbb%
  \edef\pgf@idtest{\pgf@pt@aa,\pgf@pt@ba,\pgf@pt@ab,\pgf@pt@bb}%
  \ifx\pgf@idtest\pgf@idmatrixtext%
    \pgf@pt@identitytrue%
  \else%
    \pgf@pt@identityfalse%
  \fi%
}




\def\pgftransformtriangle#1#2#3{%
  \pgf@process{#2}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{#3}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@process{#1}%
  \advance\pgf@xa by-\pgf@x%
  \advance\pgf@ya by-\pgf@y%
  \advance\pgf@xb by-\pgf@x%
  \advance\pgf@yb by-\pgf@y%
  \pgftransformcm%
  {\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@ya}%
  {\pgf@sys@tonumber\pgf@xb}{\pgf@sys@tonumber\pgf@yb}%
  {\pgfpoint{\pgf@x}{\pgf@y}}%
}




\def\pgftransformreset{%
  \pgf@pt@x=0pt%
  \pgf@pt@y=0pt%
  \let\pgf@pt@aa\pgf@one@text%
  \let\pgf@pt@ba\pgf@zero@text%
  \let\pgf@pt@ab\pgf@zero@text%
  \let\pgf@pt@bb\pgf@one@text%
  \pgf@pt@identitytrue%
}



\def\pgftransformresetnontranslations{%
  \let\pgf@pt@aa\pgf@one@text%
  \let\pgf@pt@ba\pgf@zero@text%
  \let\pgf@pt@ab\pgf@zero@text%
  \let\pgf@pt@bb\pgf@one@text%
  \pgf@pt@identitytrue%
}





\def\pgftransformshift#1{\pgftransformcm{1}{0}{0}{1}{#1}}
\def\pgftransformxshift#1{\pgftransformcm{1}{0}{0}{1}{\pgfpoint{#1}{+0pt}}}
\def\pgftransformyshift#1{\pgftransformcm{1}{0}{0}{1}{\pgfpoint{+0pt}{#1}}}





\def\pgftransformscale#1{\pgftransformcm{#1}{0}{0}{#1}{\pgfpointorigin}}
\def\pgftransformxscale#1{\pgftransformcm{#1}{0}{0}{1.0}{\pgfpointorigin}}
\def\pgftransformyscale#1{\pgftransformcm{1.0}{0}{0}{#1}{\pgfpointorigin}}




\def\pgftransformxslant#1{\pgftransformcm{1.0}{0}{#1}{1.0}{\pgfpointorigin}}
\def\pgftransformyslant#1{\pgftransformcm{1.0}{#1}{0}{1.0}{\pgfpointorigin}}




\def\pgftransformrotate#1{%
  \pgfmathparse{#1}%
  \let\pgftransform@angle=\pgfmathresult%
  \pgfmathsin@{\pgftransform@angle}%
  \let\pgftransform@sin=\pgfmathresult%
  \pgfmathcos@{\pgftransform@angle}%
  \let\pgftransform@cos=\pgfmathresult%
  \pgf@x=\pgftransform@sin pt%
  \pgf@xa=-\pgf@x%
  \pgftransformcm{\pgftransform@cos}{\pgftransform@sin}{\pgf@sys@tonumber{\pgf@xa}}{\pgftransform@cos}{\pgfpointorigin}%
}




\newif\ifpgfslopedattime
\newif\ifpgfallowupsidedownattime
\newif\ifpgfresetnontranslationattime


\def\pgftransformlineattime#1#2#3{%
  \pgf@process{#2}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@process{#3}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgftransformshift{\pgfpointlineattime{#1}{\pgfqpoint{\pgf@xb}{\pgf@yb}}{\pgfqpoint{\pgf@xc}{\pgf@yc}}}%
  \ifpgfresetnontranslationattime%
    \pgftransformresetnontranslations%
  \fi%
  \ifpgfslopedattime%
    \advance\pgf@xc by-\pgf@xb%
    \advance\pgf@yc by-\pgf@yb%
    \ifpgfallowupsidedownattime%
    \else%
      \ifdim\pgf@xc<0pt%
        \pgf@xc=-\pgf@xc%
        \pgf@yc=-\pgf@yc%
      \fi%
    \fi%
    \pgf@x=\pgf@xc%
    \pgf@y=\pgf@yc%
    \pgfpointnormalised{}%
    \pgf@ya=-\pgf@y%
    \pgftransformcm%
    {\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}%
    {\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfpointorigin}%
  \fi%
}



\def\pgftransformarcaxesattime#1#2#3#4#5#6{%
  \pgfpointarcaxesattime{#1}{#2}{#3}{#4}{#5}{#6}%
  \pgftransformshift{\pgfqpoint{\pgf@x}{\pgf@y}}%
  \ifpgfresetnontranslationattime%
    \pgftransformresetnontranslations%
  \fi%
  \ifpgfslopedattime%
    \pgf@x=\pgf@xa%
    \pgf@y=\pgf@ya%
    \pgf@process{\pgfpointnormalised{}}%
    \ifpgfallowupsidedownattime%
    \else%
      \ifdim\pgf@x<0pt%
        \pgf@x=-\pgf@x%
        \pgf@y=-\pgf@y%
      \fi%
    \fi%
    \pgf@ya=-\pgf@y%
    \pgftransformcm%
    {\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}%
    {\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfpointorigin}%
  \fi%
}




\def\pgftransformcurveattime#1#2#3#4#5{%
  \pgfpointcurveattime{#1}{#2}{#3}{#4}{#5}%
  \pgftransformshift{\pgfqpoint{\pgf@x}{\pgf@y}}%
  \ifpgfresetnontranslationattime%
    \pgftransformresetnontranslations%
  \fi%
  \ifpgfslopedattime%
    \pgf@x=\pgf@xa%
    \pgf@y=\pgf@ya%
    \advance\pgf@x by-\pgf@xb%
    \advance\pgf@y by-\pgf@yb%
    \ifpgfallowupsidedownattime%
    \else%
      \ifdim\pgf@x<0pt%
        \pgf@x=-\pgf@x%
        \pgf@y=-\pgf@y%
      \fi%
    \fi%
    \pgfpointnormalised{}%
    \pgf@ya=-\pgf@y%
    \pgftransformcm%
    {\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}%
    {\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfpointorigin}%
  \fi%
}






\def\pgftransformarrow#1#2{%
  \pgf@process{#2}%
  \pgftransformshift{}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{#1}%
  \advance\pgf@xa by-\pgf@x%
  \advance\pgf@ya by-\pgf@y%
  \pgf@x=\pgf@xa%
  \pgf@y=\pgf@ya%
  \pgfpointnormalised{}%
  \pgf@ya=-\pgf@y%
  \pgftransformcm%
  {\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}%
  {\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfqpoint{0pt}{0pt}}%
}





\def\pgftransformationadjustments{%
  \ifpgf@pt@identity%
    \let\pgfhorizontaltransformationadjustment\pgf@one@text%
    \let\pgfverticaltransformationadjustment\pgf@one@text%
  \else%
    {%
      \pgf@pt@x0pt%
      \pgf@pt@y0pt%
      \pgfpointtransformed{\pgfqpoint{1pt}{0pt}}%
      \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
      \pgfmathreciprocal@{\pgfmathresult}%
      \global\let\pgf@temp@hori\pgfmathresult
      \pgfpointtransformed{\pgfqpoint{0pt}{1pt}}%
      \pgfmathveclen@{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}%
      \pgfmathreciprocal@{\pgfmathresult}%
      \global\let\pgf@temp@vert\pgfmathresult
      \xdef\pgf@marshal@b{\def\noexpand\pgfverticaltransformationadjustment{\pgfmathresult}}
    }%
    \let\pgfhorizontaltransformationadjustment\pgf@temp@hori%
    \let\pgfverticaltransformationadjustment\pgf@temp@vert%
  \fi%
}

\let\pgfhorizontaltransformationadjustment\pgf@one@text
\let\pgfverticaltransformationadjustment\pgf@one@text




\def\pgflowlevelsynccm{%
  \pgfsys@transformcm%
  {\pgf@pt@aa}{\pgf@pt@ab}%
  {\pgf@pt@ba}{\pgf@pt@bb}%
  {\pgf@pt@x}{\pgf@pt@y}%
  \pgftransformreset%
  \pgf@relevantforpicturesizefalse%
}




\def\pgflowlevel#1{%
  {%
    \pgftransformreset%
    #1%
    \pgflowlevelsynccm%
  }%
  \pgf@relevantforpicturesizefalse%
}

\def\pgflowlevelscope#1{\pgfscope\pgflowlevel{#1}}
\def\endpgflowlevelscope{\endpgfscope}

\long\def\pgflowlevelobj#1#2{\pgfscope{\pgflowlevel{#1}#2}\endpgfscope}





\def\pgfviewboxscope#1#2#3#4#5{%
  {%
    \pgf@process{#1}%
    \pgf@pos@transform@glob
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{#2}%
    \pgf@pos@transform@glob
    \ifdim\pgf@x<\pgf@xa%
      \pgf@xb\pgf@x%
      \pgf@xc\pgf@xa%
    \else%
      \pgf@xb\pgf@xa%
      \pgf@xc\pgf@x%
    \fi%
    \ifdim\pgf@y<\pgf@ya%
      \pgf@yb\pgf@y%
      \pgf@yc\pgf@ya%
    \else%
      \pgf@yb\pgf@ya%
      \pgf@yc\pgf@y%
    \fi%
    \pgf@process{#3}%
    \pgf@pos@transform@glob
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{#4}%
    \pgf@pos@transform@glob
    \ifdim\pgf@x<\pgf@xa%
    \else%
      \pgfutil@tempdima\pgf@x
      \pgf@x\pgf@xa%
      \pgf@xa\pgfutil@tempdima%
    \fi%
    \ifdim\pgf@y<\pgf@ya%
    \else%
      \pgfutil@tempdima\pgf@y
      \pgf@y\pgf@ya%
      \pgf@ya\pgfutil@tempdima%
    \fi%
    \pgfusetype{.view}%
    \edef\pgf@marshal{\expandafter\noexpand\csname pgfsys@viewbox#5\endcsname{\the\pgf@x}{\the\pgf@y}{\the\pgf@xa}{\the\pgf@ya}{\the\pgf@xb}{\the\pgf@yb}{\the\pgf@xc}{\the\pgf@yc}}%
    \pgf@marshal%
  }%
  \pgf@relevantforpicturesizefalse%
}

\def\endpgfviewboxscope{\pgfsys@endviewbox}

\let\startpgfviewboxscope=\pgfviewboxscope
\let\stoppgfviewboxscope=\endpgfviewboxscope


\let\pgfapproximatenonlineartranslation\relax
\let\pgfapproximatenonlineartransformation\relax
\def\pgftransformnonlinear#1{\pgferror{You need to say
    \string\usepgfmodule{nonlineartransformations} to use nonlinear transformations}}


\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoretransformations.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoretransparency.code.tex ====

\ProvidesFileRCS{pgfcoretransparency.code.tex}



\def\pgfsetstrokeopacity#1{%
  \pgfmathparse{#1}%
  \expandafter\pgfsys@stroke@opacity\expandafter{\pgfmathresult}}



\def\pgfsetfillopacity#1{%
  \pgfmathparse{#1}%
  \expandafter\pgfsys@fill@opacity\expandafter{\pgfmathresult}}




\def\pgfsetblendmode#1{\pgfsys@blend@mode{#1}}



\def\pgfdeclarefading#1#2{%
  \setbox\pgfutil@tempboxa=\hbox{{\pgfsys@beginscope\pgfutil@color{white}\ignorespaces#2\pgfsys@endscope}}%
  \pgfsys@fadingfrombox{#1}\pgfutil@tempboxa%
}

\pgfutil@colorlet{pgftransparent}{black}



\def\pgfsetfading#1#2{%
  {%
    \pgftransformreset%
    #2%
    \pgfgettransform{\pgftrans@temp}%
    \edef\pgf@marshal{\noexpand\pgfsys@usefading{#1}\pgftrans@temp}%
    \pgf@marshal%
  }%
}




\def\pgfsetfadingforcurrentpath#1#2{%
  \ifdim\pgf@pathminx=16000pt%
    \pgfsetfading{#1}{#2}%
  \else%
    \pgfsetfading{#1}{%
      \pgf@xb=.5\pgf@pathmaxx%
      \advance\pgf@xb by.5\pgf@pathminx%
      \pgf@yb=.5\pgf@pathmaxy%
      \advance\pgf@yb by.5\pgf@pathminy%
      \pgf@xc=\pgf@pathmaxx%
      \advance\pgf@xc by-\pgf@pathminx%
      \ifdim\pgf@xc<0.1pt\pgf@xc=0.1pt\fi%
      \pgf@yc=\pgf@pathmaxy%
      \advance\pgf@yc by-\pgf@pathminy%
      \ifdim\pgf@yc<0.1pt\pgf@yc=0.1pt\fi%
      \pgf@xc=.02\pgf@xc%
      \pgf@yc=.02\pgf@yc%
      \pgftransformcm{1}{0}{0}{1}{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
      \pgftransformcm{\pgf@sys@tonumber{\pgf@xc}}{0}{0}{\pgf@sys@tonumber{\pgf@yc}}{\pgfpointorigin}%
      \pgfsys@clipfading%
      #2%
    }%
  \fi%
}





\def\pgfsetfadingforcurrentpathstroked#1#2{%
  \ifdim\pgf@pathminx=16000pt%
    \pgfsetfading{#1}{#2}%
  \else%
    \pgfsetfading{#1}{%
      \pgf@xb=.5\pgf@pathmaxx%
      \advance\pgf@xb by.5\pgf@pathminx%
      \pgf@yb=.5\pgf@pathmaxy%
      \advance\pgf@yb by.5\pgf@pathminy%
      \pgf@xc=\pgf@pathmaxx%
      \advance\pgf@xc by-\pgf@pathminx%
      \advance\pgf@xc by\pgflinewidth%
      \ifdim\pgf@xc<0.1pt\pgf@xc=0.1pt\fi%
      \pgf@yc=\pgf@pathmaxy%
      \advance\pgf@yc by-\pgf@pathminy%
      \advance\pgf@yc by\pgflinewidth%
      \ifdim\pgf@yc<0.1pt\pgf@yc=0.1pt\fi%
      \pgf@xc=.02\pgf@xc%
      \pgf@yc=.02\pgf@yc%
      \pgftransformcm{1}{0}{0}{1}{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
      \pgftransformcm{\pgf@sys@tonumber{\pgf@xc}}{0}{0}{\pgf@sys@tonumber{\pgf@yc}}{\pgfpointorigin}%
      \pgfsys@clipfading%
      #2%
    }%
  \fi%
}



\def\pgftransparencygroup{%
  \pgfutil@ifnextchar[{\pgftransparencygroup@}{\pgftransparencygroup@[]}%
}
\def\pgftransparencygroup@[#1]{%
  \begingroup%
    \pgfkeys{/pgf/transparency group options/.cd,%
      isolated=false,
      knockout=false,
      #1}%
    \setbox\pgfutil@tempboxa=\hbox\bgroup%
}
\pgfkeys{
  /pgf/transparency group options/.cd,
  isolated/.is if=pgfsys@transparency@group@isolated,
  knockout/.is if=pgfsys@transparency@group@knockout
}

\def\endpgftransparencygroup{%
    \egroup%
    \ifdim\pgf@picminx=16000pt%
    \else%
      \advance\pgf@picminx by-1cm%
      \advance\pgf@picmaxx by1cm%
      \advance\pgf@picminy by-1cm%
      \advance\pgf@picmaxy by1cm%
      \setbox\pgfutil@tempboxa=\hbox{%
        \vrule width0pt height\pgf@picmaxy depth-\pgf@picminy%
        \hskip-\pgf@picminx%
        \box\pgfutil@tempboxa%
        \hskip\pgf@picmaxx%
      }%
      \pgfsys@transparencygroupfrombox\pgfutil@tempboxa%
      \wd\pgfutil@tempboxa=0pt%
      \ht\pgfutil@tempboxa=0pt%
      \dp\pgfutil@tempboxa=0pt%
      \hskip\pgf@picminx\box\pgfutil@tempboxa\hskip-\pgf@picminx%
    \fi%
  \endgroup%
}

\let\startpgftransparencygroup=\pgftransparencygroup
\let\stoppgftransparencygroup=\endpgftransparencygroup

\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfcoretransparency.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgffor.code.tex ====

\ProvidesPackageRCS{pgffor.code.tex}

\ifdefined\pgfmathloaded\else
  \input pgfmath.code.tex
\fi

\newdimen\pgffor@iter
\newdimen\pgffor@skip
\newif\ifpgffor@continue


\def\pgffor@reset@hooks{%
  \let\pgffor@beginhook=\relax%
  \let\pgffor@endhook=\relax%
  \let\pgffor@afterhook=\relax%
}
\pgffor@reset@hooks


\newtoks\pgffor@stack
\pgffor@stack={{}{}{}}

\def\pgffor@stackpush#1{%
    \def\pgffor@stacktemp{#1}%
    \expandafter\expandafter\expandafter\pgffor@stack\expandafter\expandafter\expandafter=%
    \expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter%
        {\expandafter\pgffor@stacktemp\expandafter}\the\pgffor@stack}%
}

\def\pgffor@stackpop{\expandafter\pgffor@@stackpop\the\pgffor@stack\pgffor@stackstop}
\def\pgffor@@stackpop#1#2\pgffor@stackstop{\pgffor@stack{#2}#1}

\def\pgffor@emptyvalues{, \pgffor@stop,}%

\def\pgffor@foreach{%
    \pgffor@atbeginforeach%
    \let\pgffor@assign@before@code=\pgfutil@empty%
    \let\pgffor@assign@after@code=\pgfutil@empty%
    \let\pgffor@assign@once@code=\pgfutil@empty%
    \let\pgffor@remember@code=\pgfutil@empty%
    \let\pgffor@remember@once@code=\pgfutil@empty%
    \pgffor@alphabeticsequencefalse%
    \pgffor@contextfalse%
    \let\pgffor@var=\pgfutil@empty
    \pgffor@vars%
}

\let\foreach=\pgffor@foreach

\def\pgffor@vars{%
    \pgfutil@ifnextchar i{\pgffor@@vars@end}{%
        \pgfutil@ifnextchar[{\pgffor@@vars@opt}{%
            \pgfutil@ifnextchar/{\pgffor@@vars@slash@gobble}{%
                \pgffor@@vars}}}}%

\def\pgffor@@vars@end in{\pgfutil@ifnextchar\bgroup{\pgffor@normal@list}{\pgffor@macro@list}}
\def\pgffor@@vars@opt[#1]{\pgfkeys{/pgf/foreach/.cd,#1}\pgffor@vars}
\def\pgffor@@vars#1{\pgffor@var@add#1\pgffor@stop\pgffor@vars}
\def\pgffor@@vars@slash@gobble/{\pgffor@@vars}

\def\pgffor@var@add#1#2\pgffor@stop{%
    \ifx\pgffor@var\pgfutil@empty%
        \def\pgffor@var{#1}%
        \def\pgffor@mainvar{#1}%
    \else%
        \expandafter\def\expandafter\pgffor@var\expandafter{\pgffor@var/#1}%
    \fi%
}

\def\pgffor@expand@list@true{\let\pgffor@expand@list\edef}
\def\pgffor@expand@list@false{\let\pgffor@expand@list\def}
\def\pgffor@macro@list#1{%
  \expandafter\pgffor@normal@list\expandafter{#1}}
\def\pgffor@normal@list#1{%
  \pgffor@expand@list\pgffor@values{#1}%
  \expandafter\def\expandafter\pgffor@values\expandafter{\pgffor@values, \pgffor@stop,}%
  \ifx\pgffor@values\pgffor@emptyvalues
    \def\pgffor@values{\pgffor@stop,}%
  \fi%
  \let\pgffor@body=\pgfutil@empty%
  \global\pgffor@continuetrue%
  \pgffor@collectbody}
\def\pgffor@collectbody{%
  \pgfutil@ifnextchar\foreach{\pgffor@collectforeach}{%
    \pgfutil@ifnextchar\bgroup{\pgffor@collectargument}{\pgffor@collectsemicolon}}%
}

\def\pgffor@collectforeach\foreach#1in{%
  \pgfutil@ifnextchar\bgroup{\pgffor@collectforeach@normal{#1}}{\pgffor@collectforeach@macro{#1}}}
\def\pgffor@collectforeach@macro#1#2{%
  \expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter{\pgffor@body\foreach#1in#2}%
  \pgffor@collectbody%
}
\def\pgffor@collectforeach@normal#1#2{%
  \expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter{\pgffor@body\foreach#1in{#2}}%
  \pgffor@collectbody%
}
\long\def\pgffor@collectargument#1{%
    \expandafter\pgfutil@in@\expandafter\foreach\expandafter{\pgffor@body}%
    \ifpgfutil@in@%
        \expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter%
    {\pgffor@body{#1}}%
    \else%
        \expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter%
    {\pgffor@body#1}%
    \fi%
  \pgffor@iterate%
}

\def\pgffor@collectsemicolon{%
  \let\pgffor@next=\pgffor@collectnormalsemicolon%
  \ifnum\the\catcode`\;=\active\relax%
    \let\pgffor@next=\pgffor@collectactivesemicolon%
  \fi%
  \pgffor@next%
}

\def\pgffor@collectnormalsemicolon#1;{%
  \expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter{\pgffor@body#1;}%
  \pgffor@iterate%
}

{
  \catcode`\;=\active

  \gdef\pgffor@collectactivesemicolon#1;{%
    \expandafter\long\expandafter\def\expandafter\pgffor@body\expandafter{\pgffor@body#1;}%
    \pgffor@iterate%
  }
}

\def\pgffor@iterate{%
  \let\pgffor@last=\pgfutil@empty%
  \let\pgffor@prevlast=\pgfutil@empty%
  \let\pgffor@dotsend=\pgfutil@empty%
  \let\pgffor@dots@pre=\pgfutil@empty%
  \let\pgffor@dots@post=\pgfutil@empty%
  \expandafter\pgffor@scan\pgffor@values}

\def\pgffor@stop{\pgffor@stop}%
\def\pgffor@dots{...}%

\def\pgffor@scan{\pgfutil@ifnextchar({\pgffor@scanround}{\pgffor@scanone}}
\def\pgffor@scanround(#1)#2,{\def\pgffor@value{(#1)#2}\pgffor@scanned}
\def\pgffor@scanone#1,{\def\pgffor@value{#1}\pgffor@scanned}


\newif\ifpgffor@dots@in@
\def\pgffor@dots@in@#1...#2#3\pgffor@stop{%
    \ifx\pgffor@dots@@#2%
        \pgffor@dots@in@false%
    \else%
        \pgffor@dots@in@true%
    \fi%
}

\def\pgffor@dots@@{\pgffor@dots@@}

\def\pgffor@scanned{%
  \ifx\pgffor@value\pgffor@stop%
    \let\pgffor@next=\pgffor@after%
  \else%
    \expandafter\pgffor@dots@in@\pgffor@value\pgffor@dots@...\pgffor@dots@@\pgffor@stop%
    \ifpgffor@dots@in@%
      \let\pgffor@next=\pgffor@handledots%
    \else%
      \let\pgffor@next=\pgffor@handlevalue%
    \fi%
    \ifpgffor@continue%
    \else%
      \let\pgffor@next=\pgffor@scan%
    \fi%
  \fi%
  \pgffor@next}


\def\pgffor@after{%
  \global\pgffor@continuetrue%
  \pgffor@atendforeach%
  \pgffor@afterhook}

\def\pgffor@handlevalue{%
    \let\pgffor@prevlast=\pgffor@last%
  \let\pgffor@last=\pgffor@value%
  \pgffor@invokebody%
  \pgffor@scan%
}


\def\pgffor@invokebody{%
  \pgffor@begingroup%
    \expandafter\pgfutil@in@\expandafter/\expandafter{\pgffor@var}%
    \ifpgfutil@in@%
      \expandafter\def\expandafter\pgffor@valuerest\expandafter{\pgffor@value//\relax}%
      \expandafter\pgffor@multiassign\pgffor@var/\pgffor@stop/\pgffor@stop/\relax%
    \else%
      \expandafter\expandafter\expandafter\def\expandafter\pgffor@var\expandafter{\pgffor@value}%
    \fi%
    \ifx\pgffor@assign@once@code\pgfutil@empty%
    \else%
        \pgffor@assign@once@code%
    \fi%
    \ifx\pgffor@assign@before@code\pgfutil@empty%
    \else%
        \pgffor@assign@before@code%
    \fi%
    \expandafter\expandafter\expandafter\pgffor@reset@hooks\expandafter\pgffor@beginhook\expandafter\pgffor@body\pgffor@endhook%
    \ifx\pgffor@assign@after@code\pgfutil@empty%
    \else%
        \pgffor@assign@after@code%
    \fi%
  \pgffor@endgroup%
}


\def\pgffor@multiassign#1/#2/\relax{%
  \def\pgffor@currentvar{#1}%
  \def\pgffor@rest{#2}%
  \ifx\pgffor@currentvar\pgffor@stop%
    \let\pgffor@next=\relax%
  \else%
    \let\pgffor@next=\pgffor@multiassignrest%
  \fi%
  \pgffor@next%
}

\def\pgffor@multiassignrest{\expandafter\pgffor@multiassignfinal\pgffor@valuerest}
\def\pgffor@multiassignfinal#1/#2/\relax{%
    \def\pgffor@temp{#1}%
    \ifx\pgffor@currentvar\pgffor@mainvar%
        \ifpgffor@alphabeticsequence%
        \pgffor@makealphabetic\pgffor@temp%
    \fi%
  \fi%
  \def\pgffor@test{#2}%
  \ifx\pgffor@test\pgfutil@empty%
    \expandafter\def\expandafter\pgffor@valuerest\expandafter{\pgffor@temp//\relax}%
  \else%
    \def\pgffor@valuerest{#2/\relax}%
  \fi%
  \expandafter\expandafter\expandafter\def\expandafter\pgffor@currentvar\expandafter{\pgffor@temp}%
  \expandafter\pgffor@multiassign\pgffor@rest/\relax%
}

\def\pgffor@gobblespaces#1{\pgfutil@ifnextchar x{#1}{#1}}

\def\pgffor@handledots{%
    \pgffor@gobblespaces{\expandafter\pgffor@@handledots\pgffor@value\pgffor@@stop}%
}

\newif\ifpgffor@context

\def\pgffor@@handledots#1...#2\pgffor@@stop{%
    \def\pgffor@dots@pre{#1}%
    \def\pgffor@dots@post{#2}%
    \def\pgffor@dots@stripcontext#1##1#2\pgffor@@stop{\def\pgffor@dotsvalue{##1}}%
    \pgffor@contexttrue%
    \ifx\pgffor@dots@pre\pgfutil@empty%
        \ifx\pgffor@dots@post\pgfutil@empty%
            \pgffor@contextfalse%
            \def\pgffor@dots@stripcontext##1\pgffor@@stop{\def\pgffor@dotsvalue{##1}}%
        \fi%
    \fi%
    \pgffor@gobblespaces{\pgffor@dotsscanend}%
}

\def\pgffor@dots@value@process#1{%
    \expandafter\pgffor@dots@stripcontext#1\pgffor@@stop%
    \expandafter\pgffor@dots@charcheck\pgffor@dotsvalue\pgffor@@stop%
  \ifpgffor@alphabeticsequence
  \else
    \ifpgffor@assign@parse
      \begingroup
      \pgfkeys{/pgf/fpu/false/.try}%
      \pgfmathparse{\pgffor@dotsvalue}%
      \pgfmath@smuggleone\pgfmathresult
      \endgroup
      \let\pgffor@dotsvalue=\pgfmathresult
    \fi
  \fi
  \let#1=\pgffor@dotsvalue%
}

\def\pgffor@dotsscanend#1,{%
    \pgffor@alphabeticsequencefalse%
    \def\pgffor@dotsend{#1}%
    \pgffor@dots@value@process{\pgffor@dotsend}%
  \pgffor@dots@value@process{\pgffor@last}%
  \ifx\pgffor@prevlast\pgfutil@empty%
    \ifdim\pgffor@dotsend pt>\pgffor@last pt%
      \pgffor@skip=1pt%
    \else%
      \pgffor@skip=-1pt%
    \fi%
  \else%
    \pgffor@dots@value@process{\pgffor@prevlast}%
    \pgffor@skip=\pgffor@last pt%
    \pgffor@iter=\pgffor@prevlast pt%
    \advance\pgffor@skip by-\pgffor@iter%
  \fi%
  \pgffor@iter=\pgffor@last pt%
  \pgffor@loop%
}

\def\pgffor@loop{%
  \advance\pgffor@iter by\pgffor@skip%
  \let\pgffor@next=\pgffor@doloop%
  \ifdim\pgffor@skip<0pt%
    \ifdim\pgffor@iter<\pgffor@dotsend pt%
      \let\pgffor@next=\pgffor@endloop%
    \fi%
  \else%
    \ifdim\pgffor@iter>\pgffor@dotsend pt%
      \let\pgffor@next=\pgffor@endloop%
    \fi%
  \fi%
  \ifpgffor@continue%
  \else%
    \let\pgffor@next=\pgffor@endloop%
  \fi%
  \pgffor@next%
}

\def\pgffor@endloop{%
    \pgffor@alphabeticsequencefalse%
    \pgffor@scan%
}

{\catcode`\p=12\catcode`\t=12\gdef\Pgffor@geT#1pt{#1}}

\def\pgffor@doloop{%
  \pgffor@begingroup
    \edef\pgffor@temp{\expandafter\Pgffor@geT\the\pgffor@iter}%
    \edef\pgffor@incheck{{.0/}{\pgffor@temp/}}%
    \expandafter\pgfutil@in@\pgffor@incheck%
    \ifpgfutil@in@%
      \expandafter\pgffor@strip\pgffor@temp%
    \fi%
    \expandafter\pgfutil@in@\expandafter/\expandafter{\pgffor@var}%
    \ifpgfutil@in@%
      \expandafter\def\expandafter\pgffor@valuerest\expandafter{\pgffor@temp//\relax}%
      \expandafter\pgffor@multiassign\pgffor@var/\pgffor@stop/\pgffor@stop/\relax%
    \else%
        \ifpgffor@alphabeticsequence%
            \pgffor@makealphabetic\pgffor@temp%
            \expandafter\let\pgffor@var=\pgffor@temp%
        \else%
            \expandafter\expandafter\expandafter\def\expandafter\pgffor@var\expandafter{\pgffor@temp}%
      \fi%
    \fi%
    \ifpgffor@context%
      \let\pgffor@temp=\pgffor@dots@pre%
        \expandafter\pgfutil@append@macrotomacro\expandafter%
            {\expandafter\pgffor@temp\expandafter}\expandafter{\pgffor@var}%
        \expandafter\pgfutil@append@macrotomacro\expandafter%
            {\expandafter\pgffor@temp\expandafter}\expandafter{\pgffor@dots@post}%
        \expandafter\let\pgffor@var=\pgffor@temp%
      \fi%
      \ifx\pgffor@assign@before@code\pgfutil@empty%
    \else%
        \pgffor@assign@before@code%
    \fi%
    \expandafter\expandafter\expandafter\pgffor@reset@hooks\expandafter\pgffor@beginhook\expandafter\pgffor@body\pgffor@endhook%
      \ifx\pgffor@assign@after@code\pgfutil@empty%
    \else%
        \pgffor@assign@after@code%
    \fi%
  \pgffor@endgroup%
  \pgffor@loop%
}

\def\pgffor@strip#1.0{\def\pgffor@temp{#1}}

\def\breakforeach{\global\pgffor@continuefalse}

\def\pgffor@gobbletil@pgffor@@stop#1\pgffor@@stop{}


\newif\ifpgffor@registeriscount

\def\pgffor@ifcsregister#1{%
    \expandafter\pgffor@@ifcsregister\meaning#1\pgffor@stop}

\def\pgffor@@ifcsregister#1#2#3#4#5\pgffor@stop{%
    \if#1m%
        \pgffor@registeriscountfalse%
        \let\pgffor@csnext=\pgfutil@secondoftwo%
    \else%
        \if#1u%
            \let\pgffor@csnext=\pgfutil@secondoftwo%
            \pgffor@registeriscountfalse%
        \else%
            \let\pgffor@csnext=\pgfutil@firstoftwo%
            \if#4u%
                \pgffor@registeriscounttrue%
            \else%
                \pgffor@registeriscountfalse%
                \let\pgffor@csnext=\pgfutil@firstoftwo%
            \fi%
        \fi%
    \fi%
    \pgffor@csnext}

\newif\ifpgffor@alphabeticsequence

\def\pgffor@dots@charcheck#1\pgffor@@stop{%
  \edef\pgffor@dots@charcheck@temp{#1}%
  \expandafter\expandafter\expandafter\pgffor@@dotscharcheck\expandafter\meaning\pgffor@dots@charcheck@temp\pgffor@@stop%
}
\def\pgffor@@dotscharcheck#1#2\pgffor@@stop{%
    \if#1t%
    \afterassignment\pgffor@gobbletil@pgffor@@stop%
      \expandafter\chardef\expandafter\pgffor@char\expandafter=\expandafter`\pgffor@dots@charcheck@temp\relax\pgffor@@stop%
      \edef\pgffor@char{\the\pgffor@char}%
      \ifnum\pgffor@char>64\relax%
        \ifnum\pgffor@char<91\relax%
          \let\pgffor@dotsvalue=\pgffor@char%
          \pgffor@alphabeticsequencetrue%
        \else%
          \ifnum\pgffor@char>96\relax%
            \ifnum\pgffor@char<123\relax%
              \let\pgffor@dotsvalue=\pgffor@char%
              \pgffor@alphabeticsequencetrue%
            \fi%
          \fi%
        \fi%
      \fi%
    \fi%
}

\def\pgffor@makealphabetic#1{%
    \pgfutil@tempcnta=#1\relax%
    \ifnum\pgfutil@tempcnta>95\relax%
        \advance\pgfutil@tempcnta by-96\relax%
        \edef#1{\pgffor@alpha\pgfutil@tempcnta}%
    \else%
        \advance\pgfutil@tempcnta by-64 %
        \edef#1{\pgffor@Alpha\pgfutil@tempcnta}%
    \fi%
}

\def\pgffor@Alpha#1{%
    \ifcase#1\relax\or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or K\or L\or M%
    \or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else?\fi%
}

\def\pgffor@alpha#1{%
    \ifcase#1\relax\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m%
    \or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else?\fi%
}

\newtoks\pgffor@toks

\def\pgffor@addcstotoks#1{%
    \expandafter\def\expandafter\pgffor@tokstemp\expandafter{\expandafter\def\expandafter#1\expandafter{#1}}%
    \pgffor@@addcstotoks}

\def\pgffor@addregtotoks#1{%
    \expandafter\def\expandafter\pgffor@tokstemp\expandafter{\expandafter#1\expandafter=\the#1}%
    \pgffor@@addcstotoks}

\def\pgffor@addiftotoks#1{%
    \begingroup%
        \escapechar=-1\relax%
            \expandafter\pgffor@@addiftotoks\string#1\pgffor@stop}
\def\pgffor@@addiftotoks#1#2#3#4\pgffor@stop{%
    \endgroup
    \csname if#3#4\endcsname%
        \expandafter\def\expandafter\pgffor@tokstemp\expandafter{\csname#3#4true\endcsname}%
    \else%
        \expandafter\def\expandafter\pgffor@tokstemp\expandafter{\csname#3#4false\endcsname}%
    \fi%
    \pgffor@@addcstotoks%
}

\def\pgffor@@addcstotoks{%
    \expandafter\expandafter\expandafter\pgffor@toks\expandafter\expandafter\expandafter=%
    \expandafter\expandafter\expandafter{\expandafter\pgffor@tokstemp\the\pgffor@toks}%
}


\def\pgffor@atbeginforeach{%
    \begingroup%
}

\def\pgffor@atendforeach{%
        \global\edef\pgffor@remember@expanded{\pgffor@remember@code}%
        \ifx\pgffor@remember@expanded\pgfutil@empty%
        \else%
          \pgffor@remember@expanded%
          \global\let\pgffor@remember@expanded=\pgfutil@empty%
        \fi%
    \endgroup%
}
\def\pgffor@default@begingroup{%
    \begingroup%
}

\let\pgffor@remember@once@expanded=\pgfutil@empty
\let\pgffor@remember@expanded=\pgfutil@empty

\def\pgffor@default@endgroup{%
   \ifx\pgffor@remember@once@code\pgfutil@empty
   \else
     \xdef\pgffor@remember@once@expanded{\pgffor@remember@once@code}%
   \fi
   \ifx\pgffor@remember@code\pgfutil@empty
   \else
     \xdef\pgffor@remember@expanded{\pgffor@remember@code}%
   \fi
 \endgroup
 \ifx\pgffor@remember@once@expanded\pgfutil@empty
 \else
   \pgffor@remember@once@expanded%
   \global\let\pgffor@remember@once@expanded=\pgfutil@empty
 \fi
 \ifx\pgffor@assign@once@code\pgfutil@empty
 \else
   \global\let\pgffor@assign@once@code=\pgfutil@empty
 \fi
 \ifx\pgffor@remember@expanded\pgfutil@empty
 \else
   \pgffor@remember@expanded%
   \global\let\pgffor@remember@expanded=\pgfutil@empty
 \fi
}

\let\pgffor@begingroup=\pgffor@default@begingroup
\let\pgffor@endgroup=\pgffor@default@endgroup


\def\pgffor@stack@begingroup{%
    \pgffor@toks={}%
    \pgffor@addcstotoks{\pgffor@mainvar}%
    \pgffor@addcstotoks{\pgffor@var}%
    \pgffor@addcstotoks{\pgffor@body}%
    \pgffor@addcstotoks{\pgffor@last}%
    \pgffor@addcstotoks{\pgffor@prevlast}%
    \pgffor@addcstotoks{\pgffor@dotsend}%
    \pgffor@addcstotoks{\pgffor@assign@before@code}%
    \pgffor@addcstotoks{\pgffor@assign@after@code}%
    \pgffor@addcstotoks{\pgffor@remember@code}%
    \pgffor@addcstotoks{\pgffor@remember@once@code}%
    \pgffor@addcstotoks{\pgffor@dots@pre}%
    \pgffor@addcstotoks{\pgffor@dots@post}%
    \pgffor@addregtotoks{\pgffor@iter}%
    \pgffor@addregtotoks{\pgffor@skip}%
    \pgffor@addiftotoks{\ifpgffor@alphabeticsequence}%
    \pgffor@addiftotoks{\ifpgffor@context}%
    \expandafter\pgffor@stackpush\expandafter{\the\pgffor@toks}%
}

\def\pgffor@stack@endgroup{\pgffor@stackpop}


\newif\ifpgffor@assign@evaluate
\newif\ifpgffor@assign@once
\newif\ifpgffor@assign@parse

\pgfkeys{/pgf/foreach/.cd,
    var/.code=\pgffor@var@add#1\pgffor@stop,
    scope iterations/.code={
        \csname if#1\endcsname%
            \let\pgffor@begingroup=\pgffor@default@begingroup%
            \let\pgffor@endgroup=\pgffor@default@endgroup%
        \else%
            \let\pgffor@begingroup=\pgffor@stack@begingroup%
            \let\pgffor@endgroup=\pgffor@stack@endgroup%
        \fi%
    },
    evaluate/.code=\pgffor@assign@evaluatetrue\pgffor@assign@oncefalse\pgffor@assign@parse{#1},%
    assign/.code=\pgffor@assign@evaluatefalse\pgffor@assign@oncefalse\pgffor@assign@parse{#1},%
    evaluate once/.code=\pgffor@assign@evaluatetrue\pgffor@assign@oncetrue\pgffor@assign@parse{#1},%
    assign once/.code=\pgffor@assign@evaluatefalse\pgffor@assign@oncetrue\pgffor@assign@parse{#1},%
    remember/.code=\pgffor@remember@parse{#1},%
    count/.code=\pgffor@count@parse#1\pgffor@stop,
    parse/.is if=pgffor@assign@parse,
    parse/.default=false,
    expand list/.is if=pgffor@expand@list@,
    expand list/.default=true,
    expand list=false,
}

\def\pgffor@assign@parse#1{%
    \pgfutil@in@;{#1}%
    \ifpgfutil@in@%
    \else%
        \pgfutil@in@={#1}%
    \fi%
    \ifpgfutil@in@%
        \pgffor@assign@@parse#1;\pgffor@stop;%
    \else%
        \pgffor@assign@parse@old#1\pgffor@stop%
    \fi%
}

\def\pgffor@stop{\pgffor@stop}
\def\pgffor@assign@@parse#1;{%
    \def\pgffor@test{#1}%
    \ifx\pgffor@test\pgffor@stop%
        \let\pgffor@next=\relax%
    \else%
        \let\pgffor@next=\pgffor@assign@@parse%
        \ifx\pgffor@test\pgfutil@empty%
        \else%
            \pgfutil@in@={#1}%
            \ifpgfutil@in@%
                \pgffor@assign@@@parse#1\pgffor@stop%
            \else%
                \pgffor@assign@@@parse#1=#1\pgffor@stop%
            \fi%
        \fi%
    \fi%
    \pgffor@next}

\def\pgffor@assign@@@parse#1=#2\pgffor@stop{%
    \ifpgffor@assign@evaluate%
        \ifpgffor@assign@once%
            \pgfutil@append@tomacro{\pgffor@assign@once@code}{\pgfmathparse{#2}\let#1=\pgfmathresult}%
            \pgfutil@append@tomacro{\pgffor@remember@once@code}{\noexpand\def\noexpand#1{#2}}%
        \else
            \pgfutil@append@tomacro{\pgffor@assign@before@code}{\pgfmathparse{#2}\let#1=\pgfmathresult}%
        \fi%
    \else%
        \ifpgffor@assign@once%
            \pgfutil@append@tomacro{\pgffor@assign@once@code}{\def#1{#2}}%
            \pgfutil@append@tomacro{\pgffor@remember@once@code}{\noexpand\def\noexpand#1{#2}}%
        \else
            \pgfutil@append@tomacro{\pgffor@assign@before@code}{\def#1{#2}}%
        \fi%
    \fi%
}

\def\pgffor@assign@parse@old#1#2\pgffor@stop{%
    \pgffor@assign@@parse@old#2\pgffor@stop as#1using #1\pgffor@@stop}

\def\pgffor@assign@@parse@old#1as#2#3\pgffor@@stop{%
    \pgffor@assign@@@parse@old{#2}#1#3\pgffor@stop\pgffor@@stop}

\def\pgffor@assign@@@parse@old#1#2using #3\pgffor@stop#4\pgffor@@stop{%
    \pgffor@assign@@@parse#1=#3\pgffor@stop}



\def\pgffor@remember@parse#1{%
    \pgfutil@in@ a{#1}%
    \ifpgfutil@in@%
        \pgffor@remember@parse@old#1\pgffor@stop%
    \else%
        \pgffor@remember@@parse#1;\pgffor@stop;%
    \fi%
}

\def\pgffor@remember@@parse#1;{%
    \def\pgffor@test{#1}%
    \ifx\pgffor@test\pgffor@stop%
        \let\pgffor@next=\relax%
    \else%
        \let\pgffor@next=\pgffor@remember@@parse%
        \ifx\pgffor@test\pgfutil@empty%
        \else%
            \pgfutil@in@={#1}%
            \ifpgfutil@in@%
                \pgffor@remember@@@parse#1\pgffor@stop%
            \else%
                \pgffor@ifcsregister{#1}{%
                    \pgfutil@append@tomacro{\pgffor@remember@code}{\noexpand#1=\the#1\noexpand\relax}%
                }%
                {%
                    \pgfutil@append@tomacro{\pgffor@remember@code}{\noexpand\def\noexpand#1{#1}}%
                }%
            \fi%
        \fi%
    \fi%
    \pgffor@next%
}

\def\pgffor@remember@@@parse#1=#2\pgffor@stop{%
    \pgffor@ifcsregister{#2}{%
        \pgfutil@append@tomacro{\pgffor@assign@after@code}{\expandafter\def\expandafter#1\expandafter{\the#2}}%
        \pgfutil@append@tomacro{\pgffor@remember@code}{\noexpand\def\noexpand#1{#1}}%
    }%
    {%
        \pgfutil@append@tomacro{\pgffor@assign@after@code}{\expandafter\def\expandafter#1\expandafter{#2}}%
        \pgfutil@append@tomacro{\pgffor@remember@code}{\noexpand\def\noexpand#1{#1}}%
    }%
}

\def\pgffor@remember@parse@old#1#2\pgffor@stop{%
    \pgffor@remember@@parse@old#1#2\pgffor@stop as#1(initially 0)\pgffor@@stop}

\def\pgffor@remember@@parse@old#1#2as#3#4\pgffor@@stop{%
    \pgffor@remember@@@parse@old{#1}{#3}#2#4\pgffor@stop\pgffor@@stop}

\def\pgffor@remember@@@parse@old#1#2#3(initially #4)#5\pgffor@stop#6\pgffor@@stop{%
    \pgfutil@append@tomacro{\pgffor@assign@after@code}{\edef#2{#1}}%
    \pgfutil@append@tomacro{\pgffor@remember@code}{\noexpand\def\noexpand#2{#2}}%
    \pgfutil@append@tomacro{\pgffor@assign@once@code}{\def#2{#4}}%
}

\def\pgffor@count@parse#1#2\pgffor@stop{%
    \pgffor@count@@parse#1#2\pgffor@stop from 1\pgffor@stop\pgffor@@stop}

\def\pgffor@count@@parse#1#2from#3\pgffor@stop#4\pgffor@@stop{%
    \pgfutil@append@tomacro\pgffor@remember@code{\noexpand\def\noexpand#1{#1}}%
    \pgfutil@append@tomacro\pgffor@assign@before@code{\pgfmathparse{int(#1+1)}\let#1=\pgfmathresult}%
    \pgfmathparse{int(#3-1)}\let#1=\pgfmathresult%
}


\def\pgfutil@append@macrotomacro#1#2{%
    \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
        #1\expandafter\expandafter\expandafter{\expandafter#1#2}}

\def\pgfutil@append@tomacro#1#2{%
    \expandafter\def\expandafter#1\expandafter{#1#2}}


\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgffor.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfint.code.tex ====


\ifx\pgfintloaded\pgfutil@undefined
  \let\pgfintloaded=\relax
\else
  \expandafter\endinput
\fi



\def\pgfinteval#1{\number\numexpr#1\relax}

\def\pgfintabs#1{\number\expandafter\pgfint@abs\number\numexpr#1\relax}
\def\pgfint@abs#1{\ifx-#1\else\expandafter#1\fi}

\def\pgfintmax#1#2{%
  \number\expandafter\pgfint@minmax
  \number\numexpr#1\expandafter;%
  \number\numexpr#2;%
  >
}
\def\pgfintmin#1#2{%
  \number\expandafter\pgfint@minmax
  \number\numexpr#1\expandafter;%
  \number\numexpr#2;%
  <
}
\def\pgfint@minmax#1;#2;#3{%
  \ifnum#1#3#2
    #1%
  \else
    #2%
  \fi
}

\def\pgfintdivtruncate#1#2{%
  \number\numexpr\expandafter\pgfint@divtruncate
  \number\numexpr#1\expandafter;%
  \number\numexpr#2;%
  \relax
}
\def\pgfint@divtruncate#1#2;#3#4;{%
  \ifx0#1
    0%
  \else
    (#1#2%
      \ifx-#1 +\else-\fi
      (\ifx-#3 -\fi#3#4-1)/2%
    )%
  \fi
  /#3#4%
}

\def\pgfintdivfloor#1#2{%
  \number\numexpr\expandafter\pgfint@divfloor
  \number\numexpr#1\expandafter;%
  \number\numexpr#2;%
  \relax
}
\def\pgfint@divfloor#1#2;#3#4;{%
  \ifx0#1
    0%
  \else
    \ifnum
      0\ifx-#1\ifx#3-\else1\fi\fi
      0\ifx-#3\ifx#1-\else1\fi\fi
      >0
      \pgfint@@divfloor#1#2;#3#4;-+%
    \else
      \pgfint@@divfloor#1#2;#3#4;+-%
    \fi
  \fi
  /#3#4%
}
\def\pgfint@@divfloor#1#2;#3#4;#5#6{%
  (#1#2%
  \ifx-#1 #5\else#6\fi
    (\ifx-#3 -\fi#3#4#61)/2%
  )%
}

\def\pgfintdivround#1#2{\number\numexpr(#1)/(#2)\relax}

\def\pgfintmod#1#2{%
  \number\numexpr\expandafter\pgfint@mod%
  \number\numexpr#1\expandafter;%
  \number\numexpr#2;%
  \relax
}
\def\pgfint@mod#1;#2;{#1-(\pgfint@divfloor#1;#2;)*#2}

\def\pgfintset#1#2{#1 \numexpr#2\relax}

\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfint.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfkeys.code.tex ====




\ifx\pgfkeysloaded\undefined
  \let\pgfkeysloaded=\relax
\else
  \expandafter\endinput
\fi


\def\pgfkeys@empty{}
\long\def\pgfkeys@firstoftwo#1#2{#1}
\long\def\pgfkeys@secondoftwo#1#2{#2}
\long\def\pgfkeys@ifcsname#1{%
  \ifcsname#1\endcsname
    \expandafter\pgfkeys@firstoftwo
  \else
    \expandafter\pgfkeys@secondoftwo
  \fi
}


\ifx\PackageError\undefined
  \def\pgfkeys@error#1{\errmessage{Package pgfkeys Error: #1}}%
\else
  \def\pgfkeys@error#1{\PackageError{pgfkeys}{#1}{}}%
\fi

\ifx\eTeXrevision\undefined%
  \pgfkeys@error{PGF requires etex in extended mode}%
  \csname @@end\expandafter\endcsname\expandafter\end%
\fi

\ifnum\eTeXversion<2
  \pgfkeys@error{PGF requires etex version 2}%
  \csname @@end\expandafter\endcsname\expandafter\end%
\fi


\ifx\contextversion\undefined
  \let\pgfkeys@expanded   \expanded
  \let\pgfkeys@unexpanded \unexpanded
\else
  \let\pgfkeys@expanded   \normalexpanded
  \let\pgfkeys@unexpanded \normalunexpanded
\fi

\begingroup
  \edef\pgfkeys@tmpa{\string\expanded}
  \edef\pgfkeys@tmpb{\meaning\pgfkeys@expanded}
  \expandafter
\endgroup
\ifx\pgfkeys@tmpa\pgfkeys@tmpb
\else
  \pgfkeys@error{PGF requires the \noexpand\expanded primitive}
  \csname @@end\expandafter\endcsname\expandafter\end%
\fi



\long\def\pgfkeyssetvalue#1#2{%
  \pgfkeys@temptoks{#2}\expandafter\edef\csname pgfk@#1\endcsname{\the\pgfkeys@temptoks}%
}

\long\def\pgfkeyssetevalue#1#2{%
  \expandafter\edef\csname pgfk@#1\endcsname
  {\pgfkeys@unexpanded\expandafter{\pgfkeys@expanded{#2}}}%
}


\long\def\pgfkeysaddvalue#1#2#3{%
  {%
    \toks0{#2}%
    \pgfkeysifdefined{#1}
    {\pgfkeys@temptoks\expandafter\expandafter\expandafter{\csname pgfk@#1\endcsname}}%
    {\pgfkeys@temptoks{}}%
    \toks1{#3}%
    \xdef\pgfkeys@global@temp{\the\toks0 \the\pgfkeys@temptoks \the\toks1}%
  }%
  \pgfkeyslet{#1}\pgfkeys@global@temp%
}




\long\def\pgfkeyslet#1#2{%
  \expandafter\let\csname pgfk@#1\endcsname#2%
}



\long\def\pgfkeysgetvalue#1#2{%
  \pgfkeys@ifcsname{pgfk@#1}%
    {\expandafter\let\expandafter#2\csname pgfk@#1\endcsname}%
    {\let#2\relax}}




\let\pgfkeys@relax\relax
\long\def\pgfkeysvalueof#1{\csname\pgfkeys@ifcsname{pgfk@#1}{pgfk@#1}{pgfkeys@relax}\endcsname}




\long\def\pgfkeysifdefined#1{%
  \ifcsname pgfk@#1\endcsname
    \expandafter\pgfkeys@firstoftwo
  \else
    \expandafter\pgfkeys@secondoftwo
  \fi
}

\long\def\pgfkeysifassignable#1#2#3{%
  \pgfkeysifdefined{#1}%
    {#2}
  {\pgfkeysifdefined{#1/.@cmd}%
    {#2}%
    {#3}}%
}%




\newtoks\pgfkeys@pathtoks
\def\pgfkeyscurrentpath{\the\pgfkeys@pathtoks}
\newtoks\pgfkeys@temptoks

\def\pgfkeys@root{/}
\let\pgfkeysdefaultpath\pgfkeys@root

\def\pgfkeys{\expandafter\pgfkeys@@set\expandafter{\pgfkeysdefaultpath}}%
\long\def\pgfkeys@@set#1#2{%
  \let\pgfkeysdefaultpath\pgfkeys@root%
  \pgfkeys@parse#2,\pgfkeys@mainstop%
  \def\pgfkeysdefaultpath{#1}}

\def\pgfkeys@parse{\futurelet\pgfkeys@possiblerelax\pgfkeys@parse@main}
\def\pgfkeys@parse@main{%
  \ifx\pgfkeys@possiblerelax\pgfkeys@mainstop%
    \expandafter\pgfkeys@cleanup%
  \else%
    \expandafter\pgfkeys@normal%
  \fi%
}
\newif\ifpgfkeys@syntax@handlers
\def\pgfkeys@normal{%
  \ifpgfkeys@syntax@handlers%
    \expandafter\pgfkeys@syntax@handlers%
  \else%
    \expandafter\pgfkeys@@normal%
  \fi%
}
\def\pgfkeys@syntax@handlers{\pgf@keys@utilifnextchar\relax\pgfkeys@syntax@@handlers\pgfkeys@syntax@@handlers}%
\def\pgfkeys@syntax@@handlers{\futurelet\pgfkeys@first@char\pgfkeys@syntax@handlers@test}
\def\pgfkeys@syntax@handlers@test{%
  \pgfkeysgetvalue{/handlers/first char syntax/\meaning\pgfkeys@first@char}\pgfkeys@the@handler%
  \ifx\pgfkeys@the@handler\relax%
    \expandafter\pgfkeys@@normal%
  \else%
    \expandafter\pgfkeys@use@handler%
  \fi%
}
\long\def\pgfkeys@use@handler#1,{%
  \pgfkeys@the@handler{#1}%
  \pgfkeys@parse%
}

\long\def\pgfkeys@@normal#1,{%
  \pgfkeys@unpack#1=\pgfkeysnovalue=\pgfkeys@stop%
  \pgfkeys@parse%
}
\def\pgfkeys@cleanup\pgfkeys@mainstop{}

\def\pgfkeys@mainstop{\pgfkeys@mainstop} %
\def\pgfkeys@novalue{}
\def\pgfkeysnovalue{\pgfkeys@novalue} %
\def\pgfkeysnovalue@text{\pgfkeysnovalue}
\def\pgfkeysvaluerequired{\pgfkeysvaluerequired} %

\long\def\pgfkeys@unpack#1=#2=#3\pgfkeys@stop{%
  \pgfkeys@spdef\pgfkeyscurrentkey{#1}%
  \edef\pgfkeyscurrentkey{\pgfkeyscurrentkey}%
  \ifx\pgfkeyscurrentkey\pgfkeys@empty%
  \else%
    \pgfkeys@add@path@as@needed%
    \pgfkeys@spdef\pgfkeyscurrentvalue{#2}%
    \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
      \pgfkeysifdefined{\pgfkeyscurrentkey/.@def}%
      {\pgfkeysgetvalue{\pgfkeyscurrentkey/.@def}{\pgfkeyscurrentvalue}}
      {}%
    \fi%
    \ifx\pgfkeyscurrentvalue\pgfkeysvaluerequired%
      \def\pgf@marshal{\pgfkeysvalueof{/errors/value required/.@cmd}}%
      \expandafter\pgf@marshal\expandafter{\pgfkeyscurrentkey}{}\pgfeov%
    \else%
      \pgfkeys@case@one%
    \fi%
  \fi}

\def\pgfkeys@case@one{%
  \pgfkeysifdefined{\pgfkeyscurrentkey/.@cmd}%
  {\pgfkeysgetvalue{\pgfkeyscurrentkey/.@cmd}{\pgfkeys@code}%
    \ifx\pgfkeys@code\relax\expandafter\pgfkeys@firstoftwo\else\expandafter\pgfkeys@secondoftwo\fi
    {\pgfkeys@unknown}%
    {\expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov}}
  {\pgfkeys@case@two}%
}

\def\pgfkeys@case@two{%
  \pgfkeysifdefined{\pgfkeyscurrentkey}%
  {\pgfkeys@case@two@extern}%
  {\pgfkeys@case@three}%
}

\def\pgfkeys@case@two@extern{%
  \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
    \pgfkeysvalueof{\pgfkeyscurrentkey}%
  \else%
    \pgfkeyslet{\pgfkeyscurrentkey}\pgfkeyscurrentvalue%
  \fi%
}


\def\pgfkeys@case@three{%
  \pgfkeys@split@path%
  \pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}%
  {\pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}%
    \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov}
  {\pgfkeys@unknown}%
}
\let\pgfkeys@case@three@handleall=\pgfkeys@case@three
\def\pgfkeys@case@three@handle@restricted{%
  \pgfkeys@split@path%
  \pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}{%
    \pgfkeys@ifexecutehandler{%
    \pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}%
      \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov
  }{%
    \let\pgfkeys@tempa=\pgfkeyscurrentkey
    \let\pgfkeys@tempb=\pgfkeyscurrentname
      \edef\pgfkeyscurrentkey{\pgfkeyscurrentpath}%
      \pgfkeys@split@path%
    \let\pgfkeyscurrentkey=\pgfkeys@tempa
    \edef\pgfkeyscurrentname{\pgfkeyscurrentname/\pgfkeys@tempb}%
      \pgfkeys@unknown
  }%
  }{%
    \pgfkeys@unknown
  }%
}

\def\pgfkeys@ifexecutehandler#1#2{#1}%
\let\pgfkeys@ifexecutehandler@handleall=\pgfkeys@ifexecutehandler
\def\pgfkeys@ifexecutehandler@handleonlyexisting#1#2{%
  \pgfkeys@ifcsname{pgfk@excpt@\pgfkeyscurrentname}{%
     #1%
  }{%
     \pgfkeysifdefined{\pgfkeyscurrentpath}{#1}{%
    \pgfkeysifdefined{\pgfkeyscurrentpath/.@cmd}{#1}{#2}%
     }{}%
  }%
}%
\def\pgfkeys@ifexecutehandler@handlefullorexisting#1#2{%
  \ifpgfkeysaddeddefaultpath
    \pgfkeys@ifcsname{pgfk@excpt@\pgfkeyscurrentname}{%
       #1%
    }{%
       \pgfkeysifdefined{\pgfkeyscurrentpath}{%
         #1%
       }{%
         \pgfkeysifdefined{\pgfkeyscurrentpath/.@cmd}{%
           #1%
         }{%
           #2%
         }%
       }%
    }%
  \else
    #1%
  \fi
}%
\def\pgfkeysaddhandleonlyexistingexception#1{\expandafter\def\csname pgfk@excpt@#1\endcsname{1}}%

\def\pgfkeys@unknown{%
  \pgfkeysifdefined{\pgfkeyscurrentpath/.unknown/.@cmd}%
  {%
    \pgfkeysgetvalue{\pgfkeyscurrentpath/.unknown/.@cmd}{\pgfkeys@code}%
    \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov}
  {%
    \pgfkeysgetvalue{/handlers/.unknown/.@cmd}{\pgfkeys@code}%
    \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov%
  }%
}


\long\def\pgfkey@argumentisspace#1{%
  \long\def\pgfkeys@spdef##1##2{%
    \futurelet\pgfkeys@possiblespace\pgfkeys@sp@a##2\pgfkeys@stop\pgfkeys@stop#1\pgfkeys@stop\relax##1}%
  \def\pgfkeys@sp@a{%
    \ifx\pgfkeys@possiblespace\pgfkeys@sptoken%
      \expandafter\pgfkeys@sp@b%
    \else%
      \expandafter\pgfkeys@sp@b\expandafter#1%
    \fi}%
  \long\def\pgfkeys@sp@b#1##1 \pgfkeys@stop{\pgfkeys@sp@c##1}%
}
\pgfkey@argumentisspace{ }
\long\def\pgfkeys@sp@c#1\pgfkeys@stop#2\relax#3{\pgfkeys@temptoks{#1}\edef#3{\the\pgfkeys@temptoks}}
{\def\:{\global\let\pgfkeys@sptoken= } \: }



\def\pgfkeys@add@path@as@needed{%
  \expandafter\futurelet\expandafter\pgfkeys@possibleslash\expandafter\pgfkeys@check@slash\pgfkeyscurrentkey\relax%
}
\newif\ifpgfkeysaddeddefaultpath
\def\pgfkeys@check@slash{%
  \ifx\pgfkeys@possibleslash/%
    \expandafter\pgfkeys@nevermind%
  \else%
    \expandafter\pgfkeys@addpath%
  \fi%
}

\def\pgfkeys@nevermind#1\relax{%
  \pgfkeysaddeddefaultpathfalse
  \let\pgfkeyscurrentkeyRAW\pgfkeyscurrentkey
}
\def\pgfkeys@addpath#1\relax{%
  \pgfkeysaddeddefaultpathtrue
  \def\pgfkeyscurrentkeyRAW{#1}%
  \edef\pgfkeyscurrentkey{\pgfkeysdefaultpath#1}%
}


\def\pgfkeys@split@path{%
  \pgfkeys@pathtoks{}%
  \expandafter\pgfkeys@splitter\pgfkeyscurrentkey//%
}
\def\pgfkeys@splitter#1/#2/{%
  \def\pgfkeys@temp{#2}%
  \ifx\pgfkeys@temp\pgfkeys@empty%
    \def\pgfkeyscurrentname{#1}%
    \expandafter\pgfkeys@gobbletoslash%
  \else%
    \expandafter\pgfkeys@pathtoks\expandafter{\the\pgfkeys@pathtoks#1/}%
  \fi%
  \pgfkeys@splitter#2/%
}
\def\pgfkeys@gobbletoslash\pgfkeys@splitter/{%
  \if\relax\detokenize\expandafter{\the\pgfkeys@pathtoks}\relax\else
    \expandafter\pgfkeys@remove@slash\the\pgfkeys@pathtoks\relax
  \fi
}%
\def\pgfkeys@remove@slash#1/\relax{\pgfkeys@pathtoks{#1}}




\def\pgfqkeys{\expandafter\pgfkeys@@qset\expandafter{\pgfkeysdefaultpath}}%
\long\def\pgfkeys@@qset#1#2#3{\def\pgfkeysdefaultpath{#2/}\pgfkeys@parse#3,\pgfkeys@mainstop\def\pgfkeysdefaultpath{#1}}



\long\def\pgfkeysalso#1{\pgfkeys@parse#1,\pgfkeys@mainstop}




\long\def\pgfqkeysalso#1#2{\def\pgfkeysdefaultpath{#1/}\pgfkeys@parse#2,\pgfkeys@mainstop}






\long\def\pgfkeysdef#1#2{%
  \long\def\pgfkeys@temp##1\pgfeov{#2}%
  \pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}%
  \pgfkeyssetvalue{#1/.@body}{#2}%
}
\long\def\pgfkeysedef#1#2{%
  \long\edef\pgfkeys@temp##1\pgfeov{#2}%
  \pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}%
  \pgfkeyssetevalue{#1/.@body}{#2}%
}



\long\def\pgfkeysdefargs#1#2#3{%
  \long\def\pgfkeys@temp#2\pgfeov{#3}%
  \pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}%
  \pgfkeyssetvalue{#1/.@args}{#2\pgfeov}%
  \pgfkeyssetvalue{#1/.@body}{#3}%
}

\long\def\pgfkeysedefargs#1#2#3{%
  \long\edef\pgfkeys@temp#2\pgfeov{#3}%
  \pgfkeyslet{#1/.@cmd}{\pgfkeys@temp}%
  \pgfkeyssetvalue{#1/.@args}{#2\pgfeov}%
  \pgfkeyssetevalue{#1/.@body}{#3}%
}

\long\def\pgfkeysdefnargs#1#2#3{\pgfkeysdefnargs@{#1}{#2}{#3}{\def}{\pgfkeyssetvalue}}%
\long\def\pgfkeysedefnargs#1#2#3{\pgfkeysdefnargs@{#1}{#2}{#3}{\edef}{\pgfkeyssetevalue}}%
\long\def\pgfkeysdefnargs@#1#2#3#4#5{%
  \ifcase#2\relax
    \pgfkeyssetvalue{#1/.@args}{}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2##3}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2##3##4}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6##7}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6##7##8}%
  \or
    \pgfkeyssetvalue{#1/.@args}{##1##2##3##4##5##6##7##8##9}%
  \else
    \pgfkeys@error{\string\pgfkeysdefnargs: expected  <= 9 arguments, got #2}%
  \fi
  \pgfkeysgetvalue{#1/.@args}\pgfkeys@tempargs
  \def\pgfkeys@temp{\expandafter\long\expandafter#4\csname pgfk@#1/.@@body\endcsname}%
  \expandafter\pgfkeys@temp\pgfkeys@tempargs{#3}%
  \edef\pgfkeys@tempargs{\noexpand\pgfkeysvalueof{#1/.@@body}}%
  \def\pgfkeys@temp{\pgfkeysdef{#1}}%
  \ifnum#2=1\relax
    \expandafter\pgfkeys@temp\expandafter{\pgfkeys@tempargs{##1}}%
  \else
    \expandafter\pgfkeys@temp\expandafter{\pgfkeys@tempargs##1}%
  \fi
  #5{#1/.@body}{#3}%
}


\pgfkeysdef{/handlers/.code}{\pgfkeysdef{\pgfkeyscurrentpath}{#1}}
\pgfkeysdef{/handlers/.code 2 args}{\pgfkeysdefargs{\pgfkeyscurrentpath}{##1##2}{#1}}
\pgfkeysdef{/handlers/.ecode}{\pgfkeysedef{\pgfkeyscurrentpath}{#1}}
\pgfkeysdef{/handlers/.ecode 2 args}{\pgfkeysedefargs{\pgfkeyscurrentpath}{##1##2}{#1}}
\pgfkeysdefnargs{/handlers/.code args}{2}{\pgfkeysdefargs{\pgfkeyscurrentpath}{#1}{#2}}
\pgfkeysdefnargs{/handlers/.ecode args}{2}{\pgfkeysedefargs{\pgfkeyscurrentpath}{#1}{#2}}
\pgfkeysdefnargs{/handlers/.code n args}{2}{\pgfkeysdefnargs{\pgfkeyscurrentpath}{#1}{#2}}
\pgfkeysdefnargs{/handlers/.ecode n args}{2}{\pgfkeysedefnargs{\pgfkeyscurrentpath}{#1}{#2}}


\pgfkeys{/handlers/.add code/.code 2 args=%
  \pgfkeysifdefined{\pgfkeyscurrentpath/.@args}%
  {%
  \pgfkeysaddvalue{\pgfkeyscurrentpath/.@body}{#1}{#2}%
  {%
    \pgfkeysgetvalue{\pgfkeyscurrentpath/.@args}{\pgfkeys@tempargs}%
    \pgfkeysgetvalue{\pgfkeyscurrentpath/.@body}{\pgfkeys@tempbody}%
    \def\pgfkeys@marshal{\expandafter\long\expandafter\gdef\expandafter\pgfkeys@global@temp\pgfkeys@tempargs}%
    \expandafter\pgfkeys@marshal\expandafter{\pgfkeys@tempbody}%
  }%
    \pgfkeysifdefined{\pgfkeyscurrentpath/.@@body}{%
    \pgfkeyslet{\pgfkeyscurrentpath/.@@body}{\pgfkeys@global@temp}%
  }{%
      \pgfkeyslet{\pgfkeyscurrentpath/.@cmd}{\pgfkeys@global@temp}%
  }%
  }%
  {%
    \edef\pgf@expanded@path{\pgfkeyscurrentpath}%
    {%
      \toks0{#1}%
      \pgfkeysifdefined{\pgf@expanded@path/.@cmd}%
      {\expandafter\expandafter\expandafter\pgfkeys@temptoks\expandafter\expandafter\expandafter{\csname pgfk@\pgf@expanded@path/.@body\endcsname}}%
      {\expandafter\pgfkeys@temptoks\expandafter{\expandafter\pgfkeyssetvalue\expandafter{\pgf@expanded@path}{##1}}}%
      \toks1{#2}%
      \xdef\pgfkeys@global@temp{\the\toks0 \the\pgfkeys@temptoks \the\toks1 }%
    }%
    \def\pgf@temp{\pgfkeyssetvalue{\pgf@expanded@path/.@body}}%
    \expandafter\pgf@temp\expandafter{\pgfkeys@global@temp}%
    \expandafter\long\expandafter\def\expandafter\pgfkeys@temp\expandafter##\expandafter1\expandafter\pgfeov\expandafter{\pgfkeys@global@temp}%
    \pgfkeyslet{\pgf@expanded@path/.@cmd}\pgfkeys@temp%
  }%
}
\pgfkeys{/handlers/.prefix code/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={#1}{}}}%
\pgfkeys{/handlers/.append code/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={}{#1}}}%



\pgfkeys{/handlers/.style/.code=\pgfkeys{\pgfkeyscurrentpath/.code=\pgfkeysalso{#1}}}
\pgfkeys{/handlers/.estyle/.code=\pgfkeys{\pgfkeyscurrentpath/.ecode=\noexpand\pgfkeysalso{#1}}}
\pgfkeys{/handlers/.style args/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.code args={#1}{\pgfkeysalso{#2}}}}
\pgfkeys{/handlers/.estyle args/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.ecode args={#1}{\noexpand\pgfkeysalso{#2}}}}
\pgfkeys{/handlers/.style 2 args/.code=\pgfkeys{\pgfkeyscurrentpath/.code 2 args=\pgfkeysalso{#1}}}
\pgfkeys{/handlers/.style n args/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.code n args={#1}{\pgfkeysalso{#2}}}}


\pgfkeys{/handlers/.add style/.code 2 args=\pgfkeys{\pgfkeyscurrentpath/.add code={\pgfkeysalso{#1}}{\pgfkeysalso{#2}}}}%
\pgfkeys{/handlers/.prefix style/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={\pgfkeysalso{#1}}{}}}%
\pgfkeys{/handlers/.append style/.code=\pgfkeys{\pgfkeyscurrentpath/.add code={}{\pgfkeysalso{#1}}}}%



\pgfkeys{/handlers/.initial/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath}{#1}}
\pgfkeys{/handlers/.add/.code 2 args=\pgfkeysaddvalue{\pgfkeyscurrentpath}{#1}{#2}}
\pgfkeys{/handlers/.prefix/.code=\pgfkeysaddvalue{\pgfkeyscurrentpath}{#1}{}}
\pgfkeys{/handlers/.append/.code=\pgfkeysaddvalue{\pgfkeyscurrentpath}{}{#1}}
\pgfkeys{/handlers/.get/.code=\pgfkeysgetvalue{\pgfkeyscurrentpath}{#1}}
\pgfkeys{/handlers/.link/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath}{\pgfkeysvalueof{#1}}}



\pgfkeys{/handlers/.default/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath/.@def}{#1}}
\pgfkeys{/handlers/.value required/.code=\pgfkeyssetvalue{\pgfkeyscurrentpath/.@def}{\pgfkeysvaluerequired}}
\pgfkeys{/handlers/.value forbidden/.code=\pgfkeys{\pgfkeyscurrentpath/.add code=%
{%
  \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
  \else%
    \def\pgf@marshal{\pgfkeysvalueof{/errors/value forbidden/.@cmd}}%
    \expandafter\expandafter\expandafter\pgf@marshal\expandafter\expandafter\expandafter{\expandafter\pgfkeyscurrentkey\expandafter}\expandafter{\pgfkeyscurrentvalue}\pgfeov%
  \fi%
}{}}}



\pgfkeys{/handlers/.store in/.code=\pgfkeysalso{\pgfkeyscurrentpath/.code=\def#1{##1}}}
\pgfkeys{/handlers/.estore in/.code=\pgfkeysalso{\pgfkeyscurrentpath/.code=\edef#1{##1}}}

\pgfkeys{/handlers/.is if/.code=\pgfkeysalso{%
    \pgfkeyscurrentpath/.code=\pgfkeys@handle@boolean{#1}{##1},
    \pgfkeyscurrentpath/.default=true%
  }%
}
\def\pgfkeys@handle@boolean#1#2{%
  \pgfkeys@ifcsname{#1#2}{%
    \csname#1#2\endcsname%
  }{%
    \def\pgf@marshal{\pgfkeysvalueof{/errors/boolean expected/.@cmd}}%
    \expandafter\pgf@marshal\expandafter{\pgfkeyscurrentkey}{#2}\pgfeov%
  }%
}

\pgfkeys{/handlers/.is choice/.code=%
  \pgfkeys{%
    \pgfkeyscurrentpath/.cd,%
    .code=\def\pgfkeys@was@choice{##1}\expandafter\pgfkeysalso\expandafter{\pgfkeyscurrentkey/##1},
    .unknown/.code={%
      \def\pgf@marshal{\pgfkeysvalueof{/errors/unknown choice value/.@cmd}}%
      {\expandafter\expandafter\expandafter\pgf@marshal\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@pathtoks\expandafter}\expandafter{\pgfkeys@was@choice}\pgfeov}%
    }%
  }%
}



\pgfkeys{/handlers/.list/.code=%
  {%
    \ifx\foreach\@undefined%
      \pgfkeys@error{You need to load the pgffor package to use the .list key syntax.}%
    \fi%
    \def\pgf@keys@temp{}%
    \foreach \pgf@keys@key in{#1}%
    {\expandafter\expandafter\expandafter\gdef%
      \expandafter\expandafter\expandafter\pgf@keys@temp%
      \expandafter\expandafter\expandafter{\expandafter\pgf@keys@temp\expandafter{\pgf@keys@key}}}%
    \edef\pgf@keys@list@path{\pgfkeyscurrentpath}%
    \expandafter\expandafter\expandafter\pgf@keys@do@list%
    \expandafter\expandafter\expandafter{\expandafter\pgf@keys@list@path\expandafter}\pgf@keys@temp\pgf@stop%
  }%
}
\def\pgf@keys@do@list#1{\pgf@keys@utilifnextchar\bgroup{\pgf@keys@do@list@item{#1}}\pgf@keys@gobble}
\def\pgf@keys@do@list@item#1#2{\pgfkeysalso{#1={#2}}\pgf@keys@do@list{#1}}



\pgfkeys{/handlers/.forward to/.code=%
  \pgfkeys{\pgfkeyscurrentpath/.add code={}{\pgfkeys{#1={##1}}}}
}



\pgfkeys{/handlers/.show value/.code=\pgfkeysgetvalue{\pgfkeyscurrentpath}{\pgfkeysshower}\show\pgfkeysshower} %
\pgfkeys{/handlers/.show code/.code=\pgfkeysgetvalue{\pgfkeyscurrentpath/.@cmd}{\pgfkeysshower}\show\pgfkeysshower} %


\pgfkeys{/handlers/first char syntax/.is if=pgfkeys@syntax@handlers}


\def\pgfkeys@searchalso@prepare@unknown@handler#1{%
  \global\def\pgfkeys@global@temp##1\pgfeov{}%
  \pgfkeys@searchalso@parse#1,\pgfkeys@mainstop
  {%
    \toks0=\expandafter{\pgfkeys@global@temp##1\pgfeov}%
  \toks1={%
    \pgfkeysgetvalue{/handlers/.unknown/.@cmd}{\pgfkeys@code}%
    \expandafter\pgfkeys@code\pgfkeys@searchalso@temp@value\pgfeov
  }%
  \xdef\pgfkeys@global@temp{%
    \noexpand\def\noexpand\pgfkeys@searchalso@temp@value{####1}%
    \noexpand\ifpgfkeysaddeddefaultpath
      \noexpand\expandafter\noexpand\pgfkeys@firstoftwo
    \noexpand\else
      \noexpand\expandafter\noexpand\pgfkeys@secondoftwo
    \noexpand\fi{%
      \noexpand\pgfkeyssuccessfalse
      \noexpand\let\noexpand\pgfkeys@searchalso@name=\noexpand\pgfkeyscurrentkeyRAW
      \the\toks0 %
    }{%
      \the\toks1 %
    }%
  }%
  \expandafter\gdef\expandafter\pgfkeys@global@temp\expandafter##\expandafter1\expandafter\pgfeov\expandafter{\pgfkeys@global@temp}%
  }%
}%

\def\pgfkeys@searchalso@parse{\futurelet\pgfkeys@possiblerelax\pgfkeys@searchalso@parse@main}
\def\pgfkeys@searchalso@parse@main{%
  \ifx\pgfkeys@possiblerelax\pgfkeys@mainstop%
    \expandafter\pgfkeys@cleanup%
  \else%
    \expandafter\pgfkeys@searchalso@appendentry%
  \fi%
}
\def\pgfkeys@searchalso@appendentry#1,#2{%
  \def\pgfkeys@searchalso@nexttok{#2}%
  \pgfkeys@spdef\pgfkeys@temp{#1}%
  {%
    \toks0=\expandafter{\pgfkeys@global@temp##1\pgfeov}%
  \toks1=\expandafter{\pgfkeys@temp}%
  \xdef\pgfkeys@global@temp{%
    \the\toks0 %
    \noexpand\ifpgfkeyssuccess\noexpand\else
      \noexpand\pgfqkeys{\the\toks1 }{\noexpand\pgfkeys@searchalso@name
               \ifx\pgfkeys@searchalso@nexttok\pgfkeys@mainstop\else/.try\fi /.expand once=\noexpand\pgfkeys@searchalso@temp@value}%
    \noexpand\fi}%
  \expandafter\gdef\expandafter\pgfkeys@global@temp\expandafter##\expandafter1\expandafter\pgfeov\expandafter{\pgfkeys@global@temp}%
  }%
  \pgfkeys@searchalso@parse#2%
}
\pgfkeys{%
  /handlers/.is family/.code=\pgfkeys{\pgfkeyscurrentpath/.ecode=\edef\noexpand\pgfkeysdefaultpath{\pgfkeyscurrentpath/}},%
  /handlers/.cd/.code=\edef\pgfkeysdefaultpath{\pgfkeyscurrentpath/},%
  /handlers/.search also/.code={%
    \pgfkeys@searchalso@prepare@unknown@handler{#1}%
    \pgfkeyslet{\pgfkeyscurrentpath/.unknown/.@cmd}{\pgfkeys@global@temp}%
  }
}%



\pgfkeys{/handlers/.expand once/.code=\expandafter\pgfkeys@exp@call\expandafter{#1}}
\pgfkeys{/handlers/.expand twice/.code=\expandafter\expandafter\expandafter\pgfkeys@exp@call\expandafter\expandafter\expandafter{#1}}
\pgfkeys{/handlers/.expanded/.code=\edef\pgfkeys@temp{#1}\expandafter\pgfkeys@exp@call\expandafter{\pgfkeys@temp}}

\long\def\pgfkeys@exp@call#1{\pgfkeysalso{\pgfkeyscurrentpath={#1}}}

\def\pgfkeys@mathparse{%
  \pgfkeys@ifcsname{pgfmathparse}{%
    \pgfmathparse
  }{%
    \pgfkeys@error{You have to load `pgfmath' to use \string\pgfmathparse}%
    \def\pgfmathresult
  }%
}
\pgfkeys{/handlers/.evaluated/.code=\pgfkeys@mathparse{#1}\expandafter\pgfkeys@exp@call\expandafter{\pgfmathresult}}


\newif\ifpgfkeyssuccess
\pgfkeys{/handlers/.try/.code=\pgfkeys@try}
\pgfkeys{/handlers/.retry/.code=\ifpgfkeyssuccess\else\pgfkeys@try\fi}
\def\pgfkeys@try{%
  \edef\pgfkeyscurrentkey{\pgfkeyscurrentpath}%
  \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
    \pgfkeysifdefined{\pgfkeyscurrentpath/.@def}%
    {\pgfkeysgetvalue{\pgfkeyscurrentpath/.@def}{\pgfkeyscurrentvalue}}
    {}%
  \fi%
  \pgfkeysifdefined{\pgfkeyscurrentpath/.@cmd}%
  {%
    \pgfkeysgetvalue{\pgfkeyscurrentpath/.@cmd}{\pgfkeys@code}%
    \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov%
    \pgfkeyssuccesstrue%
  }%
  {%
    \pgfkeysifdefined{\pgfkeyscurrentpath}%
    {%
      \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
        \pgfkeysvalueof{\pgfkeyscurrentpath}%
      \else%
        \pgfkeyslet{\pgfkeyscurrentpath}\pgfkeyscurrentvalue%
      \fi%
      \pgfkeyssuccesstrue%
    }%
    {%
      \pgfkeys@split@path%
      \pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}{%
        \pgfkeys@ifexecutehandler{%
        \pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}%
          \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov
          \pgfkeyssuccesstrue%
      }{%
        \pgfkeyssuccessfalse
      }%
      }{%
      \pgfkeyssuccessfalse
      }%
  }%
  }%
}


\pgfkeys{/utils/exec/.code={#1}} %



\pgfkeys{
  /errors/boolean expected/.code 2 args=%
  {%
    \toks1={#1}%
    \toks2={#2}%
    \pgfkeys@error{%
      Boolean parameter of key '\the\toks1' must be 'true' or 'false', not
      '\the\toks2'. I am going to ignore it%
    }%
  },
  /errors/value required/.code 2 args=%
  {%
    \toks1={#1}%
    \pgfkeys@error{%
      The key '\the\toks1' requires a value. I am going to ignore this
      key%
    }%
  },
  /errors/value forbidden/.code 2 args=%
  {%
    \toks1={#1}%
    \toks2={#2}%
    \pgfkeys@error{%
      You may not specify a value for the key '\the\toks1'. I am going to ignore
      the value '\the\toks2' that you provided%
    }%
  },
  /errors/unknown choice value/.code 2 args=%
  {%
    \toks1={#1}%
    \toks2={#2}%
    \pgfkeys@error{%
      Choice '\the\toks2' unknown in choice key '\the\toks1'. I am
      going to ignore this key%
    }%
  },
  /errors/unknown key/.code 2 args=%
  {%
    \toks1={#1}%
    \toks2={#2}%
    \def\pgf@temp{#2}%
    \pgfkeys@error{%
      I do not know the key '\the\toks1'\ifx\pgf@temp\pgfkeysnovalue@text\space\else, to which you passed
      '\the\toks2', \fi and I am going to ignore it. Perhaps you
      misspelled it%
    }%
  }
}

\pgfkeys{/handlers/.unknown/.code=%
  {%
    \def\pgf@marshal{\pgfkeysvalueof{/errors/unknown key/.@cmd}}%
    {\expandafter\expandafter\expandafter\pgf@marshal\expandafter\expandafter\expandafter{\expandafter\pgfkeyscurrentkey\expandafter}\expandafter{\pgfkeyscurrentvalue}\pgfeov}%
  }%
}

\pgfkeys{
  /handler config/.is choice,
  /handler config/all/.code={%
    \let\pgfkeys@case@three=\pgfkeys@case@three@handleall
    \let\pgfkeys@ifexecutehandler=\pgfkeys@ifexecutehandler@handleall
  },
  /handler config/only existing/.code={%
    \let\pgfkeys@case@three=\pgfkeys@case@three@handle@restricted
    \let\pgfkeys@ifexecutehandler=\pgfkeys@ifexecutehandler@handleonlyexisting
  },
  /handler config/full or existing/.code={%
    \let\pgfkeys@case@three=\pgfkeys@case@three@handle@restricted
    \let\pgfkeys@ifexecutehandler=\pgfkeys@ifexecutehandler@handlefullorexisting
  },
  /handler config/only existing/add exception/.code={\pgfkeysaddhandleonlyexistingexception{#1}},
}%
\pgfkeysaddhandleonlyexistingexception{.cd}%
\pgfkeysaddhandleonlyexistingexception{.try}%
\pgfkeysaddhandleonlyexistingexception{.retry}%
\pgfkeysaddhandleonlyexistingexception{.lastretry}%
\pgfkeysaddhandleonlyexistingexception{.unknown}%
\pgfkeysaddhandleonlyexistingexception{.expand once}%
\pgfkeysaddhandleonlyexistingexception{.expand twice}%
\pgfkeysaddhandleonlyexistingexception{.expanded}%


\def\pgf@keys@gobble#1{}
\long\def\pgf@keys@utilifnextchar#1#2#3{%
  \let\pgf@keys@utilreserved@d=#1%
  \def\pgf@keys@utilreserved@a{#2}%
  \def\pgf@keys@utilreserved@b{#3}%
  \futurelet\pgf@keys@utillet@token\pgf@keys@utilifnch}
\def\pgf@keys@utilifnch{%
  \ifx\pgf@keys@utillet@token\pgf@keys@utilsptoken
    \let\pgf@keys@utilreserved@c\pgf@keys@utilxifnch
  \else
    \ifx\pgf@keys@utillet@token\pgf@keys@utilreserved@d
      \let\pgf@keys@utilreserved@c\pgf@keys@utilreserved@a
    \else
      \let\pgf@keys@utilreserved@c\pgf@keys@utilreserved@b
    \fi
  \fi
  \pgf@keys@utilreserved@c}
{%
  \def\:{\global\let\pgf@keys@utilsptoken= } \:
  \def\:{\pgf@keys@utilxifnch} \expandafter\gdef\: {\futurelet\pgf@keys@utillet@token\pgf@keys@utilifnch}
}

\chardef\pgfkeys@inputcheck0
\def\pgfkeys@IfFileExists#1{%
  \openin\pgfkeys@inputcheck=#1
  \ifeof\pgfkeys@inputcheck
    \expandafter\closein\expandafter\pgfkeys@inputcheck
    \expandafter\pgfkeys@secondoftwo
  \else
    \expandafter\closein\expandafter\pgfkeys@inputcheck
    \expandafter\pgfkeys@firstoftwo
  \fi
}

\def\usepgfkeyslibrary{\pgf@keys@utilifnextchar[{\pgfkeys@@uselibrary}{\pgfkeys@uselibrary}}
\def\pgfkeys@@uselibrary[#1]{\pgfkeys@uselibrary{#1}}
\def\pgfkeys@uselibrary#1{\pgfkeys@uselibrary@parse#1,\pgfkeys@mainstop}
\def\pgfkeys@uselibrary@parse{%
  \pgf@keys@utilifnextchar\pgfkeys@mainstop{\pgfkeys@cleanup}{\pgfkeys@uselibrary@normal}%
}%
\def\pgfkeys@uselibrary@normal#1,{%
  \pgfkeys@uselibrary@load{#1}%
  \pgfkeys@uselibrary@parse
}
\def\pgfkeys@uselibrary@load#1{%
  \expandafter\pgfkeys@spdef\expandafter\pgf@temp\expandafter{#1}%
  \ifx\pgf@temp\pgfkeys@empty\expandafter\pgfkeys@firstoftwo\else\expandafter\pgfkeys@secondoftwo\fi{}{%
    \pgfkeys@ifcsname{pgfkeys@library@\pgf@temp @loaded}{}{%
      \expandafter\let\csname pgfkeys@library@\pgf@temp @loaded\endcsname=\pgfkeys@empty
      \expandafter\edef\csname pgfkeys@library@#1@atcode\endcsname{\the\catcode`\@}%
      \expandafter\edef\csname pgfkeys@library@#1@barcode\endcsname{\the\catcode`\|}%
      \expandafter\edef\csname pgfkeys@library@#1@dollarcode\endcsname{\the\catcode`\$}%
      \catcode`\@=11
      \catcode`\|=12
      \catcode`\$=3
      \pgfkeys@IfFileExists{pgfkeyslibrary\pgf@temp.code.tex}{%
        \input pgfkeyslibrary\pgf@temp.code.tex
      }{%
        \pgfkeys@error{I did not find the pgfkeys library '\pgf@temp'. I looked for the
          file named pgfkeyslibrary\pgf@temp.code.tex, but could not find it in the
          current texmf trees.}%
      }%
      \catcode`\@=\csname pgfkeys@library@#1@atcode\endcsname
      \catcode`\|=\csname pgfkeys@library@#1@barcode\endcsname
      \catcode`\$=\csname pgfkeys@library@#1@dollarcode\endcsname
    }%
  }%
}

\let\pgfkeys@library@filtered@loaded\pgfkeys@empty
\input pgfkeyslibraryfiltered.code.tex

\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfkeys.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfkeyslibraryfiltered.code.tex ====



\let\pgfkeys@orig@case@one=\pgfkeys@case@one
\let\pgfkeys@orig@@set=\pgfkeys@@set
\let\pgfkeys@orig@@qset=\pgfkeys@@qset
\let\pgfkeys@orig@try=\pgfkeys@try
\let\pgfkeys@orig@unknown=\pgfkeys@unknown

\newif\ifpgfkeysfilteringisactive
\newif\ifpgfkeysfiltercontinue
\let\pgfkeys@key@predicate=\pgfkeys@empty
\let\pgfkeys@filtered@handler=\pgfkeys@empty
\newtoks\pgfkeys@tmptoks

\def\pgfkeysfiltered{%
    \expandafter\pgfkeysfiltered@@install\expandafter{\pgfkeysdefaultpath}%
}

\long\def\pgfkeysfiltered@@install#1#2{%
    \pgfkeys@install@filter@and@invoke{%
        \let\pgfkeysdefaultpath\pgfkeys@root%
        \pgfkeys@parse#2,\pgfkeys@mainstop%
        \def\pgfkeysdefaultpath{#1}%
    }%
}

\long\def\pgfkeysalsofrom#1{%
    \expandafter\pgfkeysalso\expandafter{#1}%
}

\long\def\pgfkeysalsofilteredfrom#1{%
    \expandafter\pgfkeysalsofiltered\expandafter{#1}%
}

\long\def\pgfkeysalsofiltered#1{%
    \pgfkeys@install@filter@and@invoke{\pgfkeysalso{#1}}%
}%

\long\def\pgfqkeysfiltered#1{%
    \expandafter\pgfqkeysfiltered@@install\expandafter{\pgfkeysdefaultpath}{#1}%
}

\long\def\pgfqkeysfiltered@@install#1#2#3{%
    \pgfkeys@install@filter@and@invoke{%
        \def\pgfkeysdefaultpath{#2/}\pgfkeys@parse#3,\pgfkeys@mainstop\def\pgfkeysdefaultpath{#1}%
    }%
}



\def\pgfkeysactivatefamily#1{%
    \pgfkeysiffamilydefined
        {#1}%
        {\csname pgfk@#1/familyactivetrue\endcsname}%
        {\pgfkeysvalueof{/errors/family unknown/.@cmd}{#1}\pgfeov}%
}

\def\pgfkeysdeactivatefamily#1{%
    \pgfkeysiffamilydefined
        {#1}%
        {\csname pgfk@#1/familyactivefalse\endcsname}%
        {\pgfkeysvalueof{/errors/family unknown/.@cmd}{#1}\pgfeov}%
}

\def\pgfkeysactivatefamilies#1#2{%
    \pgfkeyssavekeyfilterstateto\pgfkeys@cur@state
    \expandafter\pgfkeysactivatefamilies@impl\expandafter{\pgfkeys@cur@state}{#1}{#2}%
}
\def\pgfkeysactivatefamilies@impl#1#2#3{%
    \pgfkeysinstallkeyfilter{/pgf/key filters/false}{}%
    \let#3=\pgfkeys@empty%
    \def\pgfkeys@filtered@handler{\pgfkeys@family@activate@handler{#3}}%
    \pgfkeysalsofiltered{#2}%
    #1%
}

\def\pgfkeys@family@activate@handler#1{%
    \pgfkeysactivatefamily{\pgfkeyscurrentkey}%
    \pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter#1\expandafter\pgfkeysdeactivatefamily\expandafter{\pgfkeyscurrentkey}}%
    \edef#1{\the\pgfkeys@tmptoks}%
}

\long\def\pgfkeysiffamilydefined#1#2#3{\ifcsname ifpgfk@#1/familyactive\endcsname#2\else#3\fi}

\def\pgfkeysisfamilyactive#1{%
    \pgfkeysiffamilydefined{#1}{%
        \expandafter\let\expandafter\ifpgfkeysfiltercontinue\csname ifpgfk@#1/familyactive\endcsname
    }{%
        \pgfkeysvalueof{/errors/family unknown/.@cmd}{#1}\pgfeov%
        \expandafter\expandafter\expandafter\let\csname ifpgfkeysfiltercontinue\endcsname\csname iffalse\endcsname
    }%
}%

\def\pgfkeysgetfamily#1#2{%
    \pgfkeysifdefined{#1/family}{\pgfkeysgetvalue{#1/family}{#2}\pgfkeyssuccesstrue}{\pgfkeyssuccessfalse}%
}

\def\pgfkeyssetfamily#1#2{%
    \pgfkeysiffamilydefined{#2}{%
        \pgfkeyssetvalue{#1/family}{#2}%
    }{%
        \pgfkeysalso{/errors/family unknown={#2}}%
    }%
}%


\long\def\pgfkeys@cur@is@descendant@of@errors{%
    \expandafter\pgfkeys@cur@is@descendant@of@errors@impl\pgfkeyscurrentkey/errors\pgf@@eov
}%
\long\def\pgfkeys@cur@is@descendant@of@errors@impl#1/errors#2\pgf@@eov{%
    \def\pgfkeyspred@TMP{#1}%
    \ifx\pgfkeyspred@TMP\pgfkeys@empty
        \pgfkeysfiltercontinuetrue
    \else
        \pgfkeysfiltercontinuefalse
    \fi
}%

\def\pgfkeysinterruptkeyfilter{%
    \ifpgfkeysfilteringisactive
        \let\pgfkeys@case@one=\pgfkeys@orig@case@one
        \let\pgfkeys@try=\pgfkeys@orig@try
        \let\pgfkeys@unknown=\pgfkeys@orig@unknown
    \fi
}

\def\endpgfkeysinterruptkeyfilter{%
    \ifpgfkeysfilteringisactive
        \let\pgfkeys@case@one=\pgfkeys@case@one@filtered
        \let\pgfkeys@try=\pgfkeys@try@filtered
        \let\pgfkeys@unknown=\pgfkeys@unknown@filtered
    \fi
}

\def\pgfkeysactivatefamiliesandfilteroptions#1#2{%
    \pgfkeysactivatefamilies{#1}{\pgfkeys@family@deactivation}%
    \pgfkeysfiltered{#2}%
    \pgfkeys@family@deactivation
}

\def\pgfqkeysactivatefamiliesandfilteroptions#1#2#3{%
    \pgfkeysactivatefamilies{#1}{\pgfkeys@family@deactivation}%
    \pgfqkeysfiltered{#2}{#3}%
    \pgfkeys@family@deactivation
}

\def\pgfkeyssplitpath{\pgfkeys@split@path}%


\def\pgfkeysactivatesinglefamilyandfilteroptions#1#2{%
    \pgfkeysactivatefamily{#1}%
    \pgfkeysfiltered{#2}%
    \pgfkeysdeactivatefamily{#1}%
}

\def\pgfqkeysactivatesinglefamilyandfilteroptions#1#2#3{%
    \pgfkeysactivatefamily{#1}%
    \pgfqkeysfiltered{#2}{#3}%
    \pgfkeysdeactivatefamily{#1}%
}

\def\pgfkeysinstallkeyfilter#1#2{%
    \pgfkeysifdefined{#1/.@cmd}{%
        \edef\pgfkeyscurrentkeyfilter{#1}%
        \def\pgfkeyscurrentkeyfilterargs{#2}%
        \pgfkeysgetvalue{#1/.@cmd}{\pgfkeys@key@predicate@}%
        \def\pgfkeys@key@predicate{\pgfkeys@key@predicate@#2\pgfeov}%
    }{%
        \pgfkeysvalueof{/errors/no such key filter/.@cmd}{#1}{#2}\pgfeov%
    }%
}

\def\pgfkeysinstallkeyfilterhandler#1#2{%
    \pgfkeysifdefined{#1/.@cmd}{%
        \edef\pgfkeyscurrentkeyfilterhandler{#1}%
        \def\pgfkeyscurrentkeyfilterhandlerargs{#2}%
        \pgfkeysgetvalue{#1/.@cmd}{\pgfkeys@filtered@handler@}%
        \def\pgfkeys@filtered@handler{\pgfkeys@filtered@handler@#2\pgfeov}%
    }{%
        \pgfkeysvalueof{/errors/no such key filter handler/.@cmd}{#1}{#2}\pgfeov%
    }%
}

\def\pgfkeyssavekeyfilterstateto#1{%
    \pgfkeys@tmptoks={\pgfkeysinstallkeyfilter}%
    \pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@tmptoks\expandafter{\pgfkeyscurrentkeyfilter}}%
    \pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@tmptoks\expandafter{\pgfkeyscurrentkeyfilterargs}\pgfkeysinstallkeyfilterhandler}%
    \pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@tmptoks\expandafter{\pgfkeyscurrentkeyfilterhandler}}%
    \pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfkeys@tmptoks\expandafter{\pgfkeyscurrentkeyfilterhandlerargs}}%
    \edef#1{%
        \the\pgfkeys@tmptoks
    }%
}


\pgfkeys{%
    /errors/family unknown/.code=\pgfkeys@error{%
        Sorry, I do not know family '#1' and can't work with any assoicated family handling. Perhaps you misspelled it?},
    /errors/no such key filter/.code 2 args=\pgfkeys@error{Sorry, there is no such key filter '#1'.},
    /errors/no such key filter handler/.code 2 args=\pgfkeys@error{Sorry, there is no such key filter handler '#1'.},
    /handlers/.is family/.append code={%
        \edef\pgfkeyspred@TMP{pgfk@\pgfkeyscurrentpath/familyactive}%
        \expandafter\pgfkeys@non@outer@newif\expandafter{\pgfkeyspred@TMP}%
        \edef\pgfkeyspred@TMP{\pgfkeyscurrentpath/.belongs to family=\pgfkeyscurrentpath}%
        \expandafter\pgfkeysalso\expandafter{\pgfkeyspred@TMP}%
    },%
    /handlers/.activate family/.code=\pgfkeysactivatefamily{\pgfkeyscurrentpath},
    /handlers/.deactivate family/.code=\pgfkeysdeactivatefamily{\pgfkeyscurrentpath},
    /handlers/.belongs to family/.code={\pgfkeyssetfamily{\pgfkeyscurrentpath}{#1}},%
    /handlers/.lastretry/.code={%
        \ifpgfkeyssuccess\else
            \pgfkeys@try
            \ifpgfkeyssuccess\else
                \pgfkeys@split@path%
                \pgfkeys@unknown
            \fi
        \fi
    },
    /handlers/.install key filter/.code={%
        \pgfkeysinstallkeyfilter{\pgfkeyscurrentpath}{#1}%
    },%
    /handlers/.install key filter handler/.code={%
        \pgfkeysinstallkeyfilterhandler{\pgfkeyscurrentpath}{#1}%
    },%
    /pgf/key filter handlers/append filtered to/.code={%
        \pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter\pgfkeyscurrentkeyRAW\expandafter=\expandafter{\pgfkeyscurrentvalue}}%
        \ifx#1\pgfkeys@empty
        \else
            \pgfkeys@tmptoks=\expandafter\expandafter\expandafter{\expandafter#1\expandafter,\the\pgfkeys@tmptoks}%
        \fi
        \edef#1{\the\pgfkeys@tmptoks}%
    },%
    /pgf/key filter handlers/ignore/.code={},
    /pgf/key filter handlers/ignore/.install key filter handler,
    /pgf/key filter handlers/log/.code={%
        \pgf@typeout{LOG: the option '\pgfkeyscurrentkey' (was originally '\pgfkeyscurrentkeyRAW') (case \pgfkeyscasenumber) has not been processed due to pgfkeysfiltered.}%
    },
    /pgf/key filters/active families/.code={%
        \if\pgfkeyscasenumber0%
            \pgfkeysfiltercontinuetrue
        \else
            \if\pgfkeyscasenumber3%
                \pgfkeysgetfamily\pgfkeyscurrentpath\pgfkeyspred@TMP
            \else
                \pgfkeysgetfamily\pgfkeyscurrentkey\pgfkeyspred@TMP
            \fi
            \ifpgfkeyssuccess
                \pgfkeysisfamilyactive{\pgfkeyspred@TMP}%
            \else%
                \pgfkeysfiltercontinuefalse
            \fi
        \fi
    },%
    /pgf/key filters/active families or no family/.code 2 args={%
        \if\pgfkeyscasenumber0%
            \pgfkeysevalkeyfilterwith{#2}%
        \else
            \if\pgfkeyscasenumber3%
                \pgfkeysgetfamily\pgfkeyscurrentpath\pgfkeyspred@TMP
            \else
                \pgfkeysgetfamily\pgfkeyscurrentkey\pgfkeyspred@TMP
            \fi
            \ifpgfkeyssuccess
                \pgfkeysisfamilyactive{\pgfkeyspred@TMP}%
            \else%
                \pgfkeysevalkeyfilterwith{#1}%
            \fi
        \fi
    },
    /pgf/key filters/active families or no family DEBUG/.code 2 args={%
        \if\pgfkeyscasenumber0%
            \pgf@typeout{[pgfkeyshasactivefamilyornofamily(\pgfkeyscurrentkey, \pgfkeyscasenumber) invoking unknown handler '#2']}%
            \pgfkeysevalkeyfilterwith{#2}%
        \else
            \if\pgfkeyscasenumber3%
                \pgfkeysgetfamily\pgfkeyscurrentpath\pgfkeyspred@TMP
            \else
                \pgfkeysgetfamily\pgfkeyscurrentkey\pgfkeyspred@TMP
            \fi
            \ifpgfkeyssuccess
                \pgfkeysisfamilyactive{\pgfkeyspred@TMP}%
                \ifpgfkeysfiltercontinue
                    \pgf@typeout{[pgfkeyshasactivefamilyornofamily(\pgfkeyscurrentkey, \pgfkeyscasenumber) family is ACTIVE]}%
                \else
                    \pgf@typeout{[pgfkeyshasactivefamilyornofamily(\pgfkeyscurrentkey, \pgfkeyscasenumber) family is NOT active.]}%
                \fi
            \else%
                \pgf@typeout{[pgfkeyshasactivefamilyornofamily(\pgfkeyscurrentkey, \pgfkeyscasenumber) invoking has-no-family-handler '#1']}%
                \pgfkeysevalkeyfilterwith{#1}%
            \fi
        \fi
    },
    /pgf/key filters/active families and known/.code={%
        \if\pgfkeyscasenumber0%
            \pgfkeysfiltercontinuefalse
        \else
            \if\pgfkeyscasenumber3%
                \pgfkeysgetfamily\pgfkeyscurrentpath\pgfkeyspred@TMP
            \else
                \pgfkeysgetfamily\pgfkeyscurrentkey\pgfkeyspred@TMP
            \fi
            \ifpgfkeyssuccess
                \pgfkeysisfamilyactive{\pgfkeyspred@TMP}%
            \else%
                \pgfkeysfiltercontinuefalse
            \fi
        \fi
    },
    /pgf/key filters/active families or descendants of/.code={%
        \if\pgfkeyscasenumber0%
            \pgfkeysfiltercontinuefalse
        \else
            \if\pgfkeyscasenumber3%
                \pgfkeysgetfamily\pgfkeyscurrentpath\pgfkeyspred@TMP
            \else
                \pgfkeysgetfamily\pgfkeyscurrentkey\pgfkeyspred@TMP
            \fi
            \ifpgfkeyssuccess
                \pgfkeysisfamilyactive{\pgfkeyspred@TMP}%
            \else%
                \def\pgfkeysisdescendantof@impl##1#1##2\pgf@@eov{%
                    \def\pgfkeyspred@TMP{##1}%
                    \ifx\pgfkeyspred@TMP\pgfkeys@empty
                        \pgfkeysfiltercontinuetrue
                    \else
                        \pgfkeysfiltercontinuefalse
                    \fi
                }%
                \expandafter\pgfkeysisdescendantof@impl\pgfkeyscurrentkey#1\pgf@@eov
            \fi
        \fi
    },
    /pgf/key filters/is descendant of/.code={%
        \if\pgfkeyscasenumber0%
            \pgfkeysfiltercontinuetrue
        \else
            \def\pgfkeysisdescendantof@impl##1#1##2\pgf@@eov{%
                \def\pgfkeyspred@TMP{##1}%
                \ifx\pgfkeyspred@TMP\pgfkeys@empty
                    \pgfkeysfiltercontinuetrue
                \else
                    \pgfkeysfiltercontinuefalse
                \fi
            }%
            \expandafter\pgfkeysisdescendantof@impl\pgfkeyscurrentkey#1\pgf@@eov
        \fi
    },%
    /pgf/key filters/equals/.code={%
        \if\pgfkeyscasenumber0%
            \pgfkeysfiltercontinuetrue
        \else
            \def\pgfkeyspred@TMP{#1}%
            \ifx\pgfkeyscurrentkey\pgfkeyspred@TMP
                \pgfkeysfiltercontinuetrue
            \else
                \pgfkeysfiltercontinuefalse
            \fi
        \fi
    },%
    /pgf/key filters/not/.code={%
        \pgfkeysevalkeyfilterwith{#1}%
        \ifpgfkeysfiltercontinue
            \pgfkeysfiltercontinuefalse
        \else
            \pgfkeysfiltercontinuetrue
        \fi
    },%
    /pgf/key filters/and/.code 2 args={%
        \pgfkeysevalkeyfilterwith{#1}%
        \ifpgfkeysfiltercontinue
            \pgfkeysevalkeyfilterwith{#2}%
        \fi
    },%
    /pgf/key filters/or/.code 2 args={%
        \pgfkeysevalkeyfilterwith{#1}%
        \ifpgfkeysfiltercontinue
        \else
            \pgfkeysevalkeyfilterwith{#2}%
        \fi
    },%
    /pgf/key filters/true/.code={\pgfkeysfiltercontinuetrue},%
    /pgf/key filters/true/.install key filter,
    /pgf/key filters/false/.code={%
        \pgfkeysfiltercontinuefalse
    },%
    /pgf/key filters/defined/.code={%
        \if\pgfkeyscasenumber0%
            \pgfkeysfiltercontinuefalse
        \else
            \pgfkeysfiltercontinuetrue
        \fi
    },
}%



\def\pgfkeys@case@one@filtered{%
    \pgfkeys@cur@is@descendant@of@errors
    \ifpgfkeysfiltercontinue
        \pgfkeys@orig@case@one
    \else
        \pgfkeysfiltercontinuetrue
        \pgfkeysifdefined{\pgfkeyscurrentkey/.@cmd}{%
            \def\pgfkeyscasenumber{1}%
            \pgfkeys@key@predicate%
            \ifpgfkeysfiltercontinue
                \pgfkeysgetvalue{\pgfkeyscurrentkey/.@cmd}{\pgfkeys@code}%
                \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov
            \else
                \pgfkeys@filtered@handler%
            \fi
        }{%
            \pgfkeysifdefined{\pgfkeyscurrentkey}{%
                \def\pgfkeyscasenumber{2}%
                \pgfkeys@key@predicate%
                \ifpgfkeysfiltercontinue
                    \pgfkeys@case@two@extern
                \else
                    \pgfkeys@filtered@handler%
                \fi
            }{%
                \pgfkeys@split@path
                \pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}{%
                    \pgfkeys@ifexecutehandler{%
                        \def\pgfkeyscasenumber{3}%
                        \pgfkeys@key@predicate%
                        \ifpgfkeysfiltercontinue
                            \pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}%
                            \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov
                        \else
                            \pgfkeys@filtered@handler%
                        \fi
                    }{%
                        \pgfkeys@unknown
                    }%
                }{%
                    \pgfkeys@unknown
                }%
            }%
        }%
    \fi
}%

\def\pgfkeys@unknown@filtered{%
    \def\pgfkeyscasenumber{0}%
    \pgfkeys@key@predicate%
    \ifpgfkeysfiltercontinue
        \pgfkeys@orig@unknown
    \else
        \pgfkeys@filtered@handler%
    \fi
}

\def\pgfkeys@try@filtered{%
    \ifpgfkeysfiltercontinue
        \pgfkeys@orig@try
    \else
        \pgfkeysfiltercontinuetrue
        \edef\pgfkeyscurrentkey{\pgfkeyscurrentpath}%
        \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
            \pgfkeysifdefined{\pgfkeyscurrentpath/.@def}%
            {\pgfkeysgetvalue{\pgfkeyscurrentpath/.@def}{\pgfkeyscurrentvalue}}
            {}%
        \fi%
        \pgfkeysifdefined{\pgfkeyscurrentpath/.@cmd}%
        {%
            \def\pgfkeyscasenumber{1}%
            \pgfkeys@key@predicate%
            \ifpgfkeysfiltercontinue
                \pgfkeysgetvalue{\pgfkeyscurrentkey/.@cmd}{\pgfkeys@code}%
                \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov%
            \else
                \pgfkeys@filtered@handler%
            \fi
            \pgfkeyssuccesstrue%
        }%
        {%
            \pgfkeysifdefined{\pgfkeyscurrentpath}%
            {%
                \def\pgfkeyscasenumber{2}%
                \pgfkeys@key@predicate%
                \ifpgfkeysfiltercontinue
                    \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
                        \pgfkeysvalueof{\pgfkeyscurrentpath}%
                    \else%
                        \pgfkeyslet{\pgfkeyscurrentpath}\pgfkeyscurrentvalue%
                    \fi%
                \else
                    \pgfkeys@filtered@handler%
                \fi
                \pgfkeyssuccesstrue%
            }%
            {%
                \pgfkeys@split@path%
                \pgfkeysifdefined{/handlers/\pgfkeyscurrentname/.@cmd}{%
                    \pgfkeys@ifexecutehandler{%
                        \def\pgfkeyscasenumber{3}%
                        \pgfkeys@key@predicate%
                        \ifpgfkeysfiltercontinue
                            \pgfkeysgetvalue{/handlers/\pgfkeyscurrentname/.@cmd}{\pgfkeys@code}%
                            \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov
                        \else
                            \pgfkeys@filtered@handler%
                        \fi
                        \pgfkeyssuccesstrue%
                    }{%
                        \pgfkeyssuccessfalse
                    }%
                }{%
                    \pgfkeyssuccessfalse
                }%
            }%
        }%
    \fi
}


\long\def\pgfkeys@install@filter@and@invoke#1{%
    \ifpgfkeysfilteringisactive
        \pgfkeys@error{Sorry, nested calls to key filtering routines are not allowed. (reason: It is not possible to properly restore the previous filtering state after returning from the nested call)}%
    \fi
    \pgfkeysfilteringisactivetrue
    \let\pgfkeys@case@one=\pgfkeys@case@one@filtered
    \let\pgfkeys@try=\pgfkeys@try@filtered
    \let\pgfkeys@unknown=\pgfkeys@unknown@filtered
    #1%
    \let\pgfkeys@case@one=\pgfkeys@orig@case@one
    \let\pgfkeys@try=\pgfkeys@orig@try
    \let\pgfkeys@unknown=\pgfkeys@orig@unknown
    \pgfkeysfilteringisactivefalse
}




\long\def\pgfkeysevalkeyfilterwith#1{%
    \pgfkeys@eval@key@filter@subroutine@unpack#1=\pgfkeysnovalue=\pgfkeys@stop
}%
\long\def\pgfkeys@eval@key@filter@subroutine@unpack#1=#2=#3\pgfkeys@stop{%
    \pgfkeys@spdef\pgfkeyspred@TMP{#1}%
    \edef\pgfkeyspred@TMP{\pgfkeyspred@TMP}%
    \pgfkeys@spdef\pgfkeyspred@TMPB{#2}%
    \ifx\pgfkeyspred@TMPB\pgfkeysnovalue@text%
        \pgfkeysifdefined{\pgfkeyspred@TMP/.@def}%
        {\pgfkeysgetvalue{\pgfkeyspred@TMP/.@def}{\pgfkeyspred@TMPB}}
        {}%
    \fi%
    \ifx\pgfkeyspred@TMPB\pgfkeysvaluerequired%
        \pgfkeysvalueof{/errors/value required/.@cmd}\pgfkeyspred@TMP\pgfkeyspred@TMPB\pgfeov%
    \else%
        \pgfkeysifdefined{\pgfkeyspred@TMP/.@cmd}{%
            \pgfkeysgetvalue{\pgfkeyspred@TMP/.@cmd}{\pgfkeys@code}%
            \expandafter\pgfkeys@code\pgfkeyspred@TMPB\pgfeov
        }{%
            \pgfkeysvalueof{/errors/no such key filter/.@cmd}\pgfkeyspred@TMP\pgfkeyspred@TMPB\pgfeov%
        }%
    \fi%
}


\def\pgfkeys@non@outer@newif@#1#2{%
    \expandafter\edef\csname #2true\endcsname{\noexpand\let\noexpand#1=\noexpand\iftrue}%
    \expandafter\edef\csname #2false\endcsname{\noexpand\let\noexpand#1=\noexpand\iffalse}%
    \csname #2false\endcsname
}%

\def\pgfkeys@non@outer@newif#1{%
    \expandafter\pgfkeys@non@outer@newif@\csname if#1\endcsname{#1}%
}
\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfkeyslibraryfiltered.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibraryarrows.meta.code.tex ====

\ProvidesFileRCS{pgflibraryarrows.meta.code.tex}





\newdimen\pgfarrowinset
\newdimen\pgfarrowlength
\newdimen\pgfarrowwidth
\newdimen\pgfarrowlinewidth
\newif\ifpgfarrowroundcap
\newif\ifpgfarrowroundjoin

\pgfarrowsaddtolengthscalelist\pgfarrowlength
\pgfarrowsaddtolengthscalelist\pgfarrowinset
\pgfarrowsaddtowidthscalelist\pgfarrowwidth


\pgfkeys{
  /pgf/arrow keys/.cd,
  length/.code={%
    \pgfarrowsthreeparameters{#1}%
    \expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\pgfarrowslinewidthdependent\pgfarrowstheparameters\pgfarrowlength\pgf@x}%
  },
  inset/.code={%
    \pgfarrowsthreeparameters{#1}%
    \expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslinewidthdependent\pgfarrowstheparameters\pgfarrowinset\pgf@x}%
  },
  inset'/.code={
    \pgfarrowsthreeparameters{#1}%
    \expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslengthdependent\pgfarrowstheparameters\pgfarrowinset}%
  },
  line width/.code={%
    \pgfarrowsthreeparameters{#1}%
    \expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslinewidthdependent\pgfarrowstheparameters\pgfarrowlinewidth\pgf@x}%
  },
  line width'/.code={
    \pgfarrowsthreeparameters{#1}%
    \expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslengthdependent\pgfarrowstheparameters\pgfarrowlinewidth}%
  },
  width/.code={%
    \pgfarrowsthreeparameters{#1}%
    \expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslinewidthdependent\pgfarrowstheparameters\pgfarrowwidth\pgf@x}%
  },
  width'/.code={%
    \pgfarrowsthreeparameters{#1}%
    \expandafter\pgfarrowsaddtolateoptions\expandafter{\expandafter\pgfarrowslengthdependent\pgfarrowstheparameters\pgfarrowwidth}%
  },
  angle/.code={%
    \pgfarrowsfourparameters{#1}%
    \expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\pgfarrows@angle@setup\pgfarrowstheparameters}%
  },
  angle'/.code={
    \pgfarrowsaddtolateoptions{\pgfarrows@angle@setup@prime{#1}}%
  },
  line cap/.is choice,
  line cap/butt/.code=\pgfarrowsaddtooptions{\pgfarrowroundcapfalse},
  line cap/round/.code=\pgfarrowsaddtooptions{\pgfarrowroundcaptrue},
  line join/.is choice,
  line join/miter/.code=\pgfarrowsaddtooptions{\pgfarrowroundjoinfalse},
  line join/round/.code=\pgfarrowsaddtooptions{\pgfarrowroundjointrue},
  round/.style={line cap=round,line join=round},
  sharp/.style={line cap=butt,line join=miter},
}%






\pgfdeclarearrow{
  name = Straight Barb,
  defaults = {
    length = +1.5pt 2,
    width'  = +0pt 2,
    line width = +0pt 1 1,
  },
  setup code = {
    \pgfmathdivide@{\pgf@sys@tonumber\pgfarrowlength}{\pgf@sys@tonumber\pgfarrowwidth}%
    \let\pgf@temp@quot\pgfmathresult%
    \pgf@x\pgfmathresult pt%
    \pgf@x\pgfmathresult\pgf@x%
    \pgf@x4\pgf@x%
    \advance\pgf@x by1pt%
    \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
    \pgf@xc\pgfmathresult\pgfarrowlinewidth%
    \pgf@xc.5\pgf@xc
    \pgf@xa\pgf@temp@quot\pgfarrowlinewidth%
    \ifpgfarrowroundjoin
      \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}
    \else
      \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by\pgf@xc\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi}
    \fi
    \pgfarrowssetvisualbackend{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}
    \pgfarrowssetbackend{-.5\pgfarrowlinewidth}
    \ifpgfarrowreversed
      \pgfarrowssetlineend{\pgfarrowlength\ifpgfarrowharpoon\advance\pgf@x by.5\pgfarrowlinewidth\fi}
    \else
      \pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}
    \fi
    \ifpgfarrowroundjoin
      \pgfarrowshullpoint{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else0pt\fi}%
    \else%
      \ifpgfarrowharpoon
        \pgfarrowshullpoint{\pgfarrowlength\advance\pgf@x by\pgf@xc\advance\pgf@x by\pgf@xa}{-.5\pgfarrowlinewidth}%
      \else
        \pgfarrowshullpoint{\pgfarrowlength\advance\pgf@x by\pgf@xc\advance\pgf@x by\pgf@xa}{0pt}%
      \fi%
    \fi
    \pgfarrowsupperhullpoint{.5\pgfarrowlinewidth}{.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}%
    \pgfarrowsupperhullpoint{-.5\pgfarrowlinewidth}{.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}%
    \ifpgfarrowharpoon
      \pgfarrowshullpoint{-.5\pgfarrowlinewidth}{-.5\pgfarrowlinewidth}%
    \fi
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowwidth
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \pgfpathmoveto{\pgfqpoint{0pt}{.5\pgfarrowwidth}}
    \pgfpathlineto{\pgfqpoint{\pgfarrowlength}{0pt}}
    \ifpgfarrowharpoon
      \pgfpathlineto{\pgfqpoint{\pgfarrowlength\advance\pgf@x by\ifpgfarrowreversed\else-\fi\pgfarrowlinewidth}{0pt}}
    \else
      \pgfpathlineto{\pgfqpoint{0pt}{-.5\pgfarrowwidth}}
    \fi
    \pgfusepathqstroke
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowroundjoin j\fi%
    \ifpgfarrowroundcap c\fi%
  },
}%

\pgfkeys{
  /pgf/arrow keys/.cd,
  arc/.code={%
    \pgfmathparse{#1}%
    \expandafter\pgfarrowsaddtooptions\expandafter{\expandafter\def\expandafter\pgfarrowarc\expandafter{\pgfmathresult}}
  }
}%

\def\pgfarrowarc{180}%

\pgfdeclarearrow{
  name = Hooks,
  defaults = {
    length = +0.75pt 1.25,
    width'  = +0pt 4 -1,
    line width = +0pt 1 1,
  },
  setup code = {
    \ifpgfarrowharpoon
      \pgfarrowshullpoint{.5\pgfarrowlength}{-.5\pgfarrowlinewidth}
      \pgfarrowshullpoint{\pgfarrowlength}{-.5\pgfarrowlinewidth\advance\pgf@y by.125\pgfarrowwidth}
    \fi
    \ifdim\pgfarrowarc pt<90.1pt
      \pgfarrowsupperhullpoint{0pt}{.25\pgfarrowwidth\ifpgfarrowroundcap\else\advance\pgf@y by-.25\pgfarrowlinewidth\fi}
      \pgfarrowsupperhullpoint{\pgfarrowlength}{.25\pgfarrowwidth\ifpgfarrowroundcap\else\advance\pgf@y by-.25\pgfarrowlinewidth\fi}
    \else%
      \pgfarrowsupperhullpoint{\pgfarrowlength}{.375\pgfarrowwidth}
      \pgfarrowsupperhullpoint{.5\pgfarrowlength}{.5\pgfarrowwidth}
      \ifdim\pgfarrowarc pt>180pt
        \pgfarrowsupperhullpoint{-.5\pgfarrowlength}{.5\pgfarrowwidth}
        \pgfarrowsupperhullpoint{-\pgfarrowlength}{.375\pgfarrowwidth}
        \pgfarrowsupperhullpoint{-\pgfarrowlength}{.25\pgfarrowwidth}
      \else
        \pgfarrowsupperhullpoint{\ifpgfarrowroundcap-.5\pgfarrowlinewidth\else0pt\fi}{.25\pgfarrowwidth}
        \pgfarrowsupperhullpoint{\ifpgfarrowroundcap-.5\pgfarrowlinewidth\else0pt\fi}{.5\pgfarrowwidth}
      \fi
    \fi
    \advance\pgfarrowlength by-.5\pgfarrowlinewidth
    \advance\pgfarrowwidth by-\pgfarrowlinewidth
    \ifpgfarrowreversed
      \ifpgfarrowroundjoin
        \pgfarrowssetbackend{-.5\pgfarrowlinewidth}
      \fi
    \fi
    \ifdim\pgfarrowarc pt<90pt%
      \pgfmathsin@{\pgfarrowarc}
      \pgfarrowssettipend{\pgfmathresult\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}%
    \else\ifdim\pgfarrowarc pt<180pt%
      \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}%
      \ifpgfarrowroundcap\pgfarrowssetbackend{-.5\pgfarrowlinewidth}\fi%
    \else\ifdim\pgfarrowarc pt<270pt%
      \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}%
      \ifdim\pgfarrowarc pt>180pt
        \pgfmathsin@{\pgfarrowarc}
        \pgfarrowssetbackend{\pgfmathresult\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}%
      \else
        \ifpgfarrowroundcap\pgfarrowssetbackend{-.5\pgfarrowlinewidth}\fi%
      \fi%
    \else%
      \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by.5\pgfarrowlinewidth}%
      \pgfarrowssetbackend{-\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}%
    \fi\fi\fi%
    \ifpgfarrowreversed
      \pgfarrowssetlineend{.5\pgfarrowlinewidth}
    \else%
      \ifpgfarrowharpoon
        \pgfarrowssetlineend{0pt}
      \else
        \pgfarrowssetlineend{.25\pgfarrowlinewidth}
      \fi
    \fi
    \pgf@x\pgfarrowarc pt%
    \advance\pgf@x by-90pt%
    \edef\pgfarrowarc{\pgf@sys@tonumber\pgf@x}%
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowwidth
    \pgfarrowssave\pgfarrowarc
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    {%
      \pgftransformxscale{+\pgfarrowlength}
      \pgftransformyscale{+.25\pgfarrowwidth}
      \pgfpathmoveto{\pgfpointpolar{+\pgfarrowarc}{+1pt}\advance\pgf@y by1pt}
      \pgfpatharc{\pgfarrowarc}{+-90}{+1pt}
      \ifpgfarrowharpoon
      \else
        \pgfpatharc{+90}{+-\pgfarrowarc}{+1pt}
      \fi
    }
    \ifpgfarrowharpoon\ifpgfarrowreversed
    \pgfpathlineto{\pgfqpoint{\pgflinewidth}{0pt}}
    \fi\fi
    \pgfusepathqstroke
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \pgfarrowarc,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowroundjoin j\fi%
    \ifpgfarrowroundcap c\fi%
  },
}%


\pgfdeclarearrow{
  name = Arc Barb,
  defaults = {
    length = +1.5pt 2,
    width'  = +0pt 2,
    line width = +0pt 1 1,
  },
  setup code = {
    \pgf@x\pgfarrowarc pt%
    \pgf@x.5\pgf@x%
    \edef\pgfarrowarc{\pgf@sys@tonumber\pgf@x}%
    \pgfarrowssettipend{\pgfarrowlength}
    \pgfarrowssetvisualbackend{\pgfarrowlength}
    \pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}
    \pgfarrowsupperhullpoint{\pgfarrowlength}{.25\pgfarrowwidth}
    \ifpgfarrowharpoon\pgfarrowshullpoint{\pgfarrowlength}{-.5\pgflinewidth}\fi
    \pgfmathsincos@{\pgfarrowarc}%
    \pgf@xa.5\pgfarrowwidth%
    \pgfarrowsupperhullpoint{\pgfmathresultx\pgfarrowlength}{\pgfmathresulty\pgf@xa}
    \ifdim\pgfarrowarc pt>60pt
      \pgfarrowsupperhullpoint{.5\pgfarrowlength}{\ifdim\pgfarrowarc pt<90pt\pgfmathresulty\pgf@xa\else.5\pgfarrowwidth\fi}
    \fi
    \ifdim\pgfarrowarc pt>90pt
      \ifdim\pgfarrowarc pt<120pt
        \pgfarrowsupperhullpoint{\pgfmathresultx\pgfarrowlength}{.5\pgfarrowwidth}
      \else
        \pgfarrowsupperhullpoint{-.5\pgfarrowlength}{.5\pgfarrowwidth}
        \ifdim\pgfarrowarc pt>150pt
          \pgfarrowsupperhullpoint{-\pgfarrowlength}{.25\pgfarrowwidth}
        \fi
      \fi
    \fi
    \pgfutil@tempswafalse
    \ifdim\pgfarrowarc pt<90pt
      \pgfutil@tempswatrue
    \fi
    \ifpgfarrowharpoon
      \pgfutil@tempswatrue
    \fi
    \ifpgfutil@tempswa
      \pgf@xa.5\pgfarrowwidth\advance\pgf@xa by-\pgfarrowlinewidth%
      \pgf@ya\pgfarrowlength\advance\pgf@ya by-\pgfarrowlinewidth%
      \pgfarrowsupperhullpoint{\pgfmathresultx\pgf@ya}{\pgfmathresulty\pgf@xa}
    \fi
    \ifpgfarrowroundcap
      \pgf@y\pgfarrowlength
      \advance\pgf@y by-.5\pgfarrowlinewidth
      \pgf@x\pgfmathresultx\pgf@y%
    \else
      \ifdim\pgfarrowarc pt<90pt
        \pgf@y\pgfarrowlength
        \advance\pgf@y by-\pgfarrowlinewidth
        \pgf@x\pgfmathresultx\pgf@y%
      \else
        \pgf@x\pgfmathresultx\pgfarrowlength%
      \fi
    \fi
    \pgfarrowssetbackend{\pgf@x\ifpgfarrowroundcap\advance\pgf@x by-.5\pgfarrowlinewidth\fi}
    \advance\pgfarrowlength by-.5\pgfarrowlinewidth
    \advance\pgfarrowwidth by-\pgfarrowlinewidth
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowwidth
    \pgfarrowssave\pgfarrowarc
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    {%
      \pgftransformxscale{+\pgfarrowlength}
      \pgftransformyscale{+.5\pgfarrowwidth}
      \pgfpathmoveto{\pgfpointpolar{+\pgfarrowarc}{+1pt}}
      \ifpgfarrowharpoon
        \pgfpatharc{+\pgfarrowarc}{0pt}{+1pt}
      \else
        \pgfpatharc{+\pgfarrowarc}{+-\pgfarrowarc}{+1pt}
      \fi
    }
    \ifpgfarrowharpoon
      \pgfpathlineto{\pgfqpoint{\pgfarrowlength\advance\pgf@x by\ifpgfarrowreversed\else-\fi.5\pgflinewidth}{0pt}}
    \fi
    \pgfusepathqstroke
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \pgfarrowarc,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowroundcap c\fi%
    \ifpgfarrowroundjoin j\fi%
  },
}%




\pgfdeclarearrow{
  name = Tee Barb,
  defaults = {
    length = +1.5pt 2,
    width = +3pt 4,
    inset' = +0pt .5,
    line width = +0pt 1 1,
  },
  bending mode=polar,
  setup code = {
    \pgfutil@tempswafalse%
    \pgfutil@tempswbfalse%
    \pgfutil@tempdima\pgfarrowlength\advance\pgfutil@tempdima by-\pgfarrowinset\ifdim\pgfutil@tempdima<.5\pgfarrowlinewidth\pgfutil@tempdima.5\pgfarrowlinewidth\pgfutil@tempswatrue\fi%
    \pgfutil@tempdimb-\pgfarrowinset\ifdim\pgfutil@tempdimb>-.5\pgfarrowlinewidth\pgfutil@tempdimb-.5\pgfarrowlinewidth\pgfutil@tempswbtrue\fi
    \pgfarrowssavethe\pgfarrowwidth
    \pgfarrowssavethe\pgfutil@tempdima
    \pgfarrowssavethe\pgfutil@tempdimb
    \pgfarrowssettipend{\pgfutil@tempdima\ifpgfarrowroundcap\ifpgfutil@tempswa\else\advance\pgf@x by.5\pgfarrowlinewidth\fi\fi}
    \pgfarrowssetvisualbackend{.5\pgfarrowlinewidth}
    \pgfarrowssetbackend{\pgfutil@tempdimb\ifpgfarrowroundcap\ifpgfutil@tempswb\else\advance\pgf@x by-.5\pgfarrowlinewidth\fi\fi}
    \pgfarrowssetlineend{\ifpgfarrowreversed\else-\fi.25\pgfarrowlinewidth}%
    \pgfarrowsupperhullpoint{\pgfutil@tempdima\ifpgfarrowroundcap\ifpgfutil@tempswa\else\advance\pgf@x by.5\pgfarrowlinewidth\fi\fi}{.5\pgfarrowwidth}%
    \pgfarrowsupperhullpoint{\pgfutil@tempdimb\ifpgfarrowroundcap\ifpgfutil@tempswb\else\advance\pgf@x by-.5\pgfarrowlinewidth\fi\fi}{.5\pgfarrowwidth}%
    \ifpgfarrowharpoon
      \pgfarrowshullpoint{.5\pgfarrowlinewidth}{-.5\pgfarrowlinewidth}%
    \fi
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \pgf@yc\pgflinewidth%
    \ifdim\pgflinewidth=\pgfarrowlinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \pgf@x\pgfutil@tempdima\advance\pgf@x by-.5\pgfarrowlinewidth%
    \pgf@y\pgfutil@tempdimb\advance\pgf@y by.5\pgfarrowlinewidth%
    \ifdim\pgf@x=\pgf@y%
      \pgfpathmoveto{\pgfqpoint{0pt}{.5\pgfarrowwidth}}
      \pgfpathlineto{\pgfqpoint{0pt}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else-.5\pgfarrowwidth\fi}}
    \else
      \ifdim\pgfutil@tempdima=.5\pgfarrowlinewidth%
        \pgfpathmoveto{\pgfqpoint{\pgfutil@tempdimb}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
        \pgfpathlineto{\pgfqpoint{0pt}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
        \ifpgfarrowharpoon%
          \pgfpathlineto{\pgfqpoint{0pt}{-.5\pgf@yc}}%
        \else%
          \pgfpathlineto{\pgfqpoint{0pt}{-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}}
          \pgfpathlineto{\pgfqpoint{\pgfutil@tempdimb}{-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}}
        \fi
      \else%
        \pgfpathmoveto{\pgfqpoint{\pgfutil@tempdimb}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
        \pgfpathlineto{\pgfqpoint{\pgfutil@tempdima}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
        \pgfpathmoveto{\pgfqpoint{0pt}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
        \ifpgfarrowharpoon%
          \pgfpathlineto{\pgfqpoint{0pt}{-.5\pgf@yc}}%
        \else%
          \pgfpathlineto{\pgfqpoint{0pt}{-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}}
          \pgfpathmoveto{\pgfqpoint{\pgfutil@tempdimb}{-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}}
          \pgfpathlineto{\pgfqpoint{\pgfutil@tempdima}{-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth}}
        \fi
      \fi
    \fi
    \pgfusepathqstroke
  },
  parameters = {
    \the\pgfarrowwidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowinset,%
    \the\pgfarrowlinewidth,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowroundjoin j\fi%
    \ifpgfarrowroundcap c\fi%
  },
}%






\pgfdeclarearrow{
  name = Classical TikZ Rightarrow,
  defaults = {
    length  = +1.05pt 1.925,
    width'  = +0pt 1.9237,
    line width = 0pt 0.8 1,
    round
  },
  setup code =
  {
    \ifpgfarrowharpoon\pgfarrowroundjointrue\fi
    \pgfutil@tempdima\pgfarrowlength
    \advance\pgfutil@tempdima by-\pgfarrowlinewidth
    \pgfutil@tempdimb\pgfarrowwidth
    \advance\pgfutil@tempdimb by-\pgfarrowlinewidth
    \ifpgfarrowroundjoin%
    \else%
      \pgfmathdivide@{\pgf@sys@tonumber\pgfutil@tempdima}{\pgf@sys@tonumber\pgfutil@tempdimb}%
      \let\pgf@temp@quot\pgfmathresult%
      \pgf@x\pgfmathresult pt%
      \pgf@x\pgfmathresult\pgf@x%
      \pgf@x40.96\pgf@x%
      \advance\pgf@x by1pt%
      \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
      \pgf@xc\pgfmathresult\pgfarrowlinewidth%
      \pgf@xc.5\pgf@xc
    \fi%
    \pgfarrowssavethe\pgfutil@tempdima
    \pgfarrowssavethe\pgfutil@tempdimb
    \pgfarrowssettipend{\pgfutil@tempdima\ifpgfarrowroundjoin\advance\pgf@x by.5\pgfarrowlinewidth\else\advance\pgf@x by\pgf@xc\fi}%
    \pgfarrowssetvisualbackend{\pgfutil@tempdima\advance\pgf@x by.5\pgfarrowlinewidth}%
    \ifpgfarrowreversed%
      \ifpgfarrowharpoon%
        \pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by.5\pgflinewidth}%
      \else%
        \pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by-.25\pgflinewidth}%
      \fi%
    \else%
      \pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by-.6\pgflinewidth}%
    \fi%
    \pgfarrowssetbackend{-.5\pgfarrowlinewidth}%
    \pgfarrowshullpoint{\pgfutil@tempdima\ifpgfarrowroundjoin\advance\pgf@x by.5\pgfarrowlinewidth\else\advance\pgf@x by\pgf@xc\fi}{.5\pgfarrowlinewidth}%
    \pgfarrowshullpoint{\pgfutil@tempdima\ifpgfarrowroundjoin\advance\pgf@x by.5\pgfarrowlinewidth\else\advance\pgf@x by\pgf@xc\fi}{-.5\pgfarrowlinewidth}%
    \pgfarrowsupperhullpoint{.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by.5\pgfarrowlinewidth}%
    \pgfarrowsupperhullpoint{-.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by.5\pgfarrowlinewidth}%
    \ifpgfarrowharpoon
      \pgfarrowshullpoint{\pgfutil@tempdima\advance\pgf@x by-\pgflinewidth}{-.5\pgflinewidth}%
      \pgfarrowshullpoint{-.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by-.5\pgflinewidth}%
    \fi
  },
  drawing code =
  {
    \pgfsetdash{}{+0pt}
    \edef\pgf@orig@linewidth{\the\pgflinewidth}
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \ifpgfarrowharpoon\pgfarrowroundjointrue\fi
    \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \pgfpathmoveto
          {\pgfqpoint{0pt}{.5\pgfutil@tempdimb}}
    \ifpgfarrowharpoon
      \pgf@arrows@old@tikz@harpoon
    \else
      \pgfpathcurveto
          {\pgfqpoint{0.066666\pgfutil@tempdima}{0.3125\pgfutil@tempdimb}}
          {\pgfqpoint{.8\pgfutil@tempdima}{0.03125\pgfutil@tempdimb}}
          {\pgfqpoint{\pgfutil@tempdima}{0pt}}
      \pgfpathcurveto
          {\pgfqpoint{.8\pgfutil@tempdima}{-.03125\pgfutil@tempdimb}}
          {\pgfqpoint{0.066666\pgfutil@tempdima}{-.3125\pgfutil@tempdimb}}
          {\pgfqpoint{0pt}{-.5\pgfutil@tempdimb}}
      \pgfsetlinewidth{+\pgfarrowlinewidth}
      \pgfusepathqstroke
    \fi
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowroundjoin j\fi%
    \ifpgfarrowroundcap c\fi%
  },
}%

\def\pgf@arrows@old@tikz@harpoon{
  \ifpgfarrowreversed
    \pgf@arrows@old@tikz@harpoon@reversed
  \else
    \pgfpathcurveto
      {\pgfqpoint{0.066666\pgfutil@tempdima}{0.3125\pgfutil@tempdimb}}
      {\pgfqpoint{.8\pgfutil@tempdima}{0.03125\pgfutil@tempdimb}}
      {\pgfqpoint{\pgfutil@tempdima}{0pt}}
    \pgfpathcurveto
      {\pgfqpoint{0.95\pgfutil@tempdima}{-0.125\pgflinewidth}}
      {\pgfqpoint{0.933333\pgfutil@tempdima}{-0.125\pgflinewidth}}
      {\pgfqpoint{0.933333\pgfutil@tempdima}{-0.125\pgflinewidth}}
    \pgfpathlineto
      {\pgfqpoint{0.8\pgfutil@tempdima\advance\pgf@x by-.5\pgflinewidth}{-0.125\pgflinewidth}}
    \pgfusepathqstroke
  \fi
}%
\def\pgf@arrows@old@tikz@harpoon@reversed{
    \pgfpathcurveto
      {\pgfqpoint{0.066666\pgfutil@tempdima}{0.3125\pgfutil@tempdimb}}
      {\pgfqpoint{.8\pgfutil@tempdima}{0.03125\pgfutil@tempdimb}}
      {\pgfqpoint{\pgfutil@tempdima}{0.125\pgflinewidth}}
    \pgfpathmoveto
      {\pgfqpoint{0pt}{.5\pgfutil@tempdimb}}
    \pgfpathcurveto
      {\pgfqpoint{0.066666\pgfutil@tempdima}{0.3125\pgfutil@tempdimb}}
      {\pgfqpoint{.8\pgfutil@tempdima}{0.03125\pgfutil@tempdimb}}
      {\pgfqpoint{\pgfutil@tempdima}{-0.125\pgflinewidth}}
    \pgfusepathqstroke
    \pgfsetlinewidth{+\pgf@orig@linewidth}
    \pgfsetroundcap
    \pgfpathmoveto{\pgfqpoint{\pgfutil@tempdima\advance\pgf@x by0.6\pgflinewidth}{0pt}}
    \pgfpathlineto{\pgfqpoint{\pgfutil@tempdima}{0pt}}
    \pgfusepathqstroke
}%



\pgfdeclarearrow{
  name = Computer Modern Rightarrow,
  defaults = {
    length = +1.6pt 2.2, %
    width' = +0pt 2.096774,
    line width = 0pt 1 1,
    round
  },
  setup code =
  {
    \pgfutil@tempdima\pgfarrowlength
    \advance\pgfutil@tempdima by-\pgfarrowlinewidth
    \pgfutil@tempdimb\pgfarrowwidth
    \advance\pgfutil@tempdimb by-\pgfarrowlinewidth
    \pgfarrowssavethe\pgfutil@tempdima
    \pgfarrowssavethe\pgfutil@tempdimb
    \ifpgfarrowroundjoin%
    \else%
      \pgfmathdivide@{\pgf@sys@tonumber\pgfutil@tempdima}{\pgf@sys@tonumber\pgfutil@tempdimb}%
      \let\pgf@temp@quot\pgfmathresult%
      \pgf@x\pgfmathresult pt%
      \pgf@x\pgfmathresult\pgf@x%
      \pgf@x49.44662\pgf@x%
      \advance\pgf@x by1pt%
      \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
      \pgf@xc\pgfmathresult\pgfarrowlinewidth%
      \pgf@xc.5\pgf@xc
      \pgf@xa\pgf@temp@quot\pgfarrowlinewidth%
      \pgf@xa3.51591\pgf@xa%
    \fi%
    \pgfarrowssettipend{\ifpgfarrowroundjoin.5\pgfarrowlinewidth\else\pgf@xc\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi\fi}%
    \pgfarrowssetvisualbackend{.5\pgfarrowlinewidth}%
    \ifpgfarrowreversed%
      \ifpgfarrowharpoon%
        \pgfarrowssetlineend{.5\pgfarrowlinewidth}%
      \else%
        \pgfarrowssetlineend{-.5\pgfarrowlinewidth}%
      \fi%
    \else%
      \pgfarrowssetlineend{-.5\pgfarrowlinewidth}%
    \fi%
    \pgfarrowssetbackend{-\pgfutil@tempdima\advance\pgf@x by-.5\pgfarrowlinewidth}%
    \pgfarrowshullpoint{\ifpgfarrowroundjoin.5\pgfarrowlinewidth\else\pgf@xc\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi\fi}{.5\pgfarrowlinewidth}%
    \pgfarrowshullpoint{\ifpgfarrowroundjoin.5\pgfarrowlinewidth\else\pgf@xc\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi\fi}{-.5\pgfarrowlinewidth}%
    \pgfarrowsupperhullpoint{-\pgfutil@tempdima\advance\pgf@x by.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by.5\pgfarrowlinewidth}%
    \pgfarrowsupperhullpoint{-\pgfutil@tempdima\advance\pgf@x by-.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by.5\pgfarrowlinewidth}%
    \ifpgfarrowharpoon
      \pgfarrowshullpoint{-\pgfarrowlinewidth}{-.5\pgfarrowlinewidth}%
      \pgfarrowshullpoint{-\pgfutil@tempdima\advance\pgf@x by-.5\pgfarrowlinewidth}{.5\pgfutil@tempdimb\advance\pgf@y by-.5\pgfarrowlinewidth}%
    \fi
  },
  drawing code =
  {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \pgfpathmoveto
        {\pgfqpoint{-\pgfutil@tempdima}{.5\pgfutil@tempdimb}}
    \pgfpathcurveto
        {\pgfqpoint{-0.81731\pgfutil@tempdima}{.2\pgfutil@tempdimb}}
        {\pgfqpoint{-0.41019\pgfutil@tempdima}{0.05833333\pgfutil@tempdimb}}
        {\pgfpointorigin}
    \ifpgfarrowharpoon
      \pgfpathlineto
        {\pgfqpoint{\ifpgfarrowreversed.5\else-\fi\pgfarrowlinewidth}{0pt}}
    \else
      \pgfpathcurveto
        {\pgfqpoint{-0.41019\pgfutil@tempdima}{-0.05833333\pgfutil@tempdimb}}
        {\pgfqpoint{-0.81731\pgfutil@tempdima}{-.2\pgfutil@tempdimb}}
        {\pgfqpoint{-\pgfutil@tempdima}{-.5\pgfutil@tempdimb}}
    \fi
    \pgfusepathqstroke
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \ifpgfarrowharpoon h\fi
    \ifpgfarrowharpoon r\fi
    \ifpgfarrowroundjoin j\fi%
    \ifpgfarrowroundcap c\fi%
  },
}%




\pgfdeclarearrow{
  name = Implies,
  setup code = {
    \pgf@xa\pgfinnerlinewidth
    \pgfutil@tempdima.25\pgflinewidth
    \advance\pgfutil@tempdima by.25\pgf@xa%
    \pgfutil@tempdimb.5\pgflinewidth
    \advance\pgfutil@tempdimb by-.5\pgf@xa%
    \pgfarrowssettipend{2.06\pgfutil@tempdima\advance\pgf@x by.5\pgfutil@tempdimb}
    \pgfarrowssetbackend{-1.36\pgfutil@tempdima\advance\pgf@x by.5\pgfutil@tempdimb}
    \pgfarrowsupperhullpoint{-1.4\pgfutil@tempdima}{2.8\pgfutil@tempdima}
    \pgfarrowsupperhullpoint{2\pgfutil@tempdima}{.5\pgfutil@tempdimb}
    \pgfarrowssavethe\pgfutil@tempdima
    \pgfarrowssavethe\pgfutil@tempdimb
  },
  drawing code = {
    \pgftransformxshift{.06\pgfutil@tempdima}
    \pgfsetlinewidth{\pgfutil@tempdimb}
    \pgfsetdash{}{+0pt}
    \pgfsetroundcap
    \pgfsetroundjoin
    \pgfpathmoveto{\pgfpoint{-1.4\pgfutil@tempdima}{2.65\pgfutil@tempdima}}
    \pgfpathcurveto
    {\pgfpoint{-0.75\pgfutil@tempdima}{1.25\pgfutil@tempdima}}
    {\pgfpoint{1\pgfutil@tempdima}{0.05\pgfutil@tempdima}}
    {\pgfpoint{2\pgfutil@tempdima}{0pt}}
    \pgfpathcurveto
    {\pgfpoint{1\pgfutil@tempdima}{-0.05\pgfutil@tempdima}}
    {\pgfpoint{-.75\pgfutil@tempdima}{-1.25\pgfutil@tempdima}}
    {\pgfpoint{-1.4\pgfutil@tempdima}{-2.65\pgfutil@tempdima}}
    \pgfusepathqstroke
  },
  parameters = {\the\pgfarrowlength}
}%







\pgfdeclarearrow{
  name = Latex,
  defaults = {
    length  = +3pt 4.5 .8,%
    width' = +0pt .75,
    line width = +0pt 1 1,
  },
  setup code = {
    \pgf@x.2\pgfarrowlength
    \ifdim\pgf@x<\pgfarrowlinewidth
      \pgfarrowlinewidth\pgf@x
    \fi
    \pgfarrowssavethe\pgfarrowlinewidth%
    \pgfmathdivide@{\pgf@sys@tonumber\pgfarrowlength}{\pgf@sys@tonumber\pgfarrowwidth}%
    \let\pgf@temp@quot\pgfmathresult%
    \pgf@x\pgfmathresult pt%
    \pgf@x\pgfmathresult\pgf@x%
    \pgf@x9\pgf@x%
    \advance\pgf@x by1pt%
    \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
    \pgf@xc\pgfmathresult\pgfarrowlinewidth%
    \pgf@xa\pgf@temp@quot\pgfarrowlinewidth
    \pgfutil@tempdima\pgfarrowlength%
    \advance\pgfutil@tempdima by-.5\pgf@xc%
    \advance\pgfutil@tempdima by-.5\pgfarrowlinewidth%
    \pgfarrowssetbackend{-.5\pgfarrowlinewidth}
    \ifpgfarrowreversed
      \ifdim\pgfinnerlinewidth>0pt
        \pgfarrowssetlineend{0pt}
      \else
        \pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by-.5\pgflinewidth}
      \fi
    \else
      \pgfarrowssetlineend{0pt}
    \fi
    \ifpgfarrowroundjoin
      \pgfarrowssettipend{\pgfutil@tempdima\advance\pgf@x by.5\pgfarrowlinewidth}
    \else
      \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth\ifpgfarrowharpoon\advance\pgf@x  by1.5\pgf@xa\fi}
    \fi
    \pgfarrowssavethe\pgfutil@tempdima
    \pgf@process{\pgfpointnormalised{\pgfqpoint{.3\pgfarrowlength}{.2333333\pgfarrowwidth}}}%
    \advance\pgf@y by1pt%
    \pgf@yc\pgf@y\pgf@xc\pgf@x%
    \pgfmathdivide@{\pgf@sys@tonumber\pgf@yc}{\pgf@sys@tonumber\pgf@xc}%
    \pgfutil@tempdimb\pgfmathresult\pgfarrowlinewidth%
    \pgfutil@tempdimb-.5\pgfutil@tempdimb%
    \advance\pgfutil@tempdimb by.5\pgfarrowwidth%
    \pgfarrowssavethe\pgfutil@tempdimb%
    \pgfarrowshullpoint{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth\ifpgfarrowroundjoin\else\ifpgfarrowharpoon\advance\pgf@x  by1.5\pgf@xa\fi\fi}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else0pt\fi}%
    \pgfarrowshullpoint{-.5\pgfarrowlinewidth}{.5\pgfarrowwidth\ifpgfarrowharpoon\advance\pgf@y by-.5\pgfarrowlinewidth\fi}%
    \pgfarrowshullpoint{-.5\pgfarrowlinewidth}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else-.5\pgfarrowwidth\fi}%
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \pgfpathmoveto    {\pgfqpoint{\pgfutil@tempdima}{0pt}}
    \pgfpathcurveto   {\pgfqpoint{.877192\pgfutil@tempdima}{.077922\pgfutil@tempdimb}}
                      {\pgfqpoint{.337381\pgfutil@tempdima}{.519480\pgfutil@tempdimb}}
                      {\pgfqpoint{0pt}{\pgfutil@tempdimb}}
    \ifpgfarrowharpoon
      \pgfpathlineto  {\pgfpointorigin}
    \else
      \pgfpathlineto  {\pgfqpoint{0pt}{-\pgfutil@tempdimb}}
      \pgfpathcurveto {\pgfqpoint{.337381\pgfutil@tempdima}{-.519480\pgfutil@tempdimb}}
                      {\pgfqpoint{.877192\pgfutil@tempdima}{-.077922\pgfutil@tempdimb}}
                      {\pgfqpoint{\pgfutil@tempdima}{0pt}}
    \fi
    \pgfpathclose
    \ifpgfarrowopen\pgfusepathqstroke\else\ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi\fi
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowopen o\fi%
    \ifpgfarrowroundjoin j\fi%
  },
}%




\pgfdeclarearrow{
  name = Stealth,
  defaults = {
    length  = +3pt 4.5 .8,
    width'  = +0pt .75,
    inset'  = +0pt 0.325,
    line width = +0pt 1 1,
  },
  setup code = {
    \pgf@x\pgfarrowlength
    \advance\pgf@x by-\pgfarrowinset
    \pgf@x.25\pgf@x
    \ifdim\pgf@x<\pgfarrowlinewidth
      \pgfarrowlinewidth\pgf@x
    \fi
    \pgfmathdivide@{\pgf@sys@tonumber\pgfarrowlength}{\pgf@sys@tonumber\pgfarrowwidth}%
    \let\pgf@temp@quot\pgfmathresult%
    \pgf@x\pgfmathresult pt%
    \pgf@x\pgfmathresult\pgf@x%
    \pgf@x4\pgf@x%
    \advance\pgf@x by1pt%
    \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
    \pgf@xc\pgfmathresult\pgfarrowlinewidth%
    \pgf@xc.5\pgf@xc
    \pgf@xa\pgf@temp@quot\pgfarrowlinewidth%
    \pgf@ya.5\pgfarrowwidth%
    \csname pgfmathatan2@\endcsname{\pgfmath@tonumber\pgfarrowlength}{\pgfmath@tonumber\pgf@ya}%
    \pgf@yb\pgfmathresult pt%
    \csname pgfmathatan2@\endcsname{\pgfmath@tonumber\pgfarrowinset}{\pgfmath@tonumber\pgf@ya}%
    \pgf@ya\pgfmathresult pt%
    \advance\pgf@yb by-\pgf@ya%
    \pgf@yb.5\pgf@yb%
    \pgfmathtan@{\pgf@sys@tonumber\pgf@yb}%
    \pgfmathreciprocal@{\pgfmathresult}%
    \pgf@yc\pgfmathresult\pgfarrowlinewidth%
    \pgf@yc.5\pgf@yc%
    \advance\pgf@ya by\pgf@yb%
    \pgfmathsincos@{\pgf@sys@tonumber\pgf@ya}%
    \pgf@ya\pgfmathresulty\pgf@yc%
    \pgf@yb\pgfmathresultx\pgf@yc%
    \ifdim\pgfarrowinset=0pt%
      \pgf@ya.5\pgfarrowlinewidth%
    \fi
    \pgfmathdivide@{\pgf@sys@tonumber\pgfarrowinset}{\pgf@sys@tonumber\pgfarrowwidth}%
    \let\pgf@temp@quot\pgfmathresult%
    \pgf@x\pgfmathresult pt%
    \pgf@x\pgfmathresult\pgf@x%
    \pgf@x4\pgf@x%
    \advance\pgf@x by1pt%
    \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
    \pgf@yc\pgfmathresult\pgfarrowlinewidth%
    \pgf@yc.5\pgf@yc%
    \pgfutil@tempdima\pgfarrowlength%
    \advance\pgfutil@tempdima by-\pgf@xc%
    \advance\pgfutil@tempdima by-\pgf@ya%
    \pgfutil@tempdimb.5\pgfarrowwidth%
    \advance\pgfutil@tempdimb by-\pgf@yb%
    \ifpgfarrowroundjoin
      \pgfarrowssetbackend{\pgf@ya\advance\pgf@x by-.5\pgfarrowlinewidth}
    \else
      \pgfarrowssetbackend{0pt}
    \fi
    \ifpgfarrowharpoon
      \pgfarrowssetlineend{\pgfarrowinset\advance\pgf@x
        by\pgf@yc\advance\pgf@x by.5\pgfarrowlinewidth}
    \else
      \pgfarrowssetlineend{\pgfarrowinset\advance\pgf@x by\pgf@yc\advance\pgf@x by-.25\pgfarrowlinewidth}
      \ifpgfarrowreversed
        \ifdim\pgfinnerlinewidth>0pt
          \pgfarrowssetlineend{\pgfarrowinset}
        \else
          \pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by\pgf@ya\advance\pgf@x by-.25\pgfarrowlinewidth}
        \fi
      \fi
    \fi
    \ifpgfarrowroundjoin
      \pgfarrowssettipend{\pgfutil@tempdima\advance\pgf@x by\pgf@ya\advance\pgf@x by.5\pgfarrowlinewidth}
    \else
      \pgfarrowssettipend{\pgfarrowlength\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi}
    \fi
    \pgfarrowshullpoint{\pgfarrowlength\ifpgfarrowroundjoin\else\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi\fi}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else0pt\fi}%
    \pgfarrowsupperhullpoint{0pt}{.5\pgfarrowwidth}%
    \pgfarrowshullpoint{\pgfarrowinset}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else 0pt\fi}%
    \pgfarrowssetvisualbackend{\pgfarrowinset}
    \advance\pgfarrowinset by\pgf@yc%
    \pgfarrowssavethe\pgfutil@tempdima
    \pgfarrowssavethe\pgfutil@tempdimb
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgf@ya
    \pgfarrowssavethe\pgfarrowinset
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \pgfpathmoveto{\pgfqpoint{\pgfutil@tempdima\advance\pgf@x by\pgf@ya}{0pt}}
    \pgfpathlineto{\pgfqpoint{\pgf@ya}{\pgfutil@tempdimb}}
    \pgfpathlineto{\pgfqpoint{\pgfarrowinset}{0pt}}
    \ifpgfarrowharpoon \else
    \pgfpathlineto{\pgfqpoint{\pgf@ya}{-\pgfutil@tempdimb}}
    \fi
    \pgfpathclose
    \ifpgfarrowopen\pgfusepathqstroke\else\ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi\fi
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \the\pgfarrowinset,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowopen o\fi%
    \ifpgfarrowroundjoin j\fi%
  },
}%




\pgfdeclarearrow{
  name = Kite,
  defaults = {
    length  = +3.6pt +5.4,
    width'  = +0pt +0.5,
    inset'  = +0pt 0.25,
    line width = +0pt 1 1,
  },
  setup code = {
    \pgf@x.4\pgfarrowlength
    \ifdim\pgf@x<\pgfarrowlinewidth
      \pgfarrowlinewidth\pgf@x
    \fi
    \pgf@x.4\pgfarrowwidth
    \ifdim\pgf@x<\pgfarrowlinewidth
      \pgfarrowlinewidth\pgf@x
    \fi
    \pgf@xa\pgfarrowlength%
    \advance\pgf@xa by-\pgfarrowinset%
    \pgfmathdivide@{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgfarrowwidth}%
    \let\pgf@temp@quot\pgfmathresult%
    \pgf@x\pgfmathresult pt%
    \pgf@x\pgfmathresult\pgf@x%
    \pgf@x4\pgf@x%
    \advance\pgf@x by1pt%
    \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
    \pgf@xc\pgfmathresult\pgfarrowlinewidth%
    \pgf@xc.5\pgf@xc
    \pgf@xa\pgf@temp@quot\pgfarrowlinewidth%
    \pgfmathdivide@{\pgf@sys@tonumber\pgfarrowinset}{\pgf@sys@tonumber\pgfarrowwidth}%
    \let\pgf@temp@quot\pgfmathresult%
    \pgf@x\pgfmathresult pt%
    \pgf@x\pgfmathresult\pgf@x%
    \pgf@x4\pgf@x%
    \advance\pgf@x by1pt%
    \pgfmathsqrt@{\pgf@sys@tonumber\pgf@x}%
    \pgf@yc\pgfmathresult\pgfarrowlinewidth%
    \pgf@yc.5\pgf@yc
    \pgf@ya\pgf@temp@quot\pgfarrowlinewidth%
    {%
      \pgfutil@tempdimb.5\pgfarrowwidth%
      \pgfutil@tempdima\pgfarrowlength\advance\pgfutil@tempdima by-\pgfarrowinset%
      \csname pgfmathatan2@\endcsname{\pgfmath@tonumber\pgfutil@tempdima}{\pgfmath@tonumber\pgfutil@tempdimb}%
      \pgf@yb\pgfmathresult pt%
      \csname pgfmathatan2@\endcsname{\pgfmath@tonumber\pgfarrowinset}{\pgfmath@tonumber\pgfutil@tempdimb}%
      \pgf@ya\pgfmathresult pt%
      \advance\pgf@yb by\pgf@ya%
      \pgf@yb.5\pgf@yb%
      \ifdim\pgf@yb=45pt%
        \def\pgfmathresult{1.414213}%
      \else%
        \pgfmathsin@{\pgf@sys@tonumber\pgf@yb}%
        \pgfmathreciprocal@{\pgfmathresult}%
      \fi%
      \pgf@yc\pgfmathresult\pgfarrowlinewidth%
      \pgf@yc.5\pgf@yc%
      \pgf@ya-\pgf@ya%
      \advance\pgf@ya by-90pt%
      \advance\pgf@ya by\pgf@yb%
      \pgfmathsincos@{\pgf@sys@tonumber\pgf@ya}%
      \pgf@xb\pgfmathresultx\pgf@yc%
      \pgf@yb\pgfmathresulty\pgf@yc%
      \expandafter\expandafter\expandafter%
    }\expandafter\expandafter\expandafter\pgf@xb\expandafter\the\expandafter\pgf@xb\expandafter\pgf@yb\the\pgf@yb%
    \pgfutil@tempdima\pgfarrowlength%
    \advance\pgfutil@tempdima by-\pgf@xc%
    \pgfutil@tempdimb.5\pgfarrowwidth%
    \advance\pgfutil@tempdimb by\pgf@yb%
    \ifpgfarrowroundjoin
      \pgfarrowssetbackend{\pgf@ya\advance\pgf@x by-.5\pgfarrowlinewidth}
    \else
      \pgfarrowssetbackend{0pt}
    \fi
    \ifpgfarrowreversed
      \pgfarrowssetlineend{\pgfutil@tempdima\advance\pgf@x by-\pgflinewidth\advance\pgf@x by\pgfarrowlinewidth}
    \else
      \pgfarrowssetlineend{\pgf@yc\advance\pgf@x by\pgflinewidth\advance\pgf@x by-\pgfarrowlinewidth}
    \fi
    \ifpgfarrowroundjoin
      \pgfarrowssettipend{\pgfutil@tempdima\advance\pgf@x by.5\pgfarrowlinewidth}
    \else
      \pgfarrowssettipend{\pgfarrowlength\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi}
    \fi
    \pgfarrowshullpoint{\pgfarrowlength\ifpgfarrowroundjoin\else\ifpgfarrowharpoon\advance\pgf@x by\pgf@xa\fi\fi}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else0pt\fi}%
    \pgfarrowsupperhullpoint{\pgfarrowinset}{.5\pgfarrowwidth}%
    \pgfarrowshullpoint{0pt}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else0pt\fi}%
    \advance\pgfarrowinset by\pgf@xb%
    \pgfarrowssavethe\pgfutil@tempdima
    \pgfarrowssavethe\pgfutil@tempdimb
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgf@yc
    \pgfarrowssavethe\pgfarrowinset
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{\pgfarrowlinewidth}\fi
    \pgfpathmoveto{\pgfqpoint{\pgfutil@tempdima}{0pt}}
    \pgfpathlineto{\pgfqpoint{\pgfarrowinset}{\pgfutil@tempdimb}}
    \pgfpathlineto{\pgfqpoint{\pgf@yc}{0pt}}
    \ifpgfarrowharpoon \else
    \pgfpathlineto{\pgfqpoint{\pgfarrowinset}{-\pgfutil@tempdimb}}
    \fi
    \pgfpathclose
    \ifpgfarrowopen\pgfusepathqstroke\else\ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi\fi
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \the\pgfarrowinset,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowopen o\fi%
    \ifpgfarrowroundjoin j\fi%
  },
}%





\pgfdeclarearrow{
  name = Square,
  defaults = {
    length  = +2.12132pt +2.828427,
    width'  = +0pt +1,
    line width = +0pt +1 +1,
  },
  setup code = {
    \pgf@x.5\pgfarrowlength
    \ifdim\pgf@x<\pgfarrowlinewidth
      \pgfarrowlinewidth\pgf@x
    \fi
    \ifpgfarrowreversed
      \pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}
    \else
      \pgfarrowssetlineend{.5\pgfarrowlinewidth}
    \fi
    \pgfarrowssettipend{\pgfarrowlength}
    \pgfarrowshullpoint{\pgfarrowlength}{.5\pgfarrowwidth}
    \pgfarrowshullpoint{0pt}{.5\pgfarrowwidth}
    \pgfarrowshullpoint{\pgfarrowlength}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else-.5\pgfarrowwidth\fi}
    \pgfarrowshullpoint{0pt}{\ifpgfarrowharpoon-.5\pgfarrowlinewidth\else-.5\pgfarrowwidth\fi}
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowwidth
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \pgfpathmoveto{\pgfqpoint{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
    \pgfpathlineto{\pgfqpoint{.5\pgfarrowlinewidth}{.5\pgfarrowwidth\advance\pgf@y by-.5\pgfarrowlinewidth}}
    \pgfpathlineto{\pgfqpoint{.5\pgfarrowlinewidth}{\ifpgfarrowharpoon0pt\else-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth\fi}}
    \pgfpathlineto{\pgfqpoint{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}{\ifpgfarrowharpoon0pt\else-.5\pgfarrowwidth\advance\pgf@y by.5\pgfarrowlinewidth\fi}}
    \pgfpathclose
    \ifpgfarrowopen\pgfusepathqstroke\else\ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi\fi
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowopen o\fi%
    \ifpgfarrowroundjoin j\fi%
  },
}%



\pgfdeclarearrow{
  name = Circle,
  defaults = {
    length  = +2.39365pt +3.191538,
    width'  = +0pt 1,
    line width = +0pt 1 1,
  },
  setup code = {
    \pgf@x.5\pgfarrowlength
    \ifdim\pgf@x<\pgfarrowlinewidth
      \pgfarrowlinewidth\pgf@x
    \fi
    \ifpgfarrowreversed
      \pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}
    \else
      \pgfarrowssetlineend{.5\pgfarrowlinewidth}
    \fi
    \pgfarrowssettipend{\pgfarrowlength}
    \pgfarrowsupperhullpoint{\pgfarrowlength}{.25\pgfarrowwidth}
    \pgfarrowsupperhullpoint{.75\pgfarrowlength}{.5\pgfarrowwidth}
    \pgfarrowsupperhullpoint{.25\pgfarrowlength}{.5\pgfarrowwidth}
    \pgfarrowsupperhullpoint{0pt}{.25\pgfarrowwidth}
    \ifpgfarrowharpoon%
      \pgfarrowshullpoint{0pt}{-.5\pgfarrowlinewidth}
      \pgfarrowshullpoint{\pgfarrowlength}{-.5\pgfarrowlinewidth}
    \fi%
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowwidth
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    \ifpgfarrowharpoon
      \pgfpathmoveto{\pgfqpoint{\pgfarrowlength\advance\pgf@x
          by-.5\pgfarrowlinewidth}{0pt}}
      {%
        \pgf@xa.5\pgfarrowlength
        \advance\pgf@xa by-.5\pgfarrowlinewidth
        \pgftransformxscale{+\the\pgf@xa}
        \pgf@xa.5\pgfarrowwidth
        \advance\pgf@xa by-.5\pgfarrowlinewidth
        \pgftransformyscale{+\the\pgf@xa}
        \pgfpatharc{0}{180}{1pt}
      }
      \pgfpathclose
    \else%
      \pgfpathellipse{\pgfqpoint{.5\pgfarrowlength}{0pt}}{\pgfqpoint{.5\pgfarrowlength\advance\pgf@x
          by-.5\pgfarrowlinewidth}{0pt}}{\pgfqpoint{0pt}{.5\pgfarrowwidth\advance\pgf@y
          by-.5\pgfarrowlinewidth}}
    \fi
    \ifpgfarrowopen\pgfusepathqstroke\else\ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi\fi
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowopen o\fi%
    \ifpgfarrowroundjoin j\fi%
  },
}%


\pgfdeclarearrow{
  name = Round Cap,
  defaults = {
    length = +0pt .5
  },
  setup code = {
    \ifpgfarrowreversed
      \pgfarrowssettipend{\pgfarrowlength}
      \pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by.5\pgflinewidth}
    \else
      \pgfarrowssettipend{\pgfarrowlength}
      \pgfarrowssetlineend{-.5\pgflinewidth}
    \fi
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowsupperhullpoint{0pt}{.5\pgflinewidth}
    \pgfarrowsupperhullpoint{\pgfarrowlength}{.5\pgflinewidth}
  },
  drawing code = {
    \ifpgfarrowreversed
      \pgftransformxscale{-1}
      \pgftransformxshift{-\pgfarrowlength}
    \fi
    \pgfutil@tempdima.5\pgflinewidth
    \pgfpathmoveto   {\pgfqpoint{-0.75\pgflinewidth}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{0pt}{\pgfutil@tempdima}}
    \ifpgfarrowreversed
      \pgfpathlineto {\pgfqpoint{\pgfarrowlength}{\pgfutil@tempdima}}
      \begingroup
      \pgftransformxshift{\pgfarrowlength}
      \pgftransformxscale{-1}
    \fi
    \pgfpathcurveto  {\pgfqpoint{0.55228475\pgfarrowlength}{\pgfutil@tempdima}}
                     {\pgfqpoint{\pgfarrowlength}{0.55228475\pgfutil@tempdima}}
                     {\pgfqpoint{\pgfarrowlength}{0pt}}
    \pgfpathcurveto  {\pgfqpoint{\pgfarrowlength}{-0.55228475\pgfutil@tempdima}}
                     {\pgfqpoint{0.55228475\pgfarrowlength}{-\pgfutil@tempdima}}
                     {\pgfqpoint{0pt}{-\pgfutil@tempdima}}
    \ifpgfarrowreversed
      \endgroup
    \fi
    \pgfpathlineto   {\pgfqpoint{-.75\pgflinewidth}{-\pgfutil@tempdima}}
    \pgfpathclose
    \pgfusepathqfill
  },
  parameters = {\the\pgfarrowlength}
}%



\pgfdeclarearrow{
  name = Butt Cap,
  defaults = {
    length = +0pt .5
  },
  setup code = {
    \pgfarrowssettipend{\pgfarrowlength}
    \pgfarrowssetlineend{-.5\pgflinewidth}
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowsupperhullpoint{0pt}{.5\pgflinewidth}
    \pgfarrowsupperhullpoint{\pgfarrowlength}{.5\pgflinewidth}
  },
  drawing code = {
    \pgfutil@tempdima.5\pgflinewidth
    \pgfpathmoveto   {\pgfqpoint{-0.75\pgflinewidth}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{0pt}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{\pgfarrowlength}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{\pgfarrowlength}{-\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{-.75\pgflinewidth}{-\pgfutil@tempdima}}
    \pgfpathclose
    \pgfusepathqfill
  },
  parameters = {\the\pgfarrowlength}
}%



\pgfkeys{
  /pgf/arrow keys/.cd,
  cap angle/.code={%
    \pgfmathsetlength\pgf@x{#1}%
    \pgf@x.5\pgf@x
    \pgfmathtan@{\pgf@sys@tonumber\pgf@x}%
    \pgfmathreciprocal@{\pgfmathresult}%
    \pgf@x\pgfmathresult pt%
    \pgf@x.5\pgf@x%
    \edef\pgf@marshal{\noexpand\pgfarrowsaddtooptions{\noexpand\pgfarrowslinewidthdependent{+0pt}{\pgf@sys@tonumber\pgf@x}{0}\pgfarrowlength\pgf@x}}
    \pgf@marshal
  }
}%


\pgfdeclarearrow{
  name = Triangle Cap,
  defaults = {
    length = +0pt .5
  },
  setup code = {
    \ifpgfarrowreversed
      \pgfarrowssettipend{\pgfarrowlength}
      \pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by.5\pgflinewidth}
    \else
      \pgfarrowssettipend{\pgfarrowlength}
      \pgfarrowssetlineend{-.5\pgflinewidth}
    \fi
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowsupperhullpoint{0pt}{.5\pgflinewidth}
    \pgfarrowshullpoint{\pgfarrowlength}{0pt}
  },
  drawing code = {
    \ifpgfarrowreversed
      \pgftransformxscale{-1}
      \pgftransformxshift{-\pgfarrowlength}
    \fi
    \pgfutil@tempdima.5\pgflinewidth
    \pgfpathmoveto   {\pgfqpoint{-0.75\pgflinewidth}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{0pt}{\pgfutil@tempdima}}
    \ifpgfarrowreversed
      \pgfpathlineto {\pgfqpoint{\pgfarrowlength}{\pgfutil@tempdima}}
      \begingroup
      \pgftransformxshift{\pgfarrowlength}
      \pgftransformxscale{-1}
    \fi
    \pgfpathlineto   {\pgfqpoint{\pgfarrowlength}{0pt}}
    \ifpgfarrowreversed
      \endgroup
      \pgfpathlineto {\pgfqpoint{\pgfarrowlength}{-\pgfutil@tempdima}}
    \fi
    \pgfpathlineto   {\pgfqpoint{0pt}{-\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{-.75\pgflinewidth}{-\pgfutil@tempdima}}
    \pgfpathclose
    \pgfusepathqfill
  },
  parameters = {\the\pgfarrowlength}
}%



\pgfdeclarearrow{
  name = Fast Triangle,
  defaults = {
    length = +0pt .5,
    inset = +0pt .5,
  },
  setup code = {
    \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}
    \ifpgfarrowreversed\pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}\fi
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowinset
    \pgfarrowsupperhullpoint{0pt}{.5\pgflinewidth}
    \pgfarrowsupperhullpoint{\pgfarrowinset}{.5\pgflinewidth}
    \pgfarrowshullpoint{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}{0pt}
  },
  drawing code = {
    \pgfutil@tempdima.5\pgflinewidth
    \pgfpathmoveto   {\pgfqpoint{0pt}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{\pgfarrowinset}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{\pgfarrowinset\advance\pgf@x by\pgfarrowlength}{0pt}}
    \pgfpathlineto   {\pgfqpoint{\pgfarrowinset}{-\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{0pt}{-\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{\pgfarrowlength}{0pt}}
    \pgfpathclose
    \pgfusepathqfill
  },
  parameters = {\the\pgfarrowlength,\the\pgfarrowinset}
}%


\pgfdeclarearrow{
  name = Fast Round,
  defaults = {
    length = +0pt .5,
    inset = +0pt .5,
  },
  setup code = {
    \pgfarrowssettipend{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}
    \ifpgfarrowreversed\pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}\fi
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowinset
    \pgfarrowsupperhullpoint{0pt}{.5\pgflinewidth}
    \pgfarrowsupperhullpoint{\pgfarrowlength\advance\pgf@x by\pgfarrowinset}{.5\pgflinewidth}
  },
  drawing code = {
    \pgfutil@tempdima.5\pgflinewidth
    \pgfpathmoveto   {\pgfqpoint{0pt}{\pgfutil@tempdima}}
    \pgfpathlineto   {\pgfqpoint{\pgfarrowinset}{\pgfutil@tempdima}}
    {
      \pgftransformxshift{\pgfarrowinset}
      \pgfpathcurveto{\pgfqpoint{0.55228475\pgfarrowlength}{\pgfutil@tempdima}}
                     {\pgfqpoint{\pgfarrowlength}{0.55228475\pgfutil@tempdima}}
                     {\pgfqpoint{\pgfarrowlength}{0pt}}
      \pgfpathcurveto{\pgfqpoint{\pgfarrowlength}{-0.55228475\pgfutil@tempdima}}
                     {\pgfqpoint{0.55228475\pgfarrowlength}{-\pgfutil@tempdima}}
                     {\pgfqpoint{0pt}{-\pgfutil@tempdima}}
    }
    \pgfpathlineto   {\pgfqpoint{0pt}{-\pgfutil@tempdima}}
    \pgfpathcurveto  {\pgfqpoint{0.55228475\pgfarrowlength}{-\pgfutil@tempdima}}
                     {\pgfqpoint{\pgfarrowlength}{-0.55228475\pgfutil@tempdima}}
                     {\pgfqpoint{\pgfarrowlength}{0pt}}
    \pgfpathcurveto  {\pgfqpoint{\pgfarrowlength}{0.55228475\pgfutil@tempdima}}
                     {\pgfqpoint{0.55228475\pgfarrowlength}{\pgfutil@tempdima}}
                     {\pgfqpoint{0pt}{\pgfutil@tempdima}}
    \pgfpathclose
    \pgfusepathqfill
  },
  parameters = {\the\pgfarrowlength,\the\pgfarrowinset}
}%






\pgfkeys{
  /pgf/arrow keys/.cd,
  n/.code={%
    \pgfmathparse{#1}%
    \expandafter\pgf@lib@meta@strip@dot\pgfmathresult.\relax%
  }
}%
\def\pgf@lib@meta@strip@dot#1.#2\relax{%
  \pgfarrowsaddtooptions{\def\pgfarrown{#1}}%
}%

\def\pgfarrown{4}%

\pgfdeclarearrow{
  name = Rays,
  defaults = {
    length = +3pt 4,
    width'  = +0pt 1,
    line width = +0pt 1 1,
  },
  setup code = {
    \pgfmathdivide@{360}{\pgfarrown}%
    \let\pgfarrow@inc\pgfmathresult%
    \pgf@xa\pgfarrow@inc pt%
    \ifodd\pgfarrown\pgf@ya.25\pgf@xa\else\pgf@ya.5\pgf@xa\fi%
    \pgfmathsincos@{\pgf@sys@tonumber\pgf@ya}%
    \pgf@x.5\pgfarrowlength%
    \pgf@xa\pgfmathresultx\pgf@x%
    \ifpgfarrowroundcap
      \advance\pgf@xa by.5\pgfarrowlinewidth
    \else
      \pgf@process{\pgfpointnormalised{\pgfqpoint{\pgfmathresultx\pgfarrowlength}{\pgfmathresulty\pgfarrowwidth}}}%
      \pgf@x.5\pgfarrowlinewidth%
      \advance\pgf@xa by\pgf@sys@tonumber{\pgf@y}\pgf@x%
    \fi%
    \pgfarrowssettipend{\pgf@xa}
    \pgfarrowssetbackend{-\pgf@xa}
    \pgfarrowsupperhullpoint{\pgf@xa}{.25\pgfarrowwidth}
    \pgfarrowsupperhullpoint{.25\pgfarrowlength}{.5\pgfarrowwidth\ifpgfarrowroundcap\advance\pgf@y by.5\pgfarrowlinewidth\fi}
    \pgfarrowsupperhullpoint{-.25\pgfarrowlength}{.5\pgfarrowwidth\ifpgfarrowroundcap\advance\pgf@y by.5\pgfarrowlinewidth\fi}
    \pgfarrowsupperhullpoint{-\pgf@xa}{.25\pgfarrowwidth}
    \ifpgfarrowharpoon
      \pgfarrowshullpoint{-.5\pgfarrowlength\ifpgfarrowroundcap\advance\pgf@x by-.5\pgfarrowlinewidth\fi}{-.5\pgfarrowlinewidth}
      \pgfarrowshullpoint{.5\pgfarrowlength\ifpgfarrowroundcap\advance\pgf@x by.5\pgfarrowlinewidth\fi}{-.5\pgfarrowlinewidth}
    \fi
    \pgfarrowssavethe\pgfarrowlinewidth
    \pgfarrowssavethe\pgfarrowlength
    \pgfarrowssavethe\pgfarrowwidth
    \pgfarrowssave\pgfarrow@inc
    \pgfarrowssave\pgfarrown
  },
  drawing code = {
    \pgfsetdash{}{+0pt}
    \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
    \ifdim\pgfarrowlinewidth=\pgflinewidth\else\pgfsetlinewidth{+\pgfarrowlinewidth}\fi
    {%
      \pgfgettransform\pgf@temp@trans
      \pgftransformxscale{+.5\pgfarrowlength}
      \pgftransformyscale{+.5\pgfarrowwidth}
      \pgf@xa\pgfarrow@inc pt%
      \ifodd\pgfarrown\pgf@ya.25\pgf@xa\else\pgf@ya.5\pgf@xa\fi%
      \ifpgfarrowharpoon\pgf@yb180pt\else\pgf@yb360pt\fi
      \pgfutil@loop%
      \ifdim\pgf@ya<\pgf@yb%
        \pgfpathmoveto{\pgfpointpolar{+\pgf@ya}{+1pt}}
        \pgfpathlineto{\pgfpointorigin}
        \ifpgfarrowharpoon\ifdim\pgf@ya>\pgf@xa\else{\pgfsettransform\pgf@temp@trans\pgfpathlineto{\pgfqpoint{-.5\pgflinewidth}{0pt}}}\fi\fi
        \advance\pgf@ya by\pgf@xa\relax%
      \pgfutil@repeat%
    }
    \pgfusepathqstroke
  },
  parameters = {
    \the\pgfarrowlinewidth,%
    \the\pgfarrowlength,%
    \the\pgfarrowwidth,%
    \pgfarrown,%
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowroundcap c\fi%
  }
}%




\pgfkeys{
  LaTeX /.tip         = {Latex},
  Triangle /.tip      = {Stealth[inset=+0pt, angle=+60:+2.7pt +3.6]},
  Rectangle /.tip     = {Square[length=+3pt +4.5,width'=+0pt +.5]},
  Ellipse /.tip       = {Circle[length=+3.3pt +4.95, width'=+0pt +0.5]},
  Diamond /.tip       = {Kite[inset'=+0pt .5]},
  Turned Square /.tip = {Kite[length=+3pt 4,width'= +0pt 1,inset'= +0pt 0.5]},
  To /.tip            = {Computer Modern Rightarrow},
  Bar /.tip           = {Tee Barb[length=+0pt]},
  Bracket /.tip       = {Tee Barb[inset'=+0pt +1,length=+0.75pt +1]},
  Parenthesis /.tip   = {Arc Barb[arc=+120,length=+1.725pt +2.3]}
}%




\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibraryarrows.meta.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibrarydecorations.pathreplacing.code.tex ====

\usepgfmodule{decorations}%








\pgfdeclaredecoration{ticks}{ticks}
{%
  \state{ticks}[width=+\pgfdecorationsegmentlength]
  {
    \pgfpathmoveto{\pgfqpoint{0pt}{\pgfdecorationsegmentamplitude}}
    \pgfpathlineto{\pgfqpoint{0pt}{-\pgfdecorationsegmentamplitude}}
  }%
  \state{final}
  {
    \pgfpathmoveto{\pgfqpoint{0pt}{\pgfdecorationsegmentamplitude}}
    \pgfpathlineto{\pgfqpoint{0pt}{-\pgfdecorationsegmentamplitude}}
    \pgfpathmoveto{\pgfpointdecoratedpathlast}
  }%
}%




\pgfdeclaredecoration{expanding waves}{initial}
{%
  \state{initial}[width=+\pgfdecorationsegmentlength,next state=wave]
  {}%

  \state{wave}[switch if less than=+\pgfdecorationsegmentlength to last,
               width=+\pgfdecorationsegmentlength]
  {
    \pgfpathmoveto{
      \pgfpointadd
      {\pgfqpoint{-\pgfdecoratedcompleteddistance}{0pt}}%
      {\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}}}%
    \pgfpatharc{\pgfdecorationsegmentangle}{-\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}%
  }%
  \state{last}[width=+0pt,next state=final]
  {
    \pgfpathmoveto{
      \pgfpointadd
      {\pgfqpoint{-\pgfdecoratedcompleteddistance}{0pt}}%
      {\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}}}%
    \pgfpatharc{\pgfdecorationsegmentangle}{-\pgfdecorationsegmentangle}{+\pgfdecoratedcompleteddistance}%
  }%
  \state{final}
  {
    \pgfpathmoveto{\pgfpointdecoratedpathlast}
  }%
}%




\pgfdeclaredecoration{waves}{wave}
{%
  \state{wave}[width=\pgfdecorationsegmentlength]
  {
    \pgftransformxshift{+\pgfdecorationsegmentlength}
    \pgfpathmoveto{
      \pgfpointadd
      {\pgfqpoint{-\pgfkeysvalueof{/pgf/decoration/start radius}}{0pt}}%
      {\pgfpointpolar{\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/start radius}}}}%
    \pgfpatharc{\pgfdecorationsegmentangle}{-\pgfdecorationsegmentangle}{\pgfkeysvalueof{/pgf/decoration/start radius}}%
  }%
  \state{final}
  {
    \pgfpathmoveto{\pgfpointdecoratedpathlast}
  }%
}%




\pgfdeclaredecoration{border}{tick}
{%
  \state{tick}[switch if less than=+\pgfdecorationsegmentlength to last,
               width=+\pgfdecorationsegmentlength]
  {
    \pgfpathmoveto{\pgfpointorigin}
    \pgfpathlineto{\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecorationsegmentamplitude}}
  }%
  \state{last}[width=+\pgfdecorationsegmentamplitude,next state=final]
  {
    \pgfpathmoveto{\pgfpointorigin}
    \pgfpathlineto{\pgfpointpolar{\pgfdecorationsegmentangle}{+\pgfdecorationsegmentamplitude}}
  }%
  \state{final}
  {
    \pgfpathmoveto{\pgfpointdecoratedpathlast}
  }%
}%







\pgfdeclaredecoration{brace}{brace}
{%
  \state{brace}[width=+\pgfdecoratedremainingdistance,next state=final]
  {
    \pgf@yc=\pgfdecorationsegmentaspect\pgfdecoratedremainingdistance
    \ifdim2\pgfdecorationsegmentamplitude>\pgf@yc
      \pgf@yc=0.5\pgf@yc
    \else
      \pgf@yc=\pgfdecorationsegmentamplitude
    \fi
    \pgf@xc=\pgfdecorationsegmentaspect\pgfdecoratedremainingdistance
    \advance\pgf@xc-\pgfdecoratedremainingdistance
    \ifdim-2\pgfdecorationsegmentamplitude<\pgf@xc
      \pgf@xc=-0.5\pgf@xc
    \else
      \pgf@xc=\pgfdecorationsegmentamplitude
    \fi
    \pgfpathmoveto{\pgfpointorigin}
    \pgfpathcurveto
    {\pgfqpoint{.15\pgf@yc}{.3\pgfdecorationsegmentamplitude}}
    {\pgfqpoint{.5\pgf@yc}{.5\pgfdecorationsegmentamplitude}}
    {\pgfqpoint{\pgf@yc}{.5\pgfdecorationsegmentamplitude}}
    {
      \pgftransformxshift{+\pgfdecorationsegmentaspect\pgfdecoratedremainingdistance}
      \pgfpathlineto{\pgfqpoint{-\pgf@yc}{.5\pgfdecorationsegmentamplitude}}
      \pgfpathcurveto
      {\pgfqpoint{-.5\pgf@yc}{.5\pgfdecorationsegmentamplitude}}
      {\pgfqpoint{-.15\pgf@yc}{.7\pgfdecorationsegmentamplitude}}
      {\pgfqpoint{0\pgf@yc}{1\pgfdecorationsegmentamplitude}}
      \pgfpathcurveto
      {\pgfqpoint{.15\pgf@xc}{.7\pgfdecorationsegmentamplitude}}
      {\pgfqpoint{.5\pgf@xc}{.5\pgfdecorationsegmentamplitude}}
      {\pgfqpoint{\pgf@xc}{.5\pgfdecorationsegmentamplitude}}
    }
    {
      \pgftransformxshift{+\pgfdecoratedremainingdistance}
      \pgfpathlineto{\pgfqpoint{-\pgf@xc}{.5\pgfdecorationsegmentamplitude}}
      \pgfpathcurveto
      {\pgfqpoint{-.5\pgf@xc}{.5\pgfdecorationsegmentamplitude}}
      {\pgfqpoint{-.15\pgf@xc}{.3\pgfdecorationsegmentamplitude}}
      {\pgfqpoint{0pt}{0pt}}
    }
  }%
  \state{final}
  {}%
}%




\pgfdeclaredecoration{show path construction}{check for moveto}{%
    \state{check for moveto}[width=0pt, next state=segment,
      persistent precomputation={%
        \begingroup%
            \pgf@lib@decoraions@installinputsegmentpoints%
              \ifx\pgfdecorationpreviousinputsegment\pgfdecorationinputsegmentmoveto%
                  \pgfdecoratedinputsegmentmovetocode%
              \fi%
            \endgroup%
        }]{}%
    \state{segment}[width=\pgfdecoratedinputsegmentremainingdistance, next state=check for moveto,
      persistent precomputation={%
        \begingroup%
            \pgf@lib@decoraions@installinputsegmentpoints%
                \csname pgfdecoratedinputsegment\pgfdecorationcurrentinputsegment code\endcsname%
            \endgroup%
        }]{}%
    \state{final}{%
        \egroup%
        \begingroup%
        \pgf@lib@decoraions@installinputsegmentpoints%
            \csname pgfdecoratedinputsegment\pgfdecorationcurrentinputsegment code\endcsname%
        \endgroup%
        \bgroup%
    }%
}%

\pgfkeys{
    /pgf/decoration/.cd,
        moveto code/.code=\def\pgfdecoratedinputsegmentmovetocode{#1},
        lineto code/.code=\def\pgfdecoratedinputsegmentlinetocode{#1},
        curveto code/.code=\def\pgfdecoratedinputsegmentcurvetocode{#1},
      closepath code/.code=\def\pgfdecoratedinputsegmentclosepathcode{#1}
}%

\let\pgfdecoratedinputsegmentmovetocode\pgfutil@empty%
\let\pgfdecoratedinputsegmentlinetocode\pgfutil@empty%
\let\pgfdecoratedinputsegmentcurvetocode\pgfutil@empty%
\let\pgfdecoratedinputsegmentclosepathcode\pgfutil@empty%

\def\pgf@lib@decoraions@installinputsegmentpoints{%
    \let\pgfpointdecoratedinputsegmentfirst\pgf@decorate@inputsegment@first%
    \let\pgfpointdecoratedinputsegmentlast\pgf@decorate@inputsegment@last%
    \let\pgfpointdecoratedinputsegmentsupporta\pgf@decorate@inputsegment@supporta%
    \let\pgfpointdecoratedinputsegmentsupportb\pgf@decorate@inputsegment@supportb%
}%


\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibrarydecorations.pathreplacing.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibraryplothandlers.code.tex ====

\ProvidesFileRCS{pgflibraryplothandlers.code.tex}



\pgfdeclareplothandler{\pgfplothandlercurveto}{}{%
  point macro=\pgf@plot@curveto@handler@initial,
  jump macro=\pgf@plot@smooth@next@moveto,
  end macro=\pgf@plot@curveto@handler@finish
}%

\def\pgf@plot@smooth@next@moveto{%
  \pgf@plot@curveto@handler@finish%
  \global\pgf@plot@startedfalse%
  \global\let\pgf@plotstreampoint\pgf@plot@curveto@handler@initial%
}%

\def\pgf@plot@curveto@handler@initial#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@plot@first@action{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \xdef\pgf@plot@curveto@first{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \global\let\pgf@plot@curveto@first@support=\pgf@plot@curveto@first%
  \global\let\pgf@plotstreampoint=\pgf@plot@curveto@handler@second%
}%

\def\pgf@plot@curveto@handler@second#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@curveto@second{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \global\let\pgf@plotstreampoint=\pgf@plot@curveto@handler@third%
  \global\pgf@plot@startedtrue%
}%

\def\pgf@plot@curveto@handler@third#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@curveto@current{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{\pgf@plot@curveto@first}
  \advance\pgf@xa by-\pgf@x%
  \advance\pgf@ya by-\pgf@y%
  \pgf@xa=\pgf@plottension\pgf@xa%
  \pgf@ya=\pgf@plottension\pgf@ya%
  \pgf@process{\pgf@plot@curveto@second}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \advance\pgf@xb by-\pgf@xa%
  \advance\pgf@yb by-\pgf@ya%
  \advance\pgf@xc by\pgf@xa%
  \advance\pgf@yc by\pgf@ya%
  \edef\pgf@marshal{\noexpand\pgfpathcurveto{\noexpand\pgf@plot@curveto@first@support}%
    {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgf@plot@curveto@second}}%
  {\pgf@marshal}%
  \global\let\pgf@plot@curveto@first=\pgf@plot@curveto@second%
  \global\let\pgf@plot@curveto@second=\pgf@plot@curveto@current%
  \xdef\pgf@plot@curveto@first@support{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
}%

\def\pgf@plot@curveto@handler@finish{%
  \ifpgf@plot@started%
    \pgfpathcurveto{\pgf@plot@curveto@first@support}{\pgf@plot@curveto@second}{\pgf@plot@curveto@second}%
  \fi%
}%



\def\pgfsetplottension#1{%
  \pgf@x=#1pt\relax%
  \pgf@x=0.2775\pgf@x\relax%
  \edef\pgf@plottension{\pgf@sys@tonumber\pgf@x}}%
\pgfsetplottension{0.5}%



\pgfdeclareplothandler{\pgfplothandlerclosedcurve}{}{%
  point macro=\pgf@plot@closedcurve@handler@initial,
  end macro=\pgf@plot@closedcurve@handler@finish,
  jump macro=\pgf@plot@closedsmooth@next@moveto
}%

\def\pgf@plot@closedsmooth@next@moveto{%
  \pgf@plot@closedcurve@handler@finish%
  \global\pgf@plot@startedfalse%
  \global\let\pgf@plotstreampoint\pgf@plot@closedcurve@handler@initial%
}%

\def\pgf@plot@closedcurve@handler@initial#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \xdef\pgf@plot@closedcurve@initial{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \global\let\pgf@plotstreampoint=\pgf@plot@closedcurve@handler@second%
  \global\pgf@plot@startedfalse%
}%

\def\pgf@plot@closedcurve@handler@second#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@closedcurve@after@initial{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  {\pgfpathmoveto{}}%
  \global\let\pgf@plotstreampoint=\pgf@plot@closedcurve@handler@third%
}%

\def\pgf@plot@closedcurve@handler@third#1{%
  \global\pgf@plot@startedtrue%
  \pgf@process{#1}%
  \xdef\pgf@plot@closedcurve@current{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{\pgf@plot@closedcurve@initial}
  \advance\pgf@xa by-\pgf@x%
  \advance\pgf@ya by-\pgf@y%
  \pgf@xa=\pgf@plottension\pgf@xa%
  \pgf@ya=\pgf@plottension\pgf@ya%
  \pgf@process{\pgf@plot@closedcurve@after@initial}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \advance\pgf@xb by-\pgf@xa%
  \advance\pgf@yb by-\pgf@ya%
  \advance\pgf@xc by\pgf@xa%
  \advance\pgf@yc by\pgf@ya%
  \global\let\pgf@plot@closedcurve@first=\pgf@plot@closedcurve@after@initial%
  \global\let\pgf@plot@closedcurve@second=\pgf@plot@closedcurve@current%
  \xdef\pgf@plot@closedcurve@after@initial@presupport{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
  \xdef\pgf@plot@closedcurve@first@support{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
  \global\let\pgf@plotstreampoint=\pgf@plot@closedcurve@handler@fourth%
}%

\def\pgf@plot@closedcurve@handler@fourth#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@closedcurve@current{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgf@process{\pgf@plot@closedcurve@first}
  \advance\pgf@xa by-\pgf@x%
  \advance\pgf@ya by-\pgf@y%
  \pgf@xa=\pgf@plottension\pgf@xa%
  \pgf@ya=\pgf@plottension\pgf@ya%
  \pgf@process{\pgf@plot@closedcurve@second}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \advance\pgf@xb by-\pgf@xa%
  \advance\pgf@yb by-\pgf@ya%
  \advance\pgf@xc by\pgf@xa%
  \advance\pgf@yc by\pgf@ya%
  \edef\pgf@marshal{\noexpand\pgfpathcurveto{\noexpand\pgf@plot@closedcurve@first@support}%
    {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgf@plot@closedcurve@second}}%
  {\pgf@marshal}%
  \global\let\pgf@plot@closedcurve@first=\pgf@plot@closedcurve@second%
  \global\let\pgf@plot@closedcurve@second=\pgf@plot@closedcurve@current%
  \xdef\pgf@plot@closedcurve@first@support{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
}%

\def\pgf@plot@closedcurve@handler@finish{%
  \ifpgf@plot@started
    \pgf@process{\pgf@plot@closedcurve@initial}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\pgf@plot@closedcurve@first}%
    \advance\pgf@xa by-\pgf@x%
    \advance\pgf@ya by-\pgf@y%
    \pgf@xa=\pgf@plottension\pgf@xa%
    \pgf@ya=\pgf@plottension\pgf@ya%
    \pgf@process{\pgf@plot@closedcurve@second}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \advance\pgf@xb by-\pgf@xa%
    \advance\pgf@yb by-\pgf@ya%
    \advance\pgf@xc by\pgf@xa%
    \advance\pgf@yc by\pgf@ya%
    \edef\pgf@marshal{\noexpand\pgfpathcurveto{\noexpand\pgf@plot@closedcurve@first@support}%
      {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgf@plot@closedcurve@second}}%
    {\pgf@marshal}%
    \xdef\pgf@plot@closedcurve@first@support{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
    \pgf@process{\pgf@plot@closedcurve@after@initial}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\pgf@plot@closedcurve@second}%
    \advance\pgf@xa by-\pgf@x%
    \advance\pgf@ya by-\pgf@y%
    \pgf@xa=\pgf@plottension\pgf@xa%
    \pgf@ya=\pgf@plottension\pgf@ya%
    \pgf@process{\pgf@plot@closedcurve@initial}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \advance\pgf@xb by-\pgf@xa%
    \advance\pgf@yb by-\pgf@ya%
    \advance\pgf@xc by\pgf@xa%
    \advance\pgf@yc by\pgf@ya%
    \edef\pgf@marshal{\noexpand\pgfpathcurveto{\noexpand\pgf@plot@closedcurve@first@support}%
      {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}{\noexpand\pgf@plot@closedcurve@initial}}%
    {\pgf@marshal}%
    \edef\pgf@marshal{\noexpand\pgfpathcurveto{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
      {\noexpand\pgf@plot@closedcurve@after@initial@presupport}{\noexpand\pgf@plot@closedcurve@after@initial}}%
    {\pgf@marshal}%
    \pgfpathclose%
  \fi%
}%






\pgfdeclareplothandler{\pgfplothandlerxcomb}{}{%
  start macro=\pgfplotxzerolevelstreamstart,
  point macro=\pgf@plot@xcomb@handler,
  end macro=\pgfplotxzerolevelstreamend,
}%

\def\pgf@plot@xcomb@handler#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \begingroup
  \pgfplotxzerolevelstreamnext
  \endgroup
  \pgf@yb=\pgf@x
  \pgfpathmoveto{\pgfqpoint{\pgf@yb}{\pgf@ya}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
}%



\pgfdeclareplothandler{\pgfplothandlerycomb}{}{%
  start macro=\pgfplotyzerolevelstreamstart,
  point macro=\pgf@plot@ycomb@handler,
  end macro=\pgfplotyzerolevelstreamend
}%

\def\pgf@plot@ycomb@handler#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \begingroup
  \pgfplotyzerolevelstreamnext
  \endgroup
  \pgf@yb=\pgf@x
  \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@yb}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
}%

\def\pgfplotxzerolevelstreamstart{\pgf@plotxzerolevelstreamstart}%
\def\pgfplotxzerolevelstreamend{\pgf@plotxzerolevelstreamend}%
\def\pgfplotxzerolevelstreamnext{\pgf@plotxzerolevelstreamnext}
\def\pgfplotyzerolevelstreamstart{\pgf@plotyzerolevelstreamstart}%
\def\pgfplotyzerolevelstreamend{\pgf@plotyzerolevelstreamend}%
\def\pgfplotyzerolevelstreamnext{\pgf@plotyzerolevelstreamnext}%

\def\pgfplotxzerolevelstreamconstant#1{%
    \edef\pgfplotxzerolevelstreamconstant@val{#1}%
    \def\pgf@plotxzerolevelstreamstart{%
        \global\let\pgf@plotxzerolevelstreamend=\relax
        \gdef\pgf@plotxzerolevelstreamnext{\global\pgf@x=\pgfplotxzerolevelstreamconstant@val\relax}%
    }%
}%
\pgfplotxzerolevelstreamconstant{0pt}%

\def\pgfplotyzerolevelstreamconstant#1{%
    \edef\pgfplotyzerolevelstreamconstant@val{#1}%
    \def\pgf@plotyzerolevelstreamstart{%
        \global\let\pgf@plotyzerolevelstreamend=\relax
        \gdef\pgf@plotyzerolevelstreamnext{\global\pgf@x=\pgfplotyzerolevelstreamconstant@val\relax}%
    }%
}%
\pgfplotyzerolevelstreamconstant{0pt}%

\def\pgfplotbarwidth{\pgfkeysvalueof{/pgf/bar width}}%
\def\pgfplotbarshift{\pgfkeysvalueof{/pgf/bar shift}}%

\pgfqkeys{/pgf}{%
    bar width/.initial=10pt,
    bar shift/.initial=0pt,
    bar interval width/.initial=1,
    bar interval shift/.initial=0.5,
    at begin bar/.initial=,
    at end bar/.initial=,
}%


\pgfdeclareplothandler{\pgfplothandlerybar}{}{%
  start={
    \pgfmathparse{\pgfplotbarwidth}%
    \xdef\pgfplotbarwidth@{\pgfmathresult pt}%
    \pgfmathparse{\pgfplotbarshift}%
    \xdef\pgfplotbarshift@{\pgfmathresult pt}%
    \pgfplotyzerolevelstreamstart
  },
  end macro=\pgfplotyzerolevelstreamend,
  point macro=\pgf@plot@ybar@handler
}%

\def\pgf@plot@ybar@handler#1{%
  \pgfkeysvalueof{/pgf/at begin bar}%
  \pgf@process{#1}%
  \pgf@ya=\pgf@y
  \expandafter\pgf@xb\pgfplotbarwidth@\relax
  \pgf@xc=\pgf@x
  \advance\pgf@xc by-.5\pgf@xb
  \advance\pgf@xc by\pgfplotbarshift@\relax
  \begingroup
  \pgfplotyzerolevelstreamnext
  \endgroup
  \pgf@yb=\pgf@x
  \advance\pgf@ya by-\pgf@yb
  \pgfpathrectangle
    {\pgfqpoint{\pgf@xc}{\pgf@yb}}%
    {\pgfqpoint{\pgf@xb}{\pgf@ya}}%
  \pgfkeysvalueof{/pgf/at end bar}%
}%

\pgfdeclareplothandler{\pgfplothandlerxbar}{}{%
  start={
    \pgfmathparse{\pgfplotbarwidth}%
    \xdef\pgfplotbarwidth@{\pgfmathresult pt}%
    \pgfmathparse{\pgfplotbarshift}%
    \xdef\pgfplotbarshift@{\pgfmathresult pt}%
    \pgfplotxzerolevelstreamstart
  },
  end macro=\pgfplotxzerolevelstreamend,
  point macro=\pgf@plot@xbar@handler
}%

\def\pgf@plot@xbar@handler#1{%
  \pgfkeysvalueof{/pgf/at begin bar}%
  \pgf@process{#1}%
  \pgf@ya=\pgf@x
  \expandafter\pgf@xb\pgfplotbarwidth@\relax
  \pgf@xc=\pgf@y
  \advance\pgf@xc by-.5\pgf@xb
  \advance\pgf@xc by\pgfplotbarshift@\relax
  \begingroup
  \pgfplotxzerolevelstreamnext
  \endgroup
  \pgf@yb=\pgf@x
  \advance\pgf@ya by-\pgf@yb
  \pgfpathrectangle
    {\pgfqpoint{\pgf@yb}{\pgf@xc}}%
    {\pgfqpoint{\pgf@ya}{\pgf@xb}}%
  \pgfkeysvalueof{/pgf/at end bar}%
}%

\pgfdeclareplothandler{\pgfplothandlerybarinterval}{}{%
  start={
    \pgfmathparse{\pgfkeysvalueof{/pgf/bar interval width}}%
    \xdef\pgfplotbarintervalwidth@{\pgfmathresult}%
    \pgfmathparse{\pgfkeysvalueof{/pgf/bar interval shift}}%
    \xdef\pgfplotbarintervalshift@{\pgfmathresult}%
    \pgfplotyzerolevelstreamstart
  },
  end macro=\pgfplotyzerolevelstreamend,
  point macro=\pgf@plot@ybarinterval@handler@first
}%

\def\pgf@plot@ybarinterval@handler@first#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@barinterval@intervalstart{\the\pgf@x}%
  \xdef\pgf@plot@barinterval@bar{\the\pgf@y}%
  \global\let\pgf@plotstreampoint=\pgf@plot@ybarinterval@handler%
}%
\def\pgf@plot@ybarinterval@handler#1{%
  \pgfkeysvalueof{/pgf/at begin bar}%
  \pgf@process{#1}%
  \pgf@ya=\pgf@plot@barinterval@bar
  \xdef\pgf@plot@barinterval@bar{\the\pgf@y}%
  \pgf@xc=\pgf@plot@barinterval@intervalstart\relax
  \xdef\pgf@plot@barinterval@intervalstart{\the\pgf@x}%
  \pgf@xb=\pgf@x
  \advance\pgf@xb by-\pgf@xc
  \advance\pgf@xc by\pgfplotbarintervalshift@\pgf@xb
  \pgf@xb=\pgfplotbarintervalwidth@\pgf@xb
  \advance\pgf@xc by-.5\pgf@xb%
  \begingroup
  \pgfplotyzerolevelstreamnext
  \endgroup
  \pgf@yb=\pgf@x
  \advance\pgf@ya by-\pgf@yb
  \pgfpathrectangle
    {\pgfqpoint{\pgf@xc}{\pgf@yb}}%
    {\pgfqpoint{\pgf@xb}{\pgf@ya}}%
  \pgfkeysvalueof{/pgf/at end bar}%
}%

\pgfdeclareplothandler{\pgfplothandlerxbarinterval}{}{%
  start={
    \pgfmathparse{\pgfkeysvalueof{/pgf/bar interval width}}%
    \xdef\pgfplotbarintervalwidth@{\pgfmathresult}%
    \pgfmathparse{\pgfkeysvalueof{/pgf/bar interval shift}}%
    \xdef\pgfplotbarintervalshift@{\pgfmathresult}%
    \pgfplotxzerolevelstreamstart
  },
  end macro=\pgfplotxzerolevelstreamend,
  point macro=\pgf@plot@xbarinterval@handler@first
}%

\def\pgf@plot@xbarinterval@handler@first#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@barinterval@intervalstart{\the\pgf@y}%
  \xdef\pgf@plot@barinterval@bar{\the\pgf@x}%
  \global\let\pgf@plotstreampoint=\pgf@plot@xbarinterval@handler%
}%
\def\pgf@plot@xbarinterval@handler#1{%
  \pgfkeysvalueof{/pgf/at begin bar}%
  \pgf@process{#1}%
  \pgf@ya=\pgf@plot@barinterval@bar
  \xdef\pgf@plot@barinterval@bar{\the\pgf@x}%
  \pgf@xc=\pgf@plot@barinterval@intervalstart\relax
  \xdef\pgf@plot@barinterval@intervalstart{\the\pgf@y}%
  \pgf@xb=\pgf@y
  \advance\pgf@xb by-\pgf@xc
  \advance\pgf@xc by\pgfplotbarintervalshift@\pgf@xb
  \pgf@xb=\pgfplotbarintervalwidth@\pgf@xb
  \advance\pgf@xc by-.5\pgf@xb%
  \begingroup
  \pgfplotxzerolevelstreamnext
  \endgroup
  \pgf@yb=\pgf@x
  \advance\pgf@ya by-\pgf@yb
  \pgfpathrectangle
    {\pgfqpoint{\pgf@yb}{\pgf@xc}}%
    {\pgfqpoint{\pgf@ya}{\pgf@xb}}%
  \pgfkeysvalueof{/pgf/at end bar}%
}%



\pgfdeclareplothandler{\pgfplothandlerconstantlineto}{}{%
  point macro=\pgf@plot@const@line@handler
}%

\def\pgf@plot@const@line@handler#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@y}%
  \pgf@plot@first@action{}%
  \global\let\pgf@plotstreampoint=\pgf@plot@const@line@handler@@%
}%
\def\pgf@plot@const@line@handler@@#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x
  \pgf@ya=\pgf@y
  \pgf@yb\pgf@plot@const@line@handler@last\relax
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@ya}%
}%


\pgfdeclareplothandler{\pgfplothandlerconstantlinetomarkright}{}{%
  point macro=\pgf@plot@const@line@mark@right@handler
}%

\def\pgf@plot@const@line@mark@right@handler#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@x}%
  \pgf@plot@first@action{}%
  \global\let\pgf@plotstreampoint=\pgf@plot@const@line@mark@right@handler@@%
}%
\def\pgf@plot@const@line@mark@right@handler@@#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x
  \pgf@ya=\pgf@y
  \pgf@yb\pgf@plot@const@line@handler@last\relax
  \pgfpathlineto{\pgfqpoint{\pgf@yb}{\pgf@ya}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@xa}%
}%


\pgfdeclareplothandler{\pgfplothandlerconstantlinetomarkmid}{}{%
  point macro=\pgf@plot@const@line@mark@mid@handler
}%

\def\pgf@plot@const@line@mark@mid@handler#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@const@line@handler@last{\global\pgf@x=\the\pgf@x\space\global\pgf@y=\the\pgf@y\space}%
  \pgf@plot@first@action{}%
  \global\let\pgf@plotstreampoint=\pgf@plot@const@line@mark@mid@handler@@%
}%
\def\pgf@plot@const@line@mark@mid@handler@@#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x
  \pgf@ya=\pgf@y
  \pgf@plot@const@line@handler@last
  \pgf@xc=.5\pgf@xa
  \advance\pgf@xc by.5\pgf@x
  \pgfpathlineto{\pgfqpoint{\pgf@xc}{\pgf@y}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xc}{\pgf@ya}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \xdef\pgf@plot@const@line@handler@last{\global\pgf@x=\the\pgf@x\space\global\pgf@y=\the\pgf@y\space}%
}%


\pgfdeclareplothandler{\pgfplothandlerjumpmarkright}{}{%
  point macro=\pgf@plot@jumpmarkright@handler
}%

\def\pgf@plot@jumpmarkright@handler#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@x}%
  \pgf@plot@first@action{}%
  \global\let\pgf@plotstreampoint=\pgf@plot@jumpmarkright@handler@@%
}%
\def\pgf@plot@jumpmarkright@handler@@#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x
  \pgf@ya=\pgf@y
  \pgf@yb\pgf@plot@const@line@handler@last\relax
  \pgfpathmoveto{\pgfqpoint{\pgf@yb}{\pgf@ya}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@xa}%
}%


\pgfdeclareplothandler{\pgfplothandlerjumpmarkleft}{}{%
  point macro=\pgf@plot@jumpmarkleft@handler
}%
\def\pgf@plot@jumpmarkleft@handler#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@y}%
  \pgf@plot@first@action{}%
  \global\let\pgf@plotstreampoint=\pgf@plot@jumpmarkleft@handler@@%
}%
\def\pgf@plot@jumpmarkleft@handler@@#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x
  \pgf@ya=\pgf@y
  \pgf@yb\pgf@plot@const@line@handler@last\relax
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@yb}}%
  \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \xdef\pgf@plot@const@line@handler@last{\the\pgf@ya}%
}%


\pgfdeclareplothandler{\pgfplothandlerjumpmarkmid}{}{%
  point macro=\pgf@plot@jump@mark@mid@handler
}%

\def\pgf@plot@jump@mark@mid@handler#1{%
  \pgf@process{#1}%
  \xdef\pgf@plot@const@line@handler@last{\global\pgf@x=\the\pgf@x\space\global\pgf@y=\the\pgf@y\space}%
  \pgf@plot@first@action{}%
  \global\let\pgf@plotstreampoint=\pgf@plot@jump@mark@mid@handler@@%
}%
\def\pgf@plot@jump@mark@mid@handler@@#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x
  \pgf@ya=\pgf@y
  \pgf@plot@const@line@handler@last
  \pgf@xc=.5\pgf@xa
  \advance\pgf@xc by.5\pgf@x
  \pgfpathlineto{\pgfqpoint{\pgf@xc}{\pgf@y}}%
  \pgfpathmoveto{\pgfqpoint{\pgf@xc}{\pgf@ya}}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \xdef\pgf@plot@const@line@handler@last{\global\pgf@x=\the\pgf@x\space\global\pgf@y=\the\pgf@y\space}%
}%



\pgfdeclareplothandler{\pgfplothandlerpolarcomb}{}{%
  point macro=\pgf@plot@polarcomb@handler
}%

\def\pgf@plot@polarcomb@handler#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgfpathmoveto{\pgfpointorigin}%
  \pgfpathlineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
}%





\pgfdeclareplothandler{\pgfplothandlermark}{#1}{%
  start={
    \def\pgf@plot@mark{%
      \ifnum\pgf@plot@mark@count<\pgf@plot@mark@repeat\relax%
      \else%
        \global\pgf@plot@mark@count=0\relax%
        #1%
      \fi%
    }%
    \global\pgf@plot@mark@count=\pgf@plot@mark@repeat\relax%
    \global\advance\pgf@plot@mark@count by-\pgf@plot@mark@phase\relax%
  },
  point macro=\pgf@plot@mark@handler
}%

\newcount\pgf@plot@mark@count
\def\pgf@plot@mark@phase{0}%

\def\pgf@plot@mark@handler#1{%
  \global\advance\pgf@plot@mark@count by1\relax%
  {\pgftransformshift{#1}\pgf@plot@mark}%
}%



\def\pgfsetplotmarkrepeat#1{\def\pgf@plot@mark@repeat{#1}}%
\pgfsetplotmarkrepeat{1}%



\def\pgfsetplotmarkphase#1{\def\pgf@plot@mark@phase{#1}}%
\pgfsetplotmarkphase{1}%




\pgfdeclareplothandler{\pgfplothandlermarklisted}{#1#2}{%
  start={
    \let\pgf@plot@mark@list=\pgfutil@empty%
    \edef\pgf@marshal{\noexpand\foreach\noexpand\pgf@temp in{#2}}
    \pgf@marshal{\xdef\pgf@plot@mark@list{\pgf@plot@mark@list(\pgf@temp)}}%
    \def\pgf@plot@mark{%
      \edef\pgf@marshal{\noexpand\pgfutil@in@{(\the\pgf@plot@mark@count)}{\pgf@plot@mark@list}}%
      \pgf@marshal%
      \ifpgfutil@in@#1\fi%
    }%
    \global\pgf@plot@mark@count=\pgf@plot@mark@repeat\relax%
    \global\advance\pgf@plot@mark@count by-\pgf@plot@mark@phase\relax%
  },
  point macro=\pgf@plot@mark@handler
}%




\def\pgfdeclareplotmark#1#2{\expandafter\def\csname pgf@plot@mark@#1\endcsname{#2}}%



\def\pgfsetplotmarksize#1{\pgfmathsetlength\pgfplotmarksize{#1}}%

\newdimen\pgfplotmarksize
\pgfplotmarksize=2pt



\def\pgfuseplotmark#1{\csname pgf@plot@mark@#1\endcsname}%



\pgfdeclareplotmark{*}
{%
  \pgfpathellipse{\pgfpointorigin}{\pgfqpoint{\pgfplotmarksize}{0sp}}{\pgfqpoint{0sp}{\pgfplotmarksize}}%
  \pgfusepathqfillstroke
}%



\pgfdeclareplotmark{+}
{%
  \pgfpathmoveto{\pgfqpoint{-\pgfplotmarksize}{0pt}}%
  \pgfpathlineto{\pgfqpoint{\pgfplotmarksize}{0pt}}%
  \pgfpathmoveto{\pgfqpoint{0pt}{\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{0pt}{-\pgfplotmarksize}}%
  \pgfusepathqstroke
}%



\pgfdeclareplotmark{x}
{%
  \pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}{-.70710678\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{.70710678\pgfplotmarksize}{.70710678\pgfplotmarksize}}%
  \pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}{.70710678\pgfplotmarksize}}%
  \pgfpathlineto{\pgfqpoint{.70710678\pgfplotmarksize}{-.70710678\pgfplotmarksize}}%
  \pgfusepathqstroke
}%






\pgfkeys{/pgf/gap around stream point/.initial=1.5pt}%

\pgfdeclareplothandler{\pgfplothandlergaplineto}{}{%
  point macro=\pgf@plot@gap@lineto@handler@initial,
  jump macro=\pgf@plot@gap@next@moveto
}%

\def\pgf@plot@gap@next@moveto{%
  \global\let\pgf@plotstreampoint=\pgf@plot@gap@lineto@handler@initial%
}%

\def\pgf@plot@gap@lineto@handler@initial#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \xdef\pgf@plot@gap@lineto@last{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \global\let\pgf@plotstreampoint=\pgf@plot@gap@lineto@handler%
}%

\def\pgf@plot@gap@lineto@handler#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \xdef\pgf@plot@gap@lineto@next{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \pgf@process{\pgfpointnormalised{\pgfpointdiff{\pgf@plot@gap@lineto@last}{\pgf@plot@gap@lineto@next}}}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgfpathmoveto{\pgfpointadd{\pgfpointscale{\pgfkeysvalueof{/pgf/gap
          around stream point}}{\pgfqpoint{\pgf@xc}{\pgf@yc}}}{\pgf@plot@gap@lineto@last}}%
  \pgfpathlineto{\pgfpointadd{\pgfpointscale{\pgfkeysvalueof{/pgf/gap
          around stream point}}{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}}{\pgf@plot@gap@lineto@next}}%
  \global\let\pgf@plot@gap@lineto@last=\pgf@plot@gap@lineto@next%
}%





\pgfdeclareplothandler{\pgfplothandlergapcycle}{}{%
  point macro=\pgf@plot@gap@cycle@handler@initial,
  jump macro=\pgf@plot@gapcycle@next@moveto,
  end macro=\pgf@plot@gap@cycle@handler@finish,
  start={\global\let\pgf@plot@gap@cycle@first\relax}
}%

\def\pgf@plot@gapcycle@next@moveto{%
  \pgf@plot@gap@cycle@handler@finish%
  \global\let\pgf@plot@gap@cycle@first=\relax%
  \global\let\pgf@plotstreampoint=\pgf@plot@gap@cycle@handler@initial%
}%

\def\pgf@plot@gap@cycle@handler@initial#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \xdef\pgf@plot@gap@cycle@last{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \global\let\pgf@plot@gap@cycle@first=\pgf@plot@gap@cycle@last%
  \global\let\pgf@plotstreampoint=\pgf@plot@gap@cycle@handler%
}%

\def\pgf@plot@gap@cycle@handler#1{%
  \pgf@process{#1}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \xdef\pgf@plot@gap@cycle@next{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \pgf@process{\pgfpointnormalised{\pgfpointdiff{\pgf@plot@gap@cycle@last}{\pgf@plot@gap@cycle@next}}}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgfpathmoveto{\pgfpointadd{\pgfpointscale{\pgfkeysvalueof{/pgf/gap
          around stream point}}{\pgfqpoint{\pgf@xc}{\pgf@yc}}}{\pgf@plot@gap@cycle@last}}%
  \pgfpathlineto{\pgfpointadd{\pgfpointscale{\pgfkeysvalueof{/pgf/gap
          around stream point}}{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}}{\pgf@plot@gap@cycle@next}}%
  \global\let\pgf@plot@gap@cycle@last=\pgf@plot@gap@cycle@next%
}%

\def\pgf@plot@gap@cycle@handler@finish{%
  \ifx\pgf@plot@gap@cycle@first\relax%
  \else
    \pgf@plot@gap@cycle@handler{\pgf@plot@gap@cycle@first}%
  \fi
}%



\endinput

==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgflibraryplothandlers.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmath.code.tex ====


\ifx\pgfmathloaded\pgfutil@undefined
  \let\pgfmathloaded=\relax
\else
  \expandafter\endinput
\fi

\ifx\pgfkeysloaded\pgfutil@undefined
  \input pgfkeys.code.tex
\fi

\input pgfmathutil.code.tex
\input pgfmathparser.code.tex
\input pgfmathfunctions.code.tex
\input pgfmathfunctions.basic.code.tex
\input pgfmathfunctions.trigonometric.code.tex
\input pgfmathfunctions.random.code.tex
\input pgfmathfunctions.comparison.code.tex
\input pgfmathfunctions.base.code.tex
\input pgfmathfunctions.round.code.tex
\input pgfmathfunctions.misc.code.tex
\input pgfmathfunctions.integerarithmetics.code.tex
\input pgfmathcalc.code.tex
\input pgfmathfloat.code.tex

\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmath.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathcalc.code.tex ====



\def\pgfmathsetlength#1#2{%
  \expandafter\pgfmath@onquick#2\pgfmath@%
  {%
    \begingroup%
      \pgfmath@selectfont%
      #1#2\unskip%
    \expandafter\endgroup%
    \expandafter#1\the#1\relax%
  }%
  {%
    \pgfmathparse{#2}%
    \ifpgfmathmathunitsdeclared%
      #1\pgfmathresult mu\relax%
    \else%
      #1\pgfmathresult pt\relax%
    \fi%
  }%
  \ignorespaces%
}

\def\pgfmathaddtolength#1#2{%
  \expandafter\pgfmath@onquick#2\pgfmath@%
  {%
    \begingroup%
      \pgfmath@selectfont%
      \advance#1#2\unskip%
      \expandafter%
    \endgroup%
    \expandafter#1\the#1\relax%
  }%
  {%
    \pgfmathparse{#2}%
    \ifpgfmathmathunitsdeclared%
      \advance#1\pgfmathresult mu\relax%
    \else%
      \advance#1\pgfmathresult pt\relax%
    \fi%
  }%
  \ignorespaces%
}

\def\pgfmathsetcount#1#2{%
  \expandafter\pgfmath@onquick#2\pgfmath@%
  {%
    \afterassignment\pgfmath@gobbletilpgfmath@%
    #1#2\relax\pgfmath@%
  }%
  {%
    \pgfmathparse{#2}%
    \afterassignment\pgfmath@gobbletilpgfmath@%
    #1\pgfmathresult\relax\pgfmath@%
  }%
  \ignorespaces%
}

\def\pgfmathaddtocount#1#2{%
  \expandafter\pgfmath@onquick#2\pgfmath@%
  {%
    \edef\pgfmath@addtocounttemp{\the#1}%
    \afterassignment\pgfmath@gobbletilpgfmath@%
    #1#2\relax\pgfmath@%
    \advance#1\pgfmath@addtocounttemp\relax%
  }%
  {%
    \edef\pgfmath@addtocounttemp{\the#1}%
    \pgfmathparse{#2}%
    \afterassignment\pgfmath@gobbletilpgfmath@%
    #1\pgfmathresult\relax\pgfmath@%
    \advance#1\pgfmath@addtocounttemp\relax%
  }%
  \ignorespaces%
}

\def\pgfmathnewcounter#1{%
  \expandafter\ifx\csname c@#1\endcsname\relax%
    \def\pgfmath@marshal{\csname newcount\endcsname}%
    \expandafter\pgfmath@marshal\csname c@#1\endcsname%
    \expandafter\def\csname the#1\endcsname{\expandafter\the\csname c@#1\endcsname}%
  \fi%
}

\def\pgfmathsetcounter#1#2{%
   \expandafter\pgfmathsetcount\csname c@#1\endcsname{#2}%
}

\def\pgfmathaddtocounter#1#2{%
  \expandafter\pgfmathaddtocount\csname c@#1\endcsname{#2}%
}

\def\pgfmath@pgftext{pgf}
\def\pgfmath@tikztext{tikz}
\def\pgfmathmakecounterglobal#1{%
  \pgfmath@ifundefined{c@#1}{}{%
    \expandafter\pgfmath@in@\expandafter{\pgfmath@pgftext}{#1}%
    \ifpgfmath@in@%
    \else%
      \expandafter\pgfmath@in@\expandafter{\pgfmath@tikztext}{#1}%
      \ifpgfmath@in@%
      \else%
        \expandafter\global\csname c@#1\endcsname\csname c@#1\endcsname\relax%
      \fi%
    \fi%
  }%
}

\def\pgfmathsetmacro#1#2{%
  \begingroup%
    \pgfmathparse{#2}%
    \let#1=\pgfmathresult
    \pgfmath@smuggleone{#1}%
  \endgroup%
}

\def\pgfmathsetlengthmacro#1#2{%
  \begingroup%
    \pgfmathsetlength\pgfmath@x{#2}%
    \edef#1{\the\pgfmath@x}%
    \pgfmath@smuggleone{#1}%
  \endgroup%
}

\def\pgfmathtruncatemacro#1#2{%
  \begingroup%
    \pgfmathsetcount\c@pgfmath@counta{#2}%
    \edef#1{\the\c@pgfmath@counta}%
    \pgfmath@smuggleone{#1}%
  \endgroup%
}


\def\pgfmath@onquick{%
  \futurelet\pgfmath@next%
  \pgfmath@@onquick}
\def\pgfmath@@onquick#1\pgfmath@{%
  \ifx\pgfmath@next+%
    \let\pgfmath@next=\pgfmath@firstoftwo%
  \else%
    \let\pgfmath@next=\pgfmath@secondoftwo%
  \fi%
  \pgfmath@next%
}


\def\pgfmathanglebetweenpoints#1#2{%
  \begingroup%
    \pgf@process{\pgfpointdiff{#1}{#2}}%
    \edef\pgf@marshall{\expandafter\noexpand\csname pgfmathatan2@\endcsname{\expandafter\Pgf@geT\the\pgf@y}{\expandafter\Pgf@geT\the\pgf@x}}%
    \pgf@marshall%
    \ifdim\pgfmathresult pt<0pt%
      \pgfmathparse{\pgfmathresult+360}%
    \fi%
    \expandafter%
  \endgroup\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult}%
}

\def\pgfmathrotatepointaround#1#2#3{%
  \pgf@process{%
    \pgf@process{#1}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgf@process{#2}%
    \pgf@xa\pgf@x%
    \pgf@ya\pgf@y%
    \pgf@xb\pgf@x%
    \pgf@yb\pgf@y%
    \pgf@x=\pgf@xc%
    \pgf@y=\pgf@yc%
    \advance\pgf@x-\pgf@xa%
    \advance\pgf@y-\pgf@ya%
    \pgfmathsetmacro\angle{#3}%
    \pgfmathsin@{\angle}%
    \let\sineangle\pgfmathresult%
    \pgfmathcos@{\angle}%
    \let\cosineangle\pgfmathresult%
    \pgf@xa\cosineangle\pgf@x%
    \advance\pgf@xa-\sineangle\pgf@y%
    \pgf@ya\sineangle\pgf@x%
    \advance\pgf@ya\cosineangle\pgf@y%
    \pgf@x\pgf@xb%
    \pgf@y\pgf@yb%
    \advance\pgf@x\pgf@xa%
    \advance\pgf@y\pgf@ya%
  }%
}

\def\pgfmathanglebetweenlines#1#2#3#4{%
  \begingroup%
    \pgfmathanglebetweenpoints{#1}{#2}%
    \let\firstangle\pgfmathresult%
    \pgfmathanglebetweenpoints{#3}{#4}%
    \let\secondangle\pgfmathresult%
    \ifdim\firstangle pt>\secondangle pt\relax%
      \pgfmathadd@{\secondangle}{360}%
      \let\secondangle\pgfmathresult%
    \fi%
    \pgfmathsubtract@{\secondangle}{\firstangle}%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}

\def\pgfmathreflectpointalongaxis#1#2#3{%
  \pgf@process{%
    \pgfmathanglebetweenpoints{#2}{#1}%
    \pgfmath@tempdima\pgfmathresult pt\relax%
    \pgfmathparse{#3}%
    \advance\pgfmath@tempdima-\pgfmathresult pt\relax%
    \pgfmath@tempdima-2.0\pgfmath@tempdima%
    \pgfmathrotatepointaround{#1}{#2}{\pgfmath@tonumber{\pgfmath@tempdima}}%
  }%
}



\def\pgfmathpointintersectionoflineandarc#1#2#3#4#5#6{%
  \pgf@process{%
    \pgfmathanglebetweenpoints{#2}{#1}%
    \let\x\pgfmathresult%
    \pgfmath@in@{and }{#6}%
    \ifpgfmath@in@%
      \pgf@polar@#6\@@%
    \else%
      \pgf@polar@#6 and #6\@@%
    \fi%
    \edef\xarcradius{\the\pgf@x}%
    \edef\yarcradius{\the\pgf@y}%
    \pgfmathsetmacro\s{#4}%
    \pgfmathsetmacro\e{#5}%
    \pgfmathmod@{\s}{360}%
    \ifdim\pgfmathresult pt<0pt\relax%
      \pgfmathadd@{\pgfmathresult}{360}%
    \fi%
    \let\ss\pgfmathresult%
    \pgfmathmod@{\e}{360}%
    \ifdim\pgfmathresult pt<0pt\relax%
      \pgfmathadd@{\pgfmathresult}{360}%
    \fi%
    \let\ee\pgfmathresult%
    \ifdim\ee pt<\ss pt\relax%
      \pgfmathadd@{\x}{180}%
      \pgfmathmod@{\pgfmathresult}{360}%
      \let\x\pgfmathresult%
    \fi%
    \def\m{360}%
    \pgfmathadd@{\s}{\e}%
    \pgfmathdivide@{\pgfmathresult}{2}%
    \let\n\pgfmathresult%
    \pgfmathloop%
      \pgfmathadd@{\s}{\e}%
      \pgfmathdivide@{\pgfmathresult}{2}%
      \let\p\pgfmathresult%
      \ifdim\p pt=\s pt\relax%
      \else%
        \pgfmathanglebetweenpoints{#2}{%
          \pgfpointadd{#3}{%
            \pgf@x\xarcradius\relax%
            \pgfmathcos@{\p}%
            \pgf@x\pgfmathresult\pgf@x%
            \pgf@y\yarcradius\relax%
            \pgfmathsin@{\p}%
            \pgf@y\pgfmathresult\pgf@y%
          }%
        }%
        \ifdim\ee pt<\ss pt\relax%
          \pgfmathadd@{\pgfmathresult}{180}%
          \pgfmathmod@{\pgfmathresult}{360}%
        \fi%
        \let\q\pgfmathresult%
        \ifdim\x pt>335pt\relax%
          \ifdim\q pt<45pt\relax%
            \pgfmathadd@{\q}{360}%
            \let\q\pgfmathresult%
          \fi%
        \fi%
        \ifdim\x pt=\q pt%
            \pgfmathbreakloop%
          \else
            \ifdim\x pt<\q pt\relax%
              \let\e\p%
            \else%
              \let\s\p%
            \fi%
          \fi%
          \pgfmathsubtract@{\x}{\q}%
          \pgfmathabs@{\pgfmathresult}%
          \ifdim\pgfmathresult pt<\m pt\relax%
            \let\m\pgfmathresult%
            \let\n\p%
          \fi%
    \repeatpgfmathloop%
    \pgfpointadd{#3}{\pgfpointpolar{\n}{\xarcradius and \yarcradius}}%
  }%
}

\def\pgfmathangleonellipse#1#2{%
  \begingroup%
    \pgfmath@in@{and }{#2}%
    \ifpgfmath@in@%
      \pgf@polar@#2\@@%
    \else%
      \pgf@polar@#2 and #2\@@%
    \fi%
    \pgf@xa\pgf@x%
    \pgf@ya\pgf@y%
    \pgf@process{#1}%
    \ifdim\pgf@x=0pt\relax%
      \pgfutil@tempdima1pt\relax%
    \else%
      \pgfutil@tempdima\pgf@x%
      \pgfmathdivide@{\pgfmath@tonumber{\pgf@xa}}{\pgfmath@tonumber{\pgfutil@tempdima}}%
      \pgfutil@tempdima\pgfmathresult pt\relax%
    \fi%
    \ifdim\pgf@y=0pt\relax%
      \pgfutil@tempdima1pt\relax%
    \else%
      \pgfmathdivide@{\pgfmath@tonumber{\pgf@y}}{\pgfmath@tonumber{\pgf@ya}}%
      \pgfutil@tempdima\pgfmathresult\pgfutil@tempdima%
      \pgfmathatan@{\pgfmath@tonumber{\pgfutil@tempdima}}%
    \fi%
    \pgfutil@tempdima\pgfmathresult pt\relax%
    \ifdim\pgfutil@tempdima<0pt\relax%
      \advance\pgfutil@tempdima360pt\relax%
    \fi%
    \ifdim\pgf@x<0pt\relax%
      \ifdim\pgf@y=0pt\relax%
        \pgfutil@tempdima180pt\relax%
      \else%
        \ifdim\pgf@y<0pt\relax%
          \advance\pgfutil@tempdima180pt\relax%
        \else%
          \advance\pgfutil@tempdima-180pt\relax%
        \fi%
      \fi%
    \else%
      \ifdim\pgf@x=0pt\relax%
        \ifdim\pgf@y<0pt\relax%
          \pgfutil@tempdima270pt\relax%
        \else%
          \pgfutil@tempdima90pt\relax%
        \fi%
      \else%
        \ifdim\pgf@y=0pt\relax%
          \pgfutil@tempdima0pt\relax%
        \fi%
      \fi%
    \fi%
    \pgfmath@returnone\pgfutil@tempdima%
  \endgroup%
}


==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathcalc.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfloat.code.tex ====


\pgfkeys{
    /pgf/compat/number printer/.is choice,
    /pgf/compat/number printer/2.10/.code={%
        \def\pgfmathprintnumber@begingroup{\bgroup}%
        \def\pgfmathprintnumber@endgroup{\egroup}%
    },
    /pgf/compat/number printer/next after 2.10/.code={%
        \def\pgfmathprintnumber@begingroup{\begingroup}%
        \def\pgfmathprintnumber@endgroup{\endgroup}%
    },
    /pgf/compat/number printer/next after 2.10,%
}


\newif\ifpgfmathfloatcomparison
\newif\ifpgfmathfloatroundhasperiod
\newif\ifpgfmathprintnumberskipzeroperiod


\toksdef\pgfmathfloat@tmptoks=1
\newif\ifpgfmathfloat@fixed@digits@after@period
\newif\ifpgfmathfloatroundmayneedrenormalize
\toksdef\pgfmathfloat@a@Mtok=0

\let\pgfmathfloat@a@S=\c@pgf@counta
\let\pgfmathfloat@a@M=\pgf@xa
\let\pgfmathfloat@a@E=\c@pgf@countb
\let\pgfmathfloat@b@S=\c@pgf@countc
\let\pgfmathfloat@b@M=\pgf@xb
\let\pgfmathfloat@b@E=\c@pgf@countd

\def\pgfmathfloat@round@precision{2}

\def\pgfmathfloat@round@precision@orig{\pgfmathfloat@round@precision}%

\gdef\pgfmathfloat@glob@TMP{}


\def\pgfmathfloatparsenumber#1{%
    \begingroup
    \edef\pgfmathresult{#1}%
    \expandafter\pgfflt@impl\pgfmathresult\pgfflt@EOI
    \ifpgfmathfloatparsenumberpendingperiod
        \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.0}%
    \fi
    \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\let\pgfmathfloatqparsenumber=\pgfmathfloatparsenumber

\def\pgfmathfloattoregisters#1#2#3#4{%
    \expandafter\pgfmathfloat@decompose#1\relax{#2}{#3}{#4}%
}

\def\pgfmathfloattoregisterstok#1#2#3#4{%
    \expandafter\pgfmathfloat@decompose@tok#1\relax{#2}{#3}{#4}%
}

\def\pgfmathfloatgetflags#1#2{%
    \expandafter\pgfmathfloat@decompose@F#1\relax{#2}%
}
\def\pgfmathfloatgetflagstomacro#1#2{%
    \expandafter\pgfmathfloat@decompose@Fmacro#1\relax{#2}%
}%

\def\pgfmathfloatgetmantissa#1#2{%
    \expandafter\pgfmathfloat@decompose@M#1\relax{#2}%
}
\let\pgfmathfloatgetmantisse=\pgfmathfloatgetmantissa
\def\pgfmathfloatgetmantissatok#1#2{%
    \expandafter\pgfmathfloat@decompose@Mtok#1\relax{#2}%
}
\let\pgfmathfloatgetmantissetok=\pgfmathfloatgetmantissatok
\def\pgfmathfloatgetexponent#1#2{%
    \expandafter\pgfmathfloat@decompose@E#1\relax{#2}%
}


\def\pgfmathfloat@to@FMeE@style#1{\expandafter\pgfmathfloat@to@FMeE@style@#1\relax\relax}%
\def\pgfmathfloat@to@FMeE@style@#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@to@FMeE@style@@%
    \else
        \expandafter\pgfmathfloat@to@FMeE@style@error%
    \fi
    #1#2%
}%
\def\pgfmathfloat@to@FMeE@style@@#1Y#2e#3]\relax\relax{\def\pgfmathresult{#1#2e#3}}%
\def\pgfmathfloat@to@FMeE@style@error#1\relax\relax{%
    \begingroup
    \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
    \xdef\pgfmathfloat@decompose@TMP{%
        \noexpand\pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
    }%
    \endgroup
    \pgfmathfloat@decompose@TMP
}%


\def\pgfmathfloat@decompose#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@decompose@%
    \else
        \expandafter\pgfmathfloat@decompose@error%
    \fi
    #1#2%
}
\def\pgfmathfloat@decompose@#1Y#2e#3]\relax#4#5#6{%
   #4=#1\relax
   #5=#2pt %
   #6=#3\relax%
}

\def\pgfmathfloat@decompose@tok#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@decompose@tok@%
    \else
        \expandafter\pgfmathfloat@decompose@tok@error%
    \fi
    #1#2%
}%
\def\pgfmathfloat@decompose@tok@#1Y#2e#3]\relax#4#5#6{%
   #4=#1\relax
   #5={#2}%
   #6=#3\relax%
}
\def\pgfmathfloat@decompose@F#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@decompose@F@%
    \else
        \expandafter\pgfmathfloat@decompose@F@error%
    \fi
    #1#2%
}%
\def\pgfmathfloat@decompose@Fmacro#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@decompose@Fmacro@%
    \else
        \expandafter\pgfmathfloat@decompose@F@error%
    \fi
    #1#2%
}%
\def\pgfmathfloat@decompose@M#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@decompose@M@%
    \else
        \expandafter\pgfmathfloat@decompose@M@error%
    \fi
    #1#2%
}%
\def\pgfmathfloat@decompose@E#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@decompose@E@%
    \else
        \expandafter\pgfmathfloat@decompose@E@error%
    \fi
    #1#2%
}%
\def\pgfmathfloat@decompose@Mtok#1#2{%
    \ifx#2Y%
        \expandafter\pgfmathfloat@decompose@Mtok@%
    \else
        \expandafter\pgfmathfloat@decompose@Mtok@error%
    \fi
    #1#2%
}%
\def\pgfmathfloat@decompose@F@#1Y#2e#3]\relax#4{#4=#1\relax}%
\def\pgfmathfloat@decompose@Fmacro@#1Y#2e#3]\relax#4{\def#4{#1}}%
\def\pgfmathfloat@decompose@M@#1Y#2e#3]\relax#4{#4=#2pt}%
\def\pgfmathfloat@decompose@Mtok@#1Y#2e#3]\relax#4{#4={#2}}%
\def\pgfmathfloat@decompose@E@#1Y#2e#3]\relax#4{#4=#3\relax}%

\def\pgfmathfloat@decompose@error#1\relax#2#3#4{%
    \begingroup
    \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
    \xdef\pgfmathfloat@decompose@TMP{%
        \noexpand#2=\the\pgfmathfloat@a@S\space
        \noexpand#3=\the\pgfmathfloat@a@Mtok pt
        \noexpand#4=\the\pgfmathfloat@a@E\space
    }%
    \endgroup
    \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@tok@error#1\relax#2#3#4{%
    \begingroup
    \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
    \xdef\pgfmathfloat@decompose@TMP{%
        \noexpand#2=\the\pgfmathfloat@a@S\space
        \noexpand#3={\the\pgfmathfloat@a@Mtok}%
        \noexpand#4=\the\pgfmathfloat@a@E\space
    }%
    \endgroup
    \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@F@error#1\relax#2{%
    \begingroup
    \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
    \xdef\pgfmathfloat@decompose@TMP{\noexpand#2=\the\pgfmathfloat@a@S\space}%
    \endgroup
    \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@M@error#1\relax#2{%
    \begingroup
    \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
    \xdef\pgfmathfloat@decompose@TMP{\noexpand#2=\the\pgfmathfloat@a@Mtok pt }%
    \endgroup
    \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@Mtok@error#1\relax#2{%
    \begingroup
    \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
    \xdef\pgfmathfloat@decompose@TMP{\noexpand#2={\the\pgfmathfloat@a@Mtok}}%
    \endgroup
    \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloat@decompose@E@error#1\relax#2{%
    \begingroup
    \pgfmathfloatparsenumber@handleerror{wrong lowlevel format}{#1}{#1}%
    \xdef\pgfmathfloat@decompose@TMP{\noexpand#2=\the\pgfmathfloat@a@E\space}%
    \endgroup
    \pgfmathfloat@decompose@TMP
}%
\def\pgfmathfloattomacro#1#2#3#4{%
    \begingroup
    \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \xdef\pgfmathfloat@glob@TMP{%
        \noexpand\def\noexpand#2{\the\pgfmathfloat@a@S}%
        \noexpand\def\noexpand#3{\the\pgfmathfloat@a@Mtok}%
        \noexpand\def\noexpand#4{\the\pgfmathfloat@a@E}%
    }%
    \endgroup
    \pgfmathfloat@glob@TMP
}


\def\pgfmathfloatcreate#1#2#3{%
    \edef\pgfmathresult{#1Y#2e#3]}%
}%
\def\pgfmathfloat@POSTFLAGSCHAR{Y}



\def\pgfmathfloattofixed@#1{%
    \begingroup
    \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \ifcase\pgfmathfloat@a@S
        \def\pgfmathresult{0.0}%
    \or
        \expandafter\pgfmathfloattofixed@impl\the\pgfmathfloat@a@Mtok\relax
    \or
        \expandafter\pgfmathfloattofixed@impl\the\pgfmathfloat@a@Mtok\relax
        \pgfmathfloat@a@Mtok=\expandafter{\pgfmathresult}%
        \edef\pgfmathresult{-\the\pgfmathfloat@a@Mtok}%
    \or\def\pgfmathresult{nan}%
    \or\def\pgfmathresult{inf}%
    \or\def\pgfmathresult{-inf}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}
\let\pgfmathfloattofixed=\pgfmathfloattofixed@

\def\pgfmathfloattoint#1{%
    \pgfmathfloattofixed{#1}%
    \expandafter\pgfmathfloattoint@@\pgfmathresult\relax
}%
\def\pgfmathfloattoint@@#1.#2\relax{%
    \def\pgfmathresult{#1}%
}%

\def\pgfmathfloattosci@#1{%
    \begingroup
    \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \ifcase\pgfmathfloat@a@S
        \def\pgfmathresult{0.0e0}%
    \or
        \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok e\the\pgfmathfloat@a@E}%
    \or
        \edef\pgfmathresult{-\the\pgfmathfloat@a@Mtok e\the\pgfmathfloat@a@E}%
    \or\def\pgfmathresult{nan}%
    \or\def\pgfmathresult{inf}%
    \or\def\pgfmathresult{-inf}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\let\pgfmathfloattosci=\pgfmathfloattosci@

\def\pgfmathfloatvalueof#1{\expandafter\pgfmathfloatvalueof@@#1@@}%

\def\pgfmathfloatvalueof@@#1#2{%
    \if#2Y%
        \expandafter\pgfmathfloatvalueof@@@\expandafter#1\expandafter#2%
    \else
        \expandafter\pgfmathfloatvalueof@abort\expandafter#1\expandafter#2%
    \fi
}
\def\pgfmathfloatvalueof@@@#1Y#2e#3]@@{%
    \ifcase#1 %
        0.0e0%
    \or
        #2e#3%
    \or
        -#2e#3%
    \or nan%
    \or inf%
    \or -inf%
    \fi
}%
\def\pgfmathfloatvalueof@abort#1@@{#1}%



\def\pgfmathroundto#1{%
    \pgfmathfloatroundhasperiodtrue
    \begingroup
    \pgfmathfloat@fixed@digits@after@periodfalse
    \pgfmathroundto@impl{#1}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}


\def\pgfmathroundtozerofill#1{%
    \pgfmathfloatroundhasperiodtrue
    \begingroup
    \pgfmathfloat@fixed@digits@after@periodtrue
    \pgfmathroundto@impl{#1}%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\def\pgfmathprintnumber@fixed@styleDEFAULT#1#2#3e#4\relax{%
    \begingroup
    \pgfkeysgetvalue{/pgf/number format/set decimal separator}\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP
    \pgfkeysgetvalue{/pgf/number format/@dec sep mark}\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK
    \pgfkeysgetvalue{/pgf/number format/set thousands separator}\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP
    \c@pgf@counta=#4\relax %
    \ifnum#2=0
        \c@pgf@counta=0
    \fi
    \def\pgfmathresult{}%
    \ifpgfmathfloatroundhasperiod
        \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@period#1\pgfmathfloat@EOI
    \else
        \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI%
        \begingroup
        \toks0=\expandafter{\pgfmathresult}%
        \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}%
        \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
        \endgroup
        \let\pgfmathresult=\pgfmathfloat@glob@TMP
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@period#1.#2\pgfmathfloat@EOI{%
    \ifpgfmathprintnumberskipzeroperiod
        \def\pgfmathfloat@loc@TMPb{#1}%
        \ifx\pgfmathfloatparsenumber@tok@ZERO\pgfmathfloat@loc@TMPb
        \else
            \def\pgfmathfloat@loc@TMPc{-0}%
            \ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb
                \def\pgfmathresult{-}%
            \else
                \def\pgfmathfloat@loc@TMPc{+0}%
                \ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb
                    \def\pgfmathresult{+}%
                \else
                    \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI
                \fi
            \fi
        \fi
    \else
        \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI
    \fi
    \ifpgfmathprintnumber@thousand@sep@in@fractional
        \let\pgfmathresultfractional\pgfutil@empty%
        \pgfmathprintnumber@thousand@sep@in@fractional#2MMMM\@@
    \else
        \def\pgfmathresultfractional{#2}%
    \fi
    \begingroup
    \toks0=\expandafter{\pgfmathresult}%
    \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}%
    \toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP}%
    \toks3=\expandafter{\pgfmathresultfractional}%
    \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 \the\toks3 }%
    \endgroup
    \let\pgfmathresult=\pgfmathfloat@glob@TMP
}%

\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod{%
    \ifx\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP\pgfutil@empty
        \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
            \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall}%
    \else
        \ifnum\c@pgf@counta<0\relax %
            \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
                \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall}%
        \else
            \ifnum\c@pgf@counta<\pgfkeysvalueof{/pgf/number format/min exponent for 1000 sep}\relax
                \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
                    \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall}%
            \else
                \advance\c@pgf@counta by1 %
                \c@pgf@countb=\c@pgf@counta
                \divide\c@pgf@countb by3 %
                \c@pgf@countc=\c@pgf@countb
                \multiply\c@pgf@countc by3
                \advance\c@pgf@counta by-\c@pgf@countc%
                \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
                    \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printsign
                }%
            \fi
        \fi
    \fi
    \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printsign#1{%
    \def\pgfmathfloat@loc@TMPb{#1}%
    \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@MINUS
        \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
        \let\pgfmathfloat@loc@TMPb=\pgfutil@empty
    \else
        \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@PLUS
            \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
            \let\pgfmathfloat@loc@TMPb=\pgfutil@empty
        \else
            \ifpgfmathprintnumber@showpositive
                \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult +}%
            \fi
        \fi
    \fi
    \ifnum\c@pgf@counta>0 %
        \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
            \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printtrailingdigits\pgfmathfloat@loc@TMPb
        }%
    \else
        \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
            \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird\pgfmathfloat@loc@TMPb
        }%
    \fi
    \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printtrailingdigits#1#2{%
    \ifcase\c@pgf@counta %
    \or
        \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
        \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
            \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird#2%
        }%
    \or
        \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1#2}%
        \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
            \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird%
        }%
    \fi
    \ifnum\c@pgf@countb>0\relax %
        \begingroup
        \toks0=\expandafter{\pgfmathresult}%
        \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP}%
        \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
        \endgroup
        \let\pgfmathresult=\pgfmathfloat@glob@TMP
    \fi
    \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird#1#2#3{%
    \ifnum\c@pgf@countb>0\relax
        \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1#2#3}%
        \advance\c@pgf@countb by-1
        \ifnum\c@pgf@countb>0\relax
            \begingroup
            \toks0=\expandafter{\pgfmathresult}%
            \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP}%
            \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
            \endgroup
            \let\pgfmathresult=\pgfmathfloat@glob@TMP
        \fi
        \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT{%
            \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@counteverythird%
        }%
    \else
        \let\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT=\relax
    \fi
    \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@NEXT
}

\def\pgfmathprintnumber@thousand@sep@in@fractional#1#2#3#4{%
    \if#4M%
        \def\pgfmathprint@next{\pgfmathprintnumber@thousand@sep@in@fractional@finish#1#2#3#4}%
    \else
        \begingroup
        \toks0=\expandafter{\pgfmathresultfractional}%
        \toks1={#1#2#3}%
        \toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@THOUSAND@SEP}%
        \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 }%
        \endgroup
        \let\pgfmathresultfractional=\pgfmathfloat@glob@TMP
        \def\pgfmathprint@next{\pgfmathprintnumber@thousand@sep@in@fractional#4}%
    \fi
    \pgfmathprint@next
}%
\def\pgfmathprintnumber@thousand@sep@in@fractional@finish#1M{%
    \expandafter\def\expandafter\pgfmathresultfractional\expandafter{\pgfmathresultfractional #1}%
    \pgfmathprintnumber@thousand@sep@in@fractional@finish@
}%
\def\pgfmathprintnumber@thousand@sep@in@fractional@finish@#1\@@{}%

\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall#1{%
    \def\pgfmathfloat@loc@TMPb{#1}%
    \let\pgfmathfloat@loc@TMPc=\pgfutil@empty
    \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@MINUS
    \else
        \ifx\pgfmathfloat@loc@TMPb\pgfmathfloatparsenumber@tok@PLUS
        \else
            \ifpgfmathprintnumber@showpositive
                \def\pgfmathfloat@loc@TMPc{+}%
            \fi
        \fi
    \fi
    \expandafter\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall@\pgfmathfloat@loc@TMPc#1%
}
\def\pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod@printall@#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI{%
    \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult #1}%
}%

\def\pgfmathprintnumber@fixed@stylePERIOD#1#2#3e#4\relax{%
    \def\pgfmathresult{#1}%
}

\def\pgfmathprintnumber@fixed@styleCOMMA#1#2#3e#4\relax{%
    \ifpgfmathfloatroundhasperiod
        \expandafter\pgfmathprintnumber@fixed@styleCOMMA@impl#1\pgfmathfloat@EOI
    \else
        \def\pgfmathresult{#1}%
    \fi
}
\def\pgfmathprintnumber@fixed@styleCOMMA@impl#1.#2\pgfmathfloat@EOI{\def\pgfmathresult{#1{,}#2}}


\let\pgfmathprintnumber@fixed@style=\pgfmathprintnumber@fixed@styleDEFAULT


\def\pgfmathfloatround#1{%
    \pgfmathfloatroundhasperiodtrue
    \begingroup
    \pgfmathfloat@fixed@digits@after@periodfalse
    \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \pgfmathfloatround@impl
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\def\pgfmathfloatroundzerofill#1{%
    \pgfmathfloatroundhasperiodtrue
    \begingroup
    \pgfmathfloat@fixed@digits@after@periodtrue
    \expandafter\pgfmathfloat@decompose@tok#1\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \pgfmathfloatround@impl
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\newif\ifpgfmathfloatround@allow@empty@mantissa
\def\pgfmathfloatround@mantissa@ONE{1pt }%

\def\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax#4#5#6{%
    \pgfkeysgetvalue{/pgf/number format/@sci exponent mark}\pgfmathfloatrounddisplaystyle@e@mark
    \ifcase#1\relax
        \pgfmathprintnumber@fixed@style{#2}#1#2e0\relax%
        \expandafter\pgfmathfloatrounddisplaystyle@shared@impl@\expandafter{\pgfmathresult}{#4#6}%
    \or
        \def\pgfmathfloat@loc@TMPa{1}%
        \ifpgfmathfloatround@allow@empty@mantissa
        \else
            \ifdim#2pt=\pgfmathfloatround@mantissa@ONE
                \def\pgfmathfloat@loc@TMPa{0}%
            \fi
        \fi
        \if1\pgfmathfloat@loc@TMPa
            \pgfmathprintnumber@fixed@style{#2}#1#2e0\relax%
            \expandafter\pgfmathfloatrounddisplaystyle@shared@impl@\expandafter{\pgfmathresult}{#4#6}%
        \else
            \def\pgfmathfloat@loc@TMPa{0}%
            \pgfmathfloatrounddisplaystyle@shared@impl@{#5}{#6}%
        \fi
    \or
        \def\pgfmathfloat@loc@TMPa{1}%
        \ifpgfmathfloatround@allow@empty@mantissa
        \else
            \ifdim#2pt=\pgfmathfloatround@mantissa@ONE
                \def\pgfmathfloat@loc@TMPa{0}%
            \fi
        \fi
        \if1\pgfmathfloat@loc@TMPa
            \pgfmathprintnumber@fixed@style{-#2}#1#2e0\relax%
            \expandafter\pgfmathfloatrounddisplaystyle@shared@impl@\expandafter{\pgfmathresult}{#4#6}%
        \else
            \def\pgfmathfloat@loc@TMPa{0}%
            \pgfmathfloatrounddisplaystyle@shared@impl@{-#5}{#6}%
        \fi
    \or
        \pgfmathfloatrounddisplaystyle@shared@impl@@{\hbox{NaN}}{}%
    \or
        \ifpgfmathprintnumber@showpositive
            \pgfmathfloatrounddisplaystyle@shared@impl@@{+\infty}{}%
        \else
            \pgfmathfloatrounddisplaystyle@shared@impl@@{\infty}{}%
        \fi
    \or
        \pgfmathfloatrounddisplaystyle@shared@impl@@{-\infty}{}%
    \fi
}

\def\pgfmathfloatrounddisplaystyle@shared@impl@#1#2{%
    \pgfmathprintnumber@begingroup
    \toks0={#1}%
    \toks1=\expandafter{\pgfmathfloatrounddisplaystyle@e@mark #2}%
    \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 }%
    \pgfmathprintnumber@endgroup
    \let\pgfmathresult=\pgfmathfloat@glob@TMP
}%
\def\pgfmathfloatrounddisplaystyle@shared@impl@@#1#2{%
    \pgfmathprintnumber@begingroup
    \toks0={#1}%
    \toks1=\expandafter{\pgfmathfloatrounddisplaystyle@e@mark #2}%
    \pgfkeysgetvalue{/pgf/number format/@dec sep mark}\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK
    \toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}%
    \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 }%
    \pgfmathprintnumber@endgroup
    \let\pgfmathresult=\pgfmathfloat@glob@TMP
}

\def\pgfmathfloatrounddisplaystyle@std#1#2e#3\relax{%
    \pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{\cdot}{}{10^{#3}}%
}
\def\pgfmathfloatrounddisplaystyle@subscript#1#2e#3\relax{%
    \pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}{_{#3}}%
}
\def\pgfmathfloatrounddisplaystyle@superscript#1#2e#3\relax{%
    \pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}{^{#3}}%
}
\def\pgfmathfloatrounddisplaystyle@e#1#2e#3\relax{%
    \ifnum#3<0\relax
        \pgfmathprintnumber@begingroup
        \count0=#3\relax
        \multiply\count0 by-1
        \xdef\pgfmathfloat@glob@TMP{e{-}\the\count0}%
        \pgfmathprintnumber@endgroup%
        \let\pgfmathresult=\pgfmathfloat@glob@TMP
    \else
        \def\pgfmathresult{e{+}#3}%
    \fi
    \def\pgfmathfloat@loc@TMPb{\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}}%
    \expandafter\pgfmathfloat@loc@TMPb\expandafter{\pgfmathresult}%
}
\def\pgfmathfloatrounddisplaystyle@E#1#2e#3\relax{%
    \ifnum#3<0\relax
        \pgfmathprintnumber@begingroup
        \count0=#3\relax
        \multiply\count0 by-1
        \xdef\pgfmathfloat@glob@TMP{E{-}\the\count0}%
        \pgfmathprintnumber@endgroup%
        \let\pgfmathresult=\pgfmathfloat@glob@TMP
    \else
        \def\pgfmathresult{E{+}#3}%
    \fi
    \def\pgfmathfloat@loc@TMPb{\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\relax{}{1}}%
    \expandafter\pgfmathfloat@loc@TMPb\expandafter{\pgfmathresult}%
}

\def\pgfmathfloatrounddisplaystyle@generic#1#2e#3\relax{%
    \begingroup
    \pgfkeysvalueof {/pgf/number format/sci generic/@/.@cmd}{#3}{#1}{#2}\pgfeov
    \pgfkeysgetvalue{/pgf/number format/sci generic/mantissa sep}\pgfmathdisplay@aftermantissa
    \pgfkeysgetvalue{/pgf/number format/sci generic/empty mantissa sep}\pgfmathdisplay@nomantissa
    \pgfkeysgetvalue{/pgf/number format/sci generic/exponent}\pgfmathdisplay@e
    \toks0=\expandafter{\pgfmathdisplay@aftermantissa}%
    \toks1=\expandafter{\pgfmathdisplay@nomantissa}%
    \toks2=\expandafter{\pgfmathdisplay@e}%
    \xdef\pgfmathfloat@glob@TMP{\noexpand\pgfmathfloatrounddisplaystyle@shared@impl#1#2e#3\noexpand\relax{\the\toks0}{\the\toks1}{\the\toks2}}%
    \endgroup
    \pgfmathfloat@glob@TMP
}

\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@std
\newif\ifpgfmathfloat@usezerofill@sci
\newif\ifpgfmathfloat@usezerofill@fixed
\newif\ifpgfmathprintnumber@assumemathmode
\newif\ifpgfmathprintnumber@showpositive
\newif\ifpgfmathprintnumber@frac@warn
\newif\ifpgfmathprintnumber@frac@whole
\newif\ifpgfmathparsenumber@comma@as@period

\long\def\pgfmathfloatfrac@verbatim#1#2{#1/#2}%

\let\pgfmathround@@orig=\pgfmathround@

\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{2}%

\newif\ifpgfmathprintnumber@thousand@sep@in@fractional
\pgfkeys{%
    /pgf/number format/.is family,
    /pgf/number format,
    fixed/.code=           \pgfmath@set@number@printer{pgfmathprintnumber@FIXED},
    sci/.code=             \pgfmath@set@number@printer{pgfmathprintnumber@SCI},
    std/.code=             {\pgfmath@set@number@printer{pgfmathprintnumber@STD}\pgfmathprintnumber@STD@setparam{#1}},
    std/.default=,%
    relative round mode/.is choice,
    relative round mode/fixed/.code={\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{1}},
    relative round mode/mantissa/.code={\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{0}},
    relative round mode/compatible/.code={\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed{2}},
    relative/.code={%
        \pgfmath@set@number@printer{pgfmathprintnumber@RELATIVE}%
        \pgfmathround@@orig{#1}%
        \expandafter\pgfmathfloattoint@@\pgfmathresult\relax
        \let\pgfmathprintnumber@RELATIVE@param=\pgfmathresult
    },%
    relative/.value required,
    relative*/.style={/pgf/number format/relative={#1},/pgf/number format/relative round mode=fixed},
    every relative/.style=std,
    relative style/.style={/pgf/number format/every relative/.append style={#1}},
    fixed relative/.code=  \pgfmath@set@number@printer{pgfmathprintnumber@FIXED@RELATIVE},
    int detect/.code=      \pgfmath@set@number@printer{pgfmathprintnumber@INT@DETECT},
    int trunc/.code=       \pgfmath@set@number@printer{pgfmathprintnumber@INT@TRUNC},
    frac/.code=            \pgfmath@set@number@printer{pgfmathprintnumber@frac},%
    frac TeX/.initial=\frac,
    frac whole format/.code={\def\pgfmathresult{#1}},
    frac denom/.initial=,
    frac whole/.is if=pgfmathprintnumber@frac@whole,
    frac whole=true,
    frac shift/.initial=4,
    frac warning/.is if=pgfmathprintnumber@frac@warn,
    frac warning=true,
    assume math mode/.is if=pgfmathprintnumber@assumemathmode,
    assume math mode/.default=true,
    fixed zerofill/.is if= pgfmathfloat@usezerofill@fixed,
    fixed zerofill/.default=true,
    sci zerofill/.is if=   pgfmathfloat@usezerofill@sci,
    sci zerofill/.default=true,
    zerofill/.style=       {/pgf/number format/fixed zerofill={#1},/pgf/number format/sci zerofill={#1}},
    zerofill/.default=     true,
    precision/.store in=   \pgfmathfloat@round@precision,
    sci precision/.code={%
        \edef\pgfmathfloat@loc@TMPa{#1}%
        \ifx\pgfmathfloat@loc@TMPa\pgfutil@empty
            \def\pgfmathprintnumber@sci@precision{\pgfmathfloat@round@precision}%
        \else
            \let\pgfmathprintnumber@sci@precision=\pgfmathfloat@loc@TMPa
        \fi
    },%
    sci precision/.default=,
    sci precision=,
    fixed default/.code=   {\let\pgfmathprintnumber@fixed@style=\pgfmathprintnumber@fixed@styleDEFAULT},
    set decimal separator/.initial=,
    dec sep/.style={/pgf/number format/set decimal separator={#1}},
    @dec sep mark/.initial=,
    @sci exponent mark/.initial=,
    set thousands separator/.initial=,
    1000 sep in fractionals/.is if=pgfmathprintnumber@thousand@sep@in@fractional,
    1000 sep in fractionals/.default=true,
    1000 sep/.style={/pgf/number format/set thousands separator={#1}},
    min exponent for 1000 sep/.initial=0,
    use period/.style=     {/pgf/number format/set decimal separator={.},/pgf/number format/set thousands separator={{{,}}}},
    use comma/.style=      {/pgf/number format/set decimal separator={{{,}}},/pgf/number format/set thousands separator={.}},
    showpos/.is if=pgfmathprintnumber@showpositive,
    showpos/.default=true,
    print sign/.is if=pgfmathprintnumber@showpositive,
    print sign/.default=true,
    read comma as period/.is if=pgfmathparsenumber@comma@as@period,
    read comma as period/.default=true,
    skip 0./.is if=pgfmathprintnumberskipzeroperiod,
    skip 0./.default=true,
    skip 0.= false,
    use period,
    sci 10^e/.code=        {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@std},
    sci 10e/.code=         {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@std},
    sci e/.code=           {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@e},
    sci E/.code=           {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@E},
    sci subscript/.code=   {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@subscript},
    sci superscript/.code= {\let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@superscript},
    sci generic/.code=     {%
        \let\pgfmathfloatrounddisplaystyle=\pgfmathfloatrounddisplaystyle@generic
        \pgfkeysdefargs{/pgf/number format/sci generic/@}%
            {##1##2##3}%
            {\pgfqkeys{/pgf/number format/sci generic}{#1}}%
    },
    sci generic/mantissa sep/.initial=,%
    sci generic/empty mantissa sep/.initial=,%
    sci generic/mantisse sep/.style={/pgf/number format/sci generic/mantissa sep={#1}},%
    sci generic/empty mantisse sep/.style={/pgf/number format/sci generic/empty mantissa sep={#1}},%
    sci generic/exponent/.initial=,%
    sci generic/.value required,
    verbatim/.code={%
        \pgfqkeys{/pgf/number format}{%
            sci generic={mantissa sep=,exponent={e##1}},
            1000 sep=,
            skip 0.=false,
            print sign=false,
            dec sep=.,
            assume math mode,
            frac TeX=\pgfmathfloatfrac@verbatim,
            frac whole format/.code={\def\pgfmathresult{##1 }},
            @dec sep mark=,
            @sci exponent mark=,
        }%
    },
    retain unit mantissa/.is if=pgfmathfloatround@allow@empty@mantissa,
    retain unit mantissa/.default=true,
    retain unit mantissa=true,
    implementation/.code={\def\pgfmathprintnumber@protected{#1}},
}



\def\pgfmathprintnumber@STD#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathprintnumber@STD@issci\pgfmathresult\relax
}

\def\pgfmathprintnumber@STD@setparam#1{%
    \edef\pgfmathfloat@loc@TMPb{#1}%
    \ifx\pgfmathfloat@loc@TMPb\pgfutil@empty
        \def\pgfmathprintnumber@STD@getlowerbound{%
            \c@pgf@counta=\pgfmathfloat@round@precision@orig\relax
            \divide\c@pgf@counta by-2\relax
        }%
        \def\pgfmathprintnumber@STD@upperbound{4}%
    \else
        \expandafter\pgfutil@in@\expandafter:\expandafter{\pgfmathfloat@loc@TMPb}%
        \ifpgfutil@in@
            \def\pgfmathfloat@loc@TMPa##1:##2\relax{%
                \edef\pgfmathprintnumber@STD@getlowerbound{%
                    \noexpand\c@pgf@counta=##1\space
                }%
                \edef\pgfmathprintnumber@STD@upperbound{##2}%
            }%
            \expandafter\pgfmathfloat@loc@TMPa\pgfmathfloat@loc@TMPb\relax
        \else
            \def\pgfmathprintnumber@STD@upperbound{4}%
            \edef\pgfmathprintnumber@STD@getlowerbound{%
                \noexpand\c@pgf@counta=\pgfmathfloat@loc@TMPb\space
            }%
        \fi
    \fi
}%

\def\pgfmathprintnumber@STD@issci#1#2e#3\relax{%
    \expandafter\ifnum#1<3
        \expandafter\ifnum#3>\pgfmathprintnumber@STD@upperbound\relax
            \pgfmathprintnumber@SCI@issci#1#2e#3\relax%
        \else
            \begingroup
            \pgfmathprintnumber@STD@getlowerbound
            \ifnum#3<\c@pgf@counta
                \pgfmathprintnumber@SCI@issci#1#2e#3\relax%
            \else
                \pgfmathprintnumber@FIXED@issci#1#2e#3\relax%
            \fi
            \pgfmath@smuggleone\pgfmathresult
            \endgroup
        \fi
    \else%
        \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
    \fi
}

\def\pgfmathprintnumber@RELATIVE#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathprintnumber@RELATIVE@issci\pgfmathresult\relax
}

\def\pgfmathprintnumber@RELATIVE@choice@roundtofixed@warn{%
    \pgf@typeout{! Package pgf warning: the use of /pgf/number format/relative is discouraged (buggy). Please use 'relative*' instead or type \string\pgfkeys{/pgf/number format/relative round mode=fixed} into your preamble.}%
    \global\let\pgfmathprintnumber@RELATIVE@choice@roundtofixed@warn=\relax
}

\def\pgfmathprintnumber@RELATIVE@issci#1#2e#3\relax{%
    \begingroup
        \c@pgf@counta=#3\relax
        \advance\c@pgf@counta by-\pgfmathprintnumber@RELATIVE@param\relax
        \pgfmathfloatcreate{#1}{#2}{\the\c@pgf@counta}%
        \if0\pgfmathprintnumber@RELATIVE@choice@roundtofixed
            \def\b@round@fixed{0}%
        \else
            \if1\pgfmathprintnumber@RELATIVE@choice@roundtofixed
                \def\b@round@fixed{1}%
            \else
                \pgfmathprintnumber@RELATIVE@choice@roundtofixed@warn
                \ifnum\c@pgf@counta>0
                    \def\b@round@fixed{0}%
                \else
                    \def\b@round@fixed{1}%
                \fi
            \fi
        \fi
        \if1\b@round@fixed
            \pgfmathfloattofixed\pgfmathresult
            \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
            \pgfmathfloatparsenumber{\pgfmathresult}%
            \pgfmathfloatroundhasperiodtrue%
        \else
            \expandafter\pgfmathfloatround\expandafter{\pgfmathresult}%
        \fi
        \pgfmathfloattoregisterstok\pgfmathresult\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
        \ifnum\pgfmathfloat@a@S=0
            \pgfmathfloat@a@E=\pgfmathfloat@a@S %
        \else
            \advance\pgfmathfloat@a@E by+\pgfmathprintnumber@RELATIVE@param\relax
        \fi
        \edef\pgfmathresultX{%
            \the\pgfmathfloat@a@S
            \the\pgfmathfloat@a@Mtok
            \ifpgfmathfloatroundhasperiod\else.0\fi
            e\the\pgfmathfloat@a@E}%
        \pgfqkeys{/pgf/number format}{/pgf/number format/every relative,
            fixed zerofill=false,%
            sci zerofill=false}%
        \ifx\pgfmathprintnumber@issci\pgfmathprintnumber@RELATIVE@issci
            \pgfmath@error{The '/pgf/number format/every relative' style should set a valid display style}{}%
        \fi
        \let\pgfmathfloat@round@precision@orig=\pgfmathfloat@round@precision
        \def\pgfmathfloat@round@precision{9999}%
        \expandafter\pgfmathprintnumber@issci\pgfmathresultX\relax%
        \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\def\pgfmathprintnumber@FIXED@RELATIVE#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathprintnumber@FIXED@RELATIVE@issci\pgfmathresult\relax
}

\def\pgfmathprintnumber@FIXED@RELATIVE@issci#1#2e#3\relax{%
    \begingroup
    \pgfmathfloatcreate{#1}{#2}{#3}%
    \c@pgf@counta=\pgfmathfloat@round@precision\relax
    \advance\c@pgf@counta by-1
    \edef\pgfmathfloat@round@precision{\the\c@pgf@counta}%
    \pgfmathfloatround{\pgfmathresult}%
    \pgfmathfloattoregisterstok\pgfmathresult\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \ifnum\pgfmathfloat@a@S=0
        \pgfmathfloat@a@E=\pgfmathfloat@a@S %
    \fi
    \edef\pgfmathresultX{%
        \the\pgfmathfloat@a@S
        \the\pgfmathfloat@a@Mtok
        \ifpgfmathfloatroundhasperiod\else.0\fi
        e\the\pgfmathfloat@a@E}%
    \let\pgfmathfloat@round@precision@orig=\pgfmathfloat@round@precision
    \pgfmathfloat@usezerofill@fixedfalse
    \def\pgfmathfloat@round@precision{9999}%
    \expandafter\pgfmathprintnumber@FIXED@issci\pgfmathresultX\relax%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\def\pgfmathprintnumber@frac#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloatgetfrac{\pgfmathresult}%
    \expandafter\pgfmathprintnumber@frac@formatresult\pgfmathresult
}
\def\pgfmathprintnumber@frac@issci#1#2e#3\relax{%
    \pgfmathfloatcreate{#1}{#2}{#3}%
    \pgfmathfloatgetfrac{\pgfmathresult}%
    \expandafter\pgfmathprintnumber@frac@formatresult\pgfmathresult
}
\def\pgfmathprintnumber@frac@formatresult#1#2#3{%
    \begingroup
    \pgfkeysgetvalue{/pgf/number format/frac TeX}\pgfmathresult
    \toks0=\expandafter{\pgfmathresult}%
    \def\pgfmathfloat@loc@TMPa{#1}%
    \ifx\pgfmathfloat@loc@TMPa\pgfutil@empty
        \ifpgfmathprintnumber@showpositive
            \def\pgfmathfloat@loc@TMPa{+}%
        \fi
    \else
        \ifx\pgfmathfloat@loc@TMPa-%
        \else
            \ifx\pgfmathfloat@loc@TMPa+%
            \else
                \ifpgfmathprintnumber@showpositive
                    \edef\pgfmathfloat@loc@TMPa{+\pgfmathfloat@loc@TMPa}%
                \fi
                \def\pgfmathfloat@loc@TMPb{\pgfkeysvalueof{/pgf/number format/frac whole format/.@cmd}}%
                \expandafter\pgfmathfloat@loc@TMPb\pgfmathfloat@loc@TMPa\pgfeov
                \let\pgfmathfloat@loc@TMPa=\pgfmathresult
            \fi
        \fi
    \fi
    \toks1=\expandafter{\pgfmathfloat@loc@TMPa}%
    \edef\pgfmathresult{%
        \the\toks1 \ifnum#2=0 \else\the\toks0 {#2}{#3}\fi%
    }%
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%

\def\pgfmathfloatgetfrac#1{%
    \pgfutil@ifundefined{pgfmathfloatmultiply@}{%
        \pgfmath@error{Sorry, the number format 'frac' requires '\string\usetikzlibrary{fpu}' (and, optionally, \string\usepackage{fp}) in order to work correctly}{}%
        \edef\pgfmathresult{{#1}{0}{1}}%
    }{%
        \pgfmathfloatgetfrac@{#1}%
    }%
}%
\def\pgfmathfloatgetfrac@#1{%
    \begingroup
        \edef\pgfmathfloat@arg{#1}%
        \expandafter\pgfmathfloat@decompose@tok\pgfmathfloat@arg\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
        \def\pgfmathfloat@loc@TMPa{0}%
        \ifcase\pgfmathfloat@a@S
            \def\pgfmathresult{{0}{0}{1}}%
        \or%
            \pgfmathfloat@a@S=1
            \def\pgfmathfloat@loc@TMPa{1}%
        \or%
            \pgfmathfloat@a@S=-1
            \def\pgfmathfloat@loc@TMPa{1}%
        \or
            \edef\pgfmathresult{{}{NaN}{1}}%
        \or
            \edef\pgfmathresult{{}{\infty}{1}}%
        \or
            \edef\pgfmathresult{{-}{\infty}{1}}%
        \fi
        \if1\pgfmathfloat@loc@TMPa
            \ifnum\pgfmathfloat@a@E<0
                \def\pgfmathfloat@wholenumber{}%
            \else
                \pgfmathfloatcreate{1}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
                \pgfmathfloattofixed\pgfmathresult%
                \def\pgfmathfloat@loc@TMPa##1.##2\relax{%
                    \def\pgfmathfloat@wholenumber{##1}%
                    \pgfmathfloatparsenumber{0.##2}%
                }%
                \expandafter\pgfmathfloat@loc@TMPa\pgfmathresult\relax
                \expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@b@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
            \fi
            \def\pgfmathfloat@loc@TMPa##1.##2\relax{%
                \def\pgfmathfloat@mantissa@first{##1}%
                \def\pgfmathfloat@mantissa@ltone{0.##2}%
            }%
            \expandafter\pgfmathfloat@loc@TMPa\the\pgfmathfloat@a@Mtok\relax
            \def\pgfmathfloat@loc@@to@int##1.##2\relax##3{%
                ##3=##1
                \ifdim0.##2pt>0.5pt
                    \advance##3 by1
                \fi
            }%
            \let\pgfmathresultnumerator=\pgfmathfloat@b@S
            \let\pgfmathresultdenom=\pgfmathfloat@b@E
            \pgfkeysgetvalue{/pgf/number format/frac denom}\pgfmath@target@denominator
            \ifx\pgfmath@target@denominator\pgfutil@empty
                \pgfmathfloat@a@E=-\pgfmathfloat@a@E
                \ifdim\pgfmathfloat@mantissa@ltone pt=0pt
                    \def\pgfmathfloat@factor{1}%
                    \edef\pgfmathfloat@scaled@numerator{\the\pgfmathfloat@a@Mtok}%
                \else
                    \pgfutil@ifundefined{FPdiv}{%
                        \pgfmathfloatparsenumber{\pgfmathfloat@mantissa@ltone}%
                        \pgfmathfloatreciprocal@{\pgfmathresult}%
                    }{%
                        \FPmessagesfalse%
                        \FPdebugfalse%
                        \FPdiv\pgfmathresult{1}{\pgfmathfloat@mantissa@ltone}%
                        \pgfmathfloatparsenumber{\pgfmathresult}%
                    }%
                    \let\pgfmathfloat@inv=\pgfmathresult
                    \pgfmathfloatcreate{1}{1.0}{\pgfkeysvalueof{/pgf/number format/frac shift}}%
                    \let\pgfmathfloat@scalebaseten=\pgfmathresult
                    \pgfmathfloatmultiply@{\pgfmathfloat@inv}{\pgfmathfloat@scalebaseten}%
                    \let\pgfmathfloat@factor=\pgfmathresult
                    \expandafter\pgfmathfloatparsenumber\expandafter{\the\pgfmathfloat@a@Mtok}%
                    \let\pgfmathfloat@loc@TMPa=\pgfmathresult
                    \pgfmathfloatmultiply@{\pgfmathfloat@factor}{\pgfmathfloat@loc@TMPa}%
                    \pgfmathfloattofixed\pgfmathresult
                    \let\pgfmathfloat@scaled@numerator=\pgfmathresult
                    \pgfmathfloattofixed\pgfmathfloat@factor
                    \expandafter\pgfmathfloat@loc@@to@int\pgfmathresult\relax{\pgfmathfloat@b@S}%
                    \edef\pgfmathfloat@factor{\the\pgfmathfloat@b@S}%
                \fi
                \pgfmathresultdenom=\pgfmathfloat@factor\relax
                \pgfmathfloat@multiply@ten@to@the@E\pgfmathresultdenom
                \expandafter\pgfmathfloat@loc@@to@int\pgfmathfloat@scaled@numerator\relax{\pgfmathresultnumerator}%
                \pgfmathgreatestcommondivisor{\pgfmathresultnumerator}{\pgfmathresultdenom}%
                \divide\pgfmathresultnumerator by\pgfmathresult\relax
                \divide\pgfmathresultdenom by\pgfmathresult\relax
                \ifpgfmathprintnumber@frac@warn
                    \ifnum\pgfmathresultdenom>1000
                        \pgfutil@ifundefined{FPdiv}{%
                            \pgfmathfloattosci@\pgfmathfloat@arg
                            \pgf@typeout{! Package pgf /pgf/number format/frac warning=true: /pgf/number format/frac of `\pgfmathresult' = \the\pgfmathresultnumerator\space / \the\pgfmathresultdenom\space might be large due to instabilities. Try \string\usepackage{fp} to improve accuracy.}%
                        }{}%
                    \fi
                \fi
            \else
                \pgfmathresultdenom=\pgfmath@target@denominator\relax
                \pgfmathfloatcreate{1}{\the\pgfmathfloat@a@Mtok}{\the\pgfmathfloat@a@E}%
                \pgfmathfloattofixed\pgfmathresult
                \pgf@xa=\pgfmathresult pt
                \multiply\pgf@xa by\pgfmathresultdenom
                \edef\pgfmathfloat@scaled@numerator{\pgfmath@tonumber\pgf@xa}%
                \expandafter\pgfmathfloat@loc@@to@int\pgfmathfloat@scaled@numerator\relax{\pgfmathresultnumerator}%
            \fi
            \ifpgfmathprintnumber@frac@whole
            \else
                \ifx\pgfmathfloat@wholenumber\pgfutil@empty
                \else
                    \count0=\pgfmathfloat@wholenumber\relax
                    \multiply\count0 by\pgfmathresultdenom
                    \advance\pgfmathresultnumerator by\count0
                    \def\pgfmathfloat@wholenumber{}%
                \fi
            \fi
            \ifnum\pgfmathfloat@a@S<0
                \edef\pgfmathresult{{-\pgfmathfloat@wholenumber}{\the\pgfmathresultnumerator}{\the\pgfmathresultdenom}}%
            \else
                \edef\pgfmathresult{{\pgfmathfloat@wholenumber}{\the\pgfmathresultnumerator}{\the\pgfmathresultdenom}}%
            \fi
        \fi
        \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%
\def\pgfmathfloat@gobble@until@relax#1\relax{}

\def\pgfmathgreatestcommondivisor#1#2{%
    \begingroup
        \count0=#1\relax
        \count1=#2\relax
        \ifnum\count0=0
            \edef\pgfmathresult{\the\count1}%
        \else
            \pgfmathgreatestcommondivisor@loop
            \edef\pgfmathresult{\the\count0}%
        \fi
        \pgfmath@smuggleone\pgfmathresult
    \endgroup
}
\def\pgfmathgreatestcommondivisor@loop{%
    \ifnum\count1=0
    \else
        \ifnum\count0>\count1
            \advance\count0 by-\count1
        \else
            \advance\count1 by-\count0
        \fi
        \expandafter\pgfmathgreatestcommondivisor@loop
    \fi
}%

\def\pgfmathfloat@multiply@ten@to@the@E#1{%
    \ifnum\pgfmathfloat@a@E>0
        \multiply#1 by10
        \advance\pgfmathfloat@a@E by-1
        \def\pgfmathfloat@multiply@ten@to@the@E@next{\pgfmathfloat@multiply@ten@to@the@E{#1}}%
    \else
        \let\pgfmathfloat@multiply@ten@to@the@E@next=\relax%
    \fi
    \pgfmathfloat@multiply@ten@to@the@E@next
}%

\def\pgfmathprintnumber@INT@TRUNC#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathprintnumber@INT@TRUNC@issci\pgfmathresult\relax
}

\def\pgfmathprintnumber@INT@TRUNC@impl#1.#2\relax#3#4e#5\relax{%
    \pgfmathfloatroundhasperiodfalse
    \pgfmathprintnumber@fixed@style{#1}#3#4e#5\relax%
}
\def\pgfmathprintnumber@INT@TRUNC@issci#1#2e#3\relax{%
    \ifnum#1<3\relax
        \pgfmathfloatcreate{#1}{#2}{#3}%
        \pgfmathfloattofixed{\pgfmathresult}%
        \expandafter\pgfmathprintnumber@INT@TRUNC@impl\pgfmathresult\relax#1#2e#3\relax
    \else
        \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
    \fi
}

\def\pgfmathifisint#1#2#3{%
    \gdef\pgfmathfloatisint@@{0}%
    \begingroup
    \pgfmathfloatparsenumber{#1}%
    \let\pgfretval\pgfmathresult
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathfloatisint@\pgfmathresult\relax
    \pgfmath@smuggleone\pgfretval
    \endgroup
    \if1\pgfmathfloatisint@@ #2\else #3\fi
}%
\def\pgfmathfloatisint@#1#2e#3\relax{%
    \ifnum#1<3\relax
        \pgfmathfloatcreate{#1}{#2}{#3}%
        \pgfmathfloattofixed{\pgfmathresult}%
        \def\pgfmathfloat@round@precision{6}%
        \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
        \ifpgfmathfloatroundhasperiod
        \else
            \let\pgfretval\pgfmathresult%
            \gdef\pgfmathfloatisint@@{1}%
        \fi
    \fi
}

\def\pgfmathprintnumber@INT@DETECT#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathprintnumber@INT@DETECT@issci\pgfmathresult\relax
}

\def\pgfmathprintnumber@INT@DETECT@issci#1#2e#3\relax{%
    \begingroup
    \ifnum#1<3\relax
        \pgfmathfloatcreate{#1}{#2}{#3}%
        \pgfmathfloattofixed{\pgfmathresult}%
        \let\pgfmathfloat@round@precision@=\pgfmathfloat@round@precision
        \def\pgfmathfloat@round@precision{6}%
        \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
        \let\pgfmathfloat@round@precision=\pgfmathfloat@round@precision@
        \ifpgfmathfloatroundhasperiod
            \pgfmathprintnumber@SCI@issci#1#2e#3\relax
        \else
            \expandafter\pgfmathprintnumber@fixed@style\expandafter{\pgfmathresult}#1#2e#3\relax
        \fi
    \else
        \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\def\pgfmathprintnumber@FIXED#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathprintnumber@FIXED@issci\pgfmathresult\relax
}

\def\pgfmathprintnumber@FIXED@issci#1#2e#3\relax{%
    \begingroup
    \ifnum#1<3
        \pgfmathfloatcreate{#1}{#2}{#3}%
        \pgfmathfloattofixed{\pgfmathresult}%
        \ifpgfmathfloat@usezerofill@fixed
            \expandafter\pgfmathroundtozerofill\expandafter{\pgfmathresult}%
        \else
            \expandafter\pgfmathroundto\expandafter{\pgfmathresult}%
        \fi
        \ifpgfmathfloatroundmayneedrenormalize
            \pgfmathfloat@a@E=#3\relax
            \advance\pgfmathfloat@a@E by1
            \edef\pgfmathfloat@loc@TMPb{\noexpand\pgfmathprintnumber@fixed@style{\pgfmathresult}#1#2e\the\pgfmathfloat@a@E}%
            \pgfmathfloat@loc@TMPb\relax%
        \else
            \expandafter\pgfmathprintnumber@fixed@style\expandafter{\pgfmathresult}#1#2e#3\relax%
        \fi
    \else%
        \pgfmathfloatrounddisplaystyle#1#2e#3\relax%
    \fi
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}


\def\pgfmathprintnumber@SCI#1{%
    \pgfmathfloatparsenumber{#1}%
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathprintnumber@SCI@issci\pgfmathresult\relax
}

\def\pgfmathprintnumber@SCI@issci#1#2e#3\relax{%
    \begingroup
    \pgfmathfloatcreate{#1}{#2}{#3}%
    \edef\pgfmathfloat@round@precision{\pgfmathprintnumber@sci@precision}%
    \ifpgfmathfloat@usezerofill@sci
        \pgfmathfloatroundzerofill{\pgfmathresult}%
    \else
        \pgfmathfloatround{\pgfmathresult}%
    \fi
    \pgfmathfloat@to@FMeE@style\pgfmathresult
    \expandafter\pgfmathfloatrounddisplaystyle\pgfmathresult\relax
    \pgfmath@smuggleone\pgfmathresult
    \endgroup
}

\pgfutil@protected\def\pgfmathprintnumber{%
    \pgfutil@ifnextchar[%
        {\pgfmathprintnumber@OPT}%
        {\pgfmathprintnumber@noopt}%
}

\def\pgfmathprintnumber@noopt#1{%
    \pgfmathprintnumber@{#1}%
    \ifpgfmathprintnumber@assumemathmode
        \pgfmathresult
    \else
        \pgfutilensuremath{\pgfmathresult}%
    \fi
}%
\def\pgfmathprintnumber@OPT[#1]#2{%
    \begingroup
    \pgfqkeys{/pgf/number format}{#1}%
    \pgfmathprintnumber@{#2}%
    \ifpgfmathprintnumber@assumemathmode
        \pgfmathresult
    \else
        \pgfutilensuremath{\pgfmathresult}%
    \fi
    \endgroup
}%

\def\pgfmathprintnumberto{%
    \pgfutil@ifnextchar[%
        {\pgfmathprintnumberto@OPT}%
        {\pgfmathprintnumberto@noopt}%
}

\def\pgfmathprintnumberto@noopt#1#2{%
    \begingroup
    \pgfmathprintnumber@{#1}%
    \ifpgfmathprintnumber@assumemathmode
        \global\let\pgfmathfloat@glob@TMP=\pgfmathresult
    \else
        \toks0=\expandafter{\pgfmathresult}%
        \xdef\pgfmathfloat@glob@TMP{\noexpand\pgfutilensuremath{\the\toks0 }}%
    \fi
    \endgroup
    \let#2=\pgfmathfloat@glob@TMP
}%
\def\pgfmathprintnumberto@OPT[#1]#2#3{%
    \begingroup
    \pgfqkeys{/pgf/number format}{#1}%
    \pgfmathprintnumber@{#2}%
    \ifpgfmathprintnumber@assumemathmode
        \global\let\pgfmathfloat@glob@TMP=\pgfmathresult
    \else
        \toks0=\expandafter{\pgfmathresult}%
        \xdef\pgfmathfloat@glob@TMP{\noexpand\pgfutilensuremath{\the\toks0 }}%
    \fi
    \endgroup
    \let#3=\pgfmathfloat@glob@TMP
}%


\def\pgfmath@set@number@printer#1{%
    \expandafter\let\expandafter\pgfmathprintnumber@\csname #1\endcsname
    \expandafter\let\expandafter\pgfmathprintnumber@issci\csname #1@issci\endcsname
}

\pgfkeys{/pgf/number format/std}


\def\pgfmathfloat@EOI{\pgfmathfloat@EOI}%

\let\c@pgfmathroundto@prec=\pgfmathfloat@b@S%
\let\c@pgfmathroundto@offsetbehindperiod=\pgfmathfloat@b@E
\newcount\c@pgfmathroundto@lastzeros

\newif\ifpgfmathround@impl@PREPERIOD@is@negative@zero

\def\pgfmathroundto@impl#1{%
    \edef\pgfmathround@input{#1}%
    \global\pgfmathfloatroundmayneedrenormalizefalse
    \pgfmathfloat@tmptoks={}%
    \let\pgfmathround@next=\pgfutil@empty
    \let\pgfmathround@cur=\pgfutil@empty
    \let\pgfmathresult=\pgfutil@empty
    \expandafter\c@pgfmathroundto@prec\pgfmathfloat@round@precision\relax
    \c@pgfmathroundto@lastzeros=0
    \c@pgfmathroundto@offsetbehindperiod=-1 %
    \pgfmathround@impl@PREPERIOD@is@negative@zerotrue
    \expandafter\pgfmathroundto@impl@ITERATE@NODOT@firstcall\pgfmathround@input\pgfmathfloat@EOI
}


\def\pgfmathroundto@impl@discard@period#1.#2\pgfmathfloat@EOI{%
    \pgfmathfloatroundhasperiodfalse
    \aftergroup\pgfmathfloatroundhasperiodfalse
    \def\pgfmathresult{#1}%
}

\def\pgfmathroundto@impl@gobble@rest@and@start#1\pgfmathfloat@EOI{%
    \pgfmathroundto@impl@start
}
\def\pgfmathroundto@impl@gobble@and@start\pgfmathfloat@EOI{%
    \pgfmathroundto@impl@start
}
\def\pgfmathroundto@impl@gobble\pgfmathfloat@EOI{}%
\def\pgfmathroundto@impl@gobble@rest#1\pgfmathfloat@EOI{}%

\def\pgfmathroundto@impl@start{%
    \ifx\pgfmathround@next\pgfutil@empty
        \ifnum\c@pgfmathroundto@offsetbehindperiod<0
            \ifpgfmathfloat@fixed@digits@after@period
                \ifnum\c@pgfmathroundto@prec=0\relax
                    \pgfmathfloatroundhasperiodfalse
                    \aftergroup\pgfmathfloatroundhasperiodfalse
                    \edef\pgfmathresult{\pgfmathround@input}%
                \else
                    \pgfmathfloat@tmptoks=\expandafter{\pgfmathround@input.}%
                    \c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
                    \pgfmathroundto@impl@append@zeros
                    \edef\pgfmathresult{\the\pgfmathfloat@tmptoks}%
                \fi
            \else
                \pgfmathfloatroundhasperiodfalse
                \aftergroup\pgfmathfloatroundhasperiodfalse
                \edef\pgfmathresult{\pgfmathround@input}%
            \fi
        \else
            \pgfmathroundto@impl@finish@with@truncation
        \fi
    \else
        \expandafter\ifnum\pgfmathround@next<5\relax
            \pgfmathroundto@impl@finish@with@truncation
        \else
            \multiply\c@pgfmathroundto@offsetbehindperiod by-1
            \expandafter\pgfmathroundto@impl@ADD@ONE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
        \fi
    \fi
}

\def\pgfmathroundto@impl@finish@with@truncation{%
    \ifpgfmathfloat@fixed@digits@after@period
        \expandafter\pgfmathroundto@impl@REVERSE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
        \ifnum\c@pgfmathroundto@lastzeros=\c@pgfmathroundto@offsetbehindperiod
            \ifpgfmathround@impl@PREPERIOD@is@negative@zero
                \expandafter\pgfmathroundto@impl@discard@minus\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
            \fi
        \fi
        \ifnum\c@pgfmathroundto@prec=0\relax
            \expandafter\pgfmathroundto@impl@discard@period\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
        \else
            \advance\c@pgfmathroundto@prec by-\c@pgfmathroundto@offsetbehindperiod
            \c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
            \pgfmathroundto@impl@append@zeros
            \edef\pgfmathresult{\the\pgfmathfloat@tmptoks}%
        \fi
    \else
        \pgfmathroundto@impl@discard@suffix@zeros
    \fi
}

\def\pgfmathroundto@impl@discard@minus-#1\pgfmathfloat@EOI{\pgfmathfloat@tmptoks={#1}}%

\def\pgfmathroundto@impl@append@zeros{%
    \ifnum\c@pgfmathroundto@offsetbehindperiod>0
        \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
        \advance\c@pgfmathroundto@offsetbehindperiod by-1
        \pgfmathroundto@impl@append@zeros
    \fi
}

\def\pgfmathroundto@impl@ADD@ONE{%
    \pgfmathfloat@tmptoks={}%
    \pgfmathroundto@impl@ADD@ONE@ITERATE
}
\def\pgfmathroundto@impl@ADD@ONE@ITERATE{%
    \pgfutil@ifnextchar\pgfmathfloat@EOI{%
        \global\pgfmathfloatroundmayneedrenormalizetrue
        \edef\pgfmathresult{1\the\pgfmathfloat@tmptoks}%
        \pgfmathroundto@impl@gobble
    }{%
        \pgfutil@ifnextchar.{%
            \ifnum\c@pgfmathroundto@prec=0
                \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE@gobble@dot}%
            \else
                \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@NEXT@COLLECT}%
            \fi
            \pgfmathround@nextcmd
        }{%
            \pgfutil@ifnextchar+{%
                \global\pgfmathfloatroundmayneedrenormalizetrue
                \edef\pgfmathresult{1\the\pgfmathfloat@tmptoks}%
                \pgfmathroundto@impl@gobble@rest
            }{%
                \pgfutil@ifnextchar-{%
                    \global\pgfmathfloatroundmayneedrenormalizetrue
                    \edef\pgfmathresult{-1\the\pgfmathfloat@tmptoks}%
                    \pgfmathroundto@impl@gobble@rest
                }{%
                    \pgfmathroundto@impl@ADD@ONE@NEXT
                }%
            }%
        }%
    }%
}

\def\pgfmathroundto@impl@ADD@ONE@ITERATE@gobble@dot.{%
    \pgfmathfloatroundhasperiodfalse
    \aftergroup\pgfmathfloatroundhasperiodfalse
    \pgfmathroundto@impl@ADD@ONE@ITERATE
}

\def\pgfmathroundto@impl@ADD@ONE@NEXT@COLLECT#1{%
    \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
    \pgfmathroundto@impl@ADD@ONE@ITERATE
}
\def\pgfmathroundto@impl@ADD@ONE@NEXT#1{%
    \ifnum#1=9
        \ifnum\c@pgfmathroundto@offsetbehindperiod<0
            \ifpgfmathfloat@fixed@digits@after@period
                \pgfmathfloat@tmptoks=\expandafter{\expandafter0\the\pgfmathfloat@tmptoks}%
            \else
            \fi
        \else
            \pgfmathfloat@tmptoks=\expandafter{\expandafter0\the\pgfmathfloat@tmptoks}%
        \fi
        \advance\c@pgfmathroundto@offsetbehindperiod by1
        \ifnum\c@pgfmathroundto@offsetbehindperiod=0
            \ifpgfmathfloat@fixed@digits@after@period
                \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE}%
            \else
                \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE@gobble@dot}%
            \fi
        \else
            \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ADD@ONE@ITERATE}%
        \fi
    \else
        \c@pgfmathroundto@lastzeros=#1
        \advance\c@pgfmathroundto@lastzeros by1
        \edef\pgfmathresult{\the\c@pgfmathroundto@lastzeros\the\pgfmathfloat@tmptoks}%
        \pgfmathfloat@tmptoks=\expandafter{\pgfmathresult}%
        \def\pgfmathround@nextcmd{\pgfmathroundto@impl@REVERSE@ITERATE}%
    \fi
    \pgfmathround@nextcmd
}


\def\pgfmathroundto@impl@discard@suffix@zeros{%
    \ifnum\c@pgfmathroundto@lastzeros=\c@pgfmathroundto@offsetbehindperiod
        \ifpgfmathround@impl@PREPERIOD@is@negative@zero
            \pgfmathfloatroundhasperiodfalse
            \aftergroup\pgfmathfloatroundhasperiodfalse
            \def\pgfmathresult{0}%
        \else
            \expandafter\pgfmathroundto@impl@discard@period\pgfmathround@input\pgfmathfloat@EOI
        \fi
    \else
        \ifnum\c@pgfmathroundto@lastzeros=0
            \expandafter\pgfmathroundto@impl@REVERSE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
        \else
            \expandafter\pgfmathroundto@impl@discard@suffix@zeros@ITERATE\the\pgfmathfloat@tmptoks\pgfmathfloat@EOI
        \fi
    \fi
}

\def\pgfmathroundto@impl@discard@suffix@zeros@ITERATE#1{%
    \advance\c@pgfmathroundto@lastzeros by-1
    \ifnum\c@pgfmathroundto@lastzeros=0
        \def\pgfmathround@nextcmd{\pgfmathroundto@impl@REVERSE}%
    \else
        \def\pgfmathround@nextcmd{\pgfmathroundto@impl@discard@suffix@zeros@ITERATE}%
    \fi
    \pgfmathround@nextcmd
}

\def\pgfmathroundto@impl@REVERSE{%
    \pgfmathfloat@tmptoks={}%
    \pgfmathroundto@impl@REVERSE@ITERATE
}

\def\pgfmathroundto@impl@REVERSE@ITERATE{%
    \pgfutil@ifnextchar\pgfmathfloat@EOI{%
        \edef\pgfmathresult{\the\pgfmathfloat@tmptoks}%
        \pgfmathroundto@impl@gobble
    }{%
        \pgfmathroundto@impl@REVERSE@NEXT
    }%
}

\def\pgfmathroundto@impl@REVERSE@NEXT#1{%
    \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
    \pgfmathroundto@impl@REVERSE@ITERATE
}

\def\pgfmathroundto@impl@BEGIN@DOT.{%
    \pgfmathfloat@tmptoks=\expandafter{\expandafter.\the\pgfmathfloat@tmptoks}%
    \c@pgfmathroundto@offsetbehindperiod=0
    \pgfmathroundto@impl@ITERATE@DOT
}
\def\pgfmathroundto@impl@ITERATE@DOT{%
    \pgfutil@ifnextchar\pgfmathfloat@EOI{%
        \pgfmathroundto@impl@gobble@and@start
    }{%
        \pgfmathroundto@impl@NEXT@DOT
    }%
}
\def\pgfmathroundto@impl@NEXT@DOT#1{%
    \ifnum\c@pgfmathroundto@offsetbehindperiod=\c@pgfmathroundto@prec
        \def\pgfmathround@next{#1}%
        \def\pgfmathround@nextcmd{\pgfmathroundto@impl@gobble@rest@and@start}%
    \else
        \advance\c@pgfmathroundto@offsetbehindperiod by1
        \ifnum#1=0
            \advance\c@pgfmathroundto@lastzeros by1
        \else
            \c@pgfmathroundto@lastzeros=0
        \fi
        \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
        \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ITERATE@DOT}%
    \fi
    \pgfmathround@nextcmd
}%

\def\pgfmathroundto@impl@ITERATE@NODOT@firstcall#1{%
    \def\pgfmathround@cur{#1}%
    \ifx\pgfmathround@cur\pgfmathfloat@EOI
        \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
        \def\pgfmathround@nextcmd{\pgfmathroundto@impl@start}%
    \else
        \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@PERIOD
            \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
            \def\pgfmathround@nextcmd{\pgfmathroundto@impl@BEGIN@DOT.}%
        \else
            \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@MINUS
            \else
                \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
            \fi
            \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
            \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ITERATE@NODOT}%
        \fi
    \fi
    \pgfmathround@nextcmd
}

\def\pgfmathroundto@impl@ITERATE@NODOT#1{%
    \def\pgfmathround@cur{#1}%
    \ifx\pgfmathround@cur\pgfmathfloat@EOI
        \def\pgfmathround@nextcmd{\pgfmathroundto@impl@start}%
    \else
        \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@PERIOD
            \def\pgfmathround@nextcmd{\pgfmathroundto@impl@BEGIN@DOT.}%
        \else
            \ifx\pgfmathround@cur\pgfmathfloatparsenumber@tok@ZERO
            \else
                \pgfmathround@impl@PREPERIOD@is@negative@zerofalse
            \fi
            \pgfmathfloat@tmptoks=\expandafter{\expandafter#1\the\pgfmathfloat@tmptoks}%
            \def\pgfmathround@nextcmd{\pgfmathroundto@impl@ITERATE@NODOT}%
        \fi
    \fi
    \pgfmathround@nextcmd
}



\def\pgfmathfloatround@impl{%
    \expandafter\pgfmathroundto@impl\expandafter{\the\pgfmathfloat@a@Mtok}%
    \ifpgfmathfloatroundmayneedrenormalize
        \ifpgfmathfloatroundhasperiod
            \expandafter\pgfmathfloatround@impl@renormalize\pgfmathresult\pgfmathfloat@EOI%
        \else
            \expandafter\pgfmathfloatround@impl@renormalize\pgfmathresult.\pgfmathfloat@EOI%
        \fi
        \advance\pgfmathfloat@a@E by1
    \fi
    \pgfmathfloatcreate{\the\pgfmathfloat@a@S}{\pgfmathresult}{\the\pgfmathfloat@a@E}%
}

\def\pgfmathfloatround@impl@renormalize#1#2.#3\pgfmathfloat@EOI{%
    \pgfmathroundto@impl{#1.#2#3}%
}





\def\pgfmathfloattofixed@impl#1.#2\relax{%
    \ifnum\pgfmathfloat@a@E<0
        \ifcase-\pgfmathfloat@a@E
        \or%
            \pgfmathfloat@a@Mtok={0.}%
        \or%
            \pgfmathfloat@a@Mtok={0.0}%
        \or%
            \pgfmathfloat@a@Mtok={0.00}%
        \or%
            \pgfmathfloat@a@Mtok={0.000}%
        \or%
            \pgfmathfloat@a@Mtok={0.0000}%
        \or%
            \pgfmathfloat@a@Mtok={0.00000}%
        \or%
            \pgfmathfloat@a@Mtok={0.000000}%
        \or%
            \pgfmathfloat@a@Mtok={0.0000000}%
        \or%
            \pgfmathfloat@a@Mtok={0.00000000}%
        \or%
            \pgfmathfloat@a@Mtok={0.000000000}%
        \else%
            \pgfmathfloat@a@Mtok={0.0000000000}%
            \advance\pgfmathfloat@a@E by10
            \pgfutil@loop
            \ifnum\pgfmathfloat@a@E<-1
                \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok 0}%
                \advance\pgfmathfloat@a@E by1
            \pgfutil@repeat
        \fi
        \def\pgfmathfloat@loc@TMPb{#2}%
        \def\pgfmathfloat@loc@TMPc{0}%
        \ifx\pgfmathfloat@loc@TMPb\pgfmathfloat@loc@TMPc
            \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok #1}%
        \else
            \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok #1#2}%
        \fi
    \else
        \pgfmathfloat@a@Mtok{#1}%
        \pgfmathfloattofixed@impl@pos#2000000000\pgfmathfloat@EOI
        \edef\pgfmathresult{\the\pgfmathfloat@a@Mtok}%
    \fi
}

\def\pgfmathfloattofixed@impl@pos#1#2#3#4#5#6#7#8#9\pgfmathfloat@EOI{%
    \ifcase\pgfmathfloat@a@E
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok .#1#2#3#4#5#6#7#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1.#2#3#4#5#6#7#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2.#3#4#5#6#7#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3.#4#5#6#7#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4.#5#6#7#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5.#6#7#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6.#7#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6#7.#8#9}%
    \or%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6#7#8.#9}%
    \else%
        \pgfmathfloat@a@Mtok\expandafter{\the\pgfmathfloat@a@Mtok #1#2#3#4#5#6#7#8}%
        \advance\pgfmathfloat@a@E by-8
        \pgfmathfloattofixed@impl@collectmantissa#9\count\pgfmathfloat@a@E
    \fi
}%

\def\pgfmathfloattofixed@impl@collectmantissa#1#2\count#3{%
    \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok #1}%
    \advance\pgfmathfloat@a@E by-1%
    \def\pgfmathfloat@loc@TMPb{#2}%
    \ifx\pgfmathfloat@loc@TMPb\pgfutil@empty
        \pgfutil@loop
        \ifnum\pgfmathfloat@a@E>0%
            \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok 0}%
            \advance\pgfmathfloat@a@E by-1%
        \pgfutil@repeat
        \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok .0}%
    \else
        \ifnum\pgfmathfloat@a@E=0
            \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok .#2}%
        \else
            \pgfmathfloattofixed@impl@collectmantissa#2\count#3%
        \fi
    \fi
}



\def\pgfmathfloatparsenumber@tok@ZERO{0}
\def\pgfmathfloatparsenumber@tok@PLUS{+}
\def\pgfmathfloatparsenumber@tok@MINUS{-}
\def\pgfmathfloatparsenumber@tok@PERIOD{.}

\newif\ifpgfmathfloatparsenumberpendingperiod

\def\pgfflt@EOI{p@EOI}%
\def\pgfflt@EOI@unexpanded{\pgfflt@EOI}%

\def\pgfflt@impl#1{%
    \pgfmathfloatparsenumberpendingperiodfalse
    \pgfmathfloat@tmptoks={}%
    \pgfmathfloat@a@E=0
    \expandafter\ifx\csname pgfflt@#1\endcsname\relax
        \pgfmathfloat@a@S=1
        \expandafter\pgfflt@init\expandafter#1%
    \else
        \expandafter\expandafter\csname pgfflt@#1\endcsname
    \fi
}
\expandafter\def\csname pgfflt@+\endcsname{%
    \pgfmathfloat@a@S=1 %
    \pgfflt@init}%
\expandafter\def\csname pgfflt@-\endcsname{%
    \pgfmathfloat@a@S=2 %
    \pgfflt@init}%
\expandafter\def\csname pgfflt@\pgfflt@EOI\endcsname{%
    \pgfmathfloatparsenumber@handleerror{empty number}{}{}}%

\pgfkeys{
    /pgf/fpu/handlers/empty number/.style 2 args={%
        /pgf/fpu/handlers/invalid number={#1}{#2}%
    },
    /pgf/fpu/empty number is zero/.style={%
        /pgf/fpu/handlers/empty number/.code 2 args={%
            \pgfmathfloatcreate{0}{0.0}{0}%
        }%
    },%
    /pgf/fpu/handlers/invalid separator/.code 2 args={%
        \pgfmath@error{Could not parse input '#1' as a floating point number, sorry. The unreadable part was near the decimal separator '#2'. Do you need the option 'read comma as period'?}{}%
    },
    /pgf/fpu/handlers/invalid number/.code 2 args={%
        \pgfmath@error{Could not parse input '#1' as a floating point number, sorry. The unreadable part was near '#2'.}{}%
    },
    /pgf/fpu/handlers/wrong lowlevel format/.code 2 args={%
        \pgfmath@error{Sorry, an internal routine of the floating point unit got an ill-formatted floating point number `#1'. The unreadable part was near '#2'.}{}%
        \let\pgfmathresult=\pgfutil@empty
    },
}

\def\pgfmathfloatparsenumber@handleerror#1#2#3{%
    \let\pgfmathresult=\pgfutil@empty
    \pgfmathfloatparsenumberpendingperiodfalse
    \pgfkeys{/pgf/fpu/handlers/#1={#2}{#3}}%
    \ifx\pgfmathresult\pgfutil@empty
        \pgfmathfloat@a@S=3
        \pgfmathfloat@a@Mtok={0.0}%
        \pgfmathfloat@a@E=0
    \else
        \expandafter\pgfmathfloat@decompose@tok\pgfmathresult\relax\pgfmathfloat@a@S\pgfmathfloat@a@Mtok\pgfmathfloat@a@E
    \fi
}
\def\pgfflt@error#1\pgfflt@EOI{%
    \begingroup
    \pgfmathfloat@a@Mtok={#1}%
    \xdef\pgfmathfloat@glob@TMP{%
        \noexpand\pgfmathfloatparsenumber@handleerror
            {invalid number}{\pgfmathresult}{\the\pgfmathfloat@a@Mtok}}%
    \endgroup
    \pgfmathfloat@glob@TMP
}%



\def\pgfflt@init#1{%
    \expandafter\ifx\csname pgffltA@#1\endcsname\relax
        \expandafter\pgfflt@error\expandafter#1%
    \else
        \expandafter\expandafter\csname pgffltA@#1\endcsname
    \fi}
\expandafter\def\csname pgffltA@0\endcsname{\pgfflt@leadingzero}%
\expandafter\def\csname pgffltA@1\endcsname{\pgfflt@nonzerodigit1}%
\expandafter\def\csname pgffltA@2\endcsname{\pgfflt@nonzerodigit2}%
\expandafter\def\csname pgffltA@3\endcsname{\pgfflt@nonzerodigit3}%
\expandafter\def\csname pgffltA@4\endcsname{\pgfflt@nonzerodigit4}%
\expandafter\def\csname pgffltA@5\endcsname{\pgfflt@nonzerodigit5}%
\expandafter\def\csname pgffltA@6\endcsname{\pgfflt@nonzerodigit6}%
\expandafter\def\csname pgffltA@7\endcsname{\pgfflt@nonzerodigit7}%
\expandafter\def\csname pgffltA@8\endcsname{\pgfflt@nonzerodigit8}%
\expandafter\def\csname pgffltA@9\endcsname{\pgfflt@nonzerodigit9}%
\def\pgfflt@nonzerodigit#1{%
    \pgfmathfloat@a@Mtok={#1}%
    \pgfmathfloatparsenumberpendingperiodtrue
    \pgfflt@positiveexp}%
\expandafter\def\csname pgffltA@n\endcsname{\pgfflt@readnan}%
\expandafter\def\csname pgffltA@N\endcsname{\pgfflt@readnan}%
\expandafter\def\csname pgffltA@i\endcsname{\pgfflt@readinf}%
\expandafter\def\csname pgffltA@I\endcsname{\pgfflt@readinf}%
\expandafter\def\csname pgffltA@.\endcsname{%
    \pgfmathfloat@a@E=-1
    \pgfflt@leadingzero@foundperiod}%
\expandafter\def\csname pgffltA@,\endcsname{%
    \pgfmathfloat@frenchinput{%
        \pgfmathfloat@a@E=-1
        \pgfflt@leadingzero@foundperiod
    }%
}%

\def\pgfmathfloat@frenchinput#1{%
    \ifpgfmathparsenumber@comma@as@period
        \def\pgf@marshal{#1}%
        \expandafter\pgf@marshal
    \else
        \expandafter\pgfflt@error@separator\expandafter,%
    \fi
}%
\def\pgfflt@error@separator#1\pgfflt@EOI{%
    \begingroup
    \pgfmathfloat@a@Mtok={#1}%
    \xdef\pgfmathfloat@glob@TMP{%
        \noexpand\pgfmathfloatparsenumber@handleerror
            {invalid separator}{\pgfmathresult}{\the\pgfmathfloat@a@Mtok}}%
    \endgroup
    \pgfmathfloat@glob@TMP
}%

\def\pgfflt@finish#1\pgfflt@EOI{}

\def\pgfflt@readnan #1#2{%
    \def\pgfflt@readnan@ok{1}%
    \if#1a\else\if#1A\else\def\pgfflt@readnan@ok{0}\fi\fi
    \if#2n\else\if#2N\else\def\pgfflt@readnan@ok{0}\fi\fi
    \if\pgfflt@readnan@ok1%
        \pgfmathfloat@a@S=3\relax%
        \pgfmathfloat@a@Mtok={0.0}%
        \pgfmathfloat@a@E=0%
        \expandafter\pgfflt@finish
    \else
        \def\pgfflt@readnan@{\pgfflt@error #1#2}%
        \expandafter\pgfflt@readnan@
    \fi
}
\def\pgfflt@readinf #1#2{%
    \def\pgfflt@readinf@ok{1}%
    \if#1n\else\if#1N\else\def\pgfflt@readinf@ok{0}\fi\fi
    \if#2f\else\if#2F\else\def\pgfflt@readinf@ok{0}\fi\fi
    \if\pgfflt@readinf@ok1%
        \ifnum\pgfmathfloat@a@S=1 %
            \pgfmathfloat@a@S=4 %
            \pgfmathfloat@a@Mtok={0.0}%
        \else
            \pgfmathfloat@a@S=5 %
            \pgfmathfloat@a@Mtok={0.0}%
        \fi
        \pgfmathfloat@a@E=0 %
        \expandafter\pgfflt@finish
    \else
        \def\pgfflt@readinf@{\pgfflt@error #1#2}%
        \expandafter\pgfflt@readinf@
    \fi
}
\def\pgfflt@leadingzero#1{%
    \expandafter\ifx\csname pgffltB@#1\endcsname\relax
        \expandafter\pgfflt@error\expandafter#1%
    \else
        \expandafter\expandafter\csname pgffltB@#1\endcsname
    \fi}
\expandafter\def\csname pgffltB@0\endcsname{\pgfflt@leadingzero}%
\expandafter\def\csname pgffltB@1\endcsname{\pgfmathfloat@a@Mtok={1}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@2\endcsname{\pgfmathfloat@a@Mtok={2}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@3\endcsname{\pgfmathfloat@a@Mtok={3}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@4\endcsname{\pgfmathfloat@a@Mtok={4}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@5\endcsname{\pgfmathfloat@a@Mtok={5}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@6\endcsname{\pgfmathfloat@a@Mtok={6}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@7\endcsname{\pgfmathfloat@a@Mtok={7}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@8\endcsname{\pgfmathfloat@a@Mtok={8}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@9\endcsname{\pgfmathfloat@a@Mtok={9}\pgfmathfloatparsenumberpendingperiodtrue \pgfflt@positiveexp}
\expandafter\def\csname pgffltB@\pgfmathfloat@POSTFLAGSCHAR\endcsname{\pgfmathfloat@a@Mtok={0}\pgfflt@readlowlevelfloat}%
\expandafter\def\csname pgffltB@.\endcsname{%
    \pgfmathfloat@a@E=-1
    \pgfflt@leadingzero@foundperiod}%
\expandafter\def\csname pgffltB@,\endcsname{%
    \pgfmathfloat@frenchinput{%
        \pgfmathfloat@a@E=-1
        \pgfflt@leadingzero@foundperiod
    }%
}%
\expandafter\def\csname pgffltB@e\endcsname{%
    \pgfmathfloat@a@S=0\relax%
    \pgfmathfloat@a@Mtok={0.0}%
    \pgfmathfloat@a@E=0%
    \pgfflt@readexponent}%
\let\pgffltB@E=\pgffltB@e
\expandafter\def\csname pgffltB@\pgfflt@EOI\endcsname{%
    \pgfmathfloat@a@S=0\relax%
    \pgfmathfloat@a@Mtok={0.0}%
    \pgfmathfloat@a@E=0}%

\def\pgfflt@leadingzero@foundperiod#1{%
    \expandafter\ifx\csname pgffltC@#1\endcsname\relax
        \expandafter\pgfflt@error\expandafter#1%
    \else
        \expandafter\expandafter\csname pgffltC@#1\endcsname
    \fi}
\expandafter\def\csname pgffltC@0\endcsname{%
    \advance\pgfmathfloat@a@E by-1
    \pgfflt@leadingzero@foundperiod}%
\expandafter\def\csname pgffltC@1\endcsname{\pgfmathfloat@a@Mtok={1}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@2\endcsname{\pgfmathfloat@a@Mtok={2}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@3\endcsname{\pgfmathfloat@a@Mtok={3}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@4\endcsname{\pgfmathfloat@a@Mtok={4}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@5\endcsname{\pgfmathfloat@a@Mtok={5}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@6\endcsname{\pgfmathfloat@a@Mtok={6}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@7\endcsname{\pgfmathfloat@a@Mtok={7}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@8\endcsname{\pgfmathfloat@a@Mtok={8}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@9\endcsname{\pgfmathfloat@a@Mtok={9}\pgfmathfloatparsenumberpendingperiodtrue\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltC@e\endcsname{%
    \pgfmathfloat@a@S=0\relax%
    \pgfmathfloat@a@Mtok={0.0}%
    \pgfmathfloat@a@E=0%
    \pgfflt@readexponent}%
\let\pgffltC@E=\pgffltC@e
\expandafter\def\csname pgffltC@\pgfflt@EOI\endcsname{%
    \pgfmathfloat@a@S=0\relax%
    \pgfmathfloat@a@Mtok={0.0}%
    \pgfmathfloat@a@E=0}%


\def\pgfflt@positiveexp#1{%
    \expandafter\ifx\csname pgffltD@#1\endcsname\relax
        \expandafter\pgfflt@error\expandafter#1%
    \else
        \expandafter\expandafter\csname pgffltD@#1\endcsname
    \fi}
\expandafter\def\csname pgffltD@0\endcsname{%
    \advance\pgfmathfloat@a@E by1
    \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
    \pgfflt@pendingzeros@positiveexp}%
\expandafter\def\csname pgffltD@1\endcsname{\pgffltD@nonzerodigit1}%
\expandafter\def\csname pgffltD@2\endcsname{\pgffltD@nonzerodigit2}%
\expandafter\def\csname pgffltD@3\endcsname{\pgffltD@nonzerodigit3}%
\expandafter\def\csname pgffltD@4\endcsname{\pgffltD@nonzerodigit4}%
\expandafter\def\csname pgffltD@5\endcsname{\pgffltD@nonzerodigit5}%
\expandafter\def\csname pgffltD@6\endcsname{\pgffltD@nonzerodigit6}%
\expandafter\def\csname pgffltD@7\endcsname{\pgffltD@nonzerodigit7}%
\expandafter\def\csname pgffltD@8\endcsname{\pgffltD@nonzerodigit8}%
\expandafter\def\csname pgffltD@9\endcsname{\pgffltD@nonzerodigit9}%
\expandafter\def\csname pgffltD@\pgfmathfloat@POSTFLAGSCHAR\endcsname{\pgfflt@readlowlevelfloat}%
\expandafter\def\csname pgffltD@.\endcsname{\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltD@,\endcsname{\pgfmathfloat@frenchinput{\pgfflt@finish@number@after@period}}%
\expandafter\def\csname pgffltD@e\endcsname{\pgfflt@readexponent}%
\let\pgffltD@E=\pgffltD@e
\expandafter\def\csname pgffltD@\pgfflt@EOI\endcsname{}%
\def\pgffltD@nonzerodigit#1{%
    \advance\pgfmathfloat@a@E by1
    \ifpgfmathfloatparsenumberpendingperiod
        \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
        \pgfmathfloatparsenumberpendingperiodfalse
    \fi
    \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
    \pgfflt@positiveexp}%

\def\pgfflt@readlowlevelfloat#1e#2]\pgfflt@EOI{%
    \pgfmathfloatparsenumberpendingperiodfalse
    \pgfmathfloat@a@S=\the\pgfmathfloat@a@Mtok\relax
    \pgfmathfloat@a@Mtok={#1}%
    \pgfmathfloat@a@E=#2
}%

\def\pgfflt@readexponent#1\pgfflt@EOI{%
    \afterassignment\pgfflt@readexponent@
    \pgfmathfloat@b@E=#1 \pgfflt@EOI%
}
\def\pgfflt@readexponent@#1{%
    \advance\pgfmathfloat@a@E by\pgfmathfloat@b@E\relax
    \def\pgfmathfloat@loc@TMPb{#1}%
    \ifx\pgfmathfloat@loc@TMPb\pgfflt@EOI@unexpanded
    \else
        \def\pgfmathfloat@loc@TMPb{\pgfflt@error#1}%
        \expandafter\pgfmathfloat@loc@TMPb
    \fi
}

\def\pgfflt@pendingzeros@positiveexp#1{%
    \expandafter\ifx\csname pgffltE@#1\endcsname\relax
        \expandafter\pgfflt@error\expandafter#1%
    \else
        \expandafter\expandafter\csname pgffltE@#1\endcsname
    \fi}
\expandafter\def\csname pgffltE@0\endcsname{%
    \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
    \advance\pgfmathfloat@a@E by1
    \pgfflt@pendingzeros@positiveexp}%
\expandafter\def\csname pgffltE@1\endcsname{\pgffltE@nonzerodigit1}%
\expandafter\def\csname pgffltE@2\endcsname{\pgffltE@nonzerodigit2}%
\expandafter\def\csname pgffltE@3\endcsname{\pgffltE@nonzerodigit3}%
\expandafter\def\csname pgffltE@4\endcsname{\pgffltE@nonzerodigit4}%
\expandafter\def\csname pgffltE@5\endcsname{\pgffltE@nonzerodigit5}%
\expandafter\def\csname pgffltE@6\endcsname{\pgffltE@nonzerodigit6}%
\expandafter\def\csname pgffltE@7\endcsname{\pgffltE@nonzerodigit7}%
\expandafter\def\csname pgffltE@8\endcsname{\pgffltE@nonzerodigit8}%
\expandafter\def\csname pgffltE@9\endcsname{\pgffltE@nonzerodigit9}%
\expandafter\def\csname pgffltE@.\endcsname{\pgfflt@finish@number@after@period}%
\expandafter\def\csname pgffltE@,\endcsname{\pgfmathfloat@frenchinput{\pgfflt@finish@number@after@period}}%
\def\pgffltE@e{\pgfflt@readexponent}%
\let\pgffltE@E=\pgffltE@e
\expandafter\def\csname pgffltE@\pgfflt@EOI\endcsname{}%
\def\pgffltE@nonzerodigit#1{%
    \advance\pgfmathfloat@a@E by1
    \ifpgfmathfloatparsenumberpendingperiod
        \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
        \pgfmathfloatparsenumberpendingperiodfalse
    \fi
    \pgfmathfloat@a@Mtok=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfmathfloat@a@Mtok\the\pgfmathfloat@tmptoks}%
    \pgfmathfloat@tmptoks={}%
    \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
    \pgfflt@positiveexp}%

\def\pgfflt@finish@number@after@period#1{%
    \expandafter\ifx\csname pgffltF@#1\endcsname\relax
        \expandafter\pgfflt@error\expandafter#1%
    \else
        \expandafter\expandafter\csname pgffltF@#1\endcsname
    \fi}
\expandafter\def\csname pgffltF@0\endcsname{%
    \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
    \pgfflt@pendingzeros}%
\expandafter\def\csname pgffltF@1\endcsname{\pgffltF@nonzerodigit1}%
\expandafter\def\csname pgffltF@2\endcsname{\pgffltF@nonzerodigit2}%
\expandafter\def\csname pgffltF@3\endcsname{\pgffltF@nonzerodigit3}%
\expandafter\def\csname pgffltF@4\endcsname{\pgffltF@nonzerodigit4}%
\expandafter\def\csname pgffltF@5\endcsname{\pgffltF@nonzerodigit5}%
\expandafter\def\csname pgffltF@6\endcsname{\pgffltF@nonzerodigit6}%
\expandafter\def\csname pgffltF@7\endcsname{\pgffltF@nonzerodigit7}%
\expandafter\def\csname pgffltF@8\endcsname{\pgffltF@nonzerodigit8}%
\expandafter\def\csname pgffltF@9\endcsname{\pgffltF@nonzerodigit9}%
\def\pgffltF@e{\pgfflt@readexponent}%
\let\pgffltF@E=\pgffltF@e
\expandafter\def\csname pgffltF@\pgfflt@EOI\endcsname{}%
\def\pgffltF@nonzerodigit#1{%
    \ifpgfmathfloatparsenumberpendingperiod
        \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
        \pgfmathfloatparsenumberpendingperiodfalse
    \fi
    \pgfmathfloat@a@Mtok=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfmathfloat@a@Mtok\the\pgfmathfloat@tmptoks}%
    \pgfmathfloat@tmptoks={}%
    \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
    \pgfflt@finish@number@after@period}%


\def\pgfflt@pendingzeros#1{%
    \expandafter\ifx\csname pgffltG@#1\endcsname\relax
        \expandafter\pgfflt@error\expandafter#1%
    \else
        \expandafter\expandafter\csname pgffltG@#1\endcsname
    \fi}
\expandafter\def\csname pgffltG@0\endcsname{%
    \pgfmathfloat@tmptoks=\expandafter{\the\pgfmathfloat@tmptoks0}%
    \pgfflt@pendingzeros}%
\expandafter\def\csname pgffltG@1\endcsname{\pgffltG@nonzerodigit1}%
\expandafter\def\csname pgffltG@2\endcsname{\pgffltG@nonzerodigit2}%
\expandafter\def\csname pgffltG@3\endcsname{\pgffltG@nonzerodigit3}%
\expandafter\def\csname pgffltG@4\endcsname{\pgffltG@nonzerodigit4}%
\expandafter\def\csname pgffltG@5\endcsname{\pgffltG@nonzerodigit5}%
\expandafter\def\csname pgffltG@6\endcsname{\pgffltG@nonzerodigit6}%
\expandafter\def\csname pgffltG@7\endcsname{\pgffltG@nonzerodigit7}%
\expandafter\def\csname pgffltG@8\endcsname{\pgffltG@nonzerodigit8}%
\expandafter\def\csname pgffltG@9\endcsname{\pgffltG@nonzerodigit9}%
\def\pgffltG@e{\pgfflt@readexponent}%
\let\pgffltG@E=\pgffltG@e
\expandafter\def\csname pgffltG@\pgfflt@EOI\endcsname{}%
\def\pgffltG@nonzerodigit#1{%
    \ifpgfmathfloatparsenumberpendingperiod
        \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok.}%
        \pgfmathfloatparsenumberpendingperiodfalse
    \fi
    \pgfmathfloat@a@Mtok=\expandafter\expandafter\expandafter{\expandafter\the\expandafter\pgfmathfloat@a@Mtok\the\pgfmathfloat@tmptoks}%
    \pgfmathfloat@tmptoks={}%
    \pgfmathfloat@a@Mtok=\expandafter{\the\pgfmathfloat@a@Mtok#1}%
    \pgfflt@finish@number@after@period}%

\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfloat.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.base.code.tex ====

\pgfmathdeclarefunction{bin}{1}{%
    \begingroup%
        \afterassignment\pgfmath@gobbletilpgfmath@%
        \c@pgfmath@counta=#1\relax\pgfmath@%
        \expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\the\c@pgfmath@counta}{10}{2}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}
\pgfmathdeclarefunction{hex}{1}{%
    \begingroup%
        \afterassignment\pgfmath@gobbletilpgfmath@%
        \c@pgfmath@counta=#1\relax\pgfmath@%
        \expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\the\c@pgfmath@counta}{10}{16}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}

\pgfmathdeclarefunction{Hex}{1}{%
    \begingroup%
        \afterassignment\pgfmath@gobbletilpgfmath@%
        \c@pgfmath@counta=#1\relax\pgfmath@%
        \expandafter\pgfmathbasetoBase\expandafter\pgfmathresult\expandafter{\the\c@pgfmath@counta}{10}{16}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}

\pgfmathdeclarefunction{oct}{1}{%
    \begingroup%
        \afterassignment\pgfmath@gobbletilpgfmath@%
        \c@pgfmath@counta=#1\relax\pgfmath@%
        \expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\the\c@pgfmath@counta}{10}{8}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}


\def\pgfmathbasetodec#1#2#3{%
    \pgfmath@checknumber{#2}%
    \pgfmath@checkbase{#3}%
    \def\pgfmath@base{#3}%
    \def\pgfmath@base@macro{#1}%
    \c@pgfmath@counta=1\relax%
    \let\pgfmath@reversed=\pgfmath@empty%
    \expandafter\pgfmathbasetodec@#2\pgfmath@base@stop}

\def\pgfmathbasetodec@#1{%
    \ifx#1\pgfmath@base@stop%
        \c@pgfmath@countb=0%
        \divide\c@pgfmath@counta by\pgfmath@base\relax%
        \expandafter\pgfmathbasetodec@@%
    \else%
        \edef\pgfmath@reversed{\pgfmath@reversed#1}%
        \expandafter\multiply\expandafter\c@pgfmath@counta\pgfmath@base\relax%
        \expandafter\pgfmathbasetodec@%
    \fi}

\def\pgfmathbasetodec@@{\expandafter\pgfmathbasetodec@@@\pgfmath@reversed\pgfmathbasetodec}

\def\pgfmathbasetodec@@@#1{%
    \ifx\pgfmathbasetodec#1\relax%
        \expandafter\edef\pgfmath@base@macro{\the\c@pgfmath@countb}%
        \let\pgfmath@next=\pgfmathbasetodec@@@@%
    \else%
        \chardef\pgfmath@charnum`#1\relax%
        \c@pgfmath@countc=\pgfmath@charnum\relax%
        \ifnum\c@pgfmath@countc>96\relax%
            \advance\c@pgfmath@countc by-87\relax%
        \else
            \ifnum\c@pgfmath@countc>64\relax%
                \advance\c@pgfmath@countc by-55\relax%
            \else
                \advance\c@pgfmath@countc by-48\relax%
            \fi%
        \fi%
        \ifnum\c@pgfmath@countc<\pgfmath@base\relax%
            \multiply\c@pgfmath@countc by\c@pgfmath@counta%
            \advance\c@pgfmath@countb by\c@pgfmath@countc%
            \divide\c@pgfmath@counta by\pgfmath@base\relax%
            \let\pgfmath@next\pgfmathbasetodec@@@%
        \else
            \pgfmath@error{Digit `#1' invalid for base \pgfmath@base}{}%
            \let\pgfmath@next=\relax%
        \fi%
    \fi%
    \pgfmath@next}
\def\pgfmathbasetodec@@@@{%
    \expandafter\pgfmath@ensurenumberlength\expandafter{\pgfmath@base@macro}%
}

\def\pgfmathdectobase#1#2#3{%
    \pgfmath@checknumber{#2}%
    \pgfmath@checkbase{#3}%
    \c@pgfmath@counta=#2\relax%
    \let#1=\pgfmath@empty%
    \pgfmathloop
        \ifnum\c@pgfmath@counta>0\relax%
            \c@pgfmath@countb=\c@pgfmath@counta%
            \divide\c@pgfmath@countb by#3\relax%
            \multiply\c@pgfmath@countb by-#3\relax%
            \advance\c@pgfmath@countb by\c@pgfmath@counta%
            \edef#1{\csname pgfmath@lowercase digit@\the\c@pgfmath@countb\endcsname#1}%
            \divide\c@pgfmath@counta by#3\relax%
    \repeatpgfmathloop%
    \pgfmath@ensurenumberlength{#1}}

\def\pgfmathdectoBase#1#2#3{%
    \pgfmath@checkbase{#3}%
    \pgfmath@checknumber{#2}%
    \c@pgfmath@counta=#2\relax%
    \let#1=\pgfmath@empty%
    \pgfmathloop
        \ifnum\c@pgfmath@counta>0\relax%
            \c@pgfmath@countb=\c@pgfmath@counta%
            \divide\c@pgfmath@countb by#3\relax%
            \multiply\c@pgfmath@countb by-#3\relax%
            \advance\c@pgfmath@countb by\c@pgfmath@counta%
            \edef#1{\csname pgfmath@uppercase digit@\the\c@pgfmath@countb\endcsname#1}%
            \divide\c@pgfmath@counta by#3\relax%
    \repeatpgfmathloop%
    \pgfmath@ensurenumberlength{#1}}

\def\pgfmath@base@digits@create{%
    \def\pgfmath@base@digit@style{lowercase digit}%
    \c@pgfmath@counta=0\relax%
    \pgfmath@base@digits@create@0123456789abcdefghijklmnopqrstuvwxyz\pgfmath@base@digits@create%
    \def\pgfmath@base@digit@style{uppercase digit}%
    \c@pgfmath@counta=0\relax%
    \pgfmath@base@digits@create@0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\pgfmath@base@digits@create}

\def\pgfmath@base@digits@create@#1{%
    \ifx\pgfmath@base@digits@create#1\relax%
    \else%
        \expandafter\pgfmath@def\expandafter{\pgfmath@base@digit@style}{\the\c@pgfmath@counta}{#1}%
        \advance\c@pgfmath@counta by1\relax%
        \expandafter\pgfmath@base@digits@create@%
    \fi}
\pgfmath@base@digits@create

\def\pgfmathbasetobase#1#2#3#4{%
    \pgfmathbasetodec{\pgfmath@base@temp}{#2}{#3}%
    \pgfmathdectobase{#1}{\pgfmath@base@temp}{#4}%
}

\def\pgfmathbasetoBase#1#2#3#4{%
    \pgfmathbasetodec{\pgfmath@base@temp}{#2}{#3}%
    \pgfmathdectoBase{#1}{\pgfmath@base@temp}{#4}%
}

\def\pgfmath@checkbase#1{%
    \ifnum#1<2\relax%
        \pgfmath@error{Cannot process numbers in base `#1'.}{}%
    \else%
        \ifnum#1>36\relax%
            \pgfmath@error{Cannot process numbers in base `#1'.}{}%
        \fi%
    \fi}

\def\pgfmath@checknumber#1{%
    \expandafter\pgfmath@checknumber@#1\pgfmath@}
\def\pgfmath@checknumber@#1#2\pgfmath@{%
    \ifx#1-%
        \pgfmath@error{Cannot process negative numbers.}{}%
    \fi}

\def\pgfmath@ensurenumberlength#1{%
    \def\pgfmath@base@tempa{#1}%
    \expandafter\c@pgfmath@counta\pgfmath@basenumberlength\relax%
    \expandafter\pgfmath@ensurenumberlength@#1\pgfmath@ensurenumberlength}
\def\pgfmath@ensurenumberlength@#1{%
    \ifx\pgfmath@ensurenumberlength#1\relax%
        \expandafter\pgfmath@ensurenumberlength@@%
    \else%
        \advance\c@pgfmath@counta by-1\relax%
        \expandafter\pgfmath@ensurenumberlength@
    \fi}

\def\pgfmath@ensurenumberlength@@{%
    \edef\pgfmath@base@tempb{\pgfmath@base@tempa}%
    \pgfmath@ensurenumberlength@@@}
\def\pgfmath@ensurenumberlength@@@{%
    \ifnum\c@pgfmath@counta>0\relax%
        \advance\c@pgfmath@counta by-1\relax%
        \edef\pgfmath@base@tempb{0\pgfmath@base@tempb}%
        \expandafter\pgfmath@ensurenumberlength@@@%
    \fi%
    \expandafter\edef\pgfmath@base@tempa{\pgfmath@base@tempb}}

\def\pgfmathsetbasenumberlength#1{\def\pgfmath@basenumberlength{#1}}
\pgfmathsetbasenumberlength{1}%

\def\pgfmathtodigitlist#1#2{%
    \def\pgfmath@temp{#1}%
    \let\pgfmath@digitlist=\pgfutil@empty%
    \edef\pgfmath@@tmp{#2}%
    \expandafter\pgfmath@todigitlist\pgfmath@@tmp @%
}
\def\pgfmath@base@atchar{@}
\def\pgfmath@todigitlist#1{%
    \def\pgfmath@digit{#1}%
    \ifx\pgfmath@digit\pgfmath@base@atchar%
        \expandafter\let\pgfmath@temp=\pgfmath@digitlist%
    \else%
        \ifx\pgfmath@digitlist\pgfutil@empty%
            \edef\pgfmath@digitlist{#1}%
        \else%
            \edef\pgfmath@digitlist{\pgfmath@digitlist,#1}%
        \fi%
        \expandafter\pgfmath@todigitlist%
    \fi%
}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.base.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.basic.code.tex ====


\pgfmathdeclarefunction{add}{2}{%
    \begingroup%
    \pgfmath@x=#1pt\relax%
    \pgfmath@y=#2pt\relax%
    \advance\pgfmath@x by\pgfmath@y%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}


\pgfmathdeclarefunction{subtract}{2}{%
    \begingroup%
    \pgfmath@x=#1pt\relax%
    \pgfmath@y=#2pt\relax%
    \advance\pgfmath@x by-\pgfmath@y%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\pgfmathdeclarefunction{neg}{1}{%
    \begingroup%
        \pgfmath@x=-#1pt\relax%
        \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}
\def\pgfmath@operation@neg@precedence{500}

\pgfmathdeclarefunction{multiply}{2}{%
  \begingroup%
    \pgfmath@x=#1pt\relax%
    \pgfmath@y=#2pt\relax%
    \pgfmath@x=\pgfmath@tonumber{\pgfmath@y}\pgfmath@x%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\newif\ifpgfmath@divide@period

\pgfmathdeclarefunction{divide}{2}{%
    \begingroup%
        \pgfmath@x=#1pt\relax%
        \pgfmath@y=#2pt\relax%
        \let\pgfmath@sign=\pgfmath@empty%
        \ifdim0pt=\pgfmath@y%
            \pgfmath@error{You've asked me to divide `#1' by `#2', %
                but I cannot divide any number by `#2'}{}%
        \fi%
        \afterassignment\pgfmath@xa%
        \c@pgfmath@counta\the\pgfmath@y\relax%
        \ifdim0pt=\pgfmath@xa%
            \divide\pgfmath@x by\c@pgfmath@counta%
        \else%
            \ifdim0pt>\pgfmath@x%
                \def\pgfmath@sign{-}%
                \pgfmath@x=-\pgfmath@x%
            \fi%
            \ifdim0pt>\pgfmath@y%
                \expandafter\def\expandafter\pgfmath@sign\expandafter{\pgfmath@sign-}%
                \pgfmath@y=-\pgfmath@y%
            \fi%
            \ifdim1pt>\pgfmath@y%
                \pgfmathreciprocal@{\pgfmath@tonumber{\pgfmath@y}}%
                \pgfmath@x=\pgfmath@sign\pgfmathresult\pgfmath@x%
            \else%
                \def\pgfmathresult{0}%
                \pgfmath@divide@periodtrue%
                \c@pgfmath@counta=0\relax%
                \pgfmathdivide@@%
                \pgfmath@x=\pgfmath@sign\pgfmathresult pt\relax%
            \fi%
        \fi%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}

\def\pgfmath@small@number{0.00002}

\def\pgfmathdivide@@{%
    \let\pgfmath@next=\relax%
    \ifdim\pgfmath@small@number pt<\pgfmath@x%
        \ifdim\pgfmath@small@number pt<\pgfmath@y%
            \ifdim\pgfmath@y>\pgfmath@x%
                \ifpgfmath@divide@period%
                    \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult.}%
                    \pgfmath@divide@periodfalse%
                \fi%
                \pgfmathdivide@dimenbyten\pgfmath@y%
                \ifdim\pgfmath@y>\pgfmath@x%
                    \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmathresult0}%
                \fi%
            \else%
                \c@pgfmath@counta=\pgfmath@x%
                \c@pgfmath@countb=\pgfmath@y%
                \divide\c@pgfmath@counta by\c@pgfmath@countb%
                \pgfmath@ya=\c@pgfmath@counta\pgfmath@y%
                \advance\pgfmath@x by-\pgfmath@ya%
                \def\pgfmath@next{%
                    \toks0=\expandafter{\pgfmathresult}%
                    \edef\pgfmathresult{\the\toks0 \the\c@pgfmath@counta}%
                }%
                \ifpgfmath@divide@period
                \else
                    \ifnum\c@pgfmath@counta>9 %
                        \expandafter\pgfmathdivide@advance@last@digit\pgfmathresult CCCCC\@@
                        \advance\c@pgfmath@counta by-10 %
                        \ifnum\c@pgfmath@counta=0
                            \let\pgfmath@next=\relax
                        \fi
                    \fi
                \fi
                \pgfmath@next
            \fi%
            \let\pgfmath@next=\pgfmathdivide@@%
        \fi%
    \fi%
    \pgfmath@next%
}

\def\pgfmathdivide@advance@last@digit#1.#2#3#4#5#6#7\@@{%
    \pgfmath@ya=\pgfmathresult pt %
    \if#2C%
        \pgfmath@xa=1pt %
    \else
        \if#3C%
            \pgfmath@xa=0.1pt %
        \else
            \if#4C%
                \pgfmath@xa=0.01pt %
            \else
                \if#5C%
                    \pgfmath@xa=0.001pt %
                \else
                    \if#6C%
                        \pgfmath@xa=0.0001pt %
                    \else
                        \pgfmath@xa=0.00001pt %
                    \fi
                \fi
            \fi
        \fi
    \fi
    \advance\pgfmath@ya by\pgfmath@xa
    \edef\pgfmathresult{\pgfmath@tonumber@notrailingzero\pgfmath@ya}%
}%

{
\catcode`\p=12
\catcode`\t=12
\gdef\Pgf@geT@NO@TRAILING@ZERO#1.#2pt{%
    #1.%
    \ifnum#2=0 \else #2\fi
}
}
\def\pgfmath@tonumber@notrailingzero#1{\expandafter\Pgf@geT@NO@TRAILING@ZERO\the#1}


\def\pgfmathdivide@dimenbyten#1{%
    \edef\pgfmath@temp{\pgfmath@tonumber{#1}}%
    \expandafter\pgfmathdivide@@dimenbyten\pgfmath@temp\@@#1\@@}
\def\pgfmathdivide@@dimenbyten#1.#2\@@#3\@@{%
    \pgfmath@tempcnta=#1\relax%
    \divide\pgfmath@tempcnta by10\relax%
    \pgfmath@tempcntb=\pgfmath@tempcnta%
    \multiply\pgfmath@tempcnta by-10\relax%
    \advance\pgfmath@tempcnta by#1\relax%
    #3=\the\pgfmath@tempcntb.\the\pgfmath@tempcnta#2pt\relax%
}


\pgfmathdeclarefunction{reciprocal}{1}{%
    \begingroup%
        \expandafter\pgfmath@x#1pt\relax%
        \ifdim\pgfmath@x=0pt\relax%
            \pgfmath@error{You asked me to calculate `1/#1', but I cannot divide any number by zero}{}%
        \fi%
        \edef\pgfmath@reciprocaltemp{\pgfmath@tonumber{\pgfmath@x}}%
        \expandafter\pgfmathreciprocal@@\pgfmath@reciprocaltemp0000000\pgfmath@}
\def\pgfmathreciprocal@@#1.#2#3#4#5#6#7\pgfmath@{%
        \c@pgfmath@counta#2#3#4#5#6\relax%
        \ifnum\c@pgfmath@counta=0\relax%
            \pgfmath@x1pt\relax%
            \divide\pgfmath@x#1\relax%
        \else%
            \ifnum#1>100\relax%
                \c@pgfmath@counta#1#2#3#4\relax%
                \c@pgfmath@countb1000000000\relax%
                \divide\c@pgfmath@countb\c@pgfmath@counta%
                \c@pgfmath@counta\c@pgfmath@countb%
                \divide\c@pgfmath@counta10000\relax%
                \pgfmath@x\c@pgfmath@counta pt\relax%
                \multiply\c@pgfmath@counta-10000\relax%
                \advance\c@pgfmath@countb\c@pgfmath@counta%
                \pgfmath@y\c@pgfmath@countb pt\relax%
                \divide\pgfmath@y1000000\relax%
                \advance\pgfmath@x\pgfmath@y%
            \else%
                \c@pgfmath@counta#1#2#3#4#5#6\relax%
                \c@pgfmath@countb1000000000\relax%
                \divide\c@pgfmath@countb\c@pgfmath@counta%
                \c@pgfmath@counta\c@pgfmath@countb%
                \divide\c@pgfmath@counta10000\relax%
                \pgfmath@x\c@pgfmath@counta pt\relax%
                \multiply\c@pgfmath@counta-10000\relax%
                \advance\c@pgfmath@countb\c@pgfmath@counta%
                \pgfmath@y\c@pgfmath@countb pt\relax%
                \pgfmath@y.1\pgfmath@y%
                \pgfmath@y.1\pgfmath@y%
                \pgfmath@y.1\pgfmath@y%
                \pgfmath@y.1\pgfmath@y%
                \advance\pgfmath@x\pgfmath@y%
            \fi%
        \fi%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}

\pgfmathdeclarefunction{div}{2}{%
    \begingroup%
        \pgfmathdivide@{#1}{#2}%
        \ifdim\pgfmathresult pt<0pt\relax%
            \pgfmathceil@{\pgfmathresult}%
        \else%
            \pgfmathfloor@{\pgfmathresult}%
        \fi%
        \afterassignment\pgfmath@gobbletilpgfmath@%
        \c@pgfmath@counta=\pgfmathresult\relax\pgfmath@%
        \edef\pgfmathresult{\the\c@pgfmath@counta}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}

\pgfmathdeclarefunction{mod}{2}{%
  \begingroup%
    \pgfmath@xa#1pt%
    \pgfmath@xb#2pt%
    \pgfmath@x\pgfmath@xa%
    \c@pgfmath@counta\pgfmath@xa%
    \c@pgfmath@countb\pgfmath@xb%
    \divide\c@pgfmath@counta\c@pgfmath@countb%
    \multiply\pgfmath@xb\c@pgfmath@counta%
    \advance\pgfmath@x-\pgfmath@xb%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\pgfmathdeclarefunction{Mod}{2}{%
    \begingroup%
        \pgfmathmod@{#1}{#2}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \ifdim\pgfmath@x<0pt\relax%
            \advance\pgfmath@x by#2pt\relax%
        \fi%
        \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}

\pgfmathdeclarefunction{abs}{1}{%
    \begingroup%
        \expandafter\pgfmath@x#1pt\relax%
        \ifdim\pgfmath@x<0pt\relax%
            \pgfmath@x-\pgfmath@x%
        \fi%
    \pgfmath@returnone\pgfmath@x%
    \endgroup%
}

\pgfmathdeclarefunction{sign}{1}{%
  \begingroup
    \ifdim#1pt>0sp %
      \def\pgfmathresult{1}%
    \else
      \ifdim#1pt=0sp %
        \def\pgfmathresult{0}%
      \else
        \def\pgfmathresult{-1}%
      \fi
    \fi
    \pgfmath@smuggleone\pgfmathresult
  \endgroup
}

\pgfmathdeclarefunction{e}{0}{\def\pgfmathresult{2.718281828}}

\pgfmathdeclarefunction{ln}{1}{%
    \begingroup%
        \expandafter\pgfmath@x#1pt\relax%
        \ifdim\pgfmath@x>0pt\else%
            \pgfmath@error{I cannot calculate the logarithm of `#1'}{}%
        \fi%
        \c@pgfmath@counta=0\relax%
        \ifdim\pgfmath@x>2pt\relax%
            \ifdim\pgfmath@x<128pt\relax%
                \ifdim\pgfmath@x<8pt\relax%
                    \ifdim\pgfmath@x<4pt\relax%
                        \divide\pgfmath@x by2\relax%
                        \c@pgfmath@counta=1\relax%
                    \else%
                        \divide\pgfmath@x by4\relax%
                        \c@pgfmath@counta=2\relax%
                    \fi%
                \else%
                    \ifdim\pgfmath@x<32pt\relax%
                        \ifdim\pgfmath@x<16pt\relax%
                            \divide\pgfmath@x by8\relax%
                            \c@pgfmath@counta=3\relax%
                        \else%
                            \divide\pgfmath@x by16\relax%
                            \c@pgfmath@counta=4\relax%
                        \fi%
                    \else%
                        \ifdim\pgfmath@x<64pt\relax%
                            \divide\pgfmath@x by32\relax%
                            \c@pgfmath@counta=5\relax%
                        \else%
                            \divide\pgfmath@x by64\relax%
                            \c@pgfmath@counta=6\relax%
                        \fi%
                    \fi%
                \fi%
            \else%
                \ifdim\pgfmath@x<2048pt\relax%
                    \ifdim\pgfmath@x<512pt\relax%
                        \ifdim\pgfmath@x<256pt\relax%
                            \divide\pgfmath@x by128\relax%
                            \c@pgfmath@counta=7\relax%
                        \else%
                            \divide\pgfmath@x by256\relax%
                            \c@pgfmath@counta=8\relax%
                        \fi%
                    \else%
                        \ifdim\pgfmath@x<1024pt\relax%
                            \divide\pgfmath@x by512\relax%
                            \c@pgfmath@counta=9\relax%
                        \else%
                            \divide\pgfmath@x by1024\relax%
                            \c@pgfmath@counta=10\relax%
                        \fi%
                    \fi%
                \else%
                    \ifdim\pgfmath@x<8192pt\relax%
                        \ifdim\pgfmath@x<4096pt\relax%
                            \divide\pgfmath@x by2048\relax%
                            \c@pgfmath@counta=11\relax%
                        \else%
                            \divide\pgfmath@x by4096\relax%
                            \c@pgfmath@counta =12\relax%
                        \fi%
                    \else%
                        \divide\pgfmath@x by8192\relax%
                        \c@pgfmath@counta=13\relax%
                    \fi%
                \fi%
            \fi%
        \else%
            \ifdim\pgfmath@x<1pt\relax%
                \ifdim\pgfmath@x>0.0078125pt\relax%
                    \ifdim\pgfmath@x>0.125pt\relax%
                        \ifdim\pgfmath@x>0.5pt\relax%
                            \multiply\pgfmath@x by2\relax%
                            \c@pgfmath@counta=-1\relax%
                        \else%
                            \multiply\pgfmath@x by4\relax%
                            \c@pgfmath@counta=-2\relax%
                        \fi%
                    \else%
                        \ifdim\pgfmath@x>0.03125pt\relax%
                            \ifdim\pgfmath@x>0.0625pt\relax%
                                \multiply\pgfmath@x by8\relax%
                                \c@pgfmath@counta=-3\relax%
                            \else%
                                \multiply\pgfmath@x by16\relax%
                                \c@pgfmath@counta=-4\relax%
                            \fi%
                        \else%
                            \ifdim\pgfmath@x>0.015625pt\relax%
                                \multiply\pgfmath@x by32\relax%
                                \c@pgfmath@counta=-5\relax%
                            \else%
                                \multiply\pgfmath@x by64\relax%
                                \c@pgfmath@counta=-6\relax%
                            \fi%
                        \fi%
                    \fi%
                \else%
                    \ifdim\pgfmath@x>0.00048828125pt\relax%
                        \ifdim\pgfmath@x>0.001953125pt\relax%
                            \ifdim\pgfmath@x>0.00390625pt\relax%
                                \multiply\pgfmath@x by128\relax%
                                \c@pgfmath@counta=-7\relax%
                            \else%
                                \multiply\pgfmath@x by256\relax%
                                \c@pgfmath@counta=-8\relax%
                            \fi%
                        \else%
                            \ifdim\pgfmath@x>0.0009765625pt\relax%
                                \multiply\pgfmath@x by512\relax%
                                \c@pgfmath@counta=-9\relax%
                            \else%
                                \multiply\pgfmath@x by1024\relax%
                                \c@pgfmath@counta=-10\relax%
                            \fi%
                        \fi%
                    \else%
                        \ifdim\pgfmath@x>0.0001220703125pt\relax%
                            \ifdim\pgfmath@x>0.0002441406256pt\relax%
                                \multiply\pgfmath@x by2048\relax%
                                \c@pgfmath@counta=-11\relax%
                            \else%
                                \multiply\pgfmath@x by4096\relax%
                                \c@pgfmath@counta=-12\relax%
                            \fi%
                        \else%
                            \multiply\pgfmath@x by8192\relax%
                            \c@pgfmath@counta=-13\relax%
                        \fi%
                    \fi%
                \fi%
            \fi%
        \fi%
        \edef\pgfmath@temp{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@x=0.04300521312\pgfmath@x%
        \advance\pgfmath@x by-.4025153233pt\relax%
        \pgfmath@x=\pgfmath@temp\pgfmath@x%
        \advance\pgfmath@x by1.589480044pt\relax%
        \pgfmath@x=\pgfmath@temp\pgfmath@x%
        \advance\pgfmath@x by-3.489886985pt\relax%
        \pgfmath@x=\pgfmath@temp\pgfmath@x%
        \advance\pgfmath@x by5.047861502pt\relax%
        \pgfmath@x=\pgfmath@temp\pgfmath@x%
        \advance\pgfmath@x by-2.787927935pt\relax%
        \advance\pgfmath@x by\c@pgfmath@counta pt\relax%
        \pgfmath@x=0.6931471806\pgfmath@x%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}

\pgfmathdeclarefunction{log2}{1}{%
    \begingroup%
        \pgfmathln@{#1}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \pgfmath@x=1.442695041\pgfmath@x%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}

\pgfmathdeclarefunction{log10}{1}{%
    \begingroup%
        \pgfmathln@{#1}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \pgfmath@x=0.43429441\pgfmath@x%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}

\expandafter\let\expandafter\pgfmathlogtwo\csname pgfmathlog2\endcsname
\expandafter\let\expandafter\pgfmathlogtwo@\csname pgfmathlog2@\endcsname
\expandafter\let\expandafter\pgfmathlogten\csname pgfmathlog10\endcsname
\expandafter\let\expandafter\pgfmathlogten@\csname pgfmathlog10@\endcsname

\pgfmathdeclarefunction{exp}{1}{%
  \begingroup
    \pgfmath@xc=#1pt\relax
    \pgfmath@yc=#1pt\relax
    \ifdim\pgfmath@xc<-9pt
      \pgfmath@x=1sp\relax
    \else
      \ifdim\pgfmath@xc<0pt
        \pgfmath@xc=-\pgfmath@xc
      \fi
      \pgfmath@x=1pt\relax
      \pgfmath@xa=1pt\relax
      \pgfmath@xb=\pgfmath@x
      \pgfmathloop%
        \divide\pgfmath@xa by\pgfmathcounter
        \pgfmath@xa=\pgfmath@tonumber\pgfmath@xc\pgfmath@xa%
        \advance\pgfmath@x by\pgfmath@xa
      \ifdim\pgfmath@x=\pgfmath@xb
      \else
        \pgfmath@xb=\pgfmath@x
      \repeatpgfmathloop%
      \ifdim\pgfmath@yc<0pt
        \pgfmathreciprocal@{\pgfmath@tonumber\pgfmath@x}%
        \pgfmath@x=\pgfmathresult pt\relax
      \fi
    \fi
    \pgfmath@returnone\pgfmath@x%
  \endgroup
}

\pgfmathdeclarefunction{sqrt}{1}{%
    \begingroup%
        \expandafter\pgfmath@x#1pt\relax%
        \ifdim\pgfmath@x<0pt\relax%
            \pgfmath@error{I cannot calculate the square-root of the negative number `#1'}{}%
        \else%
            \ifdim\pgfmath@x<10pt\relax%
                \def\pgfmath@zeros{0}%
                \def\pgfmath@targetiterations{1}%
            \else%
                \ifdim\pgfmath@x<100pt\relax%
                    \def\pgfmath@zeros{}%
                    \def\pgfmath@targetiterations{1}%
                \else%
                    \ifdim\pgfmath@x<1000pt\relax%
                        \def\pgfmath@zeros{0}%
                        \def\pgfmath@targetiterations{2}%
                    \else%
                        \ifdim\pgfmath@x<10000pt\relax%
                            \def\pgfmath@zeros{}%
                            \def\pgfmath@targetiterations{2}%
                    \else%
                            \def\pgfmath@zeros{0}%
                            \def\pgfmath@targetiterations{3}%
        \fi\fi\fi\fi\fi%
        \edef\pgfmath@temp{\pgfmath@zeros\pgfmath@tonumber{\pgfmath@x}}%
        \expandafter\pgfmath@sqrt@\pgfmath@temp\pgfmath@%
}
\def\pgfmath@sqrt@#1.#2\pgfmath@{\pgfmath@@sqrt@#1#2\pgfmath@empty\pgfmath@empty\pgfmath@}

\def\pgfmath@@sqrt@#1#2{%
        \c@pgfmath@countb=#1#2\relax%
        \ifnum\c@pgfmath@countb>35\relax%
            \ifnum\c@pgfmath@countb>63\relax%
                \ifnum\c@pgfmath@countb>80\relax%
                    \c@pgfmath@counta=9\relax%
                \else%
                    \c@pgfmath@counta=8\relax%
                \fi%
            \else%
                \ifnum\c@pgfmath@countb>48\relax%
                    \c@pgfmath@counta=7\relax%
                \else%
                    \c@pgfmath@counta=6\relax%
                \fi%
            \fi%
        \else%
            \ifnum\c@pgfmath@countb>15\relax%
                \ifnum\c@pgfmath@countb>24\relax%
                    \c@pgfmath@counta5\relax%
                \else%
                    \c@pgfmath@counta=4\relax%
                \fi%
            \else%
                \ifnum\c@pgfmath@countb>3\relax%
                    \ifnum\c@pgfmath@countb>8\relax%
                        \c@pgfmath@counta=3\relax%
                    \else%
                        \c@pgfmath@counta=2\relax%
                    \fi%
                \else%
                    \ifnum\c@pgfmath@countb>0\relax%
                        \c@pgfmath@counta=1\relax%
                    \else%
                        \c@pgfmath@counta=0\relax%
                    \fi%
                \fi%
            \fi%
        \fi%
        \edef\pgfmath@root{\the\c@pgfmath@counta}%
        \edef\pgfmath@rootspecial{\the\c@pgfmath@counta}%
        \multiply\c@pgfmath@counta by-\c@pgfmath@counta\relax%
        \advance\c@pgfmath@counta by#1#2\relax%
        \edef\pgfmath@remainder{\the\c@pgfmath@counta}%
        \pgfmath@@@sqrt@%
}

\def\pgfmath@@@sqrt@#1#2{%
        \ifx\pgfmath@empty#1%
            \edef\pgfmath@remainder{\pgfmath@remainder00}%
            \def\pgfmath@tokens{\pgfmath@empty\pgfmath@empty}%
        \else%
            \ifx\pgfmath@empty#2%
                \edef\pgfmath@remainder{\pgfmath@remainder#10}%
                \def\pgfmath@tokens{\pgfmath@empty\pgfmath@empty}%
            \else%
                \edef\pgfmath@remainder{\pgfmath@remainder#1#2}%
                \def\pgfmath@tokens{}%
        \fi\fi%
        \c@pgfmath@counta=\pgfmath@rootspecial\relax%
        \multiply\c@pgfmath@counta by20\relax%
        \c@pgfmath@countb=\c@pgfmath@counta%
        \multiply\c@pgfmath@countb by6\relax%
        \advance\c@pgfmath@countb by36\relax%
        \c@pgfmath@countc=\c@pgfmath@counta%
        \multiply\c@pgfmath@countc by2\relax%
        \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
            \advance\c@pgfmath@countb by-\c@pgfmath@countc%
            \advance\c@pgfmath@countb by-20\relax%
            \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                \advance\c@pgfmath@countb by-\c@pgfmath@countc%
                \advance\c@pgfmath@countb by-12\relax%
                \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                    \advance\c@pgfmath@countb by-\c@pgfmath@counta%
                    \advance\c@pgfmath@countb by-3\relax%
                    \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                        \def\pgfmath@digit{0}%
                    \else%
                        \def\pgfmath@digit{1}%
                    \fi%
                \else%
                    \advance\c@pgfmath@countb by\c@pgfmath@counta%
                    \advance\c@pgfmath@countb by5\relax%
                    \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                        \def\pgfmath@digit{2}%
                    \else%
                        \def\pgfmath@digit{3}%
                    \fi%
                \fi%
            \else%
                \advance\c@pgfmath@countb by\c@pgfmath@counta%
                \advance\c@pgfmath@countb by9\relax%
                \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                    \def\pgfmath@digit{4}%
                \else%
                    \def\pgfmath@digit{5}%
                \fi%
            \fi%
        \else%
            \advance\c@pgfmath@countb by\c@pgfmath@countc%
            \advance\c@pgfmath@countb by28\relax%
            \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                \advance\c@pgfmath@countb by-\c@pgfmath@counta%
                \advance\c@pgfmath@countb by-15\relax%
                \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                    \def\pgfmath@digit{6}%
                \else%
                    \def\pgfmath@digit{7}%
                \fi%
            \else%
                \advance\c@pgfmath@countb by\c@pgfmath@counta%
                \advance\c@pgfmath@countb by17\relax%
                \ifnum\c@pgfmath@countb>\pgfmath@remainder\relax%
                    \def\pgfmath@digit{8}%
                \else%
                    \def\pgfmath@digit{9}%
                \fi%
            \fi%
        \fi%
        \edef\pgfmath@rootspecial{\pgfmath@rootspecial\pgfmath@digit}%
        \advance\c@pgfmath@counta by\pgfmath@digit\relax%
        \multiply\c@pgfmath@counta by-\pgfmath@digit\relax%
        \advance\c@pgfmath@counta by\pgfmath@remainder\relax%
        \edef\pgfmath@remainder{\the\c@pgfmath@counta}%
        \c@pgfmath@counta=\pgfmath@targetiterations\relax%
        \advance\c@pgfmath@counta by-1\relax%
        \edef\pgfmath@targetiterations{\the\c@pgfmath@counta}%
        \ifnum\c@pgfmath@counta=0\relax%
            \edef\pgfmath@root{\pgfmath@root.\pgfmath@digit}%
        \else%
            \edef\pgfmath@root{\pgfmath@root\pgfmath@digit}%
        \fi%
        \ifnum\c@pgfmath@counta=-4\relax%
            \let\pgfmath@next\pgfmath@sqrt@end%
        \else%
            \let\pgfmath@next\pgfmath@@@sqrt@%
        \fi%
        \expandafter\pgfmath@next\pgfmath@tokens%
}

\def\pgfmath@sqrt@end#1\pgfmath@{%
        \edef\pgfmathresult{\pgfmath@root}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup}

\pgfmathdeclarefunction{pow}{2}{%
  \begingroup%
    \pgfmath@xa=#1pt%
    \pgfmath@xb=#2pt%
    \ifdim\pgfmath@xa=0pt\relax%
      \ifdim\pgfmath@xb=0pt\relax%
        \pgfmath@x=1pt\relax%
      \else%
        \pgfmath@x=0pt\relax%
      \fi%
    \else%
      \afterassignment\pgfmath@x%
      \expandafter\c@pgfmath@counta\the\pgfmath@xb\relax%
      \ifnum\c@pgfmath@counta<0\relax%
        \c@pgfmath@counta=-\c@pgfmath@counta%
        \pgfmathreciprocal@{#1}%
        \pgfmath@xa=\pgfmathresult pt\relax%
      \fi
      \ifdim\pgfmath@x=0pt\relax%
        \pgfmath@x=1pt\relax%
        \pgfmathloop%
          \ifnum\c@pgfmath@counta>0\relax%
            \ifodd\c@pgfmath@counta%
              \pgfmath@x=\pgfmath@tonumber{\pgfmath@x}\pgfmath@xa%
            \fi
            \ifnum\c@pgfmath@counta>1\relax%
              \pgfmath@xa=\pgfmath@tonumber{\pgfmath@xa}\pgfmath@xa%
            \fi%
            \divide\c@pgfmath@counta by2\relax%
        \repeatpgfmathloop%
      \else%
        \pgfmathln@{#1}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \pgfmath@x=\pgfmath@tonumber{\pgfmath@xb}\pgfmath@x%
        \pgfmathexp@{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@x=\pgfmathresult pt\relax%
      \fi%
    \fi
    \pgfmath@returnone\pgf@x%
  \endgroup%
}

\pgfmathdeclarefunction{factorial}{1}{%
    \begingroup%
        \afterassignment\pgfmath@gobbletilpgfmath@%
        \c@pgfmath@counta=#1\relax\pgfmath@%
        \pgfmath@x=1pt\relax%
        \pgfmathloop%
        \ifnum\c@pgfmath@counta<2\relax%
        \else%
            \multiply\pgfmath@x by\c@pgfmath@counta%
            \advance\c@pgfmath@counta by-1\relax%
        \repeatpgfmathloop%
        \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}

==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.basic.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.code.tex ====

\def\pgfmathdeclarefunction{\pgfmath@ifnextchar*\pgfmathdeclarefunction@force\pgfmathdeclarefunction@check}
\def\pgfmathdeclarefunction@check#1{%
    \expandafter\ifx\csname pgfmath@function@#1\endcsname\relax\else%
        \pgfmath@error{The function `#1' already exists}{}%
    \fi%
    \pgfmath@declarefunction{#1}%
}
\def\pgfmathdeclarefunction@force*{\pgfmath@declarefunction}%

\def\pgfmathredeclarefunction#1#2{%
    \expandafter\ifx\csname pgfmath@function@#1\endcsname\relax%
        \pgfmath@error{The function `#1' does not exist}{}%
    \else%
    \edef\pgf@marshal{\noexpand\pgfmathdeclarefunction*{#1}{\csname    pgfmath@operation@#1@arity\endcsname}}%
    \pgf@marshal{#2}%
    \fi%
}

\def\pgfmath@declarefunction#1#2{%
    \pgfmath@namedef{pgfmath@function@#1}{#1}%
    \pgfmath@namedef{pgfmath@operation@#1@type}{function}%
    \pgfmath@namedef{pgfmath@operation@#1@arity}{#2}%
    \pgfmath@namedef{pgfmath@operation@#1@infix}{#1}%
    \pgfmath@namedef{pgfmath@operation@#1@precedence}{1000}%
    \expandafter\ifx\csname pgfmath@operation@#1@arity\endcsname\pgfmath@dots%
        \pgfmath@namedef{pgfmath@operation@#1@arity}{1}%
    \else%
        \ifnum\csname pgfmath@operation@#1@arity\endcsname>9\relax%
                \pgfmath@namedef{pgfmath@operation@#1@arity}{1}%
        \fi%
    \fi%
    \edef\pgfmath@marshal{%
        \noexpand\pgfmath@@declarefunction%
        {\expandafter\noexpand\csname pgfmath#1\endcsname}%
        {\expandafter\noexpand\csname pgfmath#1@\endcsname}%
        {\csname pgfmath@operation@#1@arity\endcsname}%
    }%
    \pgfkeysvalueof{/pgf/declare function/execute at begin function}%
    \pgfmath@marshal%
}

\def\pgfmath@@declarefunction#1#2#3#4{%
    \pgfkeysvalueof{/pgf/declare function/execute at end function}%
    \ifcase#3\relax%
        \def#1{#2}%
        \def\pgfmath@@head{\def#2}%
    \or
        \def#1##1{\pgfmathparse{##1}\expandafter#2\expandafter{\pgfmathresult}}%
        \def\pgfmath@@head{\def#2####1}%
    \else%
        \pgfmath@toks={}%
        \pgfmathloop%
        \ifnum\pgfmathcounter>#3\relax%
        \else%
            \expandafter\pgfmath@addto@toks\expandafter{\pgfmath@char@hash}%
            \expandafter\pgfmath@addto@toks\expandafter{\pgfmathcounter}%
        \repeatpgfmathloop%
        \edef\pgfmath@head{\noexpand\def\noexpand#1\the\pgfmath@toks}%
        \edef\pgfmath@@head{\noexpand\def\noexpand#2\the\pgfmath@toks}%
        \pgfmath@toks={}%
        \def\pgfmath@arguments{}%
        \pgfmathloop%
        \ifnum\pgfmathcounter>#3\relax%
        \else%
            \pgfmath@addto@toks{\pgfmathparse}%
            \expandafter\expandafter\expandafter\pgfmath@addto@toks%
                \expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter%
                    {\expandafter\pgfmath@char@hash\pgfmathcounter}}%
            \pgfmath@addto@toks{\let}%
            \expandafter\pgfmath@addto@toks\expandafter{%
                \csname pgfmath@argument@\pgfmathcounter\endcsname=\pgfmathresult}%
            \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
                \pgfmath@arguments\expandafter\expandafter\expandafter{\expandafter%
                    \pgfmath@arguments\expandafter{\csname pgfmath@argument@\pgfmathcounter\endcsname}}%
        \repeatpgfmathloop%
        \expandafter\pgfmath@addto@toks\expandafter{\expandafter#2\pgfmath@arguments}%
        \edef\pgfmath@body{{\the\pgfmath@toks}}%
        \expandafter\pgfmath@head\pgfmath@body%
    \fi%
    \pgfmath@@head{#4}%
}

\def\pgfmath@addto@toks#1{%
    \edef\pgfmath@toks@expanded{\the\pgfmath@toks}%
    \expandafter\pgfmath@toks\expandafter{\pgfmath@toks@expanded#1}}

\pgfkeys{%
    /pgf/declare function/.code={%
        \pgfmath@local@functions#1@=@;%
    },
    /pgf/declare function/execute at begin function/.initial={},
    /pgf/declare function/execute at end function/.initial={},
    /pgf/declare function/ignore spaces/.is choice,
    /pgf/declare function/ignore spaces/.default=true,
    /pgf/declare function/ignore spaces/true/.style={%
        /pgf/declare function/execute at begin function={%
            \begingroup
            \catcode`\^^I=9\relax
            \catcode`\ =9\relax
            \catcode`\~=10\relax
            \endlinechar=`\ \relax
        },
        /pgf/declare function/execute at end function={%
            \endgroup
        },
    },
    /pgf/declare function/ignore spaces/false/.style={%
        /pgf/declare function/execute at begin function={},
        /pgf/declare function/execute at end function={},
    },
}

\def\pgfmath@local@gobbleone#1{}
\def\pgfmath@local@at{@}%

\def\pgfmath@local@functions{%
    \pgfutil@ifnextchar x{\pgfmath@local@@functions}{\pgfmath@local@@functions}%
}

\def\pgfmath@local@@functions#1=#2;{%
    \def\pgfmath@local@temp{#1}%
    \ifx\pgfmath@local@temp\pgfmath@local@at%
        \let\pgfmath@local@next=\relax%
    \else%
        \pgfmath@local@function#1=#2;%
        \let\pgfmath@local@next=\pgfmath@local@functions%
    \fi%
    \pgfmath@local@next%
}

\def\pgfmath@local@function{%
    \let\pgfmath@local@name=\pgfutil@empty%
    \let\pgfmath@local@args=\pgfutil@empty%
    \let\pgfmath@local@body=\pgfutil@empty%
    \pgfmath@local@@function}

\def\pgfmath@local@@function#1{%
    \if#1=%
        \let\pgfmath@local@next=\pgfmath@local@function@body%
    \else%
        \if#1(%
            \let\pgfmath@local@next=\pgfmath@local@function@args%
        \else%
            \expandafter\def\expandafter\pgfmath@local@name\expandafter{\pgfmath@local@name#1}%
            \let\pgfmath@local@next=\pgfmath@local@@function%
        \fi%
    \fi%
    \pgfmath@local@next%
}

\def\pgfmath@local@function@args#1){%
    \def\pgfmath@local@args{#1}%
    \pgfmath@local@@function}

\def\pgfmath@local@function@body#1;{%
    \def\pgfmath@local@body{#1}%
    \begingroup%
        \c@pgf@counta=0\relax%
        \ifx\pgfmath@local@args\pgfmath@empty%
            \expandafter\pgfmath@toks\expandafter=\expandafter{\pgfmath@local@body}%
        \else%
            \pgfmath@toks={}%
            \expandafter\pgfmath@local@function@@body\pgfmath@local@args,,%
        \fi%
        \xdef\pgfmath@local@temp{%
            \noexpand\pgfmathnotifynewdeclarefunction{\pgfmath@local@name}{\the\c@pgf@counta}%
                {\the\pgfmath@toks}%
        }%
    \endgroup%
    \pgfmath@local@temp%
}

\def\pgfmathnotifynewdeclarefunction#1#2#3{%
    \pgfmathdeclarefunction{#1}{#2}{\pgfmathparse{#3}}%
}%

\def\pgfmath@local@function@@body#1,{%
    \def\pgfmath@local@test{#1}%
    \ifx\pgfmath@local@test\pgfutil@empty%
        \let\pgfmath@local@next=\relax%
    \else%
        \edef\pgfmath@local@var@string{@\expandafter\pgfmath@local@gobbleone\string#1}%
        \advance\c@pgf@counta by1\relax%
        \expandafter\expandafter\expandafter\pgfmath@toks\expandafter\expandafter\expandafter=%
            \expandafter\expandafter\expandafter{\expandafter\pgfmath@char@hash\the\c@pgf@counta}%
        \edef#1{\the\pgfmath@toks}%
        \pgfmath@toks={}%
        \expandafter\pgfmath@local@function@@@body\pgfmath@local@body @%
        \edef\pgfmath@local@body{\the\pgfmath@toks}%
        \let\pgfmath@local@next=\pgfmath@local@function@@body%
    \fi%
    \pgfmath@local@next%
}

\def\pgfmath@local@function@@@body{%
    \pgfutil@ifnextchar\bgroup{\pgfmath@local@function@@@body@bgroup}%
        {\pgfmath@local@function@@@body@nobgroup}}%

\def\pgfmath@local@function@@@body@bgroup#1{%
    \begingroup%
        \pgfmath@toks={}%
        \pgfmath@local@function@@@body#1 @%
        \xdef\pgfmath@local@temp{{\the\pgfmath@toks}}%
    \endgroup%
    \expandafter\pgfmath@addto@toks\expandafter{\pgfmath@local@temp}%
    \pgfmath@local@function@@@body%
}

\def\pgfmath@local@function@@@body@nobgroup#1{%
    \ifx#1@%
        \let\pgfmath@local@next=\relax%
    \else%
        \let\pgfmath@local@next=\pgfmath@local@function@@@body%
        \edef\pgfmath@local@var@@string{@\expandafter\pgfmath@local@gobbleone\string#1}%
        \ifx\pgfmath@local@var@@string\pgfmath@local@var@string%
            \expandafter\pgfmath@addto@toks\expandafter{#1}%
        \else%
            \edef\pgfmath@local@temp{\the\pgfmath@toks}%
            \pgfmath@toks={#1}%
            \edef\pgfmath@local@@temp{\the\pgfmath@toks}%
            \expandafter\pgfmath@toks\expandafter=\expandafter{\pgfmath@local@temp}%
            \expandafter\pgfmath@addto@toks\expandafter{\pgfmath@local@@temp}%
        \fi%
    \fi%
    \pgfmath@local@next%
}

\def\pgfmathdeclarepseudoconstant#1#2{%
    \pgfmathdeclarefunction*{#1}{0}{#2}%
}%
\def\pgfmathredeclarepseudoconstant#1#2{%
    \pgfmathredeclarefunction{#1}{#2}%
}%

==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.comparison.code.tex ====


\pgfmathdeclarefunction{greater}{2}{%
  \begingroup%
    \ifdim#1pt>#2pt\relax%
        \def\pgfmathresult{1}%
    \else%
      \def\pgfmathresult{0}%
    \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}
\let\pgfmathgreaterthan=\pgfmathgreater

\pgfmathdeclarefunction{less}{2}{%
  \begingroup%
    \ifdim#1pt<#2pt\relax%
        \def\pgfmathresult{1}%
    \else%
      \def\pgfmathresult{0}%
    \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}
\let\pgfmathlessthan=\pgfmathless

\pgfmathdeclarefunction{equal}{2}{%
  \begingroup%
    \ifdim#1pt=#2pt\relax%
        \def\pgfmathresult{1}%
    \else%
      \def\pgfmathresult{0}%
    \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}
\let\pgfmathequalto=\pgfmathequal


\newif\ifpgfmathcomparison
\pgfmathdeclarefunction{approxequalto}{2}{%
    \begingroup%
        \pgfmath@x=#1pt\relax%
        \pgfmath@y=#2pt\relax%
        \advance\pgfmath@x by-\pgfmath@y%
        \ifdim\pgfmath@x<0pt\relax%
            \multiply\pgfmath@x by-1\relax%
        \fi
        \ifdim\pgfmath@x<0.0001pt\relax%
            \def\pgfmathresult{1.0}%
            \global\pgfmathcomparisontrue%
        \else%
            \def\pgfmathresult{0.0}%
            \global\pgfmathcomparisonfalse%
        \fi%
    \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}



\pgfmathdeclarefunction{ifthenelse}{3}{%
    \begingroup%
        \ifdim#1pt=0.0pt\relax%
            \expandafter\def\expandafter\pgfmathresult\expandafter{#3}%
        \else%
            \expandafter\def\expandafter\pgfmathresult\expandafter{#2}%
        \fi%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}

\pgfmathdeclarefunction{notequal}{2}{%
  \begingroup%
    \ifdim#1pt=#2pt\relax%
            \def\pgfmathresult{0}%
    \else%
      \def\pgfmathresult{1}%
    \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}

\pgfmathdeclarefunction{notless}{2}{%
  \begingroup%
    \ifdim#1pt<#2pt\relax%
            \def\pgfmathresult{0}%
    \else%
      \def\pgfmathresult{1}%
    \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}

\pgfmathdeclarefunction{notgreater}{2}{%
  \begingroup%
    \ifdim#1pt>#2pt\relax%
            \def\pgfmathresult{0}%
    \else%
      \def\pgfmathresult{1}%
    \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}

\pgfmathdeclarefunction{and}{2}{%
  \begingroup%
      \def\pgfmathresult{1}%
    \ifdim#1pt=0pt\relax%
            \def\pgfmathresult{0}%
        \else%
            \ifdim#2pt=0pt\relax%
                \def\pgfmathresult{0}%
            \fi%
        \fi%
     \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}

\pgfmathdeclarefunction{or}{2}{%
  \begingroup%
    \def\pgfmathresult{0}%
    \ifdim#1pt=0pt\relax%
            \ifdim#2pt=0pt\relax%
            \else%
                \def\pgfmathresult{1}%
            \fi%
        \else%
            \def\pgfmathresult{1}%
        \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}

\pgfmathdeclarefunction{not}{1}{%
  \begingroup%
    \ifdim#1pt=0pt\relax%
            \def\pgfmathresult{1}%
        \else%
            \def\pgfmathresult{0}%
        \fi%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup%
}

\pgfmathdeclarefunction{true}{0}{\def\pgfmathresult{1}}

\pgfmathdeclarefunction{false}{0}{\def\pgfmathresult{0}}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.comparison.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.integerarithmetics.code.tex ====

\pgfmathdeclarefunction{gcd}{2}{%
  \begingroup
    \pgfmathcontinuelooptrue
    \pgfmath@xa=#1pt
    \pgfmath@xb=#2pt
    \ifdim\pgfmath@xa=0pt\relax
      \pgfmathcontinueloopfalse
      \pgfmath@xa=\pgfmath@xb
    \fi
    \ifdim\pgfmath@xb=0pt\relax
      \pgfmathcontinueloopfalse
      \pgfmath@xb=\pgfmath@xa
    \fi
    \ifdim\pgfmath@xa<0pt\relax
      \pgfmath@xa=-\pgfmath@xa
    \fi
    \ifdim\pgfmath@xb<0pt\relax
      \pgfmath@xb=-\pgfmath@xb
    \fi
    \loop
      \ifpgfmathcontinueloop
      \ifdim\pgfmath@xa=\pgfmath@xb
        \pgfmathcontinueloopfalse
      \else
        \ifdim\pgfmath@xa>\pgfmath@xb
          \advance\pgfmath@xa by-\pgfmath@xb
        \else
          \advance\pgfmath@xb by-\pgfmath@xa
        \fi
      \fi
    \repeat
    \pgfmathparse{int(\pgfmath@xa)}%
    \pgfmath@smuggleone\pgfmathresult
  \endgroup}

\newif\ifpgfmath@isprime@unknown
\newif\ifpgfmath@isprime

\pgfmathdeclarefunction{isprime}{1}{%
  \begingroup
    \pgfmath@isprime@unknowntrue
    \pgfmathsetcount\c@pgfmath@counta{abs(int(#1))}%
    \ifcase\c@pgfmath@counta\relax
      \pgfmath@isprimefalse
      \pgfmath@isprime@unknownfalse
    \or
      \pgfmath@isprimefalse
      \pgfmath@isprime@unknownfalse
    \or
      \pgfmath@isprimetrue
      \pgfmath@isprime@unknownfalse
    \or
      \pgfmath@isprimetrue
      \pgfmath@isprime@unknownfalse
    \else
      \ifodd\c@pgfmath@counta\relax
      \else
        \pgfmath@isprimefalse
        \pgfmath@isprime@unknownfalse
      \fi
    \fi
    \ifpgfmath@isprime@unknown
      \c@pgfmath@countd=3
      \pgfmath@isprimetrue
      \pgfmathloop
        \c@pgfmath@countb=\c@pgfmath@counta
        \divide\c@pgfmath@countb by\c@pgfmath@countd
        \ifnum\c@pgfmath@countb>\c@pgfmath@countd
          \pgfmath@isprime@unknowntrue
        \else
          \pgfmath@isprime@unknownfalse
        \fi
        \multiply\c@pgfmath@countb by\c@pgfmath@countd
        \ifnum\c@pgfmath@countb=\c@pgfmath@counta
          \global\pgfmath@isprimefalse
          \pgfmath@isprime@unknownfalse
        \fi
      \ifpgfmath@isprime@unknown\advance\c@pgfmath@countd by 2
      \repeatpgfmathloop
    \fi
    \ifpgfmath@isprime
      \def\pgfmathresult{1}%
    \else
      \def\pgfmathresult{0}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
  \endgroup}

\pgfmathdeclarefunction{isodd}{1}{%
  \begingroup
    \pgfmathsetcount\c@pgfmath@counta{abs(int(#1))}%
    \ifodd\c@pgfmath@counta
      \def\pgfmathresult{1}%
    \else
      \def\pgfmathresult{0}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
  \endgroup}

\pgfmathdeclarefunction{iseven}{1}{%
  \begingroup
    \pgfmathsetcount\c@pgfmath@counta{abs(int(#1))}%
    \ifodd\c@pgfmath@counta
      \def\pgfmathresult{0}%
    \else
      \def\pgfmathresult{1}%
    \fi
    \pgfmath@smuggleone\pgfmathresult
  \endgroup}

\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.integerarithmetics.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.misc.code.tex ====


\pgfmathdeclarefunction{veclen}{2}{%
  \begingroup%
    \pgfmath@x#1pt\relax%
    \pgfmath@y#2pt\relax%
        \ifdim\pgfmath@x<0pt\relax%
            \pgfmath@x-\pgfmath@x%
        \fi%
        \ifdim\pgfmath@y<0pt\relax%
            \pgfmath@y-\pgfmath@y%
        \fi%
        \ifdim\pgfmath@x=0pt\relax%
            \pgfmath@x\pgfmath@y%
        \else%
            \ifdim\pgfmath@y=0pt\relax%
            \else%
                \ifdim\pgfmath@x>\pgfmath@y%
                    \pgfmath@xa\pgfmath@x%
                    \pgfmath@x\pgfmath@y%
                    \pgfmath@y\pgfmath@xa%
                \fi%
                \ifdim\pgfmath@y>10000pt\relax%
                    \c@pgfmath@counta1500\relax%
                \else%
                    \ifdim\pgfmath@y>1000pt\relax%
                        \c@pgfmath@counta150\relax%
                    \else%
                        \ifdim\pgfmath@y>100pt\relax%
                            \c@pgfmath@counta50\relax%
                        \else%
                            \c@pgfmath@counta1\relax%
                        \fi%
                    \fi%
                \fi%
                \divide\pgfmath@x\c@pgfmath@counta\relax%
                \divide\pgfmath@y\c@pgfmath@counta\relax%
                \pgfmathreciprocal@{\pgfmath@tonumber{\pgfmath@y}}%
                \pgfmath@x\pgfmathresult\pgfmath@x%
                \pgfmath@xa\pgfmath@tonumber{\pgfmath@x}\pgfmath@x%
                \edef\pgfmath@temp{\pgfmath@tonumber{\pgfmath@xa}}%
                \pgfmath@x-0.01019210944\pgfmath@xa%
                \advance\pgfmath@x0.04453994279pt\relax%
                \pgfmath@x\pgfmath@temp\pgfmath@x%
                \advance\pgfmath@x-0.1195159052pt\relax%
                \pgfmath@x\pgfmath@temp\pgfmath@x%
                \advance\pgfmath@x0.4993615349pt\relax%
                \pgfmath@x\pgfmath@temp\pgfmath@x%
                \advance\pgfmath@x1.000012594pt\relax%
                \ifdim\pgfmath@y<0pt\relax%
                    \pgfmath@y-\pgfmath@y%
                \fi%
                \pgfmath@x\pgfmath@tonumber{\pgfmath@y}\pgfmath@x%
                \multiply\pgfmath@x\c@pgfmath@counta\relax%
            \fi%
        \fi%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}

\pgfmathdeclarefunction{cosh}{1}{%
    \begingroup
        \edef\pgfmath@arg{#1}%
        \pgfmathexp@{\pgfmath@arg}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \pgfmathexp@{-\pgfmath@arg}%
        \advance\pgfmath@x by\pgfmathresult pt\relax%
        \divide\pgfmath@x by2\relax%
        \pgfmath@returnone\pgfmath@x%
    \endgroup}

\pgfmathdeclarefunction{sinh}{1}{%
    \begingroup
        \edef\pgfmath@arg{#1}%
        \pgfmathexp@{\pgfmath@arg}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \pgfmathexp@{-\pgfmath@arg}%
        \advance\pgfmath@x by-\pgfmathresult pt\relax%
        \divide\pgfmath@x by2\relax%
        \pgfmath@returnone\pgfmath@x%
    \endgroup
}%

\pgfmathdeclarefunction{tanh}{1}{%
    \begingroup
        \edef\pgfmath@arg{#1}%
        \pgfmathsinh@{\pgfmath@arg}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \pgfmathcosh@{\pgfmath@arg}%
        \pgfmath@y=\pgfmathresult pt\relax%
        \pgfmathdivide@{\pgfmath@tonumber{\pgfmath@x}}{\pgfmath@tonumber{\pgfmath@y}}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \pgfmath@returnone\pgfmath@x%
    \endgroup
}%

\def\pgfmathscientific#1#2{%
    \begingroup%
        \edef\pgfmath@sci@exponent{#2}%
        \pgfmath@x#1pt\relax%
        \ifdim\pgfmath@x<0pt\relax%
            \pgfmath@x-\pgfmath@x%
            \edef\pgfmath@sci@sign{-}%
            \expandafter\edef\expandafter\pgfmath@temp\expandafter{\expandafter\pgfmath@gobbleone#1}%
        \else%
            \edef\pgfmath@sci@sign{+}%
            \edef\pgfmath@temp{#1}%
        \fi%
        \expandafter\pgfmath@in@\expandafter.\expandafter{#1}%
        \ifpgfmath@in@%
        \else%
            \edef\pgfmath@temp{\pgfmath@temp.0}%
        \fi%
        \expandafter\pgfmath@scientific@@\pgfmath@temp00000000000\pgfmath@}

\def\pgfmath@scientific@@#1.#2#3#4#5#6{%
        \edef\pgfmath@sci@int{#1}%
        \edef\pgfmath@sci@mantissaA{#2#3#4#5#6}%
        \pgfmath@scientific@@@}

\def\pgfmath@scientific@@@#1#2#3#4#5#6\pgfmath@{%
        \edef\pgfmath@sci@mantissaB{#1#2#3#4#5}%
        \c@pgfmath@counta\pgfmath@sci@exponent\relax%
                \ifnum\c@pgfmath@counta<-4\relax%
                  \pgfmath@x0pt\relax%
                \else%
        \c@pgfmath@countb\c@pgfmath@counta%
        \ifnum\c@pgfmath@counta<0\relax%
            \c@pgfmath@counta-\c@pgfmath@counta%
        \fi%
        \pgfmathpow@{10}{\the\c@pgfmath@counta}%
        \afterassignment\pgfmath@gobbletilpgfmath@
        \c@pgfmath@countc\pgfmathresult\relax\pgfmath@
        \edef\pgfmath@sci@factor{\the\c@pgfmath@countc}%
        \ifnum\c@pgfmath@countb<0\relax%
            \pgfmath@x\pgfmath@sci@int.\pgfmath@sci@mantissaA pt\relax%
            \divide\pgfmath@x\pgfmath@sci@factor\relax%
        \else%
            \c@pgfmath@counta\pgfmath@sci@int%
            \c@pgfmath@countb\pgfmath@sci@mantissaA%
            \multiply\c@pgfmath@counta\pgfmath@sci@factor\relax%
            \multiply\c@pgfmath@countb\pgfmath@sci@factor\relax%
            \c@pgfmath@countc\c@pgfmath@countb%
            \divide\c@pgfmath@countb100000\relax%
            \advance\c@pgfmath@counta\c@pgfmath@countb%
            \multiply\c@pgfmath@countb100000\relax%
            \advance\c@pgfmath@countc-\c@pgfmath@countb%
            \c@pgfmath@countb\pgfmath@sci@mantissaB\relax%
            \multiply\c@pgfmath@countb\pgfmath@sci@factor\relax%
            \divide\c@pgfmath@countb100000\relax%
            \advance\c@pgfmath@countc\c@pgfmath@countb%
            \advance\c@pgfmath@countc100000\relax%
            \edef\pgfmath@sci@result{\pgfmath@sci@sign\the\c@pgfmath@counta.\expandafter\pgfmath@gobbleone\the\c@pgfmath@countc pt}%
            \pgfmath@x\pgfmath@sci@result\relax%
        \fi\fi%
        \pgfmath@returnone\pgfmath@x%
    \endgroup}



\pgfmathdeclarefunction{width}{1}{%
    \begingroup%
        \setbox\pgfmath@box=\hbox{{\pgfmath@selectfont{#1}}}%
        \pgfmath@x=\wd\pgfmath@box%
        \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}


\pgfmathdeclarefunction{height}{1}{%
    \begingroup%
        \setbox\pgfmath@box=\hbox{{\pgfmath@selectfont{#1}}}%
        \pgfmath@x=\ht\pgfmath@box%
        \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}

\pgfmathdeclarefunction{depth}{1}{%
    \begingroup%
        \setbox\pgfmath@box=\hbox{{\pgfmath@selectfont{#1}}}%
        \pgfmath@x=\dp\pgfmath@box%
        \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}


\pgfmathdeclarefunction{array}{2}{%
    \begingroup%
        \afterassignment\pgfmath@gobbletilpgfmath@\pgfmath@count=#2\relax\pgfmath@%
        \expandafter\pgfmatharray@@#1\pgfmath@stop%
}

\def\pgfmath@token@stop{\pgfmath@stop}%
\def\pgfmatharray@@#1{%
    \def\pgfmath@temp{#1}%
    \advance\pgfmath@count by-1\relax%
    \ifx\pgfmath@temp\pgfmath@token@stop%
        \pgfmath@error{Array index out of bounds.}{}%
        \def\pgfmathresult{0}%
        \pgfmath@smuggleone\pgfmathresult\endgroup%
        \let\pgfmath@next=\relax%
    \else%
        \ifnum\pgfmath@count=-1\relax%
            \def\pgfmathresult{#1}%
            \let\pgfmath@next=\pgfmatharray@@@%
        \else%
            \let\pgfmath@next=\pgfmatharray@@%
        \fi%
    \fi%
    \pgfmath@next}

\def\pgfmatharray@@@#1\pgfmath@stop{%
    \pgfmath@smuggleone\pgfmathresult\endgroup%
}

\pgfmathdeclarefunction{dim}{1}{%
  \begingroup
    \pgfmath@count=0\relax
    \expandafter\pgfmath@dim@i\pgfutil@firstofone#1{\pgfmath@token@stop}%
    \edef\pgfmathresult{\the\pgfmath@count}%
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup}

\def\pgfmath@dim@i#1#{%
  \pgfutil@ifempty{#1}{}{\advance\pgfmath@count by 1}%
  \pgfmath@dim@ii{#1}}

\def\pgfmath@dim@ii#1#2{%
  \ifx\pgfmath@token@stop#2%
  \else
    \advance\pgfmath@count by 1\relax
    \expandafter\pgfmath@dim@i
  \fi}


\pgfmathdeclarefunction{max}{...}{%
    \begingroup%
        \pgfmath@x=-16383pt\relax%
        \pgfmathmax@@#1{}}

\def\pgfmathmax@@#1{%
    \def\pgfmath@temp{#1}%
    \ifx\pgfmath@temp\pgfmath@empty%
        \let\pgfmath@next=\pgfmathmax@@@%
    \else%
        \ifdim#1pt>\pgfmath@x%
            \pgfmath@x=#1pt\relax%
        \fi%
        \let\pgfmath@next=\pgfmathmax@@%
    \fi%
    \pgfmath@next}

\def\pgfmathmax@@@{\pgfmath@returnone\pgfmath@x\endgroup}%

\def\pgfmathmax#1#2{%
    \pgfmathparse{#1,#2}%
    \expandafter\pgfmathmax@\expandafter{\pgfmathresult}%
}

\pgfmathdeclarefunction{min}{...}{%
    \begingroup%
        \pgfmath@x=16383pt\relax%
        \pgfmathmin@@#1{}}

\def\pgfmathmin@@#1{%
    \def\pgfmath@temp{#1}%
    \ifx\pgfmath@temp\pgfmath@empty%
        \let\pgfmath@next=\pgfmathmin@@@%
    \else%
        \ifdim#1pt<\pgfmath@x%
            \pgfmath@x=#1pt\relax%
        \fi%
        \let\pgfmath@next=\pgfmathmin@@%
    \fi%
    \pgfmath@next}

\def\pgfmathmin@@@{\pgfmath@returnone\pgfmath@x\endgroup}%

\def\pgfmathmin#1#2{%
    \pgfmathparse{#1,#2}%
    \expandafter\pgfmathmin@\expandafter{\pgfmathresult}%
}



\pgfmathdeclarefunction{scalar}{1}{%
  \def\pgfmathresult{#1}%
  \global\pgfmathunitsdeclaredfalse%
}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.misc.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.random.code.tex ====


\def\pgfmath@rnd@m{2147483647}%

\begingroup
\c@pgfmath@counta=\time%
\multiply\c@pgfmath@counta by\year%
\ifnum\c@pgfmath@counta=0
  \c@pgfmath@counta=1
\fi
\xdef\pgfmath@rnd@z{\the\c@pgfmath@counta}%
\endgroup

\def\pgfmathsetseed#1{%
    \pgfmathparse{#1}\expandafter\pgfmath@setseed\pgfmathresult.0\pgfmath@stop
}%
\def\pgfmath@setseed#1.#2\pgfmath@stop{\def\pgfmath@rnd@z{#1}}%

\def\pgfmath@rnd@a{69621}
\def\pgfmath@rnd@r{23902}
\def\pgfmath@rnd@q{30845}

\def\pgfmathgeneratepseudorandomnumber{%
    \begingroup%
        \c@pgfmath@counta=\pgfmath@rnd@z%
        \c@pgfmath@countb=\pgfmath@rnd@z%
        \c@pgfmath@countc=\pgfmath@rnd@q%
        \divide\c@pgfmath@counta by\c@pgfmath@countc%
        \multiply\c@pgfmath@counta by-\c@pgfmath@countc%
        \advance\c@pgfmath@counta by\c@pgfmath@countb
        \c@pgfmath@countc=\pgfmath@rnd@a%
        \multiply\c@pgfmath@counta by\c@pgfmath@countc%
        \c@pgfmath@countc=\pgfmath@rnd@q%
        \divide\c@pgfmath@countb by\c@pgfmath@countc%
        \c@pgfmath@countc=\pgfmath@rnd@r%
        \multiply\c@pgfmath@countb by\c@pgfmath@countc%
        \advance\c@pgfmath@counta by-\c@pgfmath@countb%
        \ifnum\c@pgfmath@counta<0\relax%
            \c@pgfmath@countb=\pgfmath@rnd@m%
            \advance\c@pgfmath@counta by\c@pgfmath@countb%
        \fi%
        \xdef\pgfmath@rnd@z{\the\c@pgfmath@counta}%
    \endgroup%
    \edef\pgfmathresult{\pgfmath@rnd@z}%
}

\pgfmathdeclarefunction{rnd}{0}{%
    \begingroup%
        \pgfmathgeneratepseudorandomnumber%
        \c@pgfmath@counta\pgfmathresult%
        \c@pgfmath@countb\c@pgfmath@counta%
        \divide\c@pgfmath@countb100001\relax%
        \multiply\c@pgfmath@countb-100001\relax%
        \advance\c@pgfmath@countb\c@pgfmath@counta%
        \advance\c@pgfmath@countb1000000\relax%
        \expandafter\pgfmathrnd@@\the\c@pgfmath@countb\pgfmath@%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}%

\def\pgfmathrnd@@#1#2#3\pgfmath@{%
    \edef\pgfmath@temp{#2.#3}%
    \pgfmath@x=\pgfmath@temp pt\relax%
}%

\pgfmathdeclarefunction{rand}{0}{%
    \begingroup%
        \pgfmathgeneratepseudorandomnumber%
        \c@pgfmath@counta\pgfmathresult%
        \c@pgfmath@countb\c@pgfmath@counta%
        \divide\c@pgfmath@countb200001\relax%
        \multiply\c@pgfmath@countb-200001\relax%
        \advance\c@pgfmath@countb\c@pgfmath@counta%
        \advance\c@pgfmath@countb-100000\relax%
        \ifnum\c@pgfmath@countb<0\relax%
            \advance\c@pgfmath@countb-1000000\relax%
        \else%
            \advance\c@pgfmath@countb1000000\relax%
        \fi%
        \expandafter\pgfmathrand@@\the\c@pgfmath@countb\pgfmath@%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}%

\def\pgfmathrand@@#1#2#3#4\pgfmath@{%
    \ifx#1-%
        \edef\pgfmath@temp{-#3.#4}%
    \else%
        \edef\pgfmath@temp{#2.#3#4}%
    \fi%
    \pgfmath@x=\pgfmath@temp pt\relax%
}%

\pgfmathdeclarefunction{random}{...}{%
    \begingroup%
        \def\pgfmath@temp{#1}%
        \ifx\pgfmath@temp\pgfmath@empty%
            \pgfmathrnd@%
        \else%
            \expandafter\pgfmathrandom@@#1\pgfmath@stop%
        \fi%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup}

\def\pgfmathrandom@@{\futurelet\pgfmath@token\pgfmathrandom@@@}
\def\pgfmathrandom@@@{%
    \ifx\pgfmath@token\bgroup%
        \expandafter\pgfmath@random@@@@%
    \else%
        \expandafter\pgfmath@random@@@@@%
    \fi%
}
\def\pgfmath@random@@@@@#1\pgfmath@stop{%
    \pgfmathrandominteger\pgfmathresult{1}{#1}%
}
\def\pgfmath@random@@@@#1#2\pgfmath@stop{%
    \pgfmathrandominteger\pgfmathresult{#1}{#2}%
}

\def\pgfmathrandominteger#1#2#3{%
    \begingroup%
        \pgfmathsetcount\c@pgfmath@counta{#2}%
        \pgfmathsetcount\c@pgfmath@countb{#3}%
        \c@pgfmath@countc\c@pgfmath@countb%
        \ifnum\c@pgfmath@counta>\c@pgfmath@countb\relax%
            \c@pgfmath@countc\c@pgfmath@counta%
            \c@pgfmath@counta\c@pgfmath@countb%
            \c@pgfmath@countb\c@pgfmath@countc%
        \fi%
        \c@pgfmath@countd\c@pgfmath@counta
        \advance\c@pgfmath@countc1\relax%
        \advance\c@pgfmath@countc-\c@pgfmath@counta%
        \pgfmathgeneratepseudorandomnumber%
        \c@pgfmath@counta\pgfmathresult\relax%
        \c@pgfmath@countb\c@pgfmath@counta%
        \divide\c@pgfmath@countb\c@pgfmath@countc%
        \multiply\c@pgfmath@countb-\c@pgfmath@countc%
        \advance\c@pgfmath@counta\c@pgfmath@countb%
        \advance\c@pgfmath@counta\c@pgfmath@countd
        \edef\pgfmathresult{\the\c@pgfmath@counta}%
        \pgfmath@smuggleone{\pgfmathresult}%
    \endgroup%
    \edef#1{\pgfmathresult}%
}

\def\pgfmathdeclarerandomlist#1#2{%
    \def\pgfmath@randomlistname{#1}%
    \begingroup%
        \c@pgfmath@counta=1\relax%
        \def\pgfmath@empty{pgfmath@empty}%
        \expandafter\pgfmath@scanrandomlist#2{pgfmath@empty}}
\def\pgfmath@scanrandomlist#1{%
    \def\pgfmath@scanneditem{#1}%
    \ifx\pgfmath@scanneditem\pgfmath@empty%
        \advance\c@pgfmath@counta-1\relax%
        \expandafter\xdef\csname pgfmath@randomlist@\pgfmath@randomlistname\endcsname{\the\c@pgfmath@counta}%
        \endgroup%
    \else%
        \expandafter\gdef\csname pgfmath@randomlist@\pgfmath@randomlistname @\the\c@pgfmath@counta\endcsname{#1}%
        \advance\c@pgfmath@counta1\relax%
        \expandafter\pgfmath@scanrandomlist%
    \fi}

\def\pgfmathrandomitem#1#2{%
    \pgfmath@ifundefined{pgfmath@randomlist@#2}{\pgfmath@error{Unknown random list `#2'}{}}{%
        \edef\pgfmath@randomlistlength{\csname pgfmath@randomlist@#2\endcsname}%
        \pgfmathrandominteger{\pgfmath@randomtemp}{1}{\pgfmath@randomlistlength}%
        \expandafter\def\expandafter#1\expandafter{\csname pgfmath@randomlist@#2@\pgfmath@randomtemp\endcsname}}}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.random.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.round.code.tex ====


\pgfmathdeclarefunction{round}{1}{%
    \begingroup%
        \expandafter\pgfmath@x#1pt\relax%
        \afterassignment\pgfmath@xa%
        \expandafter\c@pgfmath@counta\the\pgfmath@x\relax%
        \pgfmath@xb\pgfmath@x%
        \ifdim\pgfmath@xb<0pt\relax%
            \ifdim\pgfmath@xa<0.5pt\relax%
            \else%
                \advance\c@pgfmath@counta-1\relax%
            \fi%
        \else%
            \ifdim\pgfmath@xa<0.5pt\relax%
            \else%
                \advance\c@pgfmath@counta1\relax%
            \fi%
        \fi%
        \pgfmath@returnone\the\c@pgfmath@counta pt%
    \endgroup%
}%

\pgfmathdeclarefunction{floor}{1}{%
    \begingroup%
        \expandafter\pgfmath@x#1pt\relax%
        \afterassignment\pgfmathfloor@collect@remainder%
        \expandafter\c@pgfmath@counta\the\pgfmath@x\pgfmath@%
        \expandafter\pgfmath@x#1pt\relax%
        \ifdim\pgfmath@x<0pt\relax%
            \ifdim\pgfmathfloor@remainder>0pt
                \advance\c@pgfmath@counta by -1\relax%
            \else
            \fi
        \fi%
        \pgfmath@x\c@pgfmath@counta pt\relax%
        \pgfmath@returnone\pgfmath@x%
    \endgroup%
}%

\def\pgfmathfloor@collect@remainder#1\pgfmath@{%
    \def\pgfmathfloor@remainder{#1}%
    \ifx\pgfmathfloor@remainder\pgfutil@empty
        \def\pgfmathfloor@remainder{0}%
    \fi
}%

\pgfmathdeclarefunction{ceil}{1}{%
    \begingroup%
        \expandafter\pgfmath@x#1pt\relax%
        \afterassignment\pgfmath@gobbletilpgfmath@%
        \expandafter\c@pgfmath@counta\the\pgfmath@x\relax\pgfmath@%
        \pgfmath@y\pgfmath@x%
        \advance\pgfmath@y-\c@pgfmath@counta pt\relax%
        \pgfmath@x\c@pgfmath@counta pt\relax%
        \ifdim\pgfmath@y>0pt\relax%
            \advance\pgfmath@x1pt\relax%
        \fi%
    \pgfmath@returnone\pgfmath@x%
    \endgroup%
}%

\pgfmathdeclarefunction{int}{1}{%
    \begingroup%
        \expandafter\pgfmathint@@#1.\pgfmath@stop
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup}

\def\pgfmathint@@#1.#2\pgfmath@stop{%
    \def\pgfmath@temp{#1}%
    \ifx\pgfmath@temp\pgfmath@empty%
        \def\pgfmathresult{0}%
    \else%
        \pgfmath@in@{#1}{+-+0-0}%
        \ifpgfmath@in@
            \def\pgfmathresult{0}%
        \else%
            \def\pgfmathresult{#1}%
        \fi%
    \fi}

\pgfmathdeclarefunction{frac}{1}{%
    \begingroup%
        \expandafter\pgfmathfrac@@#1.\pgfmath@stop%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup}

\def\pgfmathfrac@@#1.{%
    \pgfmath@ifnextchar\pgfmath@stop{\def\pgfmathresult{0.0}\pgfmath@gobbleone}{\pgfmathfrac@@@}%
}
\def\pgfmathfrac@@@#1.\pgfmath@stop{\def\pgfmathresult{0.#1}}

\pgfmathdeclarefunction{real}{1}{%
    \begingroup%
        \pgfmath@x=#1pt\relax%
        \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
        \pgfmath@smuggleone\pgfmathresult%
    \endgroup%
}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.round.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.trigonometric.code.tex ====


\pgfmathdeclarefunction{pi}{0}{\def\pgfmathresult{3.141592654}}

\pgfkeys{
    /pgf/trig format/.is choice,
    /pgf/trig format/deg/.code={\def\pgfmath@trig@format@choice{0}},
    /pgf/trig format/rad/.code={\def\pgfmath@trig@format@choice{1}},
    /pgf/trig format/deg,
}

\def\pgfmathiftrigonometricusesdeg#1#2{%
    \if0\pgfmath@trig@format@choice
        #1%
    \else
        #2%
    \fi
}%

\pgfmathdeclarefunction{radians}{1}{%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \pgfmath@x57.29577\pgfmath@x\relax%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}%

\pgfmathdeclarefunction{deg}{1}{%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \pgfmath@scale@rad@to@deg\pgfmath@x
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}%

\def\pgfmath@scale@rad@to@deg#1{%
    #1=57.29577#1\relax%
}%

\pgfmathdeclarefunction{rad}{1}{%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \pgfmath@scale@deg@to@rad\pgfmath@x
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}%

\def\pgfmath@scale@deg@to@rad#1{%
    #1=3.14159#1%
    \divide#1180\relax%
}%

\pgfmathdeclarefunction{sin}{1}{%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \if1\pgfmath@trig@format@choice
        \pgfmath@scale@rad@to@deg\pgfmath@x
    \fi
    \advance\pgfmath@x-90pt\relax%
    \afterassignment\pgfmath@gobbletilpgfmath@
    \expandafter\c@pgfmath@counta\the\pgfmath@x\relax\pgfmath@
    \divide\c@pgfmath@counta360\relax%
    \multiply\c@pgfmath@counta-360\relax%
    \advance\pgfmath@x\c@pgfmath@counta pt\relax%
    \ifdim\pgfmath@x<0pt\relax\pgfmath@x-\pgfmath@x\fi%
    \ifdim\pgfmath@x<180pt\relax%
    \else
      \pgfmath@x-\pgfmath@x%
      \advance\pgfmath@x360pt\relax%
    \fi%
    \afterassignment\pgfmath@xa%
    \expandafter\c@pgfmath@counta\the\pgfmath@x\relax%
    \ifdim\pgfmath@xa=0pt%
      \expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname pt\relax%
    \else%
      \pgfmath@x-\pgfmath@xa%
      \advance\pgfmath@x1pt\relax%
      \expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@x%
      \advance\c@pgfmath@counta1\relax%
      \ifnum\c@pgfmath@counta=181\relax\c@pgfmath@counta179\relax\fi%
      \expandafter\advance\expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@xa%
    \fi%
    \pgfmath@returnone\pgfmath@x%
  \endgroup
}

\pgfmathdeclarefunction{cos}{1}{%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \if1\pgfmath@trig@format@choice
        \pgfmath@scale@rad@to@deg\pgfmath@x
    \fi
    \afterassignment\pgfmath@gobbletilpgfmath@%
    \expandafter\c@pgfmath@counta\the\pgfmath@x\relax\pgfmath@%
    \divide\c@pgfmath@counta360\relax%
    \multiply\c@pgfmath@counta-360\relax%
    \advance\pgfmath@x\c@pgfmath@counta pt\relax%
    \ifdim\pgfmath@x<0pt\relax\pgfmath@x-\pgfmath@x\fi%
    \ifdim\pgfmath@x<180pt\relax%
    \else%
      \pgfmath@x-\pgfmath@x%
      \advance\pgfmath@x360pt\relax%
    \fi%
    \afterassignment\pgfmath@xa%
    \expandafter\c@pgfmath@counta\the\pgfmath@x\relax%
    \ifdim\pgfmath@xa=0pt%
      \expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname pt%
    \else%
      \pgfmath@x-\pgfmath@xa%
      \advance\pgfmath@x1pt\relax%
      \expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@x%
      \advance\c@pgfmath@counta1\relax%
      \ifnum\c@pgfmath@counta=181\relax\c@pgfmath@counta179\relax\fi%
      \expandafter\advance\expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@xa%
    \fi%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\def\pgfmathsincos#1{%
  \pgfmathparse{#1}%
  \expandafter\pgfmathsincos@\expandafter{\pgfmathresult}}
\def\pgfmathsincos@#1{%
  \edef\pgfmath@temparg{#1}%
  \pgfmathsin@{\pgfmath@temparg}\edef\pgfmathresulty{\pgfmathresult}%
  \pgfmathcos@{\pgfmath@temparg}\edef\pgfmathresultx{\pgfmathresult}%
}

\pgfmathdeclarefunction{tan}{1}{%
  \begingroup%
    \edef\pgfmath@temparg{#1}%
    \pgfmathcos@{\pgfmath@temparg}%
    \expandafter\pgfmathreciprocal@\expandafter{\pgfmathresult}%
    \edef\pgfmath@tantemp{\pgfmathresult}%
    \pgfmathsin@{\pgfmath@temparg}%
    \pgfmath@x\pgfmathresult pt\relax%
    \pgfmath@x\pgfmath@tantemp\pgfmath@x%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\pgfmathdeclarefunction{cosec}{1}{%
  \expandafter\pgfmathsin@\expandafter{#1}%
  \pgfmathreciprocal@{\pgfmathresult}%
}

\pgfmathdeclarefunction{sec}{1}{%
  \expandafter\pgfmathcos@\expandafter{#1}%
  \pgfmathreciprocal@{\pgfmathresult}%
}

\pgfmathdeclarefunction{cot}{1}{%
  \begingroup%
    \edef\pgfmath@temparg{#1}%
    \pgfmathsin@{\pgfmath@temparg}%
    \expandafter\pgfmathreciprocal@\expandafter{\pgfmathresult}%
    \edef\pgfmath@tantemp{\pgfmathresult}%
    \pgfmathcos@{\pgfmath@temparg}%
    \pgfmath@x\pgfmathresult pt\relax%
    \pgfmath@x\pgfmath@tantemp\pgfmath@x%
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\def\pgfmath@multiply@thousand#1.#2#3#4#5\relax{%
  \edef\pgfmathresult{#1#2#3#4.#5}%
}%

\pgfmathdeclarefunction{asin}{1}{%
  \begingroup%
    \pgfmath@x=#1pt %
    \pgfmath@xa\pgfmath@x%
    \edef\pgf@temp{\pgfmath@tonumber\pgfmath@x}%
    \expandafter\pgfmath@multiply@thousand\pgf@temp 000\relax
    \pgfmath@x=\pgfmathresult pt %
    \ifdim\pgfmath@x<0pt\relax%
      \pgfmath@x-\pgfmath@x%
    \fi%
    \pgfmath@table@lookup{\pgfmath@x}{pgfmath@acos@}{1001}%
    \pgfmath@x=-\pgfmath@x
    \advance\pgfmath@x90pt\relax%
    \ifdim\pgfmath@xa<0pt\relax%
      \pgfmath@x-\pgfmath@x%
    \fi%
    \if1\pgfmath@trig@format@choice
        \pgfmath@scale@deg@to@rad\pgfmath@x
    \fi
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\def\pgfmath@table@lookup#1#2#3{%
  \pgfmath@x=#1\relax
  \expandafter\pgfmath@table@lookup@\the\pgfmath@x\relax{#2}{#3}%
}
\def\pgfmath@table@lookup@#1.#2\relax#3#4{%
  \edef\pgf@temp{\Pgf@geT#2}%
  \pgfmath@x=\csname #3#1\endcsname pt %
  \c@pgfmath@countc=#1 %
  \advance\c@pgfmath@countc by1 %
  \ifnum\c@pgfmath@countc<#4 %
    \pgfmath@ya=\csname #3\the\c@pgfmath@countc\endcsname pt %
    \advance\pgfmath@ya by-\pgfmath@x %
    \advance\pgfmath@x by0.\pgf@temp\pgfmath@ya
  \fi
}%

\pgfmathdeclarefunction{acos}{1}{%
  \begingroup%
    \pgfmath@x#1pt\relax%
    \pgfmath@xa\pgfmath@x%
    \edef\pgf@temp{\pgfmath@tonumber\pgfmath@x}%
    \expandafter\pgfmath@multiply@thousand\pgf@temp 000\relax
    \pgfmath@x=\pgfmathresult pt %
    \ifdim\pgfmath@x<0pt\relax%
      \pgfmath@x-\pgfmath@x%
    \fi%
    \pgfmath@table@lookup{\pgfmath@x}{pgfmath@acos@}{1001}%
    \ifdim\pgfmath@xa<0pt\relax%
      \pgfmath@x-\pgfmath@x%
      \advance\pgfmath@x by180pt\relax%
    \fi%
    \if1\pgfmath@trig@format@choice
        \pgfmath@scale@deg@to@rad\pgfmath@x
    \fi
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\pgfmathdeclarefunction{atan}{1}{%
  \begingroup%
    \expandafter\pgfmath@x#1pt\relax%
    \pgfmath@xa\pgfmath@x%
    \ifdim\pgfmath@x<0pt\relax%
      \pgfmath@x-\pgfmath@x%
    \fi%
    \pgfmath@xb\pgfmath@x%
    \ifdim\pgfmath@x>1pt\relax%
      \edef\pgfmath@temp{\pgfmath@tonumber{\pgfmath@x}}%
      \pgfmathreciprocal@{\pgfmath@temp}%
      \pgfmath@x\pgfmathresult pt\relax%
    \fi%
    \edef\pgf@temp{\pgfmath@tonumber\pgfmath@x}%
    \expandafter\pgfmath@multiply@thousand\pgf@temp 000\relax
    \pgfmath@x=\pgfmathresult pt %
    \pgfmath@table@lookup{\pgfmath@x}{pgfmath@atan@}{1001}%
    \ifdim\pgfmath@xb>1pt\relax%
      \pgfmath@x=-\pgfmath@x%
      \advance\pgfmath@x90pt%
    \fi%
    \ifdim\pgfmath@xa<0pt\relax%
      \pgfmath@x-\pgfmath@x%
    \fi%
    \if1\pgfmath@trig@format@choice
        \pgfmath@scale@deg@to@rad\pgfmath@x
    \fi
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\pgfmathdeclarefunction{atan2}{2}{%
  \begingroup%
    \let\pgfmath@trig@format@choice@@=\pgfmath@trig@format@choice
    \def\pgfmath@trig@format@choice{0}%
    \pgfmath@y=#1pt\relax%
    \ifdim\pgfmath@y<0pt\relax%
      \pgfmath@y=-\pgfmath@y%
    \fi%
    \ifdim\pgfmath@y<0.001pt\relax%
      \ifdim#2pt<0pt\relax%
        \pgfmath@x=+180pt\relax%
      \else%
        \ifdim#2pt>0pt\relax%
          \pgfmath@x=0pt\relax%
        \else%
          \ifdim#1pt<0pt%
            \pgfmath@x=-90pt\relax%
          \else%
            \pgfmath@x=90pt\relax%
          \fi%
        \fi%
      \fi%
    \else%
      \pgfmathabs@{#1}\let\pgfmath@tempa\pgfmathresult%
      \pgfmathabs@{#2}\let\pgfmath@tempb\pgfmathresult%
      \ifdim\pgfmath@tempa pt>\pgfmath@tempb pt%
        \pgfmathdivide@{#2}{\pgfmath@tempa}%
        \expandafter\pgfmathatan@\expandafter{\pgfmathresult}%
        \pgfmath@x=90pt%
        \advance\pgfmath@x by-\pgfmathresult pt\relax%
      \else%
        \pgfmathdivide@{\pgfmath@tempa}{#2}%
        \expandafter\pgfmathatan@\expandafter{\pgfmathresult}%
        \pgfmath@x=\pgfmathresult pt\relax%
        \ifdim#2pt<0pt%
          \advance\pgfmath@x by180pt\relax%
        \fi%
      \fi%
      \ifdim#1pt<0pt\relax%
        \pgfmath@x=-\pgfmath@x%
      \fi%
    \fi%
    \if1\pgfmath@trig@format@choice@@
        \pgfmath@scale@deg@to@rad\pgfmath@x
    \fi
    \pgfmath@returnone\pgfmath@x%
  \endgroup%
}

\expandafter\let\expandafter\pgfmathatantwo\csname pgfmathatan2\endcsname
\expandafter\let\expandafter\pgfmathatantwo@\csname pgfmathatan2@\endcsname

\def\pgfmath@def#1#2#3{\expandafter\def\csname pgfmath@#1@#2\endcsname{#3}}
\pgfmath@def{cos}{0}{1.00000}    \pgfmath@def{cos}{1}{0.99985}
\pgfmath@def{cos}{2}{0.99939}    \pgfmath@def{cos}{3}{0.99863}
\pgfmath@def{cos}{4}{0.99756}    \pgfmath@def{cos}{5}{0.99619}
\pgfmath@def{cos}{6}{0.99452}    \pgfmath@def{cos}{7}{0.99255}
\pgfmath@def{cos}{8}{0.99027}    \pgfmath@def{cos}{9}{0.98769}
\pgfmath@def{cos}{10}{0.98481}    \pgfmath@def{cos}{11}{0.98163}
\pgfmath@def{cos}{12}{0.97815}    \pgfmath@def{cos}{13}{0.97437}
\pgfmath@def{cos}{14}{0.97030}    \pgfmath@def{cos}{15}{0.96593}
\pgfmath@def{cos}{16}{0.96126}    \pgfmath@def{cos}{17}{0.95630}
\pgfmath@def{cos}{18}{0.95106}    \pgfmath@def{cos}{19}{0.94552}
\pgfmath@def{cos}{20}{0.93969}    \pgfmath@def{cos}{21}{0.93358}
\pgfmath@def{cos}{22}{0.92718}    \pgfmath@def{cos}{23}{0.92050}
\pgfmath@def{cos}{24}{0.91355}    \pgfmath@def{cos}{25}{0.90631}
\pgfmath@def{cos}{26}{0.89879}    \pgfmath@def{cos}{27}{0.89101}
\pgfmath@def{cos}{28}{0.88295}    \pgfmath@def{cos}{29}{0.87462}
\pgfmath@def{cos}{30}{0.86603}    \pgfmath@def{cos}{31}{0.85717}
\pgfmath@def{cos}{32}{0.84805}    \pgfmath@def{cos}{33}{0.83867}
\pgfmath@def{cos}{34}{0.82904}    \pgfmath@def{cos}{35}{0.81915}
\pgfmath@def{cos}{36}{0.80902}    \pgfmath@def{cos}{37}{0.79864}
\pgfmath@def{cos}{38}{0.78801}    \pgfmath@def{cos}{39}{0.77715}
\pgfmath@def{cos}{40}{0.76604}    \pgfmath@def{cos}{41}{0.75471}
\pgfmath@def{cos}{42}{0.74314}    \pgfmath@def{cos}{43}{0.73135}
\pgfmath@def{cos}{44}{0.71934}    \pgfmath@def{cos}{45}{0.70711}
\pgfmath@def{cos}{46}{0.69466}    \pgfmath@def{cos}{47}{0.68200}
\pgfmath@def{cos}{48}{0.66913}    \pgfmath@def{cos}{49}{0.65606}
\pgfmath@def{cos}{50}{0.64279}    \pgfmath@def{cos}{51}{0.62932}
\pgfmath@def{cos}{52}{0.61566}    \pgfmath@def{cos}{53}{0.60182}
\pgfmath@def{cos}{54}{0.58779}    \pgfmath@def{cos}{55}{0.57358}
\pgfmath@def{cos}{56}{0.55919}    \pgfmath@def{cos}{57}{0.54464}
\pgfmath@def{cos}{58}{0.52992}    \pgfmath@def{cos}{59}{0.51504}
\pgfmath@def{cos}{60}{0.50000}    \pgfmath@def{cos}{61}{0.48481}
\pgfmath@def{cos}{62}{0.46947}    \pgfmath@def{cos}{63}{0.45399}
\pgfmath@def{cos}{64}{0.43837}    \pgfmath@def{cos}{65}{0.42262}
\pgfmath@def{cos}{66}{0.40674}    \pgfmath@def{cos}{67}{0.39073}
\pgfmath@def{cos}{68}{0.37461}    \pgfmath@def{cos}{69}{0.35837}
\pgfmath@def{cos}{70}{0.34202}    \pgfmath@def{cos}{71}{0.32557}
\pgfmath@def{cos}{72}{0.30902}    \pgfmath@def{cos}{73}{0.29237}
\pgfmath@def{cos}{74}{0.27564}    \pgfmath@def{cos}{75}{0.25882}
\pgfmath@def{cos}{76}{0.24192}    \pgfmath@def{cos}{77}{0.22495}
\pgfmath@def{cos}{78}{0.20791}    \pgfmath@def{cos}{79}{0.19081}
\pgfmath@def{cos}{80}{0.17365}    \pgfmath@def{cos}{81}{0.15643}
\pgfmath@def{cos}{82}{0.13917}    \pgfmath@def{cos}{83}{0.12187}
\pgfmath@def{cos}{84}{0.10453}    \pgfmath@def{cos}{85}{0.08716}
\pgfmath@def{cos}{86}{0.06976}    \pgfmath@def{cos}{87}{0.05234}
\pgfmath@def{cos}{88}{0.03490}    \pgfmath@def{cos}{89}{0.01745}
\pgfmath@def{cos}{90}{0.00000}    \pgfmath@def{cos}{91}{-0.01745}
\pgfmath@def{cos}{92}{-0.03490}    \pgfmath@def{cos}{93}{-0.05234}
\pgfmath@def{cos}{94}{-0.06976}    \pgfmath@def{cos}{95}{-0.08716}
\pgfmath@def{cos}{96}{-0.10453}    \pgfmath@def{cos}{97}{-0.12187}
\pgfmath@def{cos}{98}{-0.13917}    \pgfmath@def{cos}{99}{-0.15643}
\pgfmath@def{cos}{100}{-0.17365}    \pgfmath@def{cos}{101}{-0.19081}
\pgfmath@def{cos}{102}{-0.20791}    \pgfmath@def{cos}{103}{-0.22495}
\pgfmath@def{cos}{104}{-0.24192}    \pgfmath@def{cos}{105}{-0.25882}
\pgfmath@def{cos}{106}{-0.27564}    \pgfmath@def{cos}{107}{-0.29237}
\pgfmath@def{cos}{108}{-0.30902}    \pgfmath@def{cos}{109}{-0.32557}
\pgfmath@def{cos}{110}{-0.34202}    \pgfmath@def{cos}{111}{-0.35837}
\pgfmath@def{cos}{112}{-0.37461}    \pgfmath@def{cos}{113}{-0.39073}
\pgfmath@def{cos}{114}{-0.40674}    \pgfmath@def{cos}{115}{-0.42262}
\pgfmath@def{cos}{116}{-0.43837}    \pgfmath@def{cos}{117}{-0.45399}
\pgfmath@def{cos}{118}{-0.46947}    \pgfmath@def{cos}{119}{-0.48481}
\pgfmath@def{cos}{120}{-0.50000}    \pgfmath@def{cos}{121}{-0.51504}
\pgfmath@def{cos}{122}{-0.52992}    \pgfmath@def{cos}{123}{-0.54464}
\pgfmath@def{cos}{124}{-0.55919}    \pgfmath@def{cos}{125}{-0.57358}
\pgfmath@def{cos}{126}{-0.58779}    \pgfmath@def{cos}{127}{-0.60182}
\pgfmath@def{cos}{128}{-0.61566}    \pgfmath@def{cos}{129}{-0.62932}
\pgfmath@def{cos}{130}{-0.64279}    \pgfmath@def{cos}{131}{-0.65606}
\pgfmath@def{cos}{132}{-0.66913}    \pgfmath@def{cos}{133}{-0.68200}
\pgfmath@def{cos}{134}{-0.69466}    \pgfmath@def{cos}{135}{-0.70711}
\pgfmath@def{cos}{136}{-0.71934}    \pgfmath@def{cos}{137}{-0.73135}
\pgfmath@def{cos}{138}{-0.74314}    \pgfmath@def{cos}{139}{-0.75471}
\pgfmath@def{cos}{140}{-0.76604}    \pgfmath@def{cos}{141}{-0.77715}
\pgfmath@def{cos}{142}{-0.78801}    \pgfmath@def{cos}{143}{-0.79864}
\pgfmath@def{cos}{144}{-0.80902}    \pgfmath@def{cos}{145}{-0.81915}
\pgfmath@def{cos}{146}{-0.82904}    \pgfmath@def{cos}{147}{-0.83867}
\pgfmath@def{cos}{148}{-0.84805}    \pgfmath@def{cos}{149}{-0.85717}
\pgfmath@def{cos}{150}{-0.86603}    \pgfmath@def{cos}{151}{-0.87462}
\pgfmath@def{cos}{152}{-0.88295}    \pgfmath@def{cos}{153}{-0.89101}
\pgfmath@def{cos}{154}{-0.89879}    \pgfmath@def{cos}{155}{-0.90631}
\pgfmath@def{cos}{156}{-0.91355}    \pgfmath@def{cos}{157}{-0.92050}
\pgfmath@def{cos}{158}{-0.92718}    \pgfmath@def{cos}{159}{-0.93358}
\pgfmath@def{cos}{160}{-0.93969}    \pgfmath@def{cos}{161}{-0.94552}
\pgfmath@def{cos}{162}{-0.95106}    \pgfmath@def{cos}{163}{-0.95630}
\pgfmath@def{cos}{164}{-0.96126}    \pgfmath@def{cos}{165}{-0.96593}
\pgfmath@def{cos}{166}{-0.97030}    \pgfmath@def{cos}{167}{-0.97437}
\pgfmath@def{cos}{168}{-0.97815}    \pgfmath@def{cos}{169}{-0.98163}
\pgfmath@def{cos}{170}{-0.98481}    \pgfmath@def{cos}{171}{-0.98769}
\pgfmath@def{cos}{172}{-0.99027}    \pgfmath@def{cos}{173}{-0.99255}
\pgfmath@def{cos}{174}{-0.99452}    \pgfmath@def{cos}{175}{-0.99619}
\pgfmath@def{cos}{176}{-0.99756}    \pgfmath@def{cos}{177}{-0.99863}
\pgfmath@def{cos}{178}{-0.99939}    \pgfmath@def{cos}{179}{-0.99985}
\pgfmath@def{cos}{180}{-1.00000}     \pgfmath@def{cos}{181}{-0.99985}

\pgfmath@def{cosfrac}{0}{1.00000}    \pgfmath@def{cosfrac}{1}{0.99995}
\pgfmath@def{cosfrac}{2}{0.99980}    \pgfmath@def{cosfrac}{3}{0.99955}
\pgfmath@def{cosfrac}{4}{0.99920}    \pgfmath@def{cosfrac}{5}{0.99875}
\pgfmath@def{cosfrac}{6}{0.99820}    \pgfmath@def{cosfrac}{7}{0.99755}
\pgfmath@def{cosfrac}{8}{0.99681}    \pgfmath@def{cosfrac}{9}{0.99597}
\pgfmath@def{cosfrac}{10}{0.99503}    \pgfmath@def{cosfrac}{11}{0.99400}
\pgfmath@def{cosfrac}{12}{0.99287}    \pgfmath@def{cosfrac}{13}{0.99165}
\pgfmath@def{cosfrac}{14}{0.99034}    \pgfmath@def{cosfrac}{15}{0.98893}
\pgfmath@def{cosfrac}{16}{0.98744}    \pgfmath@def{cosfrac}{17}{0.98585}
\pgfmath@def{cosfrac}{18}{0.98418}    \pgfmath@def{cosfrac}{19}{0.98242}
\pgfmath@def{cosfrac}{20}{0.98058}    \pgfmath@def{cosfrac}{21}{0.97865}
\pgfmath@def{cosfrac}{22}{0.97664}    \pgfmath@def{cosfrac}{23}{0.97455}
\pgfmath@def{cosfrac}{24}{0.97238}    \pgfmath@def{cosfrac}{25}{0.97014}
\pgfmath@def{cosfrac}{26}{0.96782}    \pgfmath@def{cosfrac}{27}{0.96542}
\pgfmath@def{cosfrac}{28}{0.96296}    \pgfmath@def{cosfrac}{29}{0.96042}
\pgfmath@def{cosfrac}{30}{0.95782}    \pgfmath@def{cosfrac}{31}{0.95515}
\pgfmath@def{cosfrac}{32}{0.95242}    \pgfmath@def{cosfrac}{33}{0.94962}
\pgfmath@def{cosfrac}{34}{0.94677}    \pgfmath@def{cosfrac}{35}{0.94385}
\pgfmath@def{cosfrac}{36}{0.94088}    \pgfmath@def{cosfrac}{37}{0.93786}
\pgfmath@def{cosfrac}{38}{0.93478}    \pgfmath@def{cosfrac}{39}{0.93165}
\pgfmath@def{cosfrac}{40}{0.92847}    \pgfmath@def{cosfrac}{41}{0.92525}
\pgfmath@def{cosfrac}{42}{0.92198}    \pgfmath@def{cosfrac}{43}{0.91866}
\pgfmath@def{cosfrac}{44}{0.91531}    \pgfmath@def{cosfrac}{45}{0.91192}
\pgfmath@def{cosfrac}{46}{0.90849}    \pgfmath@def{cosfrac}{47}{0.90502}
\pgfmath@def{cosfrac}{48}{0.90152}    \pgfmath@def{cosfrac}{49}{0.89799}
\pgfmath@def{cosfrac}{50}{0.89442}    \pgfmath@def{cosfrac}{51}{0.89083}
\pgfmath@def{cosfrac}{52}{0.88721}    \pgfmath@def{cosfrac}{53}{0.88357}
\pgfmath@def{cosfrac}{54}{0.87990}    \pgfmath@def{cosfrac}{55}{0.87621}
\pgfmath@def{cosfrac}{56}{0.87250}    \pgfmath@def{cosfrac}{57}{0.86877}
\pgfmath@def{cosfrac}{58}{0.86503}    \pgfmath@def{cosfrac}{59}{0.86126}
\pgfmath@def{cosfrac}{60}{0.85749}    \pgfmath@def{cosfrac}{61}{0.85370}
\pgfmath@def{cosfrac}{62}{0.84990}    \pgfmath@def{cosfrac}{63}{0.84609}
\pgfmath@def{cosfrac}{64}{0.84227}    \pgfmath@def{cosfrac}{65}{0.83844}
\pgfmath@def{cosfrac}{66}{0.83460}    \pgfmath@def{cosfrac}{67}{0.83077}
\pgfmath@def{cosfrac}{68}{0.82692}    \pgfmath@def{cosfrac}{69}{0.82308}
\pgfmath@def{cosfrac}{70}{0.81923}    \pgfmath@def{cosfrac}{71}{0.81538}
\pgfmath@def{cosfrac}{72}{0.81153}    \pgfmath@def{cosfrac}{73}{0.80768}
\pgfmath@def{cosfrac}{74}{0.80384}    \pgfmath@def{cosfrac}{75}{0.80000}
\pgfmath@def{cosfrac}{76}{0.79616}    \pgfmath@def{cosfrac}{77}{0.79232}
\pgfmath@def{cosfrac}{78}{0.78850}    \pgfmath@def{cosfrac}{79}{0.78468}
\pgfmath@def{cosfrac}{80}{0.78086}    \pgfmath@def{cosfrac}{81}{0.77706}
\pgfmath@def{cosfrac}{82}{0.77326}    \pgfmath@def{cosfrac}{83}{0.76948}
\pgfmath@def{cosfrac}{84}{0.76570}    \pgfmath@def{cosfrac}{85}{0.76193}
\pgfmath@def{cosfrac}{86}{0.75818}    \pgfmath@def{cosfrac}{87}{0.75444}
\pgfmath@def{cosfrac}{88}{0.75071}    \pgfmath@def{cosfrac}{89}{0.74699}
\pgfmath@def{cosfrac}{90}{0.74329}    \pgfmath@def{cosfrac}{91}{0.73960}
\pgfmath@def{cosfrac}{92}{0.73593}    \pgfmath@def{cosfrac}{93}{0.73227}
\pgfmath@def{cosfrac}{94}{0.72862}    \pgfmath@def{cosfrac}{95}{0.72499}
\pgfmath@def{cosfrac}{96}{0.72138}    \pgfmath@def{cosfrac}{97}{0.71779}
\pgfmath@def{cosfrac}{98}{0.71421}    \pgfmath@def{cosfrac}{99}{0.71065}
\pgfmath@def{cosfrac}{100}{0.70710}

\pgfmath@def{atan}{0}{0.00000}    \pgfmath@def{atan}{1}{0.05729}
\pgfmath@def{atan}{2}{0.11459}    \pgfmath@def{atan}{3}{0.17188}
\pgfmath@def{atan}{4}{0.22918}    \pgfmath@def{atan}{5}{0.28647}
\pgfmath@def{atan}{6}{0.34377}    \pgfmath@def{atan}{7}{0.40106}
\pgfmath@def{atan}{8}{0.45835}    \pgfmath@def{atan}{9}{0.51564}
\pgfmath@def{atan}{10}{0.57293}    \pgfmath@def{atan}{11}{0.63022}
\pgfmath@def{atan}{12}{0.68751}    \pgfmath@def{atan}{13}{0.74480}
\pgfmath@def{atan}{14}{0.80208}    \pgfmath@def{atan}{15}{0.85937}
\pgfmath@def{atan}{16}{0.91665}    \pgfmath@def{atan}{17}{0.97393}
\pgfmath@def{atan}{18}{1.03121}    \pgfmath@def{atan}{19}{1.08848}
\pgfmath@def{atan}{20}{1.14576}    \pgfmath@def{atan}{21}{1.20303}
\pgfmath@def{atan}{22}{1.26030}    \pgfmath@def{atan}{23}{1.31757}
\pgfmath@def{atan}{24}{1.37483}    \pgfmath@def{atan}{25}{1.43209}
\pgfmath@def{atan}{26}{1.48935}    \pgfmath@def{atan}{27}{1.54661}
\pgfmath@def{atan}{28}{1.60386}    \pgfmath@def{atan}{29}{1.66111}
\pgfmath@def{atan}{30}{1.71835}    \pgfmath@def{atan}{31}{1.77560}
\pgfmath@def{atan}{32}{1.83284}    \pgfmath@def{atan}{33}{1.89007}
\pgfmath@def{atan}{34}{1.94730}    \pgfmath@def{atan}{35}{2.00453}
\pgfmath@def{atan}{36}{2.06175}    \pgfmath@def{atan}{37}{2.11897}
\pgfmath@def{atan}{38}{2.17619}    \pgfmath@def{atan}{39}{2.23340}
\pgfmath@def{atan}{40}{2.29061}    \pgfmath@def{atan}{41}{2.34781}
\pgfmath@def{atan}{42}{2.40500}    \pgfmath@def{atan}{43}{2.46220}
\pgfmath@def{atan}{44}{2.51938}    \pgfmath@def{atan}{45}{2.57657}
\pgfmath@def{atan}{46}{2.63374}    \pgfmath@def{atan}{47}{2.69092}
\pgfmath@def{atan}{48}{2.74808}    \pgfmath@def{atan}{49}{2.80524}
\pgfmath@def{atan}{50}{2.86240}    \pgfmath@def{atan}{51}{2.91955}
\pgfmath@def{atan}{52}{2.97669}    \pgfmath@def{atan}{53}{3.03383}
\pgfmath@def{atan}{54}{3.09097}    \pgfmath@def{atan}{55}{3.14809}
\pgfmath@def{atan}{56}{3.20521}    \pgfmath@def{atan}{57}{3.26232}
\pgfmath@def{atan}{58}{3.31943}    \pgfmath@def{atan}{59}{3.37653}
\pgfmath@def{atan}{60}{3.43363}    \pgfmath@def{atan}{61}{3.49071}
\pgfmath@def{atan}{62}{3.54779}    \pgfmath@def{atan}{63}{3.60487}
\pgfmath@def{atan}{64}{3.66193}    \pgfmath@def{atan}{65}{3.71899}
\pgfmath@def{atan}{66}{3.77604}    \pgfmath@def{atan}{67}{3.83308}
\pgfmath@def{atan}{68}{3.89012}    \pgfmath@def{atan}{69}{3.94715}
\pgfmath@def{atan}{70}{4.00417}    \pgfmath@def{atan}{71}{4.06118}
\pgfmath@def{atan}{72}{4.11819}    \pgfmath@def{atan}{73}{4.17518}
\pgfmath@def{atan}{74}{4.23217}    \pgfmath@def{atan}{75}{4.28915}
\pgfmath@def{atan}{76}{4.34612}    \pgfmath@def{atan}{77}{4.40308}
\pgfmath@def{atan}{78}{4.46004}    \pgfmath@def{atan}{79}{4.51698}
\pgfmath@def{atan}{80}{4.57392}    \pgfmath@def{atan}{81}{4.63084}
\pgfmath@def{atan}{82}{4.68776}    \pgfmath@def{atan}{83}{4.74467}
\pgfmath@def{atan}{84}{4.80157}    \pgfmath@def{atan}{85}{4.85846}
\pgfmath@def{atan}{86}{4.91534}    \pgfmath@def{atan}{87}{4.97221}
\pgfmath@def{atan}{88}{5.02907}    \pgfmath@def{atan}{89}{5.08592}
\pgfmath@def{atan}{90}{5.14276}    \pgfmath@def{atan}{91}{5.19959}
\pgfmath@def{atan}{92}{5.25641}    \pgfmath@def{atan}{93}{5.31322}
\pgfmath@def{atan}{94}{5.37002}    \pgfmath@def{atan}{95}{5.42681}
\pgfmath@def{atan}{96}{5.48359}    \pgfmath@def{atan}{97}{5.54035}
\pgfmath@def{atan}{98}{5.59711}    \pgfmath@def{atan}{99}{5.65385}
\pgfmath@def{atan}{100}{5.71059}    \pgfmath@def{atan}{101}{5.76731}
\pgfmath@def{atan}{102}{5.82402}    \pgfmath@def{atan}{103}{5.88072}
\pgfmath@def{atan}{104}{5.93741}    \pgfmath@def{atan}{105}{5.99409}
\pgfmath@def{atan}{106}{6.05075}    \pgfmath@def{atan}{107}{6.10741}
\pgfmath@def{atan}{108}{6.16405}    \pgfmath@def{atan}{109}{6.22068}
\pgfmath@def{atan}{110}{6.27729}    \pgfmath@def{atan}{111}{6.33390}
\pgfmath@def{atan}{112}{6.39049}    \pgfmath@def{atan}{113}{6.44707}
\pgfmath@def{atan}{114}{6.50364}    \pgfmath@def{atan}{115}{6.56019}
\pgfmath@def{atan}{116}{6.61673}    \pgfmath@def{atan}{117}{6.67326}
\pgfmath@def{atan}{118}{6.72978}    \pgfmath@def{atan}{119}{6.78628}
\pgfmath@def{atan}{120}{6.84277}    \pgfmath@def{atan}{121}{6.89924}
\pgfmath@def{atan}{122}{6.95571}    \pgfmath@def{atan}{123}{7.01216}
\pgfmath@def{atan}{124}{7.06859}    \pgfmath@def{atan}{125}{7.12501}
\pgfmath@def{atan}{126}{7.18142}    \pgfmath@def{atan}{127}{7.23781}
\pgfmath@def{atan}{128}{7.29419}    \pgfmath@def{atan}{129}{7.35056}
\pgfmath@def{atan}{130}{7.40691}    \pgfmath@def{atan}{131}{7.46324}
\pgfmath@def{atan}{132}{7.51957}    \pgfmath@def{atan}{133}{7.57587}
\pgfmath@def{atan}{134}{7.63217}    \pgfmath@def{atan}{135}{7.68844}
\pgfmath@def{atan}{136}{7.74471}    \pgfmath@def{atan}{137}{7.80095}
\pgfmath@def{atan}{138}{7.85719}    \pgfmath@def{atan}{139}{7.91340}
\pgfmath@def{atan}{140}{7.96961}    \pgfmath@def{atan}{141}{8.02579}
\pgfmath@def{atan}{142}{8.08196}    \pgfmath@def{atan}{143}{8.13812}
\pgfmath@def{atan}{144}{8.19426}    \pgfmath@def{atan}{145}{8.25038}
\pgfmath@def{atan}{146}{8.30649}    \pgfmath@def{atan}{147}{8.36258}
\pgfmath@def{atan}{148}{8.41866}    \pgfmath@def{atan}{149}{8.47472}
\pgfmath@def{atan}{150}{8.53076}    \pgfmath@def{atan}{151}{8.58679}
\pgfmath@def{atan}{152}{8.64280}    \pgfmath@def{atan}{153}{8.69879}
\pgfmath@def{atan}{154}{8.75477}    \pgfmath@def{atan}{155}{8.81073}
\pgfmath@def{atan}{156}{8.86667}    \pgfmath@def{atan}{157}{8.92260}
\pgfmath@def{atan}{158}{8.97851}    \pgfmath@def{atan}{159}{9.03440}
\pgfmath@def{atan}{160}{9.09027}    \pgfmath@def{atan}{161}{9.14613}
\pgfmath@def{atan}{162}{9.20197}    \pgfmath@def{atan}{163}{9.25779}
\pgfmath@def{atan}{164}{9.31359}    \pgfmath@def{atan}{165}{9.36938}
\pgfmath@def{atan}{166}{9.42515}    \pgfmath@def{atan}{167}{9.48090}
\pgfmath@def{atan}{168}{9.53663}    \pgfmath@def{atan}{169}{9.59235}
\pgfmath@def{atan}{170}{9.64804}    \pgfmath@def{atan}{171}{9.70372}
\pgfmath@def{atan}{172}{9.75938}    \pgfmath@def{atan}{173}{9.81502}
\pgfmath@def{atan}{174}{9.87064}    \pgfmath@def{atan}{175}{9.92624}
\pgfmath@def{atan}{176}{9.98182}    \pgfmath@def{atan}{177}{10.03739}
\pgfmath@def{atan}{178}{10.09294}    \pgfmath@def{atan}{179}{10.14846}
\pgfmath@def{atan}{180}{10.20397}    \pgfmath@def{atan}{181}{10.25946}
\pgfmath@def{atan}{182}{10.31493}    \pgfmath@def{atan}{183}{10.37037}
\pgfmath@def{atan}{184}{10.42580}    \pgfmath@def{atan}{185}{10.48121}
\pgfmath@def{atan}{186}{10.53660}    \pgfmath@def{atan}{187}{10.59197}
\pgfmath@def{atan}{188}{10.64732}    \pgfmath@def{atan}{189}{10.70265}
\pgfmath@def{atan}{190}{10.75796}    \pgfmath@def{atan}{191}{10.81325}
\pgfmath@def{atan}{192}{10.86852}    \pgfmath@def{atan}{193}{10.92377}
\pgfmath@def{atan}{194}{10.97900}    \pgfmath@def{atan}{195}{11.03420}
\pgfmath@def{atan}{196}{11.08939}    \pgfmath@def{atan}{197}{11.14456}
\pgfmath@def{atan}{198}{11.19970}    \pgfmath@def{atan}{199}{11.25483}
\pgfmath@def{atan}{200}{11.30993}    \pgfmath@def{atan}{201}{11.36501}
\pgfmath@def{atan}{202}{11.42007}    \pgfmath@def{atan}{203}{11.47511}
\pgfmath@def{atan}{204}{11.53013}    \pgfmath@def{atan}{205}{11.58512}
\pgfmath@def{atan}{206}{11.64010}    \pgfmath@def{atan}{207}{11.69505}
\pgfmath@def{atan}{208}{11.74998}    \pgfmath@def{atan}{209}{11.80489}
\pgfmath@def{atan}{210}{11.85977}    \pgfmath@def{atan}{211}{11.91464}
\pgfmath@def{atan}{212}{11.96948}    \pgfmath@def{atan}{213}{12.02430}
\pgfmath@def{atan}{214}{12.07910}    \pgfmath@def{atan}{215}{12.13388}
\pgfmath@def{atan}{216}{12.18863}    \pgfmath@def{atan}{217}{12.24336}
\pgfmath@def{atan}{218}{12.29807}    \pgfmath@def{atan}{219}{12.35275}
\pgfmath@def{atan}{220}{12.40741}    \pgfmath@def{atan}{221}{12.46205}
\pgfmath@def{atan}{222}{12.51667}    \pgfmath@def{atan}{223}{12.57126}
\pgfmath@def{atan}{224}{12.62583}    \pgfmath@def{atan}{225}{12.68038}
\pgfmath@def{atan}{226}{12.73490}    \pgfmath@def{atan}{227}{12.78940}
\pgfmath@def{atan}{228}{12.84388}    \pgfmath@def{atan}{229}{12.89833}
\pgfmath@def{atan}{230}{12.95276}    \pgfmath@def{atan}{231}{13.00717}
\pgfmath@def{atan}{232}{13.06155}    \pgfmath@def{atan}{233}{13.11590}
\pgfmath@def{atan}{234}{13.17024}    \pgfmath@def{atan}{235}{13.22455}
\pgfmath@def{atan}{236}{13.27883}    \pgfmath@def{atan}{237}{13.33309}
\pgfmath@def{atan}{238}{13.38733}    \pgfmath@def{atan}{239}{13.44154}
\pgfmath@def{atan}{240}{13.49573}    \pgfmath@def{atan}{241}{13.54989}
\pgfmath@def{atan}{242}{13.60403}    \pgfmath@def{atan}{243}{13.65814}
\pgfmath@def{atan}{244}{13.71223}    \pgfmath@def{atan}{245}{13.76630}
\pgfmath@def{atan}{246}{13.82034}    \pgfmath@def{atan}{247}{13.87435}
\pgfmath@def{atan}{248}{13.92834}    \pgfmath@def{atan}{249}{13.98230}
\pgfmath@def{atan}{250}{14.03624}    \pgfmath@def{atan}{251}{14.09015}
\pgfmath@def{atan}{252}{14.14404}    \pgfmath@def{atan}{253}{14.19790}
\pgfmath@def{atan}{254}{14.25174}    \pgfmath@def{atan}{255}{14.30555}
\pgfmath@def{atan}{256}{14.35933}    \pgfmath@def{atan}{257}{14.41309}
\pgfmath@def{atan}{258}{14.46682}    \pgfmath@def{atan}{259}{14.52053}
\pgfmath@def{atan}{260}{14.57421}    \pgfmath@def{atan}{261}{14.62787}
\pgfmath@def{atan}{262}{14.68149}    \pgfmath@def{atan}{263}{14.73510}
\pgfmath@def{atan}{264}{14.78867}    \pgfmath@def{atan}{265}{14.84222}
\pgfmath@def{atan}{266}{14.89575}    \pgfmath@def{atan}{267}{14.94924}
\pgfmath@def{atan}{268}{15.00271}    \pgfmath@def{atan}{269}{15.05615}
\pgfmath@def{atan}{270}{15.10957}    \pgfmath@def{atan}{271}{15.16296}
\pgfmath@def{atan}{272}{15.21632}    \pgfmath@def{atan}{273}{15.26966}
\pgfmath@def{atan}{274}{15.32297}    \pgfmath@def{atan}{275}{15.37625}
\pgfmath@def{atan}{276}{15.42950}    \pgfmath@def{atan}{277}{15.48273}
\pgfmath@def{atan}{278}{15.53593}    \pgfmath@def{atan}{279}{15.58910}
\pgfmath@def{atan}{280}{15.64224}    \pgfmath@def{atan}{281}{15.69536}
\pgfmath@def{atan}{282}{15.74845}    \pgfmath@def{atan}{283}{15.80151}
\pgfmath@def{atan}{284}{15.85454}    \pgfmath@def{atan}{285}{15.90755}
\pgfmath@def{atan}{286}{15.96052}    \pgfmath@def{atan}{287}{16.01347}
\pgfmath@def{atan}{288}{16.06640}    \pgfmath@def{atan}{289}{16.11929}
\pgfmath@def{atan}{290}{16.17215}    \pgfmath@def{atan}{291}{16.22499}
\pgfmath@def{atan}{292}{16.27780}    \pgfmath@def{atan}{293}{16.33058}
\pgfmath@def{atan}{294}{16.38333}    \pgfmath@def{atan}{295}{16.43605}
\pgfmath@def{atan}{296}{16.48875}    \pgfmath@def{atan}{297}{16.54142}
\pgfmath@def{atan}{298}{16.59405}    \pgfmath@def{atan}{299}{16.64666}
\pgfmath@def{atan}{300}{16.69924}    \pgfmath@def{atan}{301}{16.75179}
\pgfmath@def{atan}{302}{16.80431}    \pgfmath@def{atan}{303}{16.85680}
\pgfmath@def{atan}{304}{16.90927}    \pgfmath@def{atan}{305}{16.96170}
\pgfmath@def{atan}{306}{17.01411}    \pgfmath@def{atan}{307}{17.06648}
\pgfmath@def{atan}{308}{17.11883}    \pgfmath@def{atan}{309}{17.17114}
\pgfmath@def{atan}{310}{17.22343}    \pgfmath@def{atan}{311}{17.27569}
\pgfmath@def{atan}{312}{17.32792}    \pgfmath@def{atan}{313}{17.38012}
\pgfmath@def{atan}{314}{17.43228}    \pgfmath@def{atan}{315}{17.48442}
\pgfmath@def{atan}{316}{17.53653}    \pgfmath@def{atan}{317}{17.58861}
\pgfmath@def{atan}{318}{17.64066}    \pgfmath@def{atan}{319}{17.69268}
\pgfmath@def{atan}{320}{17.74467}    \pgfmath@def{atan}{321}{17.79663}
\pgfmath@def{atan}{322}{17.84855}    \pgfmath@def{atan}{323}{17.90045}
\pgfmath@def{atan}{324}{17.95232}    \pgfmath@def{atan}{325}{18.00416}
\pgfmath@def{atan}{326}{18.05596}    \pgfmath@def{atan}{327}{18.10774}
\pgfmath@def{atan}{328}{18.15949}    \pgfmath@def{atan}{329}{18.21120}
\pgfmath@def{atan}{330}{18.26289}    \pgfmath@def{atan}{331}{18.31454}
\pgfmath@def{atan}{332}{18.36616}    \pgfmath@def{atan}{333}{18.41775}
\pgfmath@def{atan}{334}{18.46931}    \pgfmath@def{atan}{335}{18.52084}
\pgfmath@def{atan}{336}{18.57234}    \pgfmath@def{atan}{337}{18.62381}
\pgfmath@def{atan}{338}{18.67525}    \pgfmath@def{atan}{339}{18.72665}
\pgfmath@def{atan}{340}{18.77803}    \pgfmath@def{atan}{341}{18.82937}
\pgfmath@def{atan}{342}{18.88068}    \pgfmath@def{atan}{343}{18.93196}
\pgfmath@def{atan}{344}{18.98321}    \pgfmath@def{atan}{345}{19.03443}
\pgfmath@def{atan}{346}{19.08562}    \pgfmath@def{atan}{347}{19.13677}
\pgfmath@def{atan}{348}{19.18789}    \pgfmath@def{atan}{349}{19.23898}
\pgfmath@def{atan}{350}{19.29004}    \pgfmath@def{atan}{351}{19.34107}
\pgfmath@def{atan}{352}{19.39206}    \pgfmath@def{atan}{353}{19.44303}
\pgfmath@def{atan}{354}{19.49396}    \pgfmath@def{atan}{355}{19.54486}
\pgfmath@def{atan}{356}{19.59572}    \pgfmath@def{atan}{357}{19.64656}
\pgfmath@def{atan}{358}{19.69736}    \pgfmath@def{atan}{359}{19.74813}
\pgfmath@def{atan}{360}{19.79887}    \pgfmath@def{atan}{361}{19.84958}
\pgfmath@def{atan}{362}{19.90025}    \pgfmath@def{atan}{363}{19.95089}
\pgfmath@def{atan}{364}{20.00150}    \pgfmath@def{atan}{365}{20.05208}
\pgfmath@def{atan}{366}{20.10262}    \pgfmath@def{atan}{367}{20.15313}
\pgfmath@def{atan}{368}{20.20361}    \pgfmath@def{atan}{369}{20.25406}
\pgfmath@def{atan}{370}{20.30447}    \pgfmath@def{atan}{371}{20.35485}
\pgfmath@def{atan}{372}{20.40520}    \pgfmath@def{atan}{373}{20.45551}
\pgfmath@def{atan}{374}{20.50579}    \pgfmath@def{atan}{375}{20.55604}
\pgfmath@def{atan}{376}{20.60626}    \pgfmath@def{atan}{377}{20.65644}
\pgfmath@def{atan}{378}{20.70659}    \pgfmath@def{atan}{379}{20.75670}
\pgfmath@def{atan}{380}{20.80679}    \pgfmath@def{atan}{381}{20.85684}
\pgfmath@def{atan}{382}{20.90685}    \pgfmath@def{atan}{383}{20.95684}
\pgfmath@def{atan}{384}{21.00678}    \pgfmath@def{atan}{385}{21.05670}
\pgfmath@def{atan}{386}{21.10658}    \pgfmath@def{atan}{387}{21.15643}
\pgfmath@def{atan}{388}{21.20625}    \pgfmath@def{atan}{389}{21.25603}
\pgfmath@def{atan}{390}{21.30578}    \pgfmath@def{atan}{391}{21.35549}
\pgfmath@def{atan}{392}{21.40517}    \pgfmath@def{atan}{393}{21.45482}
\pgfmath@def{atan}{394}{21.50444}    \pgfmath@def{atan}{395}{21.55402}
\pgfmath@def{atan}{396}{21.60356}    \pgfmath@def{atan}{397}{21.65307}
\pgfmath@def{atan}{398}{21.70255}    \pgfmath@def{atan}{399}{21.75200}
\pgfmath@def{atan}{400}{21.80140}    \pgfmath@def{atan}{401}{21.85078}
\pgfmath@def{atan}{402}{21.90012}    \pgfmath@def{atan}{403}{21.94943}
\pgfmath@def{atan}{404}{21.99870}    \pgfmath@def{atan}{405}{22.04794}
\pgfmath@def{atan}{406}{22.09715}    \pgfmath@def{atan}{407}{22.14632}
\pgfmath@def{atan}{408}{22.19546}    \pgfmath@def{atan}{409}{22.24456}
\pgfmath@def{atan}{410}{22.29362}    \pgfmath@def{atan}{411}{22.34266}
\pgfmath@def{atan}{412}{22.39166}    \pgfmath@def{atan}{413}{22.44062}
\pgfmath@def{atan}{414}{22.48955}    \pgfmath@def{atan}{415}{22.53845}
\pgfmath@def{atan}{416}{22.58731}    \pgfmath@def{atan}{417}{22.63613}
\pgfmath@def{atan}{418}{22.68492}    \pgfmath@def{atan}{419}{22.73368}
\pgfmath@def{atan}{420}{22.78240}    \pgfmath@def{atan}{421}{22.83109}
\pgfmath@def{atan}{422}{22.87974}    \pgfmath@def{atan}{423}{22.92836}
\pgfmath@def{atan}{424}{22.97694}    \pgfmath@def{atan}{425}{23.02549}
\pgfmath@def{atan}{426}{23.07400}    \pgfmath@def{atan}{427}{23.12248}
\pgfmath@def{atan}{428}{23.17092}    \pgfmath@def{atan}{429}{23.21933}
\pgfmath@def{atan}{430}{23.26770}    \pgfmath@def{atan}{431}{23.31604}
\pgfmath@def{atan}{432}{23.36434}    \pgfmath@def{atan}{433}{23.41261}
\pgfmath@def{atan}{434}{23.46084}    \pgfmath@def{atan}{435}{23.50904}
\pgfmath@def{atan}{436}{23.55720}    \pgfmath@def{atan}{437}{23.60532}
\pgfmath@def{atan}{438}{23.65341}    \pgfmath@def{atan}{439}{23.70147}
\pgfmath@def{atan}{440}{23.74949}    \pgfmath@def{atan}{441}{23.79747}
\pgfmath@def{atan}{442}{23.84542}    \pgfmath@def{atan}{443}{23.89334}
\pgfmath@def{atan}{444}{23.94122}    \pgfmath@def{atan}{445}{23.98906}
\pgfmath@def{atan}{446}{24.03687}    \pgfmath@def{atan}{447}{24.08464}
\pgfmath@def{atan}{448}{24.13238}    \pgfmath@def{atan}{449}{24.18008}
\pgfmath@def{atan}{450}{24.22774}    \pgfmath@def{atan}{451}{24.27537}
\pgfmath@def{atan}{452}{24.32296}    \pgfmath@def{atan}{453}{24.37052}
\pgfmath@def{atan}{454}{24.41804}    \pgfmath@def{atan}{455}{24.46553}
\pgfmath@def{atan}{456}{24.51298}    \pgfmath@def{atan}{457}{24.56040}
\pgfmath@def{atan}{458}{24.60778}    \pgfmath@def{atan}{459}{24.65512}
\pgfmath@def{atan}{460}{24.70243}    \pgfmath@def{atan}{461}{24.74970}
\pgfmath@def{atan}{462}{24.79693}    \pgfmath@def{atan}{463}{24.84413}
\pgfmath@def{atan}{464}{24.89130}    \pgfmath@def{atan}{465}{24.93842}
\pgfmath@def{atan}{466}{24.98551}    \pgfmath@def{atan}{467}{25.03257}
\pgfmath@def{atan}{468}{25.07959}    \pgfmath@def{atan}{469}{25.12657}
\pgfmath@def{atan}{470}{25.17352}    \pgfmath@def{atan}{471}{25.22043}
\pgfmath@def{atan}{472}{25.26731}    \pgfmath@def{atan}{473}{25.31414}
\pgfmath@def{atan}{474}{25.36095}    \pgfmath@def{atan}{475}{25.40771}
\pgfmath@def{atan}{476}{25.45444}    \pgfmath@def{atan}{477}{25.50114}
\pgfmath@def{atan}{478}{25.54780}    \pgfmath@def{atan}{479}{25.59442}
\pgfmath@def{atan}{480}{25.64100}    \pgfmath@def{atan}{481}{25.68755}
\pgfmath@def{atan}{482}{25.73406}    \pgfmath@def{atan}{483}{25.78054}
\pgfmath@def{atan}{484}{25.82698}    \pgfmath@def{atan}{485}{25.87338}
\pgfmath@def{atan}{486}{25.91975}    \pgfmath@def{atan}{487}{25.96608}
\pgfmath@def{atan}{488}{26.01237}    \pgfmath@def{atan}{489}{26.05863}
\pgfmath@def{atan}{490}{26.10485}    \pgfmath@def{atan}{491}{26.15103}
\pgfmath@def{atan}{492}{26.19718}    \pgfmath@def{atan}{493}{26.24329}
\pgfmath@def{atan}{494}{26.28937}    \pgfmath@def{atan}{495}{26.33541}
\pgfmath@def{atan}{496}{26.38141}    \pgfmath@def{atan}{497}{26.42737}
\pgfmath@def{atan}{498}{26.47330}    \pgfmath@def{atan}{499}{26.51919}
\pgfmath@def{atan}{500}{26.56505}    \pgfmath@def{atan}{501}{26.61086}
\pgfmath@def{atan}{502}{26.65665}    \pgfmath@def{atan}{503}{26.70239}
\pgfmath@def{atan}{504}{26.74810}    \pgfmath@def{atan}{505}{26.79377}
\pgfmath@def{atan}{506}{26.83941}    \pgfmath@def{atan}{507}{26.88500}
\pgfmath@def{atan}{508}{26.93057}    \pgfmath@def{atan}{509}{26.97609}
\pgfmath@def{atan}{510}{27.02158}    \pgfmath@def{atan}{511}{27.06703}
\pgfmath@def{atan}{512}{27.11244}    \pgfmath@def{atan}{513}{27.15782}
\pgfmath@def{atan}{514}{27.20316}    \pgfmath@def{atan}{515}{27.24846}
\pgfmath@def{atan}{516}{27.29373}    \pgfmath@def{atan}{517}{27.33896}
\pgfmath@def{atan}{518}{27.38415}    \pgfmath@def{atan}{519}{27.42931}
\pgfmath@def{atan}{520}{27.47443}    \pgfmath@def{atan}{521}{27.51951}
\pgfmath@def{atan}{522}{27.56455}    \pgfmath@def{atan}{523}{27.60956}
\pgfmath@def{atan}{524}{27.65453}    \pgfmath@def{atan}{525}{27.69947}
\pgfmath@def{atan}{526}{27.74437}    \pgfmath@def{atan}{527}{27.78923}
\pgfmath@def{atan}{528}{27.83405}    \pgfmath@def{atan}{529}{27.87884}
\pgfmath@def{atan}{530}{27.92359}    \pgfmath@def{atan}{531}{27.96830}
\pgfmath@def{atan}{532}{28.01297}    \pgfmath@def{atan}{533}{28.05761}
\pgfmath@def{atan}{534}{28.10221}    \pgfmath@def{atan}{535}{28.14678}
\pgfmath@def{atan}{536}{28.19130}    \pgfmath@def{atan}{537}{28.23579}
\pgfmath@def{atan}{538}{28.28025}    \pgfmath@def{atan}{539}{28.32466}
\pgfmath@def{atan}{540}{28.36904}    \pgfmath@def{atan}{541}{28.41338}
\pgfmath@def{atan}{542}{28.45769}    \pgfmath@def{atan}{543}{28.50196}
\pgfmath@def{atan}{544}{28.54619}    \pgfmath@def{atan}{545}{28.59038}
\pgfmath@def{atan}{546}{28.63454}    \pgfmath@def{atan}{547}{28.67865}
\pgfmath@def{atan}{548}{28.72274}    \pgfmath@def{atan}{549}{28.76678}
\pgfmath@def{atan}{550}{28.81079}    \pgfmath@def{atan}{551}{28.85476}
\pgfmath@def{atan}{552}{28.89869}    \pgfmath@def{atan}{553}{28.94259}
\pgfmath@def{atan}{554}{28.98645}    \pgfmath@def{atan}{555}{29.03027}
\pgfmath@def{atan}{556}{29.07405}    \pgfmath@def{atan}{557}{29.11780}
\pgfmath@def{atan}{558}{29.16151}    \pgfmath@def{atan}{559}{29.20519}
\pgfmath@def{atan}{560}{29.24882}    \pgfmath@def{atan}{561}{29.29242}
\pgfmath@def{atan}{562}{29.33598}    \pgfmath@def{atan}{563}{29.37951}
\pgfmath@def{atan}{564}{29.42299}    \pgfmath@def{atan}{565}{29.46644}
\pgfmath@def{atan}{566}{29.50986}    \pgfmath@def{atan}{567}{29.55323}
\pgfmath@def{atan}{568}{29.59657}    \pgfmath@def{atan}{569}{29.63987}
\pgfmath@def{atan}{570}{29.68314}    \pgfmath@def{atan}{571}{29.72636}
\pgfmath@def{atan}{572}{29.76955}    \pgfmath@def{atan}{573}{29.81270}
\pgfmath@def{atan}{574}{29.85582}    \pgfmath@def{atan}{575}{29.89890}
\pgfmath@def{atan}{576}{29.94194}    \pgfmath@def{atan}{577}{29.98494}
\pgfmath@def{atan}{578}{30.02791}    \pgfmath@def{atan}{579}{30.07084}
\pgfmath@def{atan}{580}{30.11373}    \pgfmath@def{atan}{581}{30.15658}
\pgfmath@def{atan}{582}{30.19940}    \pgfmath@def{atan}{583}{30.24218}
\pgfmath@def{atan}{584}{30.28492}    \pgfmath@def{atan}{585}{30.32763}
\pgfmath@def{atan}{586}{30.37030}    \pgfmath@def{atan}{587}{30.41293}
\pgfmath@def{atan}{588}{30.45552}    \pgfmath@def{atan}{589}{30.49808}
\pgfmath@def{atan}{590}{30.54060}    \pgfmath@def{atan}{591}{30.58308}
\pgfmath@def{atan}{592}{30.62553}    \pgfmath@def{atan}{593}{30.66794}
\pgfmath@def{atan}{594}{30.71031}    \pgfmath@def{atan}{595}{30.75264}
\pgfmath@def{atan}{596}{30.79494}    \pgfmath@def{atan}{597}{30.83720}
\pgfmath@def{atan}{598}{30.87942}    \pgfmath@def{atan}{599}{30.92160}
\pgfmath@def{atan}{600}{30.96375}    \pgfmath@def{atan}{601}{31.00586}
\pgfmath@def{atan}{602}{31.04794}    \pgfmath@def{atan}{603}{31.08997}
\pgfmath@def{atan}{604}{31.13197}    \pgfmath@def{atan}{605}{31.17393}
\pgfmath@def{atan}{606}{31.21586}    \pgfmath@def{atan}{607}{31.25775}
\pgfmath@def{atan}{608}{31.29960}    \pgfmath@def{atan}{609}{31.34141}
\pgfmath@def{atan}{610}{31.38319}    \pgfmath@def{atan}{611}{31.42493}
\pgfmath@def{atan}{612}{31.46663}    \pgfmath@def{atan}{613}{31.50829}
\pgfmath@def{atan}{614}{31.54992}    \pgfmath@def{atan}{615}{31.59151}
\pgfmath@def{atan}{616}{31.63306}    \pgfmath@def{atan}{617}{31.67458}
\pgfmath@def{atan}{618}{31.71606}    \pgfmath@def{atan}{619}{31.75750}
\pgfmath@def{atan}{620}{31.79891}    \pgfmath@def{atan}{621}{31.84028}
\pgfmath@def{atan}{622}{31.88161}    \pgfmath@def{atan}{623}{31.92290}
\pgfmath@def{atan}{624}{31.96416}    \pgfmath@def{atan}{625}{32.00538}
\pgfmath@def{atan}{626}{32.04656}    \pgfmath@def{atan}{627}{32.08771}
\pgfmath@def{atan}{628}{32.12882}    \pgfmath@def{atan}{629}{32.16989}
\pgfmath@def{atan}{630}{32.21092}    \pgfmath@def{atan}{631}{32.25192}
\pgfmath@def{atan}{632}{32.29288}    \pgfmath@def{atan}{633}{32.33381}
\pgfmath@def{atan}{634}{32.37469}    \pgfmath@def{atan}{635}{32.41554}
\pgfmath@def{atan}{636}{32.45636}    \pgfmath@def{atan}{637}{32.49713}
\pgfmath@def{atan}{638}{32.53787}    \pgfmath@def{atan}{639}{32.57857}
\pgfmath@def{atan}{640}{32.61924}    \pgfmath@def{atan}{641}{32.65987}
\pgfmath@def{atan}{642}{32.70046}    \pgfmath@def{atan}{643}{32.74101}
\pgfmath@def{atan}{644}{32.78153}    \pgfmath@def{atan}{645}{32.82201}
\pgfmath@def{atan}{646}{32.86246}    \pgfmath@def{atan}{647}{32.90286}
\pgfmath@def{atan}{648}{32.94323}    \pgfmath@def{atan}{649}{32.98357}
\pgfmath@def{atan}{650}{33.02386}    \pgfmath@def{atan}{651}{33.06412}
\pgfmath@def{atan}{652}{33.10435}    \pgfmath@def{atan}{653}{33.14453}
\pgfmath@def{atan}{654}{33.18468}    \pgfmath@def{atan}{655}{33.22479}
\pgfmath@def{atan}{656}{33.26487}    \pgfmath@def{atan}{657}{33.30491}
\pgfmath@def{atan}{658}{33.34491}    \pgfmath@def{atan}{659}{33.38488}
\pgfmath@def{atan}{660}{33.42481}    \pgfmath@def{atan}{661}{33.46470}
\pgfmath@def{atan}{662}{33.50455}    \pgfmath@def{atan}{663}{33.54437}
\pgfmath@def{atan}{664}{33.58416}    \pgfmath@def{atan}{665}{33.62390}
\pgfmath@def{atan}{666}{33.66361}    \pgfmath@def{atan}{667}{33.70328}
\pgfmath@def{atan}{668}{33.74292}    \pgfmath@def{atan}{669}{33.78252}
\pgfmath@def{atan}{670}{33.82208}    \pgfmath@def{atan}{671}{33.86161}
\pgfmath@def{atan}{672}{33.90110}    \pgfmath@def{atan}{673}{33.94055}
\pgfmath@def{atan}{674}{33.97997}    \pgfmath@def{atan}{675}{34.01935}
\pgfmath@def{atan}{676}{34.05869}    \pgfmath@def{atan}{677}{34.09800}
\pgfmath@def{atan}{678}{34.13727}    \pgfmath@def{atan}{679}{34.17650}
\pgfmath@def{atan}{680}{34.21570}    \pgfmath@def{atan}{681}{34.25486}
\pgfmath@def{atan}{682}{34.29398}    \pgfmath@def{atan}{683}{34.33307}
\pgfmath@def{atan}{684}{34.37212}    \pgfmath@def{atan}{685}{34.41114}
\pgfmath@def{atan}{686}{34.45012}    \pgfmath@def{atan}{687}{34.48906}
\pgfmath@def{atan}{688}{34.52797}    \pgfmath@def{atan}{689}{34.56684}
\pgfmath@def{atan}{690}{34.60567}    \pgfmath@def{atan}{691}{34.64447}
\pgfmath@def{atan}{692}{34.68323}    \pgfmath@def{atan}{693}{34.72195}
\pgfmath@def{atan}{694}{34.76064}    \pgfmath@def{atan}{695}{34.79930}
\pgfmath@def{atan}{696}{34.83791}    \pgfmath@def{atan}{697}{34.87649}
\pgfmath@def{atan}{698}{34.91504}    \pgfmath@def{atan}{699}{34.95354}
\pgfmath@def{atan}{700}{34.99202}    \pgfmath@def{atan}{701}{35.03045}
\pgfmath@def{atan}{702}{35.06885}    \pgfmath@def{atan}{703}{35.10721}
\pgfmath@def{atan}{704}{35.14554}    \pgfmath@def{atan}{705}{35.18383}
\pgfmath@def{atan}{706}{35.22209}    \pgfmath@def{atan}{707}{35.26031}
\pgfmath@def{atan}{708}{35.29849}    \pgfmath@def{atan}{709}{35.33664}
\pgfmath@def{atan}{710}{35.37475}    \pgfmath@def{atan}{711}{35.41282}
\pgfmath@def{atan}{712}{35.45086}    \pgfmath@def{atan}{713}{35.48886}
\pgfmath@def{atan}{714}{35.52683}    \pgfmath@def{atan}{715}{35.56476}
\pgfmath@def{atan}{716}{35.60266}    \pgfmath@def{atan}{717}{35.64052}
\pgfmath@def{atan}{718}{35.67834}    \pgfmath@def{atan}{719}{35.71613}
\pgfmath@def{atan}{720}{35.75388}    \pgfmath@def{atan}{721}{35.79160}
\pgfmath@def{atan}{722}{35.82928}    \pgfmath@def{atan}{723}{35.86692}
\pgfmath@def{atan}{724}{35.90453}    \pgfmath@def{atan}{725}{35.94211}
\pgfmath@def{atan}{726}{35.97965}    \pgfmath@def{atan}{727}{36.01715}
\pgfmath@def{atan}{728}{36.05461}    \pgfmath@def{atan}{729}{36.09204}
\pgfmath@def{atan}{730}{36.12944}    \pgfmath@def{atan}{731}{36.16680}
\pgfmath@def{atan}{732}{36.20412}    \pgfmath@def{atan}{733}{36.24141}
\pgfmath@def{atan}{734}{36.27866}    \pgfmath@def{atan}{735}{36.31588}
\pgfmath@def{atan}{736}{36.35306}    \pgfmath@def{atan}{737}{36.39021}
\pgfmath@def{atan}{738}{36.42732}    \pgfmath@def{atan}{739}{36.46440}
\pgfmath@def{atan}{740}{36.50144}    \pgfmath@def{atan}{741}{36.53844}
\pgfmath@def{atan}{742}{36.57541}    \pgfmath@def{atan}{743}{36.61234}
\pgfmath@def{atan}{744}{36.64924}    \pgfmath@def{atan}{745}{36.68611}
\pgfmath@def{atan}{746}{36.72293}    \pgfmath@def{atan}{747}{36.75973}
\pgfmath@def{atan}{748}{36.79648}    \pgfmath@def{atan}{749}{36.83321}
\pgfmath@def{atan}{750}{36.86989}    \pgfmath@def{atan}{751}{36.90654}
\pgfmath@def{atan}{752}{36.94316}    \pgfmath@def{atan}{753}{36.97974}
\pgfmath@def{atan}{754}{37.01629}    \pgfmath@def{atan}{755}{37.05280}
\pgfmath@def{atan}{756}{37.08928}    \pgfmath@def{atan}{757}{37.12572}
\pgfmath@def{atan}{758}{37.16212}    \pgfmath@def{atan}{759}{37.19849}
\pgfmath@def{atan}{760}{37.23483}    \pgfmath@def{atan}{761}{37.27113}
\pgfmath@def{atan}{762}{37.30740}    \pgfmath@def{atan}{763}{37.34363}
\pgfmath@def{atan}{764}{37.37982}    \pgfmath@def{atan}{765}{37.41598}
\pgfmath@def{atan}{766}{37.45211}    \pgfmath@def{atan}{767}{37.48820}
\pgfmath@def{atan}{768}{37.52426}    \pgfmath@def{atan}{769}{37.56028}
\pgfmath@def{atan}{770}{37.59627}    \pgfmath@def{atan}{771}{37.63222}
\pgfmath@def{atan}{772}{37.66814}    \pgfmath@def{atan}{773}{37.70402}
\pgfmath@def{atan}{774}{37.73987}    \pgfmath@def{atan}{775}{37.77568}
\pgfmath@def{atan}{776}{37.81146}    \pgfmath@def{atan}{777}{37.84720}
\pgfmath@def{atan}{778}{37.88291}    \pgfmath@def{atan}{779}{37.91859}
\pgfmath@def{atan}{780}{37.95423}    \pgfmath@def{atan}{781}{37.98983}
\pgfmath@def{atan}{782}{38.02540}    \pgfmath@def{atan}{783}{38.06094}
\pgfmath@def{atan}{784}{38.09644}    \pgfmath@def{atan}{785}{38.13191}
\pgfmath@def{atan}{786}{38.16734}    \pgfmath@def{atan}{787}{38.20274}
\pgfmath@def{atan}{788}{38.23811}    \pgfmath@def{atan}{789}{38.27344}
\pgfmath@def{atan}{790}{38.30873}    \pgfmath@def{atan}{791}{38.34399}
\pgfmath@def{atan}{792}{38.37922}    \pgfmath@def{atan}{793}{38.41441}
\pgfmath@def{atan}{794}{38.44957}    \pgfmath@def{atan}{795}{38.48469}
\pgfmath@def{atan}{796}{38.51979}    \pgfmath@def{atan}{797}{38.55484}
\pgfmath@def{atan}{798}{38.58986}    \pgfmath@def{atan}{799}{38.62485}
\pgfmath@def{atan}{800}{38.65980}    \pgfmath@def{atan}{801}{38.69472}
\pgfmath@def{atan}{802}{38.72961}    \pgfmath@def{atan}{803}{38.76446}
\pgfmath@def{atan}{804}{38.79928}    \pgfmath@def{atan}{805}{38.83406}
\pgfmath@def{atan}{806}{38.86881}    \pgfmath@def{atan}{807}{38.90353}
\pgfmath@def{atan}{808}{38.93821}    \pgfmath@def{atan}{809}{38.97285}
\pgfmath@def{atan}{810}{39.00747}    \pgfmath@def{atan}{811}{39.04205}
\pgfmath@def{atan}{812}{39.07659}    \pgfmath@def{atan}{813}{39.11111}
\pgfmath@def{atan}{814}{39.14558}    \pgfmath@def{atan}{815}{39.18003}
\pgfmath@def{atan}{816}{39.21444}    \pgfmath@def{atan}{817}{39.24882}
\pgfmath@def{atan}{818}{39.28316}    \pgfmath@def{atan}{819}{39.31747}
\pgfmath@def{atan}{820}{39.35175}    \pgfmath@def{atan}{821}{39.38599}
\pgfmath@def{atan}{822}{39.42020}    \pgfmath@def{atan}{823}{39.45438}
\pgfmath@def{atan}{824}{39.48852}    \pgfmath@def{atan}{825}{39.52263}
\pgfmath@def{atan}{826}{39.55670}    \pgfmath@def{atan}{827}{39.59074}
\pgfmath@def{atan}{828}{39.62475}    \pgfmath@def{atan}{829}{39.65873}
\pgfmath@def{atan}{830}{39.69267}    \pgfmath@def{atan}{831}{39.72658}
\pgfmath@def{atan}{832}{39.76045}    \pgfmath@def{atan}{833}{39.79429}
\pgfmath@def{atan}{834}{39.82810}    \pgfmath@def{atan}{835}{39.86188}
\pgfmath@def{atan}{836}{39.89562}    \pgfmath@def{atan}{837}{39.92933}
\pgfmath@def{atan}{838}{39.96300}    \pgfmath@def{atan}{839}{39.99665}
\pgfmath@def{atan}{840}{40.03025}    \pgfmath@def{atan}{841}{40.06383}
\pgfmath@def{atan}{842}{40.09737}    \pgfmath@def{atan}{843}{40.13088}
\pgfmath@def{atan}{844}{40.16436}    \pgfmath@def{atan}{845}{40.19781}
\pgfmath@def{atan}{846}{40.23122}    \pgfmath@def{atan}{847}{40.26459}
\pgfmath@def{atan}{848}{40.29794}    \pgfmath@def{atan}{849}{40.33125}
\pgfmath@def{atan}{850}{40.36453}    \pgfmath@def{atan}{851}{40.39778}
\pgfmath@def{atan}{852}{40.43099}    \pgfmath@def{atan}{853}{40.46417}
\pgfmath@def{atan}{854}{40.49732}    \pgfmath@def{atan}{855}{40.53044}
\pgfmath@def{atan}{856}{40.56352}    \pgfmath@def{atan}{857}{40.59657}
\pgfmath@def{atan}{858}{40.62959}    \pgfmath@def{atan}{859}{40.66257}
\pgfmath@def{atan}{860}{40.69553}    \pgfmath@def{atan}{861}{40.72845}
\pgfmath@def{atan}{862}{40.76133}    \pgfmath@def{atan}{863}{40.79419}
\pgfmath@def{atan}{864}{40.82701}    \pgfmath@def{atan}{865}{40.85980}
\pgfmath@def{atan}{866}{40.89256}    \pgfmath@def{atan}{867}{40.92528}
\pgfmath@def{atan}{868}{40.95798}    \pgfmath@def{atan}{869}{40.99064}
\pgfmath@def{atan}{870}{41.02326}    \pgfmath@def{atan}{871}{41.05586}
\pgfmath@def{atan}{872}{41.08842}    \pgfmath@def{atan}{873}{41.12095}
\pgfmath@def{atan}{874}{41.15345}    \pgfmath@def{atan}{875}{41.18592}
\pgfmath@def{atan}{876}{41.21836}    \pgfmath@def{atan}{877}{41.25076}
\pgfmath@def{atan}{878}{41.28313}    \pgfmath@def{atan}{879}{41.31547}
\pgfmath@def{atan}{880}{41.34777}    \pgfmath@def{atan}{881}{41.38005}
\pgfmath@def{atan}{882}{41.41229}    \pgfmath@def{atan}{883}{41.44450}
\pgfmath@def{atan}{884}{41.47668}    \pgfmath@def{atan}{885}{41.50882}
\pgfmath@def{atan}{886}{41.54094}    \pgfmath@def{atan}{887}{41.57302}
\pgfmath@def{atan}{888}{41.60507}    \pgfmath@def{atan}{889}{41.63709}
\pgfmath@def{atan}{890}{41.66908}    \pgfmath@def{atan}{891}{41.70103}
\pgfmath@def{atan}{892}{41.73296}    \pgfmath@def{atan}{893}{41.76485}
\pgfmath@def{atan}{894}{41.79671}    \pgfmath@def{atan}{895}{41.82854}
\pgfmath@def{atan}{896}{41.86034}    \pgfmath@def{atan}{897}{41.89210}
\pgfmath@def{atan}{898}{41.92383}    \pgfmath@def{atan}{899}{41.95554}
\pgfmath@def{atan}{900}{41.98721}    \pgfmath@def{atan}{901}{42.01885}
\pgfmath@def{atan}{902}{42.05046}    \pgfmath@def{atan}{903}{42.08203}
\pgfmath@def{atan}{904}{42.11358}    \pgfmath@def{atan}{905}{42.14509}
\pgfmath@def{atan}{906}{42.17657}    \pgfmath@def{atan}{907}{42.20802}
\pgfmath@def{atan}{908}{42.23944}    \pgfmath@def{atan}{909}{42.27083}
\pgfmath@def{atan}{910}{42.30219}    \pgfmath@def{atan}{911}{42.33352}
\pgfmath@def{atan}{912}{42.36481}    \pgfmath@def{atan}{913}{42.39607}
\pgfmath@def{atan}{914}{42.42731}    \pgfmath@def{atan}{915}{42.45851}
\pgfmath@def{atan}{916}{42.48968}    \pgfmath@def{atan}{917}{42.52082}
\pgfmath@def{atan}{918}{42.55193}    \pgfmath@def{atan}{919}{42.58300}
\pgfmath@def{atan}{920}{42.61405}    \pgfmath@def{atan}{921}{42.64507}
\pgfmath@def{atan}{922}{42.67605}    \pgfmath@def{atan}{923}{42.70701}
\pgfmath@def{atan}{924}{42.73793}    \pgfmath@def{atan}{925}{42.76882}
\pgfmath@def{atan}{926}{42.79968}    \pgfmath@def{atan}{927}{42.83051}
\pgfmath@def{atan}{928}{42.86131}    \pgfmath@def{atan}{929}{42.89208}
\pgfmath@def{atan}{930}{42.92282}    \pgfmath@def{atan}{931}{42.95353}
\pgfmath@def{atan}{932}{42.98421}    \pgfmath@def{atan}{933}{43.01485}
\pgfmath@def{atan}{934}{43.04547}    \pgfmath@def{atan}{935}{43.07605}
\pgfmath@def{atan}{936}{43.10661}    \pgfmath@def{atan}{937}{43.13713}
\pgfmath@def{atan}{938}{43.16763}    \pgfmath@def{atan}{939}{43.19809}
\pgfmath@def{atan}{940}{43.22853}    \pgfmath@def{atan}{941}{43.25893}
\pgfmath@def{atan}{942}{43.28930}    \pgfmath@def{atan}{943}{43.31964}
\pgfmath@def{atan}{944}{43.34996}    \pgfmath@def{atan}{945}{43.38024}
\pgfmath@def{atan}{946}{43.41049}    \pgfmath@def{atan}{947}{43.44071}
\pgfmath@def{atan}{948}{43.47090}    \pgfmath@def{atan}{949}{43.50106}
\pgfmath@def{atan}{950}{43.53119}    \pgfmath@def{atan}{951}{43.56130}
\pgfmath@def{atan}{952}{43.59137}    \pgfmath@def{atan}{953}{43.62141}
\pgfmath@def{atan}{954}{43.65142}    \pgfmath@def{atan}{955}{43.68140}
\pgfmath@def{atan}{956}{43.71135}    \pgfmath@def{atan}{957}{43.74127}
\pgfmath@def{atan}{958}{43.77116}    \pgfmath@def{atan}{959}{43.80102}
\pgfmath@def{atan}{960}{43.83086}    \pgfmath@def{atan}{961}{43.86066}
\pgfmath@def{atan}{962}{43.89043}    \pgfmath@def{atan}{963}{43.92017}
\pgfmath@def{atan}{964}{43.94988}    \pgfmath@def{atan}{965}{43.97957}
\pgfmath@def{atan}{966}{44.00922}    \pgfmath@def{atan}{967}{44.03884}
\pgfmath@def{atan}{968}{44.06844}    \pgfmath@def{atan}{969}{44.09800}
\pgfmath@def{atan}{970}{44.12754}    \pgfmath@def{atan}{971}{44.15704}
\pgfmath@def{atan}{972}{44.18652}    \pgfmath@def{atan}{973}{44.21597}
\pgfmath@def{atan}{974}{44.24538}    \pgfmath@def{atan}{975}{44.27477}
\pgfmath@def{atan}{976}{44.30413}    \pgfmath@def{atan}{977}{44.33346}
\pgfmath@def{atan}{978}{44.36276}    \pgfmath@def{atan}{979}{44.39203}
\pgfmath@def{atan}{980}{44.42127}    \pgfmath@def{atan}{981}{44.45048}
\pgfmath@def{atan}{982}{44.47966}    \pgfmath@def{atan}{983}{44.50882}
\pgfmath@def{atan}{984}{44.53794}    \pgfmath@def{atan}{985}{44.56704}
\pgfmath@def{atan}{986}{44.59610}    \pgfmath@def{atan}{987}{44.62514}
\pgfmath@def{atan}{988}{44.65415}    \pgfmath@def{atan}{989}{44.68313}
\pgfmath@def{atan}{990}{44.71208}    \pgfmath@def{atan}{991}{44.74100}
\pgfmath@def{atan}{992}{44.76989}    \pgfmath@def{atan}{993}{44.79876}
\pgfmath@def{atan}{994}{44.82759}    \pgfmath@def{atan}{995}{44.85640}
\pgfmath@def{atan}{996}{44.88517}    \pgfmath@def{atan}{997}{44.91392}
\pgfmath@def{atan}{998}{44.94264}    \pgfmath@def{atan}{999}{44.97133}
\pgfmath@def{atan}{1000}{45.00000}

\pgfmath@def{acos}{0}{90.00000}    \pgfmath@def{acos}{1}{89.94270}
\pgfmath@def{acos}{2}{89.88540}    \pgfmath@def{acos}{3}{89.82811}
\pgfmath@def{acos}{4}{89.77081}    \pgfmath@def{acos}{5}{89.71352}
\pgfmath@def{acos}{6}{89.65622}    \pgfmath@def{acos}{7}{89.59892}
\pgfmath@def{acos}{8}{89.54162}    \pgfmath@def{acos}{9}{89.48433}
\pgfmath@def{acos}{10}{89.42703}    \pgfmath@def{acos}{11}{89.36973}
\pgfmath@def{acos}{12}{89.31243}    \pgfmath@def{acos}{13}{89.25513}
\pgfmath@def{acos}{14}{89.19783}    \pgfmath@def{acos}{15}{89.14053}
\pgfmath@def{acos}{16}{89.08322}    \pgfmath@def{acos}{17}{89.02592}
\pgfmath@def{acos}{18}{88.96862}    \pgfmath@def{acos}{19}{88.91131}
\pgfmath@def{acos}{20}{88.85400}    \pgfmath@def{acos}{21}{88.79670}
\pgfmath@def{acos}{22}{88.73939}    \pgfmath@def{acos}{23}{88.68208}
\pgfmath@def{acos}{24}{88.62476}    \pgfmath@def{acos}{25}{88.56745}
\pgfmath@def{acos}{26}{88.51014}    \pgfmath@def{acos}{27}{88.45282}
\pgfmath@def{acos}{28}{88.39550}    \pgfmath@def{acos}{29}{88.33818}
\pgfmath@def{acos}{30}{88.28086}    \pgfmath@def{acos}{31}{88.22354}
\pgfmath@def{acos}{32}{88.16622}    \pgfmath@def{acos}{33}{88.10889}
\pgfmath@def{acos}{34}{88.05156}    \pgfmath@def{acos}{35}{87.99423}
\pgfmath@def{acos}{36}{87.93690}    \pgfmath@def{acos}{37}{87.87957}
\pgfmath@def{acos}{38}{87.82223}    \pgfmath@def{acos}{39}{87.76489}
\pgfmath@def{acos}{40}{87.70755}    \pgfmath@def{acos}{41}{87.65021}
\pgfmath@def{acos}{42}{87.59286}    \pgfmath@def{acos}{43}{87.53552}
\pgfmath@def{acos}{44}{87.47817}    \pgfmath@def{acos}{45}{87.42081}
\pgfmath@def{acos}{46}{87.36346}    \pgfmath@def{acos}{47}{87.30610}
\pgfmath@def{acos}{48}{87.24874}    \pgfmath@def{acos}{49}{87.19138}
\pgfmath@def{acos}{50}{87.13401}    \pgfmath@def{acos}{51}{87.07664}
\pgfmath@def{acos}{52}{87.01927}    \pgfmath@def{acos}{53}{86.96190}
\pgfmath@def{acos}{54}{86.90452}    \pgfmath@def{acos}{55}{86.84714}
\pgfmath@def{acos}{56}{86.78975}    \pgfmath@def{acos}{57}{86.73237}
\pgfmath@def{acos}{58}{86.67497}    \pgfmath@def{acos}{59}{86.61758}
\pgfmath@def{acos}{60}{86.56018}    \pgfmath@def{acos}{61}{86.50278}
\pgfmath@def{acos}{62}{86.44538}    \pgfmath@def{acos}{63}{86.38797}
\pgfmath@def{acos}{64}{86.33056}    \pgfmath@def{acos}{65}{86.27314}
\pgfmath@def{acos}{66}{86.21572}    \pgfmath@def{acos}{67}{86.15830}
\pgfmath@def{acos}{68}{86.10087}    \pgfmath@def{acos}{69}{86.04344}
\pgfmath@def{acos}{70}{85.98601}    \pgfmath@def{acos}{71}{85.92857}
\pgfmath@def{acos}{72}{85.87113}    \pgfmath@def{acos}{73}{85.81368}
\pgfmath@def{acos}{74}{85.75623}    \pgfmath@def{acos}{75}{85.69877}
\pgfmath@def{acos}{76}{85.64131}    \pgfmath@def{acos}{77}{85.58385}
\pgfmath@def{acos}{78}{85.52638}    \pgfmath@def{acos}{79}{85.46891}
\pgfmath@def{acos}{80}{85.41143}    \pgfmath@def{acos}{81}{85.35395}
\pgfmath@def{acos}{82}{85.29646}    \pgfmath@def{acos}{83}{85.23897}
\pgfmath@def{acos}{84}{85.18147}    \pgfmath@def{acos}{85}{85.12397}
\pgfmath@def{acos}{86}{85.06646}    \pgfmath@def{acos}{87}{85.00895}
\pgfmath@def{acos}{88}{84.95144}    \pgfmath@def{acos}{89}{84.89392}
\pgfmath@def{acos}{90}{84.83639}    \pgfmath@def{acos}{91}{84.77886}
\pgfmath@def{acos}{92}{84.72132}    \pgfmath@def{acos}{93}{84.66378}
\pgfmath@def{acos}{94}{84.60623}    \pgfmath@def{acos}{95}{84.54868}
\pgfmath@def{acos}{96}{84.49112}    \pgfmath@def{acos}{97}{84.43355}
\pgfmath@def{acos}{98}{84.37598}    \pgfmath@def{acos}{99}{84.31841}
\pgfmath@def{acos}{100}{84.26083}    \pgfmath@def{acos}{101}{84.20324}
\pgfmath@def{acos}{102}{84.14564}    \pgfmath@def{acos}{103}{84.08805}
\pgfmath@def{acos}{104}{84.03044}    \pgfmath@def{acos}{105}{83.97283}
\pgfmath@def{acos}{106}{83.91521}    \pgfmath@def{acos}{107}{83.85759}
\pgfmath@def{acos}{108}{83.79996}    \pgfmath@def{acos}{109}{83.74232}
\pgfmath@def{acos}{110}{83.68468}    \pgfmath@def{acos}{111}{83.62703}
\pgfmath@def{acos}{112}{83.56938}    \pgfmath@def{acos}{113}{83.51171}
\pgfmath@def{acos}{114}{83.45405}    \pgfmath@def{acos}{115}{83.39637}
\pgfmath@def{acos}{116}{83.33869}    \pgfmath@def{acos}{117}{83.28100}
\pgfmath@def{acos}{118}{83.22330}    \pgfmath@def{acos}{119}{83.16560}
\pgfmath@def{acos}{120}{83.10789}    \pgfmath@def{acos}{121}{83.05018}
\pgfmath@def{acos}{122}{82.99245}    \pgfmath@def{acos}{123}{82.93472}
\pgfmath@def{acos}{124}{82.87698}    \pgfmath@def{acos}{125}{82.81924}
\pgfmath@def{acos}{126}{82.76149}    \pgfmath@def{acos}{127}{82.70373}
\pgfmath@def{acos}{128}{82.64596}    \pgfmath@def{acos}{129}{82.58819}
\pgfmath@def{acos}{130}{82.53040}    \pgfmath@def{acos}{131}{82.47261}
\pgfmath@def{acos}{132}{82.41482}    \pgfmath@def{acos}{133}{82.35701}
\pgfmath@def{acos}{134}{82.29920}    \pgfmath@def{acos}{135}{82.24138}
\pgfmath@def{acos}{136}{82.18355}    \pgfmath@def{acos}{137}{82.12571}
\pgfmath@def{acos}{138}{82.06786}    \pgfmath@def{acos}{139}{82.01001}
\pgfmath@def{acos}{140}{81.95215}    \pgfmath@def{acos}{141}{81.89428}
\pgfmath@def{acos}{142}{81.83640}    \pgfmath@def{acos}{143}{81.77851}
\pgfmath@def{acos}{144}{81.72062}    \pgfmath@def{acos}{145}{81.66272}
\pgfmath@def{acos}{146}{81.60480}    \pgfmath@def{acos}{147}{81.54688}
\pgfmath@def{acos}{148}{81.48895}    \pgfmath@def{acos}{149}{81.43102}
\pgfmath@def{acos}{150}{81.37307}    \pgfmath@def{acos}{151}{81.31511}
\pgfmath@def{acos}{152}{81.25715}    \pgfmath@def{acos}{153}{81.19917}
\pgfmath@def{acos}{154}{81.14119}    \pgfmath@def{acos}{155}{81.08320}
\pgfmath@def{acos}{156}{81.02520}    \pgfmath@def{acos}{157}{80.96719}
\pgfmath@def{acos}{158}{80.90917}    \pgfmath@def{acos}{159}{80.85114}
\pgfmath@def{acos}{160}{80.79310}    \pgfmath@def{acos}{161}{80.73505}
\pgfmath@def{acos}{162}{80.67699}    \pgfmath@def{acos}{163}{80.61893}
\pgfmath@def{acos}{164}{80.56085}    \pgfmath@def{acos}{165}{80.50276}
\pgfmath@def{acos}{166}{80.44466}    \pgfmath@def{acos}{167}{80.38656}
\pgfmath@def{acos}{168}{80.32844}    \pgfmath@def{acos}{169}{80.27031}
\pgfmath@def{acos}{170}{80.21218}    \pgfmath@def{acos}{171}{80.15403}
\pgfmath@def{acos}{172}{80.09587}    \pgfmath@def{acos}{173}{80.03770}
\pgfmath@def{acos}{174}{79.97953}    \pgfmath@def{acos}{175}{79.92134}
\pgfmath@def{acos}{176}{79.86314}    \pgfmath@def{acos}{177}{79.80493}
\pgfmath@def{acos}{178}{79.74671}    \pgfmath@def{acos}{179}{79.68848}
\pgfmath@def{acos}{180}{79.63024}    \pgfmath@def{acos}{181}{79.57198}
\pgfmath@def{acos}{182}{79.51372}    \pgfmath@def{acos}{183}{79.45545}
\pgfmath@def{acos}{184}{79.39716}    \pgfmath@def{acos}{185}{79.33886}
\pgfmath@def{acos}{186}{79.28056}    \pgfmath@def{acos}{187}{79.22224}
\pgfmath@def{acos}{188}{79.16391}    \pgfmath@def{acos}{189}{79.10556}
\pgfmath@def{acos}{190}{79.04721}    \pgfmath@def{acos}{191}{78.98885}
\pgfmath@def{acos}{192}{78.93047}    \pgfmath@def{acos}{193}{78.87208}
\pgfmath@def{acos}{194}{78.81368}    \pgfmath@def{acos}{195}{78.75527}
\pgfmath@def{acos}{196}{78.69685}    \pgfmath@def{acos}{197}{78.63841}
\pgfmath@def{acos}{198}{78.57997}    \pgfmath@def{acos}{199}{78.52151}
\pgfmath@def{acos}{200}{78.46304}    \pgfmath@def{acos}{201}{78.40455}
\pgfmath@def{acos}{202}{78.34606}    \pgfmath@def{acos}{203}{78.28755}
\pgfmath@def{acos}{204}{78.22903}    \pgfmath@def{acos}{205}{78.17050}
\pgfmath@def{acos}{206}{78.11195}    \pgfmath@def{acos}{207}{78.05339}
\pgfmath@def{acos}{208}{77.99482}    \pgfmath@def{acos}{209}{77.93624}
\pgfmath@def{acos}{210}{77.87764}    \pgfmath@def{acos}{211}{77.81903}
\pgfmath@def{acos}{212}{77.76041}    \pgfmath@def{acos}{213}{77.70178}
\pgfmath@def{acos}{214}{77.64313}    \pgfmath@def{acos}{215}{77.58447}
\pgfmath@def{acos}{216}{77.52579}    \pgfmath@def{acos}{217}{77.46711}
\pgfmath@def{acos}{218}{77.40841}    \pgfmath@def{acos}{219}{77.34969}
\pgfmath@def{acos}{220}{77.29096}    \pgfmath@def{acos}{221}{77.23222}
\pgfmath@def{acos}{222}{77.17347}    \pgfmath@def{acos}{223}{77.11470}
\pgfmath@def{acos}{224}{77.05591}    \pgfmath@def{acos}{225}{76.99712}
\pgfmath@def{acos}{226}{76.93831}    \pgfmath@def{acos}{227}{76.87948}
\pgfmath@def{acos}{228}{76.82064}    \pgfmath@def{acos}{229}{76.76179}
\pgfmath@def{acos}{230}{76.70292}    \pgfmath@def{acos}{231}{76.64404}
\pgfmath@def{acos}{232}{76.58515}    \pgfmath@def{acos}{233}{76.52624}
\pgfmath@def{acos}{234}{76.46731}    \pgfmath@def{acos}{235}{76.40837}
\pgfmath@def{acos}{236}{76.34942}    \pgfmath@def{acos}{237}{76.29045}
\pgfmath@def{acos}{238}{76.23147}    \pgfmath@def{acos}{239}{76.17247}
\pgfmath@def{acos}{240}{76.11346}    \pgfmath@def{acos}{241}{76.05443}
\pgfmath@def{acos}{242}{75.99538}    \pgfmath@def{acos}{243}{75.93632}
\pgfmath@def{acos}{244}{75.87725}    \pgfmath@def{acos}{245}{75.81816}
\pgfmath@def{acos}{246}{75.75906}    \pgfmath@def{acos}{247}{75.69994}
\pgfmath@def{acos}{248}{75.64080}    \pgfmath@def{acos}{249}{75.58165}
\pgfmath@def{acos}{250}{75.52248}    \pgfmath@def{acos}{251}{75.46330}
\pgfmath@def{acos}{252}{75.40410}    \pgfmath@def{acos}{253}{75.34489}
\pgfmath@def{acos}{254}{75.28566}    \pgfmath@def{acos}{255}{75.22641}
\pgfmath@def{acos}{256}{75.16715}    \pgfmath@def{acos}{257}{75.10787}
\pgfmath@def{acos}{258}{75.04857}    \pgfmath@def{acos}{259}{74.98926}
\pgfmath@def{acos}{260}{74.92993}    \pgfmath@def{acos}{261}{74.87059}
\pgfmath@def{acos}{262}{74.81123}    \pgfmath@def{acos}{263}{74.75185}
\pgfmath@def{acos}{264}{74.69245}    \pgfmath@def{acos}{265}{74.63304}
\pgfmath@def{acos}{266}{74.57361}    \pgfmath@def{acos}{267}{74.51417}
\pgfmath@def{acos}{268}{74.45471}    \pgfmath@def{acos}{269}{74.39523}
\pgfmath@def{acos}{270}{74.33573}    \pgfmath@def{acos}{271}{74.27621}
\pgfmath@def{acos}{272}{74.21668}    \pgfmath@def{acos}{273}{74.15713}
\pgfmath@def{acos}{274}{74.09757}    \pgfmath@def{acos}{275}{74.03798}
\pgfmath@def{acos}{276}{73.97838}    \pgfmath@def{acos}{277}{73.91876}
\pgfmath@def{acos}{278}{73.85912}    \pgfmath@def{acos}{279}{73.79946}
\pgfmath@def{acos}{280}{73.73979}    \pgfmath@def{acos}{281}{73.68010}
\pgfmath@def{acos}{282}{73.62039}    \pgfmath@def{acos}{283}{73.56066}
\pgfmath@def{acos}{284}{73.50091}    \pgfmath@def{acos}{285}{73.44115}
\pgfmath@def{acos}{286}{73.38136}    \pgfmath@def{acos}{287}{73.32156}
\pgfmath@def{acos}{288}{73.26174}    \pgfmath@def{acos}{289}{73.20190}
\pgfmath@def{acos}{290}{73.14204}    \pgfmath@def{acos}{291}{73.08216}
\pgfmath@def{acos}{292}{73.02226}    \pgfmath@def{acos}{293}{72.96235}
\pgfmath@def{acos}{294}{72.90241}    \pgfmath@def{acos}{295}{72.84246}
\pgfmath@def{acos}{296}{72.78248}    \pgfmath@def{acos}{297}{72.72249}
\pgfmath@def{acos}{298}{72.66248}    \pgfmath@def{acos}{299}{72.60244}
\pgfmath@def{acos}{300}{72.54239}    \pgfmath@def{acos}{301}{72.48232}
\pgfmath@def{acos}{302}{72.42223}    \pgfmath@def{acos}{303}{72.36212}
\pgfmath@def{acos}{304}{72.30198}    \pgfmath@def{acos}{305}{72.24183}
\pgfmath@def{acos}{306}{72.18166}    \pgfmath@def{acos}{307}{72.12147}
\pgfmath@def{acos}{308}{72.06125}    \pgfmath@def{acos}{309}{72.00102}
\pgfmath@def{acos}{310}{71.94077}    \pgfmath@def{acos}{311}{71.88049}
\pgfmath@def{acos}{312}{71.82019}    \pgfmath@def{acos}{313}{71.75988}
\pgfmath@def{acos}{314}{71.69954}    \pgfmath@def{acos}{315}{71.63918}
\pgfmath@def{acos}{316}{71.57880}    \pgfmath@def{acos}{317}{71.51840}
\pgfmath@def{acos}{318}{71.45798}    \pgfmath@def{acos}{319}{71.39754}
\pgfmath@def{acos}{320}{71.33707}    \pgfmath@def{acos}{321}{71.27658}
\pgfmath@def{acos}{322}{71.21608}    \pgfmath@def{acos}{323}{71.15555}
\pgfmath@def{acos}{324}{71.09499}    \pgfmath@def{acos}{325}{71.03442}
\pgfmath@def{acos}{326}{70.97382}    \pgfmath@def{acos}{327}{70.91321}
\pgfmath@def{acos}{328}{70.85257}    \pgfmath@def{acos}{329}{70.79190}
\pgfmath@def{acos}{330}{70.73122}    \pgfmath@def{acos}{331}{70.67051}
\pgfmath@def{acos}{332}{70.60978}    \pgfmath@def{acos}{333}{70.54903}
\pgfmath@def{acos}{334}{70.48826}    \pgfmath@def{acos}{335}{70.42746}
\pgfmath@def{acos}{336}{70.36664}    \pgfmath@def{acos}{337}{70.30579}
\pgfmath@def{acos}{338}{70.24493}    \pgfmath@def{acos}{339}{70.18404}
\pgfmath@def{acos}{340}{70.12312}    \pgfmath@def{acos}{341}{70.06218}
\pgfmath@def{acos}{342}{70.00122}    \pgfmath@def{acos}{343}{69.94024}
\pgfmath@def{acos}{344}{69.87923}    \pgfmath@def{acos}{345}{69.81820}
\pgfmath@def{acos}{346}{69.75714}    \pgfmath@def{acos}{347}{69.69606}
\pgfmath@def{acos}{348}{69.63496}    \pgfmath@def{acos}{349}{69.57383}
\pgfmath@def{acos}{350}{69.51268}    \pgfmath@def{acos}{351}{69.45150}
\pgfmath@def{acos}{352}{69.39030}    \pgfmath@def{acos}{353}{69.32908}
\pgfmath@def{acos}{354}{69.26783}    \pgfmath@def{acos}{355}{69.20655}
\pgfmath@def{acos}{356}{69.14525}    \pgfmath@def{acos}{357}{69.08393}
\pgfmath@def{acos}{358}{69.02258}    \pgfmath@def{acos}{359}{68.96120}
\pgfmath@def{acos}{360}{68.89980}    \pgfmath@def{acos}{361}{68.83837}
\pgfmath@def{acos}{362}{68.77692}    \pgfmath@def{acos}{363}{68.71544}
\pgfmath@def{acos}{364}{68.65394}    \pgfmath@def{acos}{365}{68.59241}
\pgfmath@def{acos}{366}{68.53086}    \pgfmath@def{acos}{367}{68.46928}
\pgfmath@def{acos}{368}{68.40767}    \pgfmath@def{acos}{369}{68.34604}
\pgfmath@def{acos}{370}{68.28438}    \pgfmath@def{acos}{371}{68.22269}
\pgfmath@def{acos}{372}{68.16098}    \pgfmath@def{acos}{373}{68.09924}
\pgfmath@def{acos}{374}{68.03748}    \pgfmath@def{acos}{375}{67.97568}
\pgfmath@def{acos}{376}{67.91386}    \pgfmath@def{acos}{377}{67.85202}
\pgfmath@def{acos}{378}{67.79014}    \pgfmath@def{acos}{379}{67.72824}
\pgfmath@def{acos}{380}{67.66631}    \pgfmath@def{acos}{381}{67.60436}
\pgfmath@def{acos}{382}{67.54237}    \pgfmath@def{acos}{383}{67.48036}
\pgfmath@def{acos}{384}{67.41832}    \pgfmath@def{acos}{385}{67.35626}
\pgfmath@def{acos}{386}{67.29416}    \pgfmath@def{acos}{387}{67.23204}
\pgfmath@def{acos}{388}{67.16988}    \pgfmath@def{acos}{389}{67.10770}
\pgfmath@def{acos}{390}{67.04550}    \pgfmath@def{acos}{391}{66.98326}
\pgfmath@def{acos}{392}{66.92099}    \pgfmath@def{acos}{393}{66.85870}
\pgfmath@def{acos}{394}{66.79637}    \pgfmath@def{acos}{395}{66.73402}
\pgfmath@def{acos}{396}{66.67164}    \pgfmath@def{acos}{397}{66.60923}
\pgfmath@def{acos}{398}{66.54679}    \pgfmath@def{acos}{399}{66.48432}
\pgfmath@def{acos}{400}{66.42182}    \pgfmath@def{acos}{401}{66.35929}
\pgfmath@def{acos}{402}{66.29673}    \pgfmath@def{acos}{403}{66.23414}
\pgfmath@def{acos}{404}{66.17152}    \pgfmath@def{acos}{405}{66.10887}
\pgfmath@def{acos}{406}{66.04619}    \pgfmath@def{acos}{407}{65.98348}
\pgfmath@def{acos}{408}{65.92074}    \pgfmath@def{acos}{409}{65.85796}
\pgfmath@def{acos}{410}{65.79516}    \pgfmath@def{acos}{411}{65.73233}
\pgfmath@def{acos}{412}{65.66946}    \pgfmath@def{acos}{413}{65.60657}
\pgfmath@def{acos}{414}{65.54364}    \pgfmath@def{acos}{415}{65.48068}
\pgfmath@def{acos}{416}{65.41769}    \pgfmath@def{acos}{417}{65.35467}
\pgfmath@def{acos}{418}{65.29161}    \pgfmath@def{acos}{419}{65.22853}
\pgfmath@def{acos}{420}{65.16541}    \pgfmath@def{acos}{421}{65.10226}
\pgfmath@def{acos}{422}{65.03908}    \pgfmath@def{acos}{423}{64.97586}
\pgfmath@def{acos}{424}{64.91261}    \pgfmath@def{acos}{425}{64.84933}
\pgfmath@def{acos}{426}{64.78602}    \pgfmath@def{acos}{427}{64.72267}
\pgfmath@def{acos}{428}{64.65929}    \pgfmath@def{acos}{429}{64.59588}
\pgfmath@def{acos}{430}{64.53244}    \pgfmath@def{acos}{431}{64.46896}
\pgfmath@def{acos}{432}{64.40544}    \pgfmath@def{acos}{433}{64.34190}
\pgfmath@def{acos}{434}{64.27832}    \pgfmath@def{acos}{435}{64.21470}
\pgfmath@def{acos}{436}{64.15105}    \pgfmath@def{acos}{437}{64.08737}
\pgfmath@def{acos}{438}{64.02365}    \pgfmath@def{acos}{439}{63.95990}
\pgfmath@def{acos}{440}{63.89611}    \pgfmath@def{acos}{441}{63.83229}
\pgfmath@def{acos}{442}{63.76844}    \pgfmath@def{acos}{443}{63.70455}
\pgfmath@def{acos}{444}{63.64062}    \pgfmath@def{acos}{445}{63.57666}
\pgfmath@def{acos}{446}{63.51266}    \pgfmath@def{acos}{447}{63.44863}
\pgfmath@def{acos}{448}{63.38456}    \pgfmath@def{acos}{449}{63.32045}
\pgfmath@def{acos}{450}{63.25631}    \pgfmath@def{acos}{451}{63.19213}
\pgfmath@def{acos}{452}{63.12792}    \pgfmath@def{acos}{453}{63.06367}
\pgfmath@def{acos}{454}{62.99938}    \pgfmath@def{acos}{455}{62.93506}
\pgfmath@def{acos}{456}{62.87070}    \pgfmath@def{acos}{457}{62.80630}
\pgfmath@def{acos}{458}{62.74187}    \pgfmath@def{acos}{459}{62.67740}
\pgfmath@def{acos}{460}{62.61289}    \pgfmath@def{acos}{461}{62.54834}
\pgfmath@def{acos}{462}{62.48376}    \pgfmath@def{acos}{463}{62.41913}
\pgfmath@def{acos}{464}{62.35447}    \pgfmath@def{acos}{465}{62.28977}
\pgfmath@def{acos}{466}{62.22504}    \pgfmath@def{acos}{467}{62.16026}
\pgfmath@def{acos}{468}{62.09545}    \pgfmath@def{acos}{469}{62.03059}
\pgfmath@def{acos}{470}{61.96570}    \pgfmath@def{acos}{471}{61.90077}
\pgfmath@def{acos}{472}{61.83580}    \pgfmath@def{acos}{473}{61.77079}
\pgfmath@def{acos}{474}{61.70574}    \pgfmath@def{acos}{475}{61.64065}
\pgfmath@def{acos}{476}{61.57552}    \pgfmath@def{acos}{477}{61.51035}
\pgfmath@def{acos}{478}{61.44514}    \pgfmath@def{acos}{479}{61.37988}
\pgfmath@def{acos}{480}{61.31459}    \pgfmath@def{acos}{481}{61.24926}
\pgfmath@def{acos}{482}{61.18389}    \pgfmath@def{acos}{483}{61.11847}
\pgfmath@def{acos}{484}{61.05302}    \pgfmath@def{acos}{485}{60.98752}
\pgfmath@def{acos}{486}{60.92199}    \pgfmath@def{acos}{487}{60.85641}
\pgfmath@def{acos}{488}{60.79078}    \pgfmath@def{acos}{489}{60.72512}
\pgfmath@def{acos}{490}{60.65941}    \pgfmath@def{acos}{491}{60.59367}
\pgfmath@def{acos}{492}{60.52787}    \pgfmath@def{acos}{493}{60.46204}
\pgfmath@def{acos}{494}{60.39616}    \pgfmath@def{acos}{495}{60.33025}
\pgfmath@def{acos}{496}{60.26428}    \pgfmath@def{acos}{497}{60.19828}
\pgfmath@def{acos}{498}{60.13223}    \pgfmath@def{acos}{499}{60.06613}
\pgfmath@def{acos}{500}{60.00000}    \pgfmath@def{acos}{501}{59.93381}
\pgfmath@def{acos}{502}{59.86759}    \pgfmath@def{acos}{503}{59.80132}
\pgfmath@def{acos}{504}{59.73500}    \pgfmath@def{acos}{505}{59.66864}
\pgfmath@def{acos}{506}{59.60224}    \pgfmath@def{acos}{507}{59.53579}
\pgfmath@def{acos}{508}{59.46929}    \pgfmath@def{acos}{509}{59.40275}
\pgfmath@def{acos}{510}{59.33617}    \pgfmath@def{acos}{511}{59.26953}
\pgfmath@def{acos}{512}{59.20285}    \pgfmath@def{acos}{513}{59.13613}
\pgfmath@def{acos}{514}{59.06936}    \pgfmath@def{acos}{515}{59.00254}
\pgfmath@def{acos}{516}{58.93568}    \pgfmath@def{acos}{517}{58.86876}
\pgfmath@def{acos}{518}{58.80180}    \pgfmath@def{acos}{519}{58.73480}
\pgfmath@def{acos}{520}{58.66774}    \pgfmath@def{acos}{521}{58.60064}
\pgfmath@def{acos}{522}{58.53349}    \pgfmath@def{acos}{523}{58.46629}
\pgfmath@def{acos}{524}{58.39905}    \pgfmath@def{acos}{525}{58.33175}
\pgfmath@def{acos}{526}{58.26441}    \pgfmath@def{acos}{527}{58.19702}
\pgfmath@def{acos}{528}{58.12957}    \pgfmath@def{acos}{529}{58.06208}
\pgfmath@def{acos}{530}{57.99454}    \pgfmath@def{acos}{531}{57.92695}
\pgfmath@def{acos}{532}{57.85931}    \pgfmath@def{acos}{533}{57.79162}
\pgfmath@def{acos}{534}{57.72388}    \pgfmath@def{acos}{535}{57.65608}
\pgfmath@def{acos}{536}{57.58824}    \pgfmath@def{acos}{537}{57.52035}
\pgfmath@def{acos}{538}{57.45240}    \pgfmath@def{acos}{539}{57.38441}
\pgfmath@def{acos}{540}{57.31636}    \pgfmath@def{acos}{541}{57.24826}
\pgfmath@def{acos}{542}{57.18010}    \pgfmath@def{acos}{543}{57.11190}
\pgfmath@def{acos}{544}{57.04364}    \pgfmath@def{acos}{545}{56.97533}
\pgfmath@def{acos}{546}{56.90697}    \pgfmath@def{acos}{547}{56.83855}
\pgfmath@def{acos}{548}{56.77008}    \pgfmath@def{acos}{549}{56.70156}
\pgfmath@def{acos}{550}{56.63298}    \pgfmath@def{acos}{551}{56.56435}
\pgfmath@def{acos}{552}{56.49567}    \pgfmath@def{acos}{553}{56.42693}
\pgfmath@def{acos}{554}{56.35813}    \pgfmath@def{acos}{555}{56.28928}
\pgfmath@def{acos}{556}{56.22038}    \pgfmath@def{acos}{557}{56.15141}
\pgfmath@def{acos}{558}{56.08240}    \pgfmath@def{acos}{559}{56.01333}
\pgfmath@def{acos}{560}{55.94420}    \pgfmath@def{acos}{561}{55.87501}
\pgfmath@def{acos}{562}{55.80577}    \pgfmath@def{acos}{563}{55.73647}
\pgfmath@def{acos}{564}{55.66712}    \pgfmath@def{acos}{565}{55.59770}
\pgfmath@def{acos}{566}{55.52823}    \pgfmath@def{acos}{567}{55.45871}
\pgfmath@def{acos}{568}{55.38912}    \pgfmath@def{acos}{569}{55.31947}
\pgfmath@def{acos}{570}{55.24977}    \pgfmath@def{acos}{571}{55.18001}
\pgfmath@def{acos}{572}{55.11019}    \pgfmath@def{acos}{573}{55.04030}
\pgfmath@def{acos}{574}{54.97036}    \pgfmath@def{acos}{575}{54.90036}
\pgfmath@def{acos}{576}{54.83030}    \pgfmath@def{acos}{577}{54.76018}
\pgfmath@def{acos}{578}{54.69000}    \pgfmath@def{acos}{579}{54.61976}
\pgfmath@def{acos}{580}{54.54945}    \pgfmath@def{acos}{581}{54.47909}
\pgfmath@def{acos}{582}{54.40866}    \pgfmath@def{acos}{583}{54.33817}
\pgfmath@def{acos}{584}{54.26762}    \pgfmath@def{acos}{585}{54.19701}
\pgfmath@def{acos}{586}{54.12633}    \pgfmath@def{acos}{587}{54.05559}
\pgfmath@def{acos}{588}{53.98479}    \pgfmath@def{acos}{589}{53.91392}
\pgfmath@def{acos}{590}{53.84299}    \pgfmath@def{acos}{591}{53.77199}
\pgfmath@def{acos}{592}{53.70093}    \pgfmath@def{acos}{593}{53.62981}
\pgfmath@def{acos}{594}{53.55862}    \pgfmath@def{acos}{595}{53.48736}
\pgfmath@def{acos}{596}{53.41604}    \pgfmath@def{acos}{597}{53.34466}
\pgfmath@def{acos}{598}{53.27320}    \pgfmath@def{acos}{599}{53.20168}
\pgfmath@def{acos}{600}{53.13010}    \pgfmath@def{acos}{601}{53.05844}
\pgfmath@def{acos}{602}{52.98672}    \pgfmath@def{acos}{603}{52.91494}
\pgfmath@def{acos}{604}{52.84308}    \pgfmath@def{acos}{605}{52.77115}
\pgfmath@def{acos}{606}{52.69916}    \pgfmath@def{acos}{607}{52.62710}
\pgfmath@def{acos}{608}{52.55497}    \pgfmath@def{acos}{609}{52.48276}
\pgfmath@def{acos}{610}{52.41049}    \pgfmath@def{acos}{611}{52.33815}
\pgfmath@def{acos}{612}{52.26574}    \pgfmath@def{acos}{613}{52.19326}
\pgfmath@def{acos}{614}{52.12070}    \pgfmath@def{acos}{615}{52.04808}
\pgfmath@def{acos}{616}{51.97538}    \pgfmath@def{acos}{617}{51.90261}
\pgfmath@def{acos}{618}{51.82976}    \pgfmath@def{acos}{619}{51.75685}
\pgfmath@def{acos}{620}{51.68386}    \pgfmath@def{acos}{621}{51.61080}
\pgfmath@def{acos}{622}{51.53766}    \pgfmath@def{acos}{623}{51.46445}
\pgfmath@def{acos}{624}{51.39117}    \pgfmath@def{acos}{625}{51.31781}
\pgfmath@def{acos}{626}{51.24437}    \pgfmath@def{acos}{627}{51.17086}
\pgfmath@def{acos}{628}{51.09728}    \pgfmath@def{acos}{629}{51.02361}
\pgfmath@def{acos}{630}{50.94987}    \pgfmath@def{acos}{631}{50.87606}
\pgfmath@def{acos}{632}{50.80216}    \pgfmath@def{acos}{633}{50.72819}
\pgfmath@def{acos}{634}{50.65414}    \pgfmath@def{acos}{635}{50.58001}
\pgfmath@def{acos}{636}{50.50580}    \pgfmath@def{acos}{637}{50.43152}
\pgfmath@def{acos}{638}{50.35715}    \pgfmath@def{acos}{639}{50.28270}
\pgfmath@def{acos}{640}{50.20818}    \pgfmath@def{acos}{641}{50.13357}
\pgfmath@def{acos}{642}{50.05888}    \pgfmath@def{acos}{643}{49.98411}
\pgfmath@def{acos}{644}{49.90926}    \pgfmath@def{acos}{645}{49.83432}
\pgfmath@def{acos}{646}{49.75930}    \pgfmath@def{acos}{647}{49.68420}
\pgfmath@def{acos}{648}{49.60902}    \pgfmath@def{acos}{649}{49.53375}
\pgfmath@def{acos}{650}{49.45839}    \pgfmath@def{acos}{651}{49.38296}
\pgfmath@def{acos}{652}{49.30743}    \pgfmath@def{acos}{653}{49.23182}
\pgfmath@def{acos}{654}{49.15613}    \pgfmath@def{acos}{655}{49.08035}
\pgfmath@def{acos}{656}{49.00448}    \pgfmath@def{acos}{657}{48.92852}
\pgfmath@def{acos}{658}{48.85248}    \pgfmath@def{acos}{659}{48.77634}
\pgfmath@def{acos}{660}{48.70012}    \pgfmath@def{acos}{661}{48.62381}
\pgfmath@def{acos}{662}{48.54741}    \pgfmath@def{acos}{663}{48.47092}
\pgfmath@def{acos}{664}{48.39434}    \pgfmath@def{acos}{665}{48.31767}
\pgfmath@def{acos}{666}{48.24091}    \pgfmath@def{acos}{667}{48.16405}
\pgfmath@def{acos}{668}{48.08710}    \pgfmath@def{acos}{669}{48.01006}
\pgfmath@def{acos}{670}{47.93293}    \pgfmath@def{acos}{671}{47.85570}
\pgfmath@def{acos}{672}{47.77838}    \pgfmath@def{acos}{673}{47.70096}
\pgfmath@def{acos}{674}{47.62345}    \pgfmath@def{acos}{675}{47.54585}
\pgfmath@def{acos}{676}{47.46814}    \pgfmath@def{acos}{677}{47.39034}
\pgfmath@def{acos}{678}{47.31244}    \pgfmath@def{acos}{679}{47.23445}
\pgfmath@def{acos}{680}{47.15635}    \pgfmath@def{acos}{681}{47.07816}
\pgfmath@def{acos}{682}{46.99987}    \pgfmath@def{acos}{683}{46.92147}
\pgfmath@def{acos}{684}{46.84298}    \pgfmath@def{acos}{685}{46.76439}
\pgfmath@def{acos}{686}{46.68569}    \pgfmath@def{acos}{687}{46.60690}
\pgfmath@def{acos}{688}{46.52800}    \pgfmath@def{acos}{689}{46.44899}
\pgfmath@def{acos}{690}{46.36989}    \pgfmath@def{acos}{691}{46.29068}
\pgfmath@def{acos}{692}{46.21136}    \pgfmath@def{acos}{693}{46.13194}
\pgfmath@def{acos}{694}{46.05241}    \pgfmath@def{acos}{695}{45.97278}
\pgfmath@def{acos}{696}{45.89304}    \pgfmath@def{acos}{697}{45.81319}
\pgfmath@def{acos}{698}{45.73323}    \pgfmath@def{acos}{699}{45.65317}
\pgfmath@def{acos}{700}{45.57299}    \pgfmath@def{acos}{701}{45.49271}
\pgfmath@def{acos}{702}{45.41231}    \pgfmath@def{acos}{703}{45.33180}
\pgfmath@def{acos}{704}{45.25118}    \pgfmath@def{acos}{705}{45.17045}
\pgfmath@def{acos}{706}{45.08961}    \pgfmath@def{acos}{707}{45.00865}
\pgfmath@def{acos}{708}{44.92757}    \pgfmath@def{acos}{709}{44.84638}
\pgfmath@def{acos}{710}{44.76508}    \pgfmath@def{acos}{711}{44.68366}
\pgfmath@def{acos}{712}{44.60212}    \pgfmath@def{acos}{713}{44.52046}
\pgfmath@def{acos}{714}{44.43869}    \pgfmath@def{acos}{715}{44.35680}
\pgfmath@def{acos}{716}{44.27478}    \pgfmath@def{acos}{717}{44.19265}
\pgfmath@def{acos}{718}{44.11039}    \pgfmath@def{acos}{719}{44.02802}
\pgfmath@def{acos}{720}{43.94552}    \pgfmath@def{acos}{721}{43.86289}
\pgfmath@def{acos}{722}{43.78014}    \pgfmath@def{acos}{723}{43.69727}
\pgfmath@def{acos}{724}{43.61427}    \pgfmath@def{acos}{725}{43.53115}
\pgfmath@def{acos}{726}{43.44790}    \pgfmath@def{acos}{727}{43.36452}
\pgfmath@def{acos}{728}{43.28101}    \pgfmath@def{acos}{729}{43.19737}
\pgfmath@def{acos}{730}{43.11360}    \pgfmath@def{acos}{731}{43.02970}
\pgfmath@def{acos}{732}{42.94567}    \pgfmath@def{acos}{733}{42.86151}
\pgfmath@def{acos}{734}{42.77721}    \pgfmath@def{acos}{735}{42.69278}
\pgfmath@def{acos}{736}{42.60821}    \pgfmath@def{acos}{737}{42.52351}
\pgfmath@def{acos}{738}{42.43867}    \pgfmath@def{acos}{739}{42.35370}
\pgfmath@def{acos}{740}{42.26858}    \pgfmath@def{acos}{741}{42.18333}
\pgfmath@def{acos}{742}{42.09793}    \pgfmath@def{acos}{743}{42.01240}
\pgfmath@def{acos}{744}{41.92672}    \pgfmath@def{acos}{745}{41.84090}
\pgfmath@def{acos}{746}{41.75493}    \pgfmath@def{acos}{747}{41.66882}
\pgfmath@def{acos}{748}{41.58257}    \pgfmath@def{acos}{749}{41.49617}
\pgfmath@def{acos}{750}{41.40962}    \pgfmath@def{acos}{751}{41.32292}
\pgfmath@def{acos}{752}{41.23607}    \pgfmath@def{acos}{753}{41.14908}
\pgfmath@def{acos}{754}{41.06193}    \pgfmath@def{acos}{755}{40.97463}
\pgfmath@def{acos}{756}{40.88717}    \pgfmath@def{acos}{757}{40.79956}
\pgfmath@def{acos}{758}{40.71180}    \pgfmath@def{acos}{759}{40.62388}
\pgfmath@def{acos}{760}{40.53580}    \pgfmath@def{acos}{761}{40.44756}
\pgfmath@def{acos}{762}{40.35916}    \pgfmath@def{acos}{763}{40.27061}
\pgfmath@def{acos}{764}{40.18189}    \pgfmath@def{acos}{765}{40.09300}
\pgfmath@def{acos}{766}{40.00396}    \pgfmath@def{acos}{767}{39.91474}
\pgfmath@def{acos}{768}{39.82537}    \pgfmath@def{acos}{769}{39.73582}
\pgfmath@def{acos}{770}{39.64611}    \pgfmath@def{acos}{771}{39.55622}
\pgfmath@def{acos}{772}{39.46617}    \pgfmath@def{acos}{773}{39.37594}
\pgfmath@def{acos}{774}{39.28554}    \pgfmath@def{acos}{775}{39.19496}
\pgfmath@def{acos}{776}{39.10421}    \pgfmath@def{acos}{777}{39.01328}
\pgfmath@def{acos}{778}{38.92218}    \pgfmath@def{acos}{779}{38.83089}
\pgfmath@def{acos}{780}{38.73942}    \pgfmath@def{acos}{781}{38.64777}
\pgfmath@def{acos}{782}{38.55594}    \pgfmath@def{acos}{783}{38.46392}
\pgfmath@def{acos}{784}{38.37171}    \pgfmath@def{acos}{785}{38.27932}
\pgfmath@def{acos}{786}{38.18673}    \pgfmath@def{acos}{787}{38.09396}
\pgfmath@def{acos}{788}{38.00100}    \pgfmath@def{acos}{789}{37.90784}
\pgfmath@def{acos}{790}{37.81448}    \pgfmath@def{acos}{791}{37.72093}
\pgfmath@def{acos}{792}{37.62719}    \pgfmath@def{acos}{793}{37.53324}
\pgfmath@def{acos}{794}{37.43909}    \pgfmath@def{acos}{795}{37.34474}
\pgfmath@def{acos}{796}{37.25019}    \pgfmath@def{acos}{797}{37.15542}
\pgfmath@def{acos}{798}{37.06046}    \pgfmath@def{acos}{799}{36.96528}
\pgfmath@def{acos}{800}{36.86989}    \pgfmath@def{acos}{801}{36.77429}
\pgfmath@def{acos}{802}{36.67848}    \pgfmath@def{acos}{803}{36.58245}
\pgfmath@def{acos}{804}{36.48621}    \pgfmath@def{acos}{805}{36.38974}
\pgfmath@def{acos}{806}{36.29305}    \pgfmath@def{acos}{807}{36.19615}
\pgfmath@def{acos}{808}{36.09901}    \pgfmath@def{acos}{809}{36.00165}
\pgfmath@def{acos}{810}{35.90406}    \pgfmath@def{acos}{811}{35.80625}
\pgfmath@def{acos}{812}{35.70820}    \pgfmath@def{acos}{813}{35.60991}
\pgfmath@def{acos}{814}{35.51139}    \pgfmath@def{acos}{815}{35.41263}
\pgfmath@def{acos}{816}{35.31364}    \pgfmath@def{acos}{817}{35.21440}
\pgfmath@def{acos}{818}{35.11491}    \pgfmath@def{acos}{819}{35.01518}
\pgfmath@def{acos}{820}{34.91520}    \pgfmath@def{acos}{821}{34.81497}
\pgfmath@def{acos}{822}{34.71449}    \pgfmath@def{acos}{823}{34.61375}
\pgfmath@def{acos}{824}{34.51276}    \pgfmath@def{acos}{825}{34.41150}
\pgfmath@def{acos}{826}{34.30999}    \pgfmath@def{acos}{827}{34.20821}
\pgfmath@def{acos}{828}{34.10616}    \pgfmath@def{acos}{829}{34.00385}
\pgfmath@def{acos}{830}{33.90126}    \pgfmath@def{acos}{831}{33.79840}
\pgfmath@def{acos}{832}{33.69526}    \pgfmath@def{acos}{833}{33.59184}
\pgfmath@def{acos}{834}{33.48814}    \pgfmath@def{acos}{835}{33.38416}
\pgfmath@def{acos}{836}{33.27989}    \pgfmath@def{acos}{837}{33.17533}
\pgfmath@def{acos}{838}{33.07047}    \pgfmath@def{acos}{839}{32.96532}
\pgfmath@def{acos}{840}{32.85988}    \pgfmath@def{acos}{841}{32.75413}
\pgfmath@def{acos}{842}{32.64807}    \pgfmath@def{acos}{843}{32.54171}
\pgfmath@def{acos}{844}{32.43504}    \pgfmath@def{acos}{845}{32.32806}
\pgfmath@def{acos}{846}{32.22076}    \pgfmath@def{acos}{847}{32.11314}
\pgfmath@def{acos}{848}{32.00520}    \pgfmath@def{acos}{849}{31.89693}
\pgfmath@def{acos}{850}{31.78833}    \pgfmath@def{acos}{851}{31.67939}
\pgfmath@def{acos}{852}{31.57012}    \pgfmath@def{acos}{853}{31.46051}
\pgfmath@def{acos}{854}{31.35056}    \pgfmath@def{acos}{855}{31.24026}
\pgfmath@def{acos}{856}{31.12961}    \pgfmath@def{acos}{857}{31.01860}
\pgfmath@def{acos}{858}{30.90724}    \pgfmath@def{acos}{859}{30.79551}
\pgfmath@def{acos}{860}{30.68341}    \pgfmath@def{acos}{861}{30.57095}
\pgfmath@def{acos}{862}{30.45811}    \pgfmath@def{acos}{863}{30.34489}
\pgfmath@def{acos}{864}{30.23128}    \pgfmath@def{acos}{865}{30.11729}
\pgfmath@def{acos}{866}{30.00291}    \pgfmath@def{acos}{867}{29.88813}
\pgfmath@def{acos}{868}{29.77294}    \pgfmath@def{acos}{869}{29.65736}
\pgfmath@def{acos}{870}{29.54136}    \pgfmath@def{acos}{871}{29.42494}
\pgfmath@def{acos}{872}{29.30810}    \pgfmath@def{acos}{873}{29.19084}
\pgfmath@def{acos}{874}{29.07315}    \pgfmath@def{acos}{875}{28.95502}
\pgfmath@def{acos}{876}{28.83645}    \pgfmath@def{acos}{877}{28.71743}
\pgfmath@def{acos}{878}{28.59796}    \pgfmath@def{acos}{879}{28.47803}
\pgfmath@def{acos}{880}{28.35763}    \pgfmath@def{acos}{881}{28.23677}
\pgfmath@def{acos}{882}{28.11542}    \pgfmath@def{acos}{883}{27.99360}
\pgfmath@def{acos}{884}{27.87128}    \pgfmath@def{acos}{885}{27.74847}
\pgfmath@def{acos}{886}{27.62516}    \pgfmath@def{acos}{887}{27.50134}
\pgfmath@def{acos}{888}{27.37700}    \pgfmath@def{acos}{889}{27.25214}
\pgfmath@def{acos}{890}{27.12675}    \pgfmath@def{acos}{891}{27.00082}
\pgfmath@def{acos}{892}{26.87434}    \pgfmath@def{acos}{893}{26.74731}
\pgfmath@def{acos}{894}{26.61973}    \pgfmath@def{acos}{895}{26.49157}
\pgfmath@def{acos}{896}{26.36283}    \pgfmath@def{acos}{897}{26.23351}
\pgfmath@def{acos}{898}{26.10359}    \pgfmath@def{acos}{899}{25.97306}
\pgfmath@def{acos}{900}{25.84193}    \pgfmath@def{acos}{901}{25.71017}
\pgfmath@def{acos}{902}{25.57778}    \pgfmath@def{acos}{903}{25.44475}
\pgfmath@def{acos}{904}{25.31106}    \pgfmath@def{acos}{905}{25.17671}
\pgfmath@def{acos}{906}{25.04169}    \pgfmath@def{acos}{907}{24.90598}
\pgfmath@def{acos}{908}{24.76958}    \pgfmath@def{acos}{909}{24.63247}
\pgfmath@def{acos}{910}{24.49464}    \pgfmath@def{acos}{911}{24.35608}
\pgfmath@def{acos}{912}{24.21678}    \pgfmath@def{acos}{913}{24.07672}
\pgfmath@def{acos}{914}{23.93588}    \pgfmath@def{acos}{915}{23.79427}
\pgfmath@def{acos}{916}{23.65185}    \pgfmath@def{acos}{917}{23.50863}
\pgfmath@def{acos}{918}{23.36457}    \pgfmath@def{acos}{919}{23.21967}
\pgfmath@def{acos}{920}{23.07391}    \pgfmath@def{acos}{921}{22.92728}
\pgfmath@def{acos}{922}{22.77975}    \pgfmath@def{acos}{923}{22.63132}
\pgfmath@def{acos}{924}{22.48195}    \pgfmath@def{acos}{925}{22.33164}
\pgfmath@def{acos}{926}{22.18036}    \pgfmath@def{acos}{927}{22.02810}
\pgfmath@def{acos}{928}{21.87483}    \pgfmath@def{acos}{929}{21.72053}
\pgfmath@def{acos}{930}{21.56518}    \pgfmath@def{acos}{931}{21.40876}
\pgfmath@def{acos}{932}{21.25124}    \pgfmath@def{acos}{933}{21.09260}
\pgfmath@def{acos}{934}{20.93281}    \pgfmath@def{acos}{935}{20.77185}
\pgfmath@def{acos}{936}{20.60969}    \pgfmath@def{acos}{937}{20.44630}
\pgfmath@def{acos}{938}{20.28165}    \pgfmath@def{acos}{939}{20.11570}
\pgfmath@def{acos}{940}{19.94844}    \pgfmath@def{acos}{941}{19.77982}
\pgfmath@def{acos}{942}{19.60981}    \pgfmath@def{acos}{943}{19.43837}
\pgfmath@def{acos}{944}{19.26546}    \pgfmath@def{acos}{945}{19.09105}
\pgfmath@def{acos}{946}{18.91509}    \pgfmath@def{acos}{947}{18.73754}
\pgfmath@def{acos}{948}{18.55835}    \pgfmath@def{acos}{949}{18.37748}
\pgfmath@def{acos}{950}{18.19487}    \pgfmath@def{acos}{951}{18.01047}
\pgfmath@def{acos}{952}{17.82423}    \pgfmath@def{acos}{953}{17.63609}
\pgfmath@def{acos}{954}{17.44598}    \pgfmath@def{acos}{955}{17.25385}
\pgfmath@def{acos}{956}{17.05962}    \pgfmath@def{acos}{957}{16.86322}
\pgfmath@def{acos}{958}{16.66457}    \pgfmath@def{acos}{959}{16.46359}
\pgfmath@def{acos}{960}{16.26020}    \pgfmath@def{acos}{961}{16.05430}
\pgfmath@def{acos}{962}{15.84580}    \pgfmath@def{acos}{963}{15.63459}
\pgfmath@def{acos}{964}{15.42057}    \pgfmath@def{acos}{965}{15.20360}
\pgfmath@def{acos}{966}{14.98357}    \pgfmath@def{acos}{967}{14.76033}
\pgfmath@def{acos}{968}{14.53374}    \pgfmath@def{acos}{969}{14.30364}
\pgfmath@def{acos}{970}{14.06986}    \pgfmath@def{acos}{971}{13.83221}
\pgfmath@def{acos}{972}{13.59049}    \pgfmath@def{acos}{973}{13.34447}
\pgfmath@def{acos}{974}{13.09392}    \pgfmath@def{acos}{975}{12.83856}
\pgfmath@def{acos}{976}{12.57811}    \pgfmath@def{acos}{977}{12.31225}
\pgfmath@def{acos}{978}{12.04060}    \pgfmath@def{acos}{979}{11.76278}
\pgfmath@def{acos}{980}{11.47834}    \pgfmath@def{acos}{981}{11.18676}
\pgfmath@def{acos}{982}{10.88748}    \pgfmath@def{acos}{983}{10.57984}
\pgfmath@def{acos}{984}{10.26309}    \pgfmath@def{acos}{985}{9.93636}
\pgfmath@def{acos}{986}{9.59863}    \pgfmath@def{acos}{987}{9.24870}
\pgfmath@def{acos}{988}{8.88512}    \pgfmath@def{acos}{989}{8.50614}
\pgfmath@def{acos}{990}{8.10961}    \pgfmath@def{acos}{991}{7.69281}
\pgfmath@def{acos}{992}{7.25224}    \pgfmath@def{acos}{993}{6.78328}
\pgfmath@def{acos}{994}{6.27958}    \pgfmath@def{acos}{995}{5.73196}
\pgfmath@def{acos}{996}{5.12640}    \pgfmath@def{acos}{997}{4.43922}
\pgfmath@def{acos}{998}{3.62430}    \pgfmath@def{acos}{999}{2.56255}
\pgfmath@def{acos}{1000}{0.00000}



==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathfunctions.trigonometric.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathparser.code.tex ====

\newdimen\pgfmath@dimen
\newcount\pgfmath@count
\newbox\pgfmath@box
\newtoks\pgfmath@toks

\newif\ifpgfmath@quickparse
\newif\ifpgfmathfloat
\newif\ifpgfmathunitsdeclared
\newif\ifpgfmathmathunitsdeclared
\newif\ifpgfmathignoreunitscale

\let\pgfmath@protected@edef=\edef
\ifcsname protected@edef\endcsname
  \let\pgfmath@protected@edef=\protected@edef
\fi

\def\pgfmathprint#1{\pgfmathparse{#1}\pgfmathresult}

\def\pgfmathparse{%
  \begingroup
    \pgfmath@catcodes
    \pgfmath@quickparsefalse
    \ifpgfmathfloat
      \let\pgfmath@parse@next=\pgfmathfloatparsenumber
    \else
      \let\pgfmath@parse@next=\pgfmathparse@
    \fi
    \pgfmath@parse@next}

\begingroup
  \lccode`\~=`\"
  \lowercase{\endgroup
    \def\pgfmath@catcodes{%
      \catcode`\==12 %
      \catcode`\,=12 %
      \catcode`\|=12 %
      \catcode`\&=12 %
      \let~\pgfmath@char@quote
    }}%

\def\pgfmathqparse{%
  \begingroup
    \pgfmath@catcodes
    \pgfmath@quickparsetrue
    \pgfmathparse@}

\def\pgfmathparse@#1{%
    \global\pgfmathunitsdeclaredfalse
    \global\pgfmathmathunitsdeclaredfalse
    \pgfmath@protected@edef\pgfmath@expression{#1}%
    \expandafter\pgfmathparse@trynumber@loop\pgfmath@expression\pgfmath@parse@stop
}

\def\pgfmath@parse@stop{\pgfmath@parse@stop}%

\def\pgfmathparse@trynumber@token{numeric}
\begingroup
\def\\{\global\let\pgf@let@space@token= } \\ %
\endgroup

\def\pgfmathparse@trynumber@loop{%
    \futurelet\pgfmath@token@let\pgfmathparse@trynumber@loop@
}%
\def\pgfmathparse@trynumber@loop@#1{%
    \ifx\pgfmath@token@let\pgf@let@space@token
        \def\pgfmath@parse@next{\pgfmathparse@@#1}%
    \else
        \ifx\pgfmath@token@let\bgroup%
            \let\pgfmath@parse@next=\pgfmathparse@@
        \else
            \ifx\pgfmath@token@let\pgfmath@parse@stop
                \let\pgfmath@parse@next=\pgfmathparse@expression@is@number
            \else
                \expandafter\ifx\csname pgfmath@token@\pgfmathparse@trynumber@token @\string#1\endcsname\relax%
                    \let\pgfmath@parse@next=\pgfmathparse@@
                \else
                    \let\pgfmath@parse@next=\pgfmathparse@trynumber@loop
                \fi
            \fi
        \fi
    \fi
    \pgfmath@parse@next
}%

\def\pgfmathparse@expression@is@number{%
    \let\pgfmathresult=\pgfmath@expression
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup
  \ignorespaces
}%
\def\pgfmathparse@@#1\pgfmath@parse@stop{%
    \let\real=\pgfmath@calc@real
    \let\minof=\pgfmath@calc@minof
    \let\maxof=\pgfmath@calc@maxof
    \let\ratio=\pgfmath@calc@ratio
    \let\widthof=\pgfmath@calc@widthof
    \let\heightof=\pgfmath@calc@heightof
    \let\depthof=\pgfmath@calc@depthof
    \pgfmath@selectfont
    \pgfmath@stack@operation={{}{}{}}%
    \pgfmath@stack@operand={{}{}{}}%
    \let\pgfmath@stack@operation@top=\pgfmath@stack@empty
    \let\pgfmath@stack@operand@top=\pgfmath@stack@empty
    \expandafter\pgfmath@bgroup@strip\expandafter{\pgfmath@expression}%
    \expandafter\pgfmath@parse@@operand\pgfmath@bgroup@stripped @@@@\pgfmath@parse@stop%
}

\def\pgfmath@parse@end#1\pgfmath@parse@stop{%
    \pgfmathpostparse
    \pgfmath@smuggleone\pgfmathresult%
  \endgroup
  \ignorespaces}

\let\pgfmathpostparse=\relax

\def\pgfmathscaleresult{%
  \ifpgfmathunitsdeclared
  \else
    \ifpgfmathignoreunitscale
    \else
       \afterassignment\pgfmath@gobbletilpgfmath@%
      \pgfmath@x\pgfmathresultunitscale pt\relax\pgfmath@%
      \expandafter\pgfmath@x\pgfmathresult\pgfmath@x%
      \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@x}}%
    \fi
  \fi
}

\def\pgfmathsetresultunitscale#1{\def\pgfmathresultunitscale{#1}}

\def\pgfmathresultunitscale{1}


\def\pgfmathifexpression#1#2#3{%
    \pgfmathparse{#1}%
    \pgfmath@iftrue{#2}{#3}%
}%
\def\pgfmath@iftrue{%
    \ifdim\pgfmathresult pt=1.0pt %
        \let\pgfmath@next=\pgfutil@firstoftwo
    \else
        \let\pgfmath@next=\pgfutil@secondoftwo
    \fi
    \pgfmath@next%
}%

\def\pgfmath@calc@real#1{#1}
\def\pgfmath@calc@minof#1#2{min(#1,#2)}
\def\pgfmath@calc@maxof#1#2{max(#1,#2)}
\def\pgfmath@calc@ratio#1#2{#1/#2}
\def\pgfmath@calc@widthof#1{width("#1")}
\def\pgfmath@calc@heightof#1{height("#1")}
\def\pgfmath@calc@depthof#1{depth("#1")}

\def\pgfmath@bgroup{\string\pgfmath@bgroup}
\def\pgfmath@egroup{\string\pgfmath@egroup}
\def\pgfmath@egroup@token{\pgfmath@egroup}

\def\pgfmath@text@@{@}
\def\pgfmath@text@operator{operator}
\def\pgfmath@text@function{function}
\def\pgfmath@dots{...}
\def\pgfmath@char@zero{0}
\def\pgfmath@char@quote{"}
\def\pgfmath@char@exclamation{!}
\def\pgfmath@char@plus{+}
\def\pgfmath@char@minus{-}
\def\pgfmath@char@period{.}
\def\pgfmath@char@leftangle{<}
\def\pgfmath@char@leftbracket{[}
\pgfmath@toks={#}
\edef\pgfmath@char@hash{\the\pgfmath@toks}

\def\pgfmath@tokens@make#1#2{%
  \def\pgfmath@prefix{#1}%
  \expandafter\pgfmath@tokens@@make#2{}}

\def\pgfmath@tokens@@make#1{%
  \def\pgfmath@token{#1}%
  \ifx\pgfmath@token\pgfmath@empty
  \else
    \pgfmath@namedef{pgfmath@token@\pgfmath@prefix @\string#1}{#1}%
    \expandafter\pgfmath@tokens@@make%
  \fi}

\pgfmath@tokens@make{box}{\wd\ht\dp}
\ifx\dimexpr\@undefined\else %
  \pgfmath@tokens@make{dimexpr}{\dimexpr\glueexpr}
\fi
\pgfmath@tokens@make{unit}{{bp}{cc}{cm}{dd}{em}{ex}{in}{mm}{pc}{pt}{sp}}
\ifx\pdftexversion\@undefined\else %
  \pgfmath@tokens@make{unit}{{nc}{nd}{px}}
\fi
\ifx\directlua\@undefined\else %
  \pgfmath@tokens@make{unit}{{nc}{nd}{px}}
\fi
\ifx\kanjiskip\@undefined\else %
  \pgfmath@tokens@make{unit}{{H}{Q}{zh}{zw}}
\fi
\pgfmath@tokens@make{mathunit}{{mu}}
\pgfmath@tokens@make{numeric}{.0123456789}
\pgfmath@tokens@make{number}{0123456789}
\pgfmath@tokens@make{functional}{_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ}
\pgfmath@tokens@make{exponent}{eE}
\pgfmath@tokens@make{group}{{()}{[]}{\pgfmath@bgroup\pgfmath@egroup}}
\pgfmath@tokens@make{specials}{@)]\pgfmath@egroup}
\pgfmath@tokens@make{hexadecimal}{0123456789ABCDEFabcdef}
\pgfmath@tokens@make{octal}{01234567}
\pgfmath@tokens@make{binary}{01}

\pgfmath@namedef{pgfmath@base@0x}{16}
\pgfmath@namedef{pgfmath@base@0X}{16}
\pgfmath@namedef{pgfmath@base@0b}{2}
\pgfmath@namedef{pgfmath@base@0B}{2}

\newif\ifpgfmath@dimen@
\def\pgfmath@dimen@#1{%
  \begingroup
    \afterassignment\pgfmath@dimen@@%
    #1=0.0pt\relax\pgfmath@}
\def\pgfmath@dimen@@#1#2\pgfmath@{%
  \endgroup
  \ifx#1.%
    \pgfmath@dimen@false
  \else
    \pgfmath@dimen@true
  \fi}

\def\pgfmath@parse@ifbgroup#1#2{%
  \let\pgfmath@parse@bgroup@after=#1%
  \let\pgfmath@parse@nobgroup@after=#2%
  \futurelet\pgfmath@token@let%
  \pgfmath@parse@@ifbgroup}

\def\pgfmath@parse@@ifbgroup{%
  \ifx\pgfmath@token@let\bgroup
    \let\pgfmath@parse@next=\pgfmath@parse@@@ifbgroup
  \else
    \ifx\pgfmath@token@let\pgfmath@sptoken
      \let\pgfmath@parse@next=\pgfmath@parse@@@@ifbgroup
    \else
      \let\pgfmath@parse@next=\pgfmath@parse@nobgroup@after
    \fi
  \fi
  \pgfmath@parse@next}

\newif\ifpgfmath@octalparsing
\pgfmath@octalparsingtrue

\def\pgfmath@parse@@@ifbgroup#1{%
  \pgfmath@parse@bgroup@after\pgfmath@bgroup#1\pgfmath@egroup}

{
\def\:{\pgfmath@parse@@@@ifbgroup}
\expandafter\gdef\: {\futurelet\pgfmath@token@let\pgfmath@parse@@ifbgroup}
}

\def\pgfmath@parse@operand{%
  \expandafter\pgfmath@parse@@operand\pgfmath@token@next}

\def\pgfmath@parse@@operand{%
  \pgfmath@parse@ifbgroup{\pgfmath@parse@@operand}{\pgfmath@parse@@operand@}}

\def\pgfmath@parse@@operand@#1{%
  \def\pgfmath@token{#1}%
  \ifx\pgfmath@token\pgfmath@char@plus
    \let\pgfmath@parse@next=\pgfmath@parse@@operand%
  \else
    \ifx\pgfmath@token\pgfmath@char@minus
      \pgfmath@stack@push@operation{neg}%
      \let\pgfmath@parse@next=\pgfmath@parse@@operand
    \else
      \expandafter\ifx\csname pgfmath@operation@\expandafter\string\pgfmath@token @prefix\endcsname\pgfmath@token
        \let\pgfmath@parse@next=\pgfmath@parse@prefix@operator
      \else
        \ifpgfmath@quickparse
          \let\pgfmath@parse@next=\pgfmath@qparse@operand
        \else
          \let\pgfmath@number=\pgfmath@empty
          \expandafter\ifx\csname pgfmath@token@functional@\string#1\endcsname\relax%
            \let\pgfmath@base=\pgfmath@empty%
            \let\pgfmath@token@next=\pgfmath@token%
            \if#10%
              \ifpgfmath@octalparsing%
                \def\pgfmath@base{8}%
              \fi%
            \fi%
            \let\pgfmath@parse@next=\pgfmath@parse@number%
          \else%
            \let\pgfmath@function=\pgfmath@token%
            \let\pgfmath@parse@next=\pgfmath@parse@function%
          \fi%
        \fi%
      \fi%
    \fi%
  \fi%
  \pgfmath@parse@next%
}

\def\pgfmath@parse@prefix@operator{%
  \ifx\pgfmath@token\pgfmath@char@quote%
    \let\pgfmath@parse@next=\pgfmath@parse@operand@quote%
  \else%
    \ifx\pgfmath@token\pgfmath@char@exclamation%
      \pgfmath@stack@push@operation{not}%
      \let\pgfmath@parse@next=\pgfmath@parse@@operand%
    \else%
      \expandafter\pgfmath@stack@push@operation\expandafter{\pgfmath@token}%
      \let\pgfmath@parse@next=\pgfmath@parse@@operand%
    \fi%
  \fi%
  \pgfmath@parse@next%
}%


\def\pgfmath@parse@operand@quote#1"{%
  \def\pgfmathresult{#1}%
  \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
  \pgfmath@parse@@operator%
}

\def\pgfmath@qparse@operand{%
  \afterassignment\pgfmath@qparse@@operand%
  \pgfmath@dimen\pgfmath@token}
\def\pgfmath@qparse@@operand{%
  \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
  \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
  \pgfmath@parse@@operator%
}

\def\pgfmath@parse@number{\pgfmath@parse@ifbgroup{\pgfmath@parse@number}{\pgfmath@parse@number@}}
\def\pgfmath@parse@number@#1{%
  \let\pgfmath@token=\pgfmath@token@next%
  \def\pgfmath@token@next{#1}%
  \pgfmath@parse@@number}

\def\pgfmath@parse@@number{%
  \ifx\pgfmath@token\pgfmath@egroup@token%
    \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmath@number}%
    \let\pgfmath@parse@next=\pgfmath@parse@@@operator%
  \else%
    \expandafter\ifcat\pgfmath@token\relax%
      \expandafter\ifx\csname pgfmath@token@dimexpr@\expandafter\string\pgfmath@token\endcsname\relax%
        \expandafter\ifx\pgfmath@token\numexpr%
          \let\pgfmath@parse@next=\pgfmath@parse@numexpr%
        \else%
          \expandafter\ifx\pgfmath@token\muexpr%
            \let\pgfmath@parse@next=\pgfmath@parse@muexpr%
          \else%
            \expandafter\ifx\csname pgfmath@token@box@\expandafter\string\pgfmath@token\endcsname\relax%
              \expandafter\pgfmath@dimen@\pgfmath@token%
              \ifpgfmath@dimen@%
                \global\pgfmathunitsdeclaredtrue%
                \pgfmath@dimen=\pgfmath@number\pgfmath@token%
                \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
                \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
                \let\pgfmath@parse@next=\pgfmath@parse@operator%
              \else%
                \pgfmath@count=\pgfmath@token%
                \expandafter\def\expandafter\pgfmath@number\expandafter{\the\pgfmath@count}%
                \expandafter\ifcat\pgfmath@token@next\relax%
                  \let\pgfmath@parse@next=\pgfmath@parse@number%
                \else%
                  \let\pgfmathresult=\pgfmath@number%
                  \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
                  \let\pgfmath@parse@next=\pgfmath@parse@operator%
                \fi%
              \fi%
            \else%
              \global\pgfmathunitsdeclaredtrue%
              \pgfmath@dimen=\pgfmath@number\pgfmath@token\pgfmath@token@next%
              \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
              \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
              \let\pgfmath@parse@next=\pgfmath@parse@@operator%
            \fi%
          \fi%
        \fi%
      \else%
        \global\pgfmathunitsdeclaredtrue%
        \let\pgfmath@parse@next=\pgfmath@parse@dimexpr%
      \fi%
    \else%
      \expandafter\ifx\csname pgfmath@token@numeric@\expandafter\string\pgfmath@token\endcsname\relax%
        \expandafter\ifx\csname pgfmath@token@unit@\pgfmath@token\expandafter\string\pgfmath@token@next\endcsname\relax%
        \expandafter\ifx\csname pgfmath@token@unit@\pgfmath@token\endcsname\relax%
          \expandafter\ifx\csname pgfmath@token@exponent@\pgfmath@token\endcsname\relax%
            \expandafter\ifx\csname pgfmath@base@\pgfmath@number\pgfmath@token\endcsname\relax%
              \expandafter\ifx\csname pgfmath@token@mathunit@\pgfmath@token\expandafter\string\pgfmath@token@next\endcsname\relax%
                  \ifx\pgfmath@base\pgfmath@empty%
                    \let\pgfmathresult=\pgfmath@number%
                  \else%
                    \ifx\pgfmath@number\pgfmath@char@zero%
                      \let\pgfmathresult=\pgfmath@number%
                    \else%
                      \expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\pgfmath@number}{8}{10}%
                    \fi%
                  \fi%
                  \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
                  \let\pgfmath@parse@next=\pgfmath@parse@@@operator%
              \else%
                \global\pgfmathunitsdeclaredtrue%
                \global\pgfmathmathunitsdeclaredtrue%
                \pgfmath@dimen=\pgfmath@number pt\relax%
                \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
                \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
                \let\pgfmath@parse@next=\pgfmath@parse@@operator%
              \fi%
            \else%
              \expandafter\let\expandafter\pgfmath@base\expandafter=%
                \csname pgfmath@base@\pgfmath@number\pgfmath@token\endcsname%
              \let\pgfmath@parse@next=\pgfmath@parse@base%
            \fi%
          \else%
            \let\pgfmath@parse@next=\pgfmath@parse@exponent%
          \fi%
        \else%
          \global\pgfmathunitsdeclaredtrue%
          \pgfmath@dimen=\pgfmath@number\pgfmath@token\relax%
          \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
          \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
          \let\pgfmath@parse@next=\pgfmath@parse@@operator%
        \fi%
        \else%
          \global\pgfmathunitsdeclaredtrue%
          \pgfmath@dimen=\pgfmath@number\pgfmath@token\pgfmath@token@next\relax%
          \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
          \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
          \let\pgfmath@parse@next=\pgfmath@parse@@operator%
        \fi%
      \else%
        \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgfmath@number%
          \expandafter\expandafter\expandafter{\expandafter\pgfmath@number\pgfmath@token}%
        \ifx\pgfmath@token\pgfmath@char@period%
          \let\pgfmath@base=\pgfmath@empty%
        \fi%
        \let\pgfmath@parse@next=\pgfmath@parse@number%
      \fi%
    \fi%
  \fi%
  \pgfmath@parse@next%
}


\def\pgfmath@parse@dimexpr{%
  \afterassignment\pgfmath@parse@dimexpr@%
  \expandafter\expandafter\expandafter\pgfmath@dimen\expandafter\pgfmath@token\pgfmath@token@next%
}
\def\pgfmath@parse@dimexpr@{%
  \edef\pgfmathresult{\pgfmath@tonumber{\pgfmath@dimen}}%
  \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
  \pgfmath@parse@@operator%
}


\def\pgfmath@parse@muexpr{%
  \begingroup%
    \afterassignment\pgfmath@parse@muexpr@%
    \expandafter\expandafter\expandafter\muskip\expandafter\expandafter\expandafter0\expandafter\pgfmath@token\expandafter\pgfmath@token@next%
}
\def\pgfmath@parse@muexpr@{%
  \expandafter\endgroup%
  \expandafter\edef\expandafter\pgfmathresult\expandafter{\expandafter\pgfMATH@STRIPMU\the\muskip0}%
  \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
  \pgfmath@parse@@operator%
}

{
\catcode`\m=12
\catcode`\u=12
\gdef\pgfMATH@STRIPMU#1mu{#1}
}


\def\pgfmath@parse@numexpr{%
  \afterassignment\pgfmath@parse@numexpr@%
  \expandafter\expandafter\expandafter\pgfmath@count\expandafter\pgfmath@token\pgfmath@token@next%
}
\def\pgfmath@parse@numexpr@#1{%
  \expandafter\def\expandafter\pgfmath@number\expandafter{\the\pgfmath@count}%
  \def\pgfmath@token@next{#1}%
  \expandafter\ifcat\pgfmath@token@next\relax%
    \let\pgfmath@parse@next=\pgfmath@parse@number%
  \else%
    \let\pgfmathresult=\pgfmath@number%
    \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
    \let\pgfmath@parse@next=\pgfmath@parse@operator%
  \fi%
  \pgfmath@parse@next%
}


\def\pgfmath@parse@exponent{%
  \afterassignment\pgfmath@parse@@exponent%
  \pgfmath@count\pgfmath@token@next}
\def\pgfmath@parse@@exponent{%
  \pgfmathscientific{\pgfmath@number}{\the\pgfmath@count}%
  \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
  \pgfmath@parse@@operator%
}

\def\pgfmath@parse@base{%
  \ifnum\pgfmath@base=2\relax%
    \let\pgfmath@parse@next=\pgfmath@parse@binary%
  \else%
    \ifnum\pgfmath@base=16\relax%
      \let\pgfmath@parse@next=\pgfmath@parse@hexadecimal%
    \else%
      \pgfmath@error{Unexpected numerical base `\pgfmath@base'}{}%
      \def\pgfmathresult{0}%
      \let\pgfmath@parse@next=\pgfmath@parse@end%
    \fi%
  \fi%
  \let\pgfmath@number=\pgfmath@empty%
  \expandafter\pgfmath@parse@next\pgfmath@token@next%
}

\def\pgfmath@parse@binary#1{%
  \expandafter\ifx\csname pgfmath@token@binary@#1\endcsname\relax%
    \expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\pgfmath@number}{2}{10}%
    \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
    \def\pgfmath@token@next{#1}%
    \let\pgfmath@parse@next=\pgfmath@parse@operator%
  \else%
    \expandafter\def\expandafter\pgfmath@number\expandafter{\pgfmath@number#1}%
    \let\pgfmath@parse@next=\pgfmath@parse@binary%
  \fi%
  \pgfmath@parse@next%
}

\def\pgfmath@parse@hexadecimal#1{%
  \expandafter\ifx\csname pgfmath@token@hexadecimal@#1\endcsname\relax%
    \expandafter\pgfmathbasetobase\expandafter\pgfmathresult\expandafter{\pgfmath@number}{16}{10}%
    \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
    \def\pgfmath@token@next{#1}%
    \let\pgfmath@parse@next=\pgfmath@parse@operator%
  \else%
    \expandafter\def\expandafter\pgfmath@number\expandafter{\pgfmath@number#1}%
    \let\pgfmath@parse@next=\pgfmath@parse@hexadecimal%
  \fi%
  \pgfmath@parse@next%
}

\def\pgfmath@parse@function{\pgfmath@parse@ifbgroup{\pgfmath@parse@function}{\pgfmath@parse@@function}}
\def\pgfmath@parse@function@{\futurelet\pgfmath@token@let\pgfmath@parse@@function}
\def\pgfmath@parse@@function{%
  \ifx\pgfmath@token@let\pgfmath@sptoken%
    \let\pgfmath@token=\pgfmath@empty%
    \let\pgfmath@parse@next=\pgfmath@parse@@@@function%
  \else%
    \let\pgfmath@parse@next=\pgfmath@parse@@@function%
  \fi%
  \pgfmath@parse@next}

\def\pgfmath@parse@@@function#1{%
  \expandafter\ifx\csname pgfmath@token@functional@\expandafter\string#1\endcsname\relax%
    \expandafter\ifx\csname pgfmath@token@number@\expandafter\string#1\endcsname\relax%
      \def\pgfmath@token{#1}%
      \let\pgfmath@parse@next=\pgfmath@parse@@@@function%
    \else%
      \expandafter\def\expandafter\pgfmath@function\expandafter{\pgfmath@function#1}%
      \let\pgfmath@parse@next=\pgfmath@parse@function@%
    \fi%
  \else%
    \edef\pgfmath@function{\pgfmath@function#1}%
    \let\pgfmath@parse@next=\pgfmath@parse@function@%
  \fi%
  \pgfmath@parse@next}

\def\pgfmath@parse@@@@function{%
  \expandafter\ifx\csname pgfmath@function@\pgfmath@function\endcsname\relax%
    \pgfmath@error{Unknown function `\pgfmath@function'}{}%
    \def\pgfmathresult{0}%
    \let\pgfmath@parse@next=\pgfmath@parse@end%
  \else%
    \expandafter\ifnum\csname pgfmath@operation@\pgfmath@function @arity\endcsname=0\relax%
      \csname pgfmath\pgfmath@function @\endcsname%
      \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
      \let\pgfmath@parse@next=\pgfmath@parse@@operator%
    \else%
      \expandafter\pgfmath@stack@push@operation\expandafter{\pgfmath@function}%
      \let\pgfmath@parse@next=\pgfmath@parse@@operand%
    \fi%
  \fi%
  \expandafter\pgfmath@parse@next\pgfmath@token}

\def\pgfmath@parse@operator{\pgfmath@parse@ifbgroup{\pgfmath@parse@operator}{\pgfmath@parse@operator@}}%
\def\pgfmath@parse@operator@#1{%
  \let\pgfmath@token=\pgfmath@token@next%
  \def\pgfmath@token@next{#1}%
  \pgfmath@parse@@@operator}

\def\pgfmath@parse@@operator{\pgfmath@parse@ifbgroup{\pgfmath@parse@@operator}{\pgfmath@parse@@operator@}}%
\def\pgfmath@parse@@operator@#1{%
  \def\pgfmath@token{#1}%
  \pgfmath@parse@ifbgroup{\pgfmath@parse@@operator@@}{\pgfmath@parse@@operator@@}}%
\def\pgfmath@parse@@operator@@#1{%
  \def\pgfmath@token@next{#1}%
  \pgfmath@parse@@@operator}

\def\pgfmath@parse@@@operator{%
  \expandafter\ifx\csname pgfmath@operator@\pgfmath@token\expandafter\string\pgfmath@token@next\endcsname\relax%
    \expandafter\ifx\csname pgfmath@operator@\pgfmath@token\endcsname\relax%
      \pgfmath@error{Unknown operator `\pgfmath@token' or `\pgfmath@token\pgfmath@token@next'}{}%
      \def\pgfmathresult{0}%
    \let\pgfmath@parse@next=\pgfmath@parse@end%
    \else%
      \expandafter\pgfmath@operation@process\expandafter{\pgfmath@token}%
      \ifx\pgfmath@token\pgfmath@text@@%
        \let\pgfmath@parse@next=\pgfmath@parse@end%
      \else%
        \expandafter\ifx\csname pgfmath@operation@\pgfmath@token @postfix\endcsname\pgfmath@token%
          \ifx\pgfmath@token@next\pgfmath@char@leftbracket%
            \let\pgfmath@parse@next=\pgfmath@parse@operand%
          \else%
            \let\pgfmath@parse@next=\pgfmath@parse@operator%
          \fi%
        \else%
          \let\pgfmath@parse@next=\pgfmath@parse@operand%
        \fi%
      \fi%
    \fi%
  \else%
    \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
      \pgfmath@token\expandafter\expandafter\expandafter%
        {\expandafter\pgfmath@token\pgfmath@token@next}%
    \expandafter\pgfmath@operation@process\expandafter{\pgfmath@token}%
    \let\pgfmath@parse@next=\pgfmath@parse@@operand%
  \fi%
  \pgfmath@parse@next%
}


\def\pgfmath@operation@process#1{%
  \def\pgfmath@operator{#1}%
  \ifx\pgfmath@stack@operation@top\pgfmath@stack@empty%
  \else%
    \pgfmath@operation@@process%
  \fi%
  \expandafter\ifx\csname pgfmath@token@specials@#1\endcsname\relax%
    \pgfmath@stack@push@operation{#1}%
  \fi%
}

\def\pgfmath@operation@@process{%
  \ifx\pgfmath@stack@operation@top\pgfmath@stack@empty%
    \let\pgfmath@parse@next=\relax%
  \else%
    \ifnum\csname pgfmath@operation@\pgfmath@operator @precedence\endcsname>%
      \csname pgfmath@operation@\pgfmath@stack@operation@top @precedence\endcsname\relax%
      \let\pgfmath@parse@next=\relax%
    \else%
      \let\pgfmath@stack@operation@last=\pgfmath@stack@operation@top%
      \expandafter\ifx\csname pgfmath@operator@\pgfmath@stack@operation@top\endcsname\relax%
        \pgfmath@function@@@process%
      \else%
        \pgfmath@operator@@@process%
      \fi%
      \expandafter\pgfmath@stack@push@operand\expandafter{\pgfmathresult}%
      \expandafter\ifx\csname pgfmath@token@group@\pgfmath@stack@operation@last\pgfmath@operator\endcsname\relax%
        \let\pgfmath@parse@next=\pgfmath@operation@@process%
      \else%
        \let\pgfmath@parse@next=\relax%
      \fi%
    \fi%
  \fi%
  \pgfmath@parse@next%
}

\def\pgfmath@operator@@@process{%
  \pgfmath@stack@pop@operation\pgfmath@@operator%
  \pgfmath@stack@pop@operand\pgfmath@operand@a%
  \ifcase\csname pgfmath@operation@\pgfmath@@operator @arity\endcsname\relax%
  \or%
    \pgfmath@operator@@@@process{\pgfmath@operand@a}%
  \or%
    \pgfmath@stack@pop@operand\pgfmath@operand@b%
    \pgfmath@operator@@@@process{\pgfmath@operand@b}{\pgfmath@operand@a}%
  \or%
    \pgfmath@stack@pop@operand\pgfmath@operand@b%
    \expandafter\pgfmath@operator@@@@process\expandafter%
      {\expandafter\pgfmath@operand@b\expandafter}\pgfmath@operand@a%
  \else%
  \fi%
}

\def\pgfmath@operator@@@@process{%
  \csname pgfmath%
    \csname pgfmath@operation@\pgfmath@@operator @name\endcsname%
  @\endcsname}

\def\pgfmath@function@@@process{%
  \ifnum\csname pgfmath@operation@\pgfmath@stack@operation@top @arity\endcsname>0\relax%
    \pgfmath@stack@pop@operation\pgfmath@@function%
    \pgfmath@stack@pop@operand\pgfmath@@operand%
    \ifnum\csname pgfmath@operation@\pgfmath@@function @arity\endcsname>1\relax%
      \ifnum\csname pgfmath@operation@\pgfmath@@function @arity\endcsname>9\relax%
        \csname pgfmath\pgfmath@@function @\endcsname{\pgfmath@@operand}%
      \else%
        \expandafter\pgfmath@function@@@@process\pgfmath@@operand%
      \fi
    \else%
      \expandafter\pgfmath@function@@@@process\expandafter{\pgfmath@@operand}%
    \fi%
  \fi%
}

\def\pgfmath@function@@@@process{\csname pgfmath\pgfmath@@function @\endcsname}

\newtoks\pgfmath@stack@operand
\newtoks\pgfmath@stack@operation
\let\pgfmath@stack@empty=\pgfmath@empty

\def\pgfmath@stack@push#1#2{%
  \def\pgfmath@stack@top{#2}%
  \expandafter\expandafter\expandafter#1%
    \expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter%
      {\expandafter\pgfmath@stack@top\expandafter}\the#1}}%

\def\pgfmath@stack@pop#1#2{\expandafter\pgfmath@stack@@pop\the#1\pgfmath@stack@stop{#1}{#2}}
\def\pgfmath@stack@@pop#1#2#3\pgfmath@stack@stop#4#5{\def#5{#1}#4={{#2}#3}\def\pgfmath@stack@top{#2}}

\def\pgfmath@stack@push@operation#1{%
  \pgfmath@stack@push\pgfmath@stack@operation{#1}%
  \let\pgfmath@stack@operation@top=\pgfmath@stack@top}

\def\pgfmath@stack@pop@operation#1{%
  \pgfmath@stack@pop\pgfmath@stack@operation{#1}%
  \let\pgfmath@stack@operation@top=\pgfmath@stack@top}

\def\pgfmath@stack@push@operand#1{%
  \pgfmath@stack@push\pgfmath@stack@operand{#1}%
  \let\pgfmath@stack@operand@top=\pgfmath@stack@top}

\def\pgfmath@stack@pop@operand#1{%
  \pgfmath@stack@pop\pgfmath@stack@operand{#1}%
  \let\pgfmath@stack@operand@top=\pgfmath@stack@top}


\def\pgfmathdeclareoperator#1#2#3#4#5{%
  \ifx\pgfmath@operatorlist\pgfutil@empty
    \edef\pgfmath@operatorlist{{\string#1}}%
  \else
    \edef\pgfmath@operatorlist{\pgfmath@operatorlist,{\string#1}}%
  \fi
  \pgfmath@namedef{pgfmath@operator@\string#1}{#1}%
  \pgfmath@namedef{pgfmath@operation@\string#1@name}{#2}%
  \pgfmath@namedef{pgfmath@operation@\string#1@arity}{#3}%
  \pgfmath@namedef{pgfmath@operation@\string#1@#4}{#1}%
  \pgfmath@namedef{pgfmath@operation@\string#1@precedence}{#5}%
}

\def\pgfmath@operatorlist{}

\pgfmathdeclareoperator{+}{add}     {2}{infix}{500}
\pgfmathdeclareoperator{-}{subtract}{2}{infix}{500}
\pgfmathdeclareoperator{*}{multiply}{2}{infix}{700}
\pgfmathdeclareoperator{/}{divide}  {2}{infix}{700}
\pgfmathdeclareoperator{^}{pow}     {2}{infix}{900}

\pgfmathdeclareoperator{<} {}       {1}{prefix} {1}

\pgfmathdeclareoperator{>} {greater}   {2}{infix} {250}
\pgfmathdeclareoperator{<} {less}      {2}{infix} {250}
\pgfmathdeclareoperator{==}{equal}     {2}{infix} {250}
\pgfmathdeclareoperator{>=}{notless}   {2}{infix} {250}
\pgfmathdeclareoperator{<=}{notgreater}{2}{infix} {250}
\pgfmathdeclareoperator{&&}{and}       {2}{infix} {200}
\pgfmathdeclareoperator{||}{or}        {2}{infix} {200}
\pgfmathdeclareoperator{!=}{notequal}  {2}{infix} {250}
\pgfmathdeclareoperator{!} {not}       {1}{prefix}{975}
\pgfmathdeclareoperator{?} {ifthenelse}{3}{infix} {100}
\pgfmathdeclareoperator{:} {@@collect}  {2}{infix}{101}

\pgfmathdeclareoperator{!}{factorial}{1}{postfix}{800}%
\pgfmathdeclareoperator{r}{deg}      {1}{postfix}{600}

\pgfmathdeclareoperator{,}{@collect}   {2}{infix}  {10}
\pgfmathdeclareoperator{[}{@startindex}{2}{prefix} {7}
\pgfmathdeclareoperator{]}{@endindex}  {0}{postfix}{6}
\pgfmathdeclareoperator{(}{@startgroup}{1}{prefix} {5}
\pgfmathdeclareoperator{)}{@endgroup}  {0}{postfix}{4}

\pgfmathdeclareoperator{\pgfmath@bgroup}{@startarray}{1}{prefix} {3}
\pgfmathdeclareoperator{\pgfmath@egroup}{@endarray}  {1}{postfix}{2}%

\pgfmathdeclareoperator{"}{}{1}{prefix}{1}
\pgfmathdeclareoperator{@}{}{0}{postfix}{0}


\def\pgfmath@startgroup@#1{\pgfmath@protected@edef\pgfmathresult{#1}}
\def\pgfmath@endgroup@{}%

\def\pgfmath@startindex@#1#2{%
  \expandafter\pgfmatharray@#1{#2}%
  \expandafter\pgfmath@bgroup@strip\expandafter{\pgfmathresult}%
  \ifx\pgfmath@token@let\bgroup%
    \expandafter\def\expandafter\pgfmathresult\expandafter{\expandafter{\pgfmathresult}}%
  \fi}
\def\pgfmath@endindex@{}%

\def\pgfmath@startarray@#1{\expandafter\def\expandafter\pgfmathresult\expandafter{\expandafter{#1}}}
\def\pgfmath@endarray@#1{\expandafter\def\expandafter\pgfmathresult\expandafter{#1}}%


\def\pgfmath@@collect@#1#2{%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
    \pgfmathresult\expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter%
      {\expandafter#1\expandafter}\expandafter{#2}}%
}
\def\pgfmath@collect@#1#2{%
  \expandafter\def\expandafter\pgfmath@collect@original\expandafter{#1}%
  \expandafter\pgfmath@bgroup@strip\expandafter{#1}%
  \ifx\pgfmath@token@let\bgroup%
    \ifx\pgfmath@collect@original\pgfmath@bgroup@stripped%
      \expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmath@bgroup@stripped}%
    \else%
      \expandafter\def\expandafter\pgfmathresult\expandafter{\expandafter{\pgfmath@bgroup@stripped}}%
    \fi%
  \else%
    \expandafter\def\expandafter\pgfmathresult\expandafter{\expandafter{\pgfmath@bgroup@stripped}}%
  \fi%
  \expandafter\pgfmath@bgroup@strip\expandafter{#2}%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
    \pgfmathresult\expandafter\expandafter\expandafter%
      {\expandafter\pgfmathresult\expandafter{\pgfmath@bgroup@stripped}}%
}

\def\pgfmath@bgroup@strip#1{%
  \def\pgfmath@bgroup@strip@last{#1}%
  \pgfmath@bgroup@@strip{#1}\pgfmath@\pgfmath@@\pgfmath@@@}

\def\pgfmath@bgroup@strip@#1{%
  \def\pgfmath@bgroup@strip@last{#1}%
  \pgfmath@bgroup@@strip#1\pgfmath@\pgfmath@@\pgfmath@@@}

\def\pgfmath@bgroup@pgfmath@{\pgfmath@}

\def\pgfmath@bgroup@@strip{%
  \futurelet\pgfmath@token@let\pgfmath@bgroup@@@strip}

\def\pgfmath@bgroup@@@strip#1#2#3\pgfmath@@@{%
  \ifx\pgfmath@token@let\bgroup
    \def\pgfmath@bgroup@test{#2}%
    \ifx\pgfmath@bgroup@test\pgfmath@bgroup@pgfmath@
      \def\pgfmath@next{\pgfmath@bgroup@strip@{#1}}%
    \else
      \let\pgfmath@bgroup@stripped=\pgfmath@bgroup@strip@last
      \let\pgfmath@next=\relax
    \fi
  \else
    \pgfmath@bgroup@@@@strip#1#2#3%
    \let\pgfmath@next=\relax
  \fi
  \pgfmath@next}

\def\pgfmath@bgroup@@@@strip#1\pgfmath@\pgfmath@@{%
  \def\pgfmath@bgroup@stripped{#1}}

==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathparser.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathutil.code.tex ====


\def\pgfmathincluded{}

\def\pgfmath@grabv#1#2#3#4#5#6#7\pgfmath@grabv{#2#3#4#5\ifx#6!!\fi}
\def\pgfmath@ifskip@extract#1{\expandafter\pgfmath@grabv\meaning#1!!!!!!\pgfmath@grabv}
\def\pgfmath@iftoks@extract#1{\expandafter\pgfmath@grabv\meaning#1!!!!!!\pgfmath@grabv}

\def\pgfmath@grabvi#1#2#3#4#5#6#7#8\pgfmath@grabvi{#2#3#4#5#6\ifx#7!!\fi}
\def\pgfmath@ifdimen@extract#1{\expandafter\pgfmath@grabvi\meaning#1!!!!!!\pgfmath@grabvi}
\def\pgfmath@ifcount@extract#1{\expandafter\pgfmath@grabvi\meaning#1!!!!!!\pgfmath@grabvi}

\def\pgfmath@grabvii#1#2#3#4#5#6#7#8#9\pgfmath@grabvii{#2#3#4#5#6#7\ifx#8!!\fi}
\def\pgfmath@ifmuskip@extract#1{\expandafter\pgfmath@grabvii\meaning#1!!!!!!\pgfmath@grabvii}

\def\pgfmath@ifregister@unguarded#1#2{%
    \expandafter\ifx\csname\csname pgfmath@if#1@extract\endcsname{#2}\expandafter\endcsname\csname #1\endcsname
        \expandafter\pgfutil@firstoftwo
    \else
        \expandafter\pgfutil@secondoftwo
    \fi}

\def\pgfmath@ifregister#1#2{%
    \pgfutil@IfUndefined{pgfmath@if#1@extract}%
        {\errmessage{Package PGF Math Error: Cannot test for #1 register}}%
        {\pgfutil@IfUndefined{\csname pgfmath@if#1@extract\endcsname{#2}}%
            {\pgfutil@secondoftwo}}%
            {\pgfmath@ifregister@unguarded{#1}{#2}}}

\def\pgfmath@ensureregister#1#2{%
    \pgfmath@ifregister{#1}{#2}%
        {}%
        {\csname new#1\endcsname#2}%
}

\pgfmath@ensureregister{dimen}{\pgf@x}
\pgfmath@ensureregister{dimen}{\pgf@xa}
\pgfmath@ensureregister{dimen}{\pgf@xb}
\pgfmath@ensureregister{dimen}{\pgf@xc}

\pgfmath@ensureregister{dimen}{\pgf@y}
\pgfmath@ensureregister{dimen}{\pgf@ya}
\pgfmath@ensureregister{dimen}{\pgf@yb}
\pgfmath@ensureregister{dimen}{\pgf@yc}

\pgfmath@ensureregister{dimen}{\pgfutil@tempdima}
\pgfmath@ensureregister{dimen}{\pgfutil@tempdimb}

\pgfmath@ensureregister{count}{\c@pgf@counta}
\pgfmath@ensureregister{count}{\c@pgf@countb}
\pgfmath@ensureregister{count}{\c@pgf@countc}
\pgfmath@ensureregister{count}{\c@pgf@countd}

\pgfmath@ensureregister{count}{\pgfutil@tempcnta}
\pgfmath@ensureregister{count}{\pgfutil@tempcntb}

\let\pgfmath@x\pgf@x
\let\pgfmath@xa\pgf@xa
\let\pgfmath@xb\pgf@xb
\let\pgfmath@xc\pgf@xc

\let\pgfmath@y\pgf@y
\let\pgfmath@ya\pgf@ya
\let\pgfmath@yb\pgf@yb
\let\pgfmath@yc\pgf@yc

\let\pgfmath@tempdima\pgfutil@tempdima
\let\pgfmath@tempdimb\pgfutil@tempdimb

\let\c@pgfmath@counta\c@pgf@counta
\let\c@pgfmath@countb\c@pgf@countb
\let\c@pgfmath@countc\c@pgf@countc
\let\c@pgfmath@countd\c@pgf@countd

\let\pgfmath@tempcnta\pgfutil@tempcnta
\let\pgfmath@tempcntb\pgfutil@tempcntb


\ifx\pgfutil@ifnextchar\pgfmath@undefined%
    \long\def\pgfmath@ifnextchar#1#2#3{%
  \let\pgfmath@reserved@d#1%
  \def\pgfmath@reserved@a{#2}%
  \def\pgfmath@reserved@b{#3}%
  \futurelet\pgfmath@let@token\pgfmath@ifnch}
    \def\pgfmath@ifnch{%
      \ifx\pgfmath@let@token\pgfmath@sptoken%
        \let\pgfmath@reserved@c\pgfmath@xifnch%
      \else%
        \ifx\pgfmath@let@token\pgfmath@reserved@d%
          \let\pgfmath@reserved@c\pgfmath@reserved@a%
        \else%
          \let\pgfmath@reserved@c\pgfmath@reserved@b%
        \fi%
      \fi%
      \pgfmath@reserved@c}
    {%
      \def\:{\global\let\pgfmath@sptoken= } \:
      \def\:{\pgfmath@xifnch} \expandafter\gdef\: {\futurelet\pgfmath@let@token\pgfmath@ifnch}
    }%
\else%
    \let\pgfmath@ifnextchar\pgfutil@ifnextchar%
    {%
        \def\:{\global\let\pgfmath@sptoken= } \:
    }%
\fi%

\ifx\pgfutil@ifundefined\pgfmath@undefined%
    \long\def\pgfmath@ifundefined#1{%
      \expandafter\ifx\csname#1\endcsname\relax%
        \expandafter\pgfmath@firstoftwo%
      \else%
        \expandafter\pgfmath@secondoftwo%
      \fi}%
\else%
    \let\pgfmath@ifundefined\pgfutil@ifundefined%
\fi%

\ifx\pgfutil@selectfont\pgfmath@undefined%
    \ifx\selectfont\pgfmath@undefined%
        \let\pgfmath@selectfont\rm%
    \else%
        \let\pgfmath@selectfont\selectfont%
    \fi%
\else%
    \let\pgfmath@selectfont\pgfutil@selectfont%
\fi%

\newif\ifpgfmath@in@
\def\pgfmath@in@#1#2{%
 \def\pgfmath@in@@##1#1##2##3\pgfmath@in@@{%
  \ifx\pgfmath@in@##2\pgfmath@in@false\else\pgfmath@in@true\fi}%
 \pgfmath@in@@#2#1\pgfmath@in@\pgfmath@in@@}


\ifx\pgf@sys@tonumber\pgfmath@undefined%
  {\catcode`\p=12\catcode`\t=12\gdef\Pgf@geT#1pt{#1}}
    \def\pgfmath@tonumber#1{\expandafter\Pgf@geT\the#1}
\else%
    \let\pgfmath@tonumber\pgf@sys@tonumber%
\fi%


\ifx\PackageWarning\pgfmath@undefined
    \def\pgfmath@PackageWarning#1#2{\immediate\write-1{Package #1: Warning! #2.}}%
\else%
    \let\pgfmath@PackageWarning\PackageWarning%
\fi%
\ifx\PackageError\pgfmath@undefined
    \def\pgfmath@PackageError#1#2#3{\errmessage{Package #1 Error: #2.}}%
\else%
    \let\pgfmath@PackageError\PackageError%
\fi%

\def\pgfmath@error#1#2{%
    \pgfmath@PackageError{PGF Math}{%
        #1%
        \pgfutil@ifundefined{pgfmath@expression}{}{ (in '\pgfmath@expression')}%
    }{#2}%
}
\def\pgfmath@warning#1{%
    \pgfmath@PackageWarning{PGF Math}{%
        #1%
        \pgfutil@ifundefined{pgfmath@expression}{}{ (in '\pgfmath@expression')}%
    }%
}

{\catcode`\p=12\catcode`\t=12\gdef\PgfmaTh@PT{pt}}
\edef\pgfmath@pt{\PgfmaTh@PT}%

\def\pgfmath@empty{}

\def\pgfmath@firstoftwo#1#2{#1}
\def\pgfmath@secondoftwo#1#2{#2}

\def\pgfmath@gobbletilpgfmath@#1\pgfmath@{}
\def\pgfmath@gobbleone#1{}%


\def\pgfmath@namedef#1{\expandafter\def\csname#1\endcsname}
\def\pgfmath@nameedef#1{\expandafter\edef\csname#1\endcsname}

\newif\ifpgfmathcontinueloop
\def\pgfmathloop#1\repeatpgfmathloop{%
    \def\pgfmathcounter{1}%
    \def\pgfmath@iterate{%
        #1\relax%
        {%
            \c@pgfmath@counta\pgfmathcounter%
            \advance\c@pgfmath@counta1\relax%
            \xdef\pgfmathloop@temp{\the\c@pgfmath@counta}%
        }%
        \edef\pgfmathcounter{\pgfmathloop@temp}%
        \expandafter\pgfmath@iterate\fi}%
    \pgfmath@iterate\let\pgfmath@iterate\relax}
\let\repeatpgfmathloop\fi
\def\pgfmathbreakloop{\let\pgfmath@iterate\relax}%

\def\pgfmath@returnone#1\endgroup{%
  \pgfmath@x#1%
  \edef\pgfmath@temp{\pgfmath@tonumber{\pgfmath@x}}%
  \expandafter\endgroup\expandafter\def\expandafter\pgfmathresult\expandafter{\pgfmath@temp}%
}

\let\pgfmathreturn=\pgfmath@returnone

\def\pgfmath@smuggleone#1\endgroup{%
  \expandafter\endgroup\expandafter\def\expandafter#1\expandafter{#1}}

\let\pgfmathsmuggle=\pgfmath@smuggleone
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmathutil.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduledecorations.code.tex ====





\def\pgfgetpath#1{\pgfsyssoftpath@getcurrentpath{#1}}%
\def\pgfsetpath#1{\pgfsyssoftpath@setcurrentpath{#1}}%


\newdimen\pgfdecoratedcompleteddistance
\newdimen\pgfdecoratedremainingdistance
\newdimen\pgfdecoratedinputsegmentcompleteddistance
\newdimen\pgfdecoratedinputsegmentremainingdistance
\newdimen\pgf@decorate@distancetomove

\newcount\pgf@decorate@repeatstate



\newdimen\pgfdecorationsegmentamplitude
\newdimen\pgfdecorationsegmentlength
\pgfdecorationsegmentamplitude2.5pt
\pgfdecorationsegmentlength10pt
\def\pgfdecorationsegmentangle{45}%
\def\pgfdecorationsegmentaspect{0.5}%
\def\pgfmetadecorationsegmentamplitude{2.5pt}%
\def\pgfmetadecorationsegmentlength{1cm}%

\pgfkeys{%
  /pgf/decoration/.code={\pgfkeys{/pgf/decoration/.cd,#1}},
  /pgf/decoration/.cd,
  amplitude/.code={\pgfmathsetlength\pgfdecorationsegmentamplitude{#1}},
  meta-amplitude/.store in=\pgfmetadecorationsegmentamplitude,
  segment length/.code={\pgfmathsetlength\pgfdecorationsegmentlength{#1}},
  meta-segment length/.store in=\pgfmetadecorationsegmentlength,
  angle/.code={\pgfmathparse{#1}\let\pgfdecorationsegmentangle\pgfmathresult},
  aspect/.code={\pgfmathparse{#1}\let\pgfdecorationsegmentaspect\pgfmathresult},
  start radius/.initial=2.5pt,
  end radius/.initial=2.5pt,
  radius/.style={start radius={#1},end radius={#1}},
  path has corners/.is if=pgfdecoratepathhascorners,
  reverse path/.is if=pgf@decorate@inputsegmentobjects@reverse,
}%
\newif\ifpgfdecoratepathhascorners
\newif\ifpgf@decorate@inputsegmentobjects@reverse


\long\def\pgfdeclaredecoration#1#2#3{%
  \let\pgf@mod@dec@next=\pgf@mod@dec@firstofone%
  \pgfifmetadecoration{#1}{%
    \pgferror{You cannot declare a decoration of the same
      name as a meta-decoration}%
    \let\pgf@mod@dec@next=\pgfutil@gobble%
  }{}%
  \pgf@mod@dec@next
  {%
    \def\pgf@decorate@name{#1}%
    \pgfutil@namedef{pgf@decorate@@#1@initial}{#2}%
    \let\pgf@orig@state\state%
    \let\state\pgf@decorate@state
    #3%
    \let\state\pgf@orig@state%
  }%
}%

\def\pgf@decorate@state#1{\pgfutil@ifnextchar[{\pgf@decorate@@start#1}{\pgf@decorate@@start#1[]}}%
\def\pgf@decorate@@start#1[#2]#3{%
  \pgfutil@namedef{pgf@decorate@@\pgf@decorate@name @#1@options}{#2}%
  \pgfutil@namedef{pgf@decorate@@\pgf@decorate@name @#1@code}{#3}%
}%
\long\def\pgf@mod@dec@firstofone#1{#1}%



\def\pgfifdecoration#1#2#3{\pgfutil@ifundefined{pgf@decorate@@#1@initial}{#3}{#2}}%




\long\def\pgfdeclaremetadecoration#1#2#3{%
  \let\pgf@mod@dec@next=\pgf@mod@dec@firstofone%
  \pgfifdecoration{#1}{%
    \pgferror{You cannot declare a meta-decoration of the
      same name as a decoration}%
    \let\pgf@mod@dec@next=\pgfutil@gobble%
  }{}%
  \pgf@mod@dec@next{%
    \def\pgf@metadecoration@name{#1}%
    \pgfutil@namedef{pgf@metadecoration@@#1@initial}{#2}%
    \let\pgf@orig@state\state%
    \let\state\pgf@metadecoration@state
    #3%
    \let\state\pgf@orig@state%
  }%
}%

\def\pgf@metadecoration@state#1{\pgfutil@ifnextchar[{\pgf@metadecoration@@state#1}{\pgf@metadecoration@@state#1[]}}%
\def\pgf@metadecoration@@state#1[#2]#3{%
  \pgfutil@namedef{pgf@metadecoration@@\pgf@metadecoration@name @#1@options}{#2}%
  \pgfutil@namedef{pgf@metadecoration@@\pgf@metadecoration@name @#1@code}{#3}%
}%



\def\pgfifmetadecoration#1#2#3{\pgfutil@ifundefined{pgf@metadecoration@@#1@initial}{#3}{#2}}%





\let\pgfdecoratebeforecode\pgfutil@empty
\let\pgfdecorateaftercode\pgfutil@empty

\long\def\pgfdecoratepath#1#2{%
  \pgfdecoration{{#1}{\pgfdecoratedpathlength}{\pgfdecoratebeforecode}{\pgfdecorateaftercode}}%
  #2%
  \endpgfdecoration}%




\def\pgfdecoratecurrentpath#1{%
  \pgfgetpath\pgf@decorate@currentpath%
  \pgfsetpath\pgfutil@empty%
  \pgfdecoration{{#1}{\pgfdecoratedpathlength}{\pgfdecoratebeforecode}{\pgfdecorateaftercode}}%
    \pgfsetpath\pgf@decorate@currentpath%
  \endpgfdecoration}%




\def\pgfdecoration#1{%
  \begingroup%
    \def\pgf@decorate@decorationlist{#1}%
    \pgf@decoration@env%
}%

\def\endpgfdecoration{%
    \pgf@decoration@endenv%
    \ifx\pgfdecoratedpath\pgfutil@empty%
    \else%
      \pgf@decorate@for\pgf@temp:=\pgf@decorate@decorationlist\do{%
        \ifx\pgf@temp\pgfutil@empty%
        \else%
          \expandafter\pgf@decorate@invoke\expandafter{\pgf@temp}%
        \fi%
      }%
    \fi%
    \pgfgetpath\pgfdecorationpath%
    \global\let\pgf@decorate@decorationpathtemp\pgfdecorationpath%
    \global\let\pgf@decorate@decoratedpathtemp\pgfdecoratedpath%
    \global\let\pgf@decorate@existingpathtemp\pgfdecorateexistingpath%
    \global\let\pgfpoint@decorated@pathlasttemp\pgfpoint@decorated@pathlast%
  \endgroup%
  \pgfutil@ifnextchar\@checkend{\aftergroup\pgf@decorate@installmacrosatend}%
  {\pgf@decorate@installmacrosatend}%
}%



\def\pgfmetadecoration#1{%
  \begingroup%
    \let\decoration\pgf@metadecoration@decoration%
    \let\beforedecoration\pgf@metadecoration@beforedecoration%
    \let\afterdecoration\pgf@metadecoration@afterdecoration%
    \def\pgf@metadecoration@name{#1}%
    \pgf@decoration@env%
}%

\def\endpgfmetadecoration{%
    \pgf@decoration@endenv%
    \ifx\pgfdecoratedpath\pgfutil@empty%
    \else%
      \let\pgfmetadecoratedpathlength\pgf@decorate@totalpathlength%
      \def\pgfmetadecoratedinputsegmentremainingdistance{\pgfdecoratedremainingdistance}%
      \def\pgfmetadecoratedinputsegmentcompleteddistance{\pgfdecoratedcompleteddistance}%
      \expandafter\let\expandafter\pgf@metadecoration@current@state%
      \csname pgf@metadecoration@@\pgf@metadecoration@name @initial\endcsname%
      \pgf@metadecoration@run%
      \let\pgf@decorate@tempname\pgfutil@empty%
      \let\pgf@decorate@tempbefore\pgfutil@empty%
      \let\pgf@decorate@tempafter\pgfutil@empty%
      \csname pgf@metadecoration@@\pgf@metadecoration@name @\pgf@metadecoration@current@state @code\endcsname%
      \ifx\pgf@decorate@tempname\pgfutil@empty%
        \def\pgf@decorate@tempname{moveto}
      \fi%
      \pgf@decorate@invoke{%
        {\pgf@decorate@tempname}{\pgfdecoratedremainingdistance}%
        {\pgf@decorate@tempbefore}{\pgf@decorate@tempafter}%
      }%
    \fi%
    \pgfgetpath\pgfdecorationpath%
     \global\let\pgf@decorate@decorationpathtemp\pgfdecorationpath%
    \global\let\pgf@decorate@decoratedpathtemp\pgfdecoratedpath%
    \global\let\pgf@decorate@existingpathtemp\pgfdecorateexistingpath%
    \global\let\pgfpoint@decorated@pathlasttemp\pgfpoint@decorated@pathlast%
  \endgroup%
  \pgfutil@ifnextchar\@checkend{\aftergroup\pgf@decorate@installmacrosatend}%
    {\pgf@decorate@installmacrosatend}%
}%






\def\pgf@decoration@env{%
  \pgfgetpath\pgfdecorateexistingpath%
  \pgfsetpath\pgfutil@empty%
  \let\pgfdecorationpath\pgfutil@empty%
  \let\pgfdecoratedpath\pgfutil@empty%
  \let\pgfpoint@decorated@pathlast\pgfpointorigin%
  \edef\pgfpoint@decorate@existingpathlast{\pgf@x\the\pgf@path@lastx\pgf@y\the\pgf@path@lasty}%
  \bgroup%
}%

\def\pgf@decorate@path@check@moveto#1{%
  \expandafter\pgf@decorate@path@@check@moveto#1\pgf@decorate@stop\pgf@decorate@@stop}%

\def\pgf@decorate@token@stop{\pgf@decorate@stop}%
\def\pgf@decorate@path@@check@moveto#1#2#3#4\pgf@decorate@@stop#5#6{%
  \def\pgf@decorate@temp{#4}%
  \pgf@x=#2\relax%
  \pgf@y=#3\relax%
  \ifx\pgf@decorate@temp\pgf@decorate@token@stop%
    #5%
  \else%
    #6%
  \fi%
}%

\def\pgf@decoration@endenv{%
  \egroup%
  \pgftransformreset%
  \pgfgetpath\pgfdecoratedpath%
  \pgfsetpath\pgfdecorateexistingpath%
  \ifx\pgfdecoratedpath\pgfutil@empty%
    \pgferror{I cannot decorate an empty path}%
  \else%
    \pgf@decorate@path@check@moveto\pgfdecoratedpath{%
      \advance\pgf@x by0.0001pt\relax%
      \edef\pgfdecoratedpath{%
        \expandafter\noexpand\pgfdecoratedpath%
        \noexpand\pgfsyssoftpath@linetotoken{\the\pgf@x}{\the\pgf@y}%
      }%
    }%
    {}%
    \pgfprocessround{\pgfdecoratedpath}{\pgfdecoratedpath}%
    \pgf@decorate@parsesoftpath{\pgfdecoratedpath}{\pgf@decorate@inputsegmentobjects}%
    \pgfkeys{/pgf/every decoration/.try}%
    \ifpgf@decorate@inputsegmentobjects@reverse%
      \pgf@decorate@inputsegmentobjects@reverse{\pgf@decorate@inputsegmentobjects}{\pgf@decorate@inputsegmentobjects}%
    \fi%
    \let\pgf@decorated@remainingdistance\pgf@decorate@totalpathlength%
    \let\pgfpoint@decorated@totalpathfirst\pgfpoint@decorated@firstparsed%
    \let\pgfpoint@decorated@totalpathlast\pgfpoint@decorate@lastnonmovetoparsed%
    \let\pgfpoint@decorated@pathfirst\pgfpoint@decorated@totalpathfirst
    \let\pgfpoint@decorated@pathlast\pgfpoint@decorated@totalpathlast%
    \let\pgf@decorate@currentinputsegmentobjects\pgf@decorate@inputsegmentobjects%
    \let\pgf@decorate@transformtoinputsegment\pgfutil@empty%
    \pgf@decorate@getnextinputsegmentobject\pgf@decorate@nextinputsegmentobject%
    \pgf@decorate@processnextinputsegmentobject%
    \pgf@decorate@distancetomove0pt\relax%
  \fi%
}%




\def\pgf@decorate@installmacrosatend{%
  \let\pgfdecorationpath\pgf@decorate@decorationpathtemp%
  \let\pgfdecoratedpath\pgf@decorate@decoratedpathtemp%
  \let\pgfdecorateexistingpath\pgf@decorate@existingpathtemp%
  \let\pgfpoint@decorated@pathlast\pgfpoint@decorated@pathlasttemp%
}%

\let\pgfdecorationpath\pgfutil@empty
\let\pgfdecoratedpath\pgfutil@empty
\let\pgfdecorateexisitingpath\pgfutil@empty

\let\pgfpoint@decorated@pathlast\pgfpointorigin



\def\pgf@decorate@for#1:=#2\do#3{%
  \def\pgf@decorate@for@var{#1}%
  \def\pgf@decorate@for@action{#3}%
  \expandafter\pgf@decorate@@for#2,\pgf@stop,}%

\def\pgf@decorate@@for#1,{%
  \ifx#1\pgf@stop%
    \expandafter\let\pgf@decorate@for@var\pgfutil@empty%
  \else%
    \expandafter\def\pgf@decorate@for@var{#1}%
    \pgf@decorate@for@action%
    \expandafter\pgf@decorate@@for%
  \fi%
}%


\def\pgf@decorate@invoke#1{%
  \pgf@decorate@@invoke#1\pgf@decorate@invoke\pgf@decorate@invoke\pgf@decorate@invoke\pgf@stop}%

\def\pgf@decorate@@invoke#1#2#3#4#5\pgf@stop{%
  \pgfutil@ifundefined{pgf@decorate@@#1@initial}%
  {%
    \pgferror{Unknown decoration `#1'}%
  }%
  {%
    \def\pgf@decorate@name{#1}%
    \ifx\pgf@decorate@invoke#3%
      \let\pgf@decorate@beforecode\pgfutil@empty%
    \else%
      \def\pgf@decorate@beforecode{#3}%
    \fi%
    \ifx\pgf@decorate@invoke#4%
      \let\pgf@decorate@aftercode\pgfutil@empty%
    \else%
      \def\pgf@decorate@aftercode{#4}%
    \fi%
    \pgfdecoratedremainingdistance\pgf@decorated@remainingdistance\relax%
    \let\pgfdecoratedpathlength\pgf@decorate@totalpathlength%
    \pgfmathsetlength\pgf@xa{#2}%
    \ifdim\pgf@xa>\pgf@decorated@remainingdistance\relax%
      \pgf@xa\pgf@decorated@remainingdistance\relax%
    \fi%
    \edef\pgf@decorate@currentpathlength{\the\pgf@xa}%
    \pgf@xa-\pgf@decorate@currentpathlength\relax%
    \advance\pgf@xa\pgf@decorated@remainingdistance\relax%
    \edef\pgf@decorated@remainingdistance{\the\pgf@xa}%
    \let\pgfdecoratedpathlength\pgf@decorate@currentpathlength%
    \pgfdecoratedremainingdistance\pgfdecoratedpathlength\relax%
    \pgfdecoratedcompleteddistance0pt\relax%
    \pgf@decorate@beforecode%
    \expandafter\let\expandafter\pgf@decorate@current@state%
      \csname pgf@decorate@@\pgf@decorate@name @initial\endcsname%
    \pgf@decorate@run%
    \ifdim\pgf@decorated@remainingdistance<1pt\relax%
      \let\pgfpoint@decorated@pathlast\pgfpoint@decorated@totalpathlast%
    \else%
      {%
        \pgf@decorate@movealonginputsegment{\the\pgfdecoratedremainingdistance}%
        \pgf@decorate@transformtoinputsegment%
        \pgfpointorigin%
        \pgf@pos@transform@glob%
        \global\pgf@x\pgf@x%
        \global\pgf@y\pgf@y%
      }%
      \edef\pgfpoint@decorated@pathlast{\pgf@x\the\pgf@x\pgf@y\the\pgf@y}%
    \fi%
    {%
      \pgftransformreset%
      \pgf@decorate@transformtoinputsegment%
      \pgf@decorate@additionaltransform%
      \csname pgf@decorate@@\pgf@decorate@name @final@code\endcsname%
    }%
    \pgf@decorate@movealonginputsegment{\the\pgfdecoratedremainingdistance}%
    \pgf@decorate@aftercode%
    \let\pgf@decorate@additionaltransform\pgfutil@empty%
    \let\pgf@decorate@inputsegmentobjects\pgf@decorate@inputsegmentobjects@aftersplit%
    \let\pgfpoint@decorated@pathfirst\pgfpoint@decorated@pathlast%
   }%
}%



\let\pgf@decorate@transformtoinputsegment\pgfutil@empty%
\let\pgf@decorate@additionaltransform\pgfutil@empty%


\def\pgfpointdecoratedpathfirst{%
  {%
    \pgftransforminvert%
    \pgfpoint@decorated@pathfirst%
    \pgf@pos@transform@glob%
    \global\pgf@x\pgf@x%
    \global\pgf@y\pgf@y%
  }%
}%

\def\pgfpointdecoratedpathlast{%
  {%
    \pgftransforminvert%
    \pgfpoint@decorated@pathlast%
    \pgf@pos@transform@glob%
    \global\pgf@x\pgf@x%
    \global\pgf@y\pgf@y%
  }%
}%

\def\pgfpointdecoratedinputsegmentfirst{%
  {%
    \pgftransforminvert%
    \pgf@decorate@inputsegment@first%
    \pgf@pos@transform@glob%
    \global\pgf@x\pgf@x%
    \global\pgf@y\pgf@y%
  }%
}%

\def\pgfpointdecoratedinputsegmentlast{%
  {%
    \pgftransforminvert%
    \pgf@decorate@inputsegment@last%
    \pgf@pos@transform@glob%
    \global\pgf@x\pgf@x%
    \global\pgf@y\pgf@y%
  }%
}%


\def\pgf@final@text{final}%

\def\pgf@decorate@run{%
  \let\pgf@decorate@next\pgf@decorate@do@state%
  \ifx\pgf@decorate@current@state\pgf@final@text%
    \let\pgf@decorate@next\relax%
  \fi%
  \pgf@decorate@next%
}%

\def\pgf@decorate@do@state{%
  \let\pgf@decorate@next\relax%
  \let\pgf@decorate@next@state\pgf@decorate@current@state%
  \let\pgf@decorate@persistent@pre=\relax%
  \let\pgf@decorate@persistent@post=\relax%
  \expandafter\expandafter\expandafter\pgf@decorate@setter
  \expandafter\expandafter\expandafter{\csname pgf@decorate@@\pgf@decorate@name @\pgf@decorate@current@state @options\endcsname}%
  \ifx\pgf@decorate@next\relax%
    \let\pgf@decorate@next\pgf@decorate@do@code%
  \fi%
  \pgf@decorate@next%
}%

\def\pgf@decorate@setter{\pgfqkeys{/pgf/decoration automaton}}%

\pgf@decorate@repeatstate-1\relax

\def\pgf@decorate@do@code{%
  \pgf@decorate@persistent@pre%
  {%
    \pgftransformreset%
    \pgf@decorate@transformtoinputsegment%
    \pgf@decorate@additionaltransform%
    \csname pgf@decorate@@\pgf@decorate@name @\pgf@decorate@current@state @code\endcsname%
  }%
  \pgf@decorate@persistent@post%
  \pgf@decorate@movealongpath{\pgf@decorate@width}%
  \ifnum\pgf@decorate@repeatstate>0\relax%
    \advance\pgf@decorate@repeatstate-1\relax%
  \else%
    \pgf@decorate@repeatstate-1\relax%
    \let\pgf@decorate@current@state\pgf@decorate@next@state%
  \fi%
  \pgf@decorate@run%
}%

\pgfkeys{
  /pgf/decoration automaton/width/.code=\def\pgf@decorate@width{#1}\pgf@decorate@switch@if#1 to final\pgf@stop,%
  /pgf/decoration automaton/switch if less than/.code=\pgf@decorate@switch@if#1\pgf@stop,%
  /pgf/decoration automaton/switch if input segment less than/.code=\pgf@decorate@switch@ifinputsegment#1\pgf@stop,%
  /pgf/decoration automaton/next state/.store in=\pgf@decorate@next@state,%
  /pgf/decoration automaton/persistent precomputation/.store in=\pgf@decorate@persistent@pre,%
  /pgf/decoration automaton/persistent postcomputation/.store in=\pgf@decorate@persistent@post,%
  /pgf/decoration automaton/repeat state/.code={%
    \ifnum\pgf@decorate@repeatstate=-1\relax%
      \pgfmathsetcount\pgf@decorate@repeatstate{#1}%
    \fi%
  },%
  /pgf/decoration automaton/if input segment is closepath/.code={%
    \ifpgf@decorate@is@closepath@%
      \pgfkeysalso{#1}%
    \fi%
  },
  /pgf/decoration automaton/auto end on length/.code=\pgf@decorate@auto@end{#1},
  /pgf/decoration automaton/auto corner on length/.code=\pgf@decorate@auto@corner{#1},
}%

\def\pgf@decorate@auto@end#1{%
  \ifx\pgf@decorate@next\relax%
    \pgfmathsetlength\pgf@x{#1}%
    \ifpgf@decorate@is@closepath@%
      \ifdim\pgfdecoratedremainingdistance>\pgf@x%
        \ifdim\pgfdecoratedinputsegmentremainingdistance>\pgf@x%
        \else%
          \pgfpathclose%
          \pgf@decorate@movealongpath{\pgfdecoratedinputsegmentremainingdistance}%
          \pgf@decorate@repeatstate-1\relax%
          \let\pgf@decorate@next\pgf@decorate@run%
        \fi%
      \else%
        \pgfpathclose%
        \def\pgf@decorate@current@state{final}%
        \def\pgf@decorate@width{\pgfdecoratedremainingdistance}
        \pgf@decorate@repeatstate-1\relax%
        \let\pgf@decorate@next\pgf@decorate@run%
      \fi%
    \else%
      \ifdim\pgfdecoratedremainingdistance>\pgf@x%
      \else%
        {%
          \pgftransformreset%
          \pgf@decorate@transformtoinputsegment%
          \pgf@decorate@additionaltransform%
          \pgfpathlineto{\pgfpoint{\pgfdecoratedremainingdistance}{0pt}}
        }%
        \def\pgf@decorate@current@state{final}%
        \def\pgf@decorate@width{\pgfdecoratedremainingdistance}
        \pgf@decorate@repeatstate-1\relax%
        \let\pgf@decorate@next\pgf@decorate@run%
      \fi%
    \fi%
  \fi%
}%

\def\pgf@decorate@auto@corner#1{%
  \ifpgfdecoratepathhascorners%
    \ifx\pgf@decorate@next\relax%
      \pgfmathsetlength\pgf@x{#1}%
      \ifdim\pgfdecoratedinputsegmentremainingdistance>\pgf@x%
      \else%
        {%
          \pgftransformreset%
          \pgf@decorate@transformtoinputsegment%
          \pgf@decorate@additionaltransform%
          \pgfpathlineto{\pgfqpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}}
        }%
        \pgf@decorate@movealongpath{\pgfdecoratedinputsegmentremainingdistance}%
        \pgf@decorate@repeatstate-1\relax%
        \let\pgf@decorate@next\pgf@decorate@run%
      \fi%
    \fi%
  \fi%
}%

\def\pgf@decorate@switch@if#1to #2\pgf@stop{%
  \ifx\pgf@decorate@next\relax%
    \ifdim\pgfdecoratedremainingdistance=0pt\relax%
      \def\pgf@decorate@current@state{#2}%
      \pgf@decorate@repeatstate-1\relax%
      \let\pgf@decorate@next\pgf@decorate@run%
    \else%
      \pgfmathsetlength\pgf@x{#1}%
      \ifdim\pgfdecoratedremainingdistance<\pgf@x%
        \def\pgf@decorate@current@state{#2}%
        \pgf@decorate@repeatstate-1\relax%
        \let\pgf@decorate@next\pgf@decorate@run%
      \fi%
    \fi%
  \fi%
}%

\def\pgf@decorate@switch@ifinputsegment#1to #2\pgf@stop{%
  \ifx\pgf@decorate@next\relax%
    \pgfmathsetlength\pgf@x{#1}%
    \ifdim\pgfdecoratedinputsegmentremainingdistance<\pgf@x%
      \def\pgf@decorate@current@state{#2}%
      \pgf@decorate@repeatstate-1\relax%
      \let\pgf@decorate@next\pgf@decorate@run%
    \fi%
  \fi%
}%




\def\pgfsetdecorationsegmenttransformation#1{\def\pgf@decorate@additionaltransform{#1}}%
\let\pgf@decorate@additionaltransform\pgfutil@empty%




\def\pgf@metadecoration@decoration#1{%
  \edef\pgf@decorate@tempname{#1}%
}%
\def\pgf@metadecoration@beforedecoration#1{%
  \def\pgf@decorate@tempbefore{#1}%
}%
\def\pgf@metadecoration@afterdecoration#1{%
  \def\pgf@decorate@tempafter{#1}%
}%


\def\pgf@final@text{final}%

\def\pgf@metadecoration@run{%
  \let\pgf@metadecoration@next\pgf@metadecoration@do@state%
  \ifx\pgf@metadecoration@current@state\pgf@final@text%
    \let\pgf@metadecoration@next\relax%
  \fi%
  \pgf@metadecoration@next%
}%

\def\pgf@metadecoration@do@state{%
  \let\pgf@metadecoration@next\relax%
  \let\pgf@metadecoration@next@state\pgf@metadecoration@current@state%
  \let\pgfmetadecoratedremainingdistance\pgf@decorated@remainingdistance%
  \pgf@x-\pgfmetadecoratedremainingdistance\relax%
  \advance\pgf@x\pgf@decorate@totalpathlength\relax%
  \edef\pgfmetadecoratedcompleteddistance{\the\pgf@x}%
  \expandafter\expandafter\expandafter\pgf@metadecoration@setter
  \expandafter\expandafter\expandafter{\csname pgf@metadecoration@@\pgf@metadecoration@name @\pgf@metadecoration@current@state @options\endcsname}%
  \ifx\pgf@metadecoration@next\relax%
    \let\pgf@metadecoration@next\pgf@metadecoration@do@code%
  \fi%
  \pgf@metadecoration@next%
}%

\def\pgf@metadecoration@do@code{%
  \let\pgf@decorate@tempname\pgfutil@empty%
  \let\pgf@decorate@tempbefore\pgfutil@empty%
  \let\pgf@decorate@tempafter\pgfutil@empty%
  \let\pgfpointmetadecoratedpathfirst\pgfpointdecoratedpathfirst%
  \let\pgfpointmetadecoratedpathlast\pgfpointdecoratedpathlast%
  \csname pgf@metadecoration@@\pgf@metadecoration@name @\pgf@metadecoration@current@state @code\endcsname%
  \ifx\pgf@decorate@tempname\pgfutil@empty%
    \def\pgf@decorate@tempname{moveto}
  \fi%
  \pgf@decorate@invoke{%
    {\pgf@decorate@tempname}{\pgf@metadecoration@width}%
    {\pgf@decorate@tempbefore}{\pgf@decorate@tempafter}%
  }%
  \let\pgf@metadecoration@current@state\pgf@metadecoration@next@state%
  \pgf@metadecoration@run%
}%

\def\pgf@metadecoration@setter{\pgfqkeys{/pgf/meta-decoration automaton}}%

\pgfkeys{
  /pgf/meta-decoration automaton/width/.code=\def\pgf@metadecoration@width{#1}\pgf@metadecoration@switch@if#1 to final\pgf@stop,%
  /pgf/meta-decoration automaton/switch if less than/.code=\pgf@metadecoration@switch@if#1\pgf@stop,%
  /pgf/meta-decoration automaton/switch if input segment less than/.code=\pgf@metadecoration@switch@ifinputsegment#1\pgf@stop,%
  /pgf/meta-decoration automaton/next state/.store in=\pgf@metadecoration@next@state,%
}%

\def\pgf@metadecoration@switch@if#1to #2\pgf@stop{%
  \ifx\pgf@metadecoration@next\relax%
    \pgfmathsetlength\pgf@x{#1}%
    \ifdim\pgf@decorated@remainingdistance<\pgf@x%
      \def\pgf@metadecoration@current@state{#2}%
      \let\pgf@metadecoration@next\pgf@metadecoration@run%
    \fi%
  \fi%
}%

\def\pgf@metadecoration@switch@ifinputsegment#1to #2\pgf@stop{%
  \ifx\pgf@metadecoration@next\relax%
    \pgfmathsetlength\pgf@x{#1}%
    \ifdim\pgfdecoratedinputsegmentremainingdistance<\pgf@x%
      \def\pgf@metadecoration@current@state{#2}%
      \let\pgf@metadecoration@next\pgf@metadecoration@run%
    \fi%
  \fi%
}%



\def\pgf@decorate@movealongpath#1{%
  \pgfmathsetlength\pgf@decorate@distancetomove{#1}%
  \advance\pgfdecoratedcompleteddistance\pgf@decorate@distancetomove%
  \advance\pgfdecoratedremainingdistance-\pgf@decorate@distancetomove%
  \pgf@decorate@@movealongpath%
}%
\def\pgf@decorate@@movealongpath{%
  \advance\pgfdecoratedinputsegmentcompleteddistance\pgf@decorate@distancetomove%
  \advance\pgfdecoratedinputsegmentremainingdistance-\pgf@decorate@distancetomove%
  \ifdim\pgfdecoratedinputsegmentremainingdistance>0pt\relax%
    \let\pgf@next\pgf@decorate@@@movealongpath%
  \else%
    \pgf@decorate@distancetomove-\pgfdecoratedinputsegmentremainingdistance%
    \pgf@decorate@processnextinputsegmentobject%
    \ifx\pgf@decorate@currentinputsegmentobjects\pgfutil@empty%
      \pgfdecoratedremainingdistance0pt\relax%
      \let\pgf@next\relax%
    \else%
      \let\pgf@next\pgf@decorate@@movealongpath%
    \fi%
  \fi%
  \pgf@next%
}%

\def\pgf@decorate@@@movealongpath{%
  \pgf@decorate@movealonginputsegment{\the\pgf@decorate@distancetomove}%
  \pgf@decorate@distancetomove0pt\relax%
  \ifdim\pgf@decorate@inputsegmenttime pt>1pt\relax%
    \let\pgf@decorate@inputsegmenttimetemp\pgf@decorate@inputsegmenttime%
    \pgf@decorate@processnextinputsegmentobject%
    \pgf@x\pgf@decorate@inputsegmenttimetemp pt\relax%
    \advance\pgf@x-1pt\relax%
    \edef\pgf@decorate@inputsegmenttime{\pgfmath@tonumber{\pgf@x}}%
    \ifx\pgf@decorate@currentinputsegmentobjects\pgfutil@empty%
      \pgfdecoratedremainingdistance0pt\relax%
    \fi%
  \fi%
}%

\def\pgf@decorate@getnextinputsegmentobject#1{%
  \ifx\pgf@decorate@currentinputsegmentobjects\pgfutil@empty%
    \let\pgf@next\relax%
  \else%
    \def\pgf@decorate@temp{#1}%
    \let\pgf@next\pgf@decorate@@getnextinputsegmentobject%
  \fi%
  \pgf@next%
}%
\def\pgf@decorate@@getnextinputsegmentobject{%
  \expandafter\pgf@decorate@@@getnextinputsegmentobject\pgf@decorate@currentinputsegmentobjects\pgf@stop}%
\def\pgf@decorate@@@getnextinputsegmentobject#1#2\pgf@stop{%
  \expandafter\def\pgf@decorate@temp{#1}%
  \def\pgf@decorate@currentinputsegmentobjects{#2}}%

\def\pgf@decorate@processnextinputsegmentobject{%
  \let\pgfdecorationpreviousinputsegment\pgfdecoratecurrentinputsegment%
  \let\pgf@decorate@currentinputsegmentobject\pgf@decorate@nextinputsegmentobject%
  \pgf@decorate@getnextinputsegmentobject\pgf@decorate@nextinputsegmentobject%
  \pgf@decorate@is@closepath@false%
  \pgf@decorate@currentinputsegmentobject%
  \ifx\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentmoveto%
    \pgfpathmoveto{\pgf@decorate@inputsegment@first}%
    \let\pgfdecorationpreviousinputsegment\pgfdecorationcurrentinputsegment%
    \let\pgf@decorate@currentinputsegmentobject\pgf@decorate@nextinputsegmentobject%
    \pgf@decorate@getnextinputsegmentobject\pgf@decorate@nextinputsegmentobject%
    \pgf@decorate@is@closepath@false%
    \pgf@decorate@currentinputsegmentobject%
  \fi%
  \ifdim\pgfdecoratedinputsegmentlength=0pt\relax%
    \def\pgfdecoratedinputsegmentlength{0.05pt}%
  \fi%
  \pgfdecoratedinputsegmentremainingdistance\pgfdecoratedinputsegmentlength\relax%
  \pgfdecoratedinputsegmentcompleteddistance0pt\relax%
  \def\pgf@decorate@inputsegmenttime{0}%
  \ifx\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentcurveto%
    \pgfmathanglebetweenpoints{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
    \let\pgfdecoratedangle\pgfmathresult%
    \let\pgfdecoratedinputsegmentstartangle\pgfmathresult%
    \pgfmathanglebetweenpoints{\pgf@decorate@inputsegment@supportb}{\pgf@decorate@inputsegment@last}%
    \let\pgfdecoratedinputsegmentendangle\pgfmathresult%
  \else%
    \pgfmathanglebetweenpoints{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@last}%
    \let\pgfdecoratedangle\pgfmathresult%
    \let\pgfdecoratedinputsegmentstartangle\pgfmathresult%
    \let\pgfdecoratedinputsegmentendangle\pgfmathresult%
  \fi%
  \begingroup%
    \pgf@decorate@nextinputsegmentobject%
    \global\let\pgf@decorate@temp\pgfdecorationcurrentinputsegment%
    \ifx\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentmoveto%
      \expandafter\pgf@decorate@currentinputsegmentobject%
    \fi%
    \ifx\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentcurveto%
      \pgfmathanglebetweenpoints{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
    \else%
      \pgfmathanglebetweenpoints{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@last}%
    \fi%
    \pgf@x-\pgfdecoratedangle pt\relax%
    \advance\pgf@x\pgfmathresult pt\relax%
    \edef\pgfdecoratedangletonextinputsegment{\the\pgf@x}%
    \pgfmath@smuggleone\pgfdecoratedangletonextinputsegment%
  \endgroup%
  \let\pgfdecorationnextinputsegmentobject\pgf@decorate@temp%
}%



\newif\ifpgf@decorate@is@closepath@%

\def\pgfdecorationinputsegmentmoveto{moveto}%
\def\pgfdecorationinputsegmentlineto{lineto}%
\def\pgfdecorationinputsegmentcurveto{curveto}%
\def\pgfdecorationinputsegmentclosepath{closepath}%
\def\pgfdecorationinputsegmentlast{last}%

\def\pgf@decorate@inputsegmentobject@moveto#1{%
  \def\pgf@decorate@inputsegment@first{#1}%
  \def\pgf@decorate@inputsegment@supporta{#1}%
  \def\pgf@decorate@inputsegment@supportb{#1}%
  \def\pgf@decorate@inputsegment@last{#1}%
  \edef\pgf@decorate@lastmoveto{#1}%
  \def\pgfdecoratedinputsegmentlength{0pt}%
  \let\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentmoveto%
}%

\def\pgf@decorate@inputsegmentobject@lineto#1#2#3{%
  \def\pgfdecoratedinputsegmentlength{#1}%
  \def\pgf@decorate@inputsegment@first{#2}%
  \def\pgf@decorate@inputsegment@last{#3}%
  \pgfpointdiff{#2}{#3}%
  \pgf@xa\pgf@x%
  \pgf@ya\pgf@y%
  \pgfextract@process\pgf@decorate@inputsegment@supporta{%
    \pgf@process{#2}%
    \advance\pgf@x0.333333\pgf@xa%
    \advance\pgf@y0.333333\pgf@ya%
  }%
  \pgfextract@process\pgf@decorate@inputsegment@supportb{%
    \pgf@process{#2}%
    \advance\pgf@x0.666666\pgf@xa%
    \advance\pgf@y0.666666\pgf@ya%
  }%
  \let\pgf@decorate@movealonginputsegment\pgf@decorate@movealonginputsegment@line%
  \let\pgf@decorate@transformtoinputsegment\pgf@decorate@transformtoinputsegment@line%
  \let\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentlineto%
}%

\def\pgf@decorate@inputsegmentobject@curveto#1#2#3#4#5{%
  \def\pgfdecoratedinputsegmentlength{#1}%
  \def\pgf@decorate@inputsegment@first{#2}%
  \def\pgf@decorate@inputsegment@supporta{#3}%
  \def\pgf@decorate@inputsegment@supportb{#4}%
  \def\pgf@decorate@inputsegment@last{#5}%
  \let\pgf@decorate@movealonginputsegment\pgf@decorate@movealonginputsegment@curve%
  \let\pgf@decorate@transformtoinputsegment\pgf@decorate@transformtoinputsegment@curve%
  \let\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentcurveto%
}%

\def\pgf@decorate@inputsegmentobject@closepath#1#2#3{%
  \pgf@decorate@is@closepath@true%
  \def\pgfdecoratedinputsegmentlength{#1}%
  \def\pgf@decorate@inputsegment@first{#2}%
  \def\pgf@decorate@inputsegment@last{#3}%
  \pgfpointdiff{#2}{#3}%
  \pgf@xa\pgf@x%
  \pgf@ya\pgf@y%
  \pgfextract@process\pgf@decorate@inputsegment@supporta{%
    \pgf@process{#2}%
    \advance\pgf@x0.333333\pgf@xa%
    \advance\pgf@y0.333333\pgf@ya%
  }%
  \pgfextract@process\pgf@decorate@inputsegment@supportb{%
    \pgf@process{#2}%
    \advance\pgf@x0.666666\pgf@xa%
    \advance\pgf@y0.666666\pgf@ya%
  }%
  \let\pgf@decorate@movealonginputsegment\pgf@decorate@movealonginputsegment@line%
  \let\pgf@decorate@transformtoinputsegment\pgf@decorate@transformtoinputsegment@line%
  \let\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentclosepath%
}%


\def\pgf@decorate@inputsegmentobject@endofinputsegments{%
  \let\pgfdecorationcurrentinputsegment\pgfdecorationinputsegmentlast%
}%




\def\pgf@decorate@movealonginputsegment@line#1{}%

\def\pgf@decorate@movealonginputsegment@curve#1{%
  \ifdim#1=0pt\relax%
  \else%
    \pgfpointcurveattime{\pgf@decorate@inputsegmenttime}%
      {\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
      {\pgf@decorate@inputsegment@supportb}{\pgf@decorate@inputsegment@last}%
    \pgf@xa\pgf@x%
    \pgf@ya\pgf@y%
    \pgf@xb\pgf@decorate@inputsegmenttime pt\relax%
    \ifdim\pgf@decorate@currentpathlength<128pt\relax%
      \pgf@yb.03125pt\relax%
    \else%
      \ifdim\pgf@decorate@currentpathlength<512pt\relax%
        \pgf@yb.015625pt\relax%
      \else%
        \ifdim\pgf@decorate@currentpathlength<2048pt\relax%
          \pgf@yb.00390625pt\relax%
        \else%
          \pgf@yb.0009765625pt\relax%
        \fi%
      \fi%
    \fi%
    \c@pgf@counta1\relax%
    \pgfutil@tempdima0pt\relax%
    \pgfmathloop%
      \advance\pgf@xb\c@pgf@counta\pgf@yb%
      \edef\pgf@decorate@temp{%
        \pgf@xa\the\pgf@xa%
        \pgf@xb\the\pgf@xb%
        \pgf@ya\the\pgf@ya%
        \pgf@yb\the\pgf@yb%
      }%
      \pgfpoint@decorate@curveattime{\pgfmath@tonumber{\pgf@xb}}%
        {\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
        {\pgf@decorate@inputsegment@supportb}{\pgf@decorate@inputsegment@last}%
      \pgf@decorate@temp%
      \pgf@xc\pgf@xa%
      \pgf@yc\pgf@ya%
      \pgf@xa\pgf@x%
      \pgf@ya\pgf@y%
      \advance\pgf@x-\pgf@xc%
      \advance\pgf@y-\pgf@yc%
      \pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
      \pgfutil@tempdimb\pgfmathresult pt\relax%
      \advance\pgfutil@tempdima\c@pgf@counta\pgfutil@tempdimb%
      \ifnum\c@pgf@counta>0\relax%
        \ifdim\pgfutil@tempdima>#1\relax%
          \c@pgf@counta-\c@pgf@counta%
          \pgf@yb.5\pgf@yb%
        \fi%
      \else%
        \ifdim\pgfutil@tempdima<#1\relax%
          \c@pgf@counta-\c@pgf@counta%
          \pgf@yb.5\pgf@yb%
        \fi%
      \fi%
      \ifdim\pgf@yb=0pt\relax%
      \else%
    \repeatpgfmathloop%
    \edef\pgf@decorate@inputsegmenttime{\pgfmath@tonumber{\pgf@xb}}%
    \pgfpointcurveattime{\pgf@decorate@inputsegmenttime}%
      {\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
      {\pgf@decorate@inputsegment@supportb}{\pgf@decorate@inputsegment@last}%
    \edef\pgf@marshal{%
      \noexpand\pgfmathanglebetweenpoints%
        {\pgf@x\the\pgf@xb\pgf@y\the\pgf@yb}%
        {\pgf@x\the\pgf@xa\pgf@y\the\pgf@ya}%
    }%
    \pgf@marshal%
    \let\pgfdecoratedangle\pgfmathresult%
  \fi%
}%

\def\pgfpoint@decorate@curveattime#1#2#3#4#5{%
  \edef\pgf@time@s{#1}%
  \pgf@x-\pgf@time@s pt\relax%
  \advance\pgf@x1pt\relax%
  \edef\pgf@time@t{\pgf@sys@tonumber{\pgf@x}}%
  #5\relax%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  #4\relax%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  #3\relax%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  #2\relax%
  \pgf@x=\pgf@time@t\pgf@x\advance\pgf@x by\pgf@time@s\pgf@xa%
  \pgf@y=\pgf@time@t\pgf@y\advance\pgf@y by\pgf@time@s\pgf@ya%
  \pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
  \pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
  \pgf@xb=\pgf@time@t\pgf@xb\advance\pgf@xb by\pgf@time@s\pgf@xc%
  \pgf@yb=\pgf@time@t\pgf@yb\advance\pgf@yb by\pgf@time@s\pgf@yc%
  \pgf@x=\pgf@time@t\pgf@x\advance\pgf@x by\pgf@time@s\pgf@xa%
  \pgf@y=\pgf@time@t\pgf@y\advance\pgf@y by\pgf@time@s\pgf@ya%
  \pgf@xa=\pgf@time@t\pgf@xa\advance\pgf@xa by\pgf@time@s\pgf@xb%
  \pgf@ya=\pgf@time@t\pgf@ya\advance\pgf@ya by\pgf@time@s\pgf@yb%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \pgf@x=\pgf@time@t\pgf@x\advance\pgf@x by\pgf@time@s\pgf@xa%
  \pgf@y=\pgf@time@t\pgf@y\advance\pgf@y by\pgf@time@s\pgf@ya%
}%


\def\pgf@decorate@transformtoinputsegment@line{%
  \pgftransformshift{%
    \pgfpointlineatdistance{\pgfdecoratedinputsegmentcompleteddistance}{\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@last}
  }%
  \pgftransformrotate{\pgfdecoratedangle}%
}%

\def\pgf@decorate@transformtoinputsegment@curve{%
  \pgfslopedattimetrue%
  \pgfallowupsidedownattimetrue%
  \pgftransformcurveattime{\pgf@decorate@inputsegmenttime}%
    {\pgf@decorate@inputsegment@first}{\pgf@decorate@inputsegment@supporta}%
    {\pgf@decorate@inputsegment@supportb}{\pgf@decorate@inputsegment@last}%
}%






\def\pgf@decorate@parsesoftpath#1#2{%
  \def\pgf@decorate@inputsegmentobjectsmacro{#2}%
  \let\pgf@decorate@inputsegmentobjects\pgfutil@empty%
  \pgfutil@tempdima0pt\relax%
  \let\pgfpoint@decorate@lastparsed\pgfpoint@decorate@existingpathlast%
  \let\pgfpoint@decorate@lastnonmovetoparsed\pgfpoint@origin%
  \let\pgf@decorate@queueinputsegmentobject\pgfutil@empty%
  \let\pgfpoint@decorated@firstparsed\pgfutil@empty%
  \expandafter\pgf@decorate@@parsesoftpath#1\pgf@stop%
}%

\def\pgf@decorate@@parsesoftpath#1{%
  \ifx#1\pgf@stop%
    \let\pgf@decorate@queueinputsegmentobject\pgfutil@empty%
    \pgf@decorate@addtoinputsegmentobjects{\pgf@decorate@inputsegmentobject@endofinputsegments}%
    \pgf@decorate@addtoinputsegmentobjects{\pgf@decorate@inputsegmentobject@endofinputsegments}%
    \expandafter\let\pgf@decorate@inputsegmentobjectsmacro\pgf@decorate@inputsegmentobjects%
    \edef\pgf@decorate@totalpathlength{\the\pgfutil@tempdima}%
    \let\pgf@next\relax%
  \else%
    \ifx#1\pgfsyssoftpath@movetotoken%
      \let\pgf@next\pgf@decorate@parsemoveto%
    \else%
      \ifx#1\pgfsyssoftpath@linetotoken%
        \let\pgf@next\pgf@decorate@parselineto%
      \else%
        \ifx#1\pgfsyssoftpath@curvetosupportatoken%
          \let\pgf@next\pgf@decorate@parsecurveto%
        \else%
          \ifx#1\pgfsyssoftpath@closepathtoken%
            \let\pgf@next\pgf@decorate@parseclosepath%
          \else%
            \ifx#1\pgfsyssoftpath@rectcornertoken%
              \let\pgf@next\pgf@decorate@parserect%
            \else%
              \pgferror{Unrecognised soft path token `#1'}%
            \fi%
          \fi%
        \fi%
      \fi%
    \fi%
  \fi%
  \pgf@next}%


\def\pgf@decorate@addtoinputsegmentobjects#1{%
  \ifx\pgf@decorate@queueinputsegmentobject\pgfutil@empty%
  \else%
    \let\pgf@decorate@temp\pgf@decorate@queueinputsegmentobject%
    \let\pgf@decorate@queueinputsegmentobject\pgfutil@empty%
    \expandafter\pgf@decorate@addtoinputsegmentobjects\expandafter{\pgf@decorate@temp}%
  \fi%
  \ifx\pgfpoint@decorated@firstparsed\pgfutil@empty%
    #1%
    \let\pgfpoint@decorated@firstparsed\pgf@decorate@inputsegment@first%
  \fi%
  \expandafter\def\expandafter\pgf@decorate@inputsegmentobjects\expandafter%
    {\pgf@decorate@inputsegmentobjects{#1}}%
}%

\def\pgf@decorate@parsemoveto#1#2{%
  \def\pgf@decorate@queueinputsegmentobject{\pgf@decorate@inputsegmentobject@moveto{\pgf@x#1\pgf@y#2}}%
  \def\pgfpoint@decorate@lastparsed{\pgf@x#1\pgf@y#2}%
  \pgf@decorate@@parsesoftpath%
}%

\def\pgf@decorate@parselineto#1#2{%
  \pgf@decorate@linelength{\pgfpoint@decorate@lastparsed}{\pgf@x#1\pgf@y#2}%
  \advance\pgfutil@tempdima\pgfmathresult pt\relax%
  \edef\pgf@decorate@temp{%
    \noexpand\pgf@decorate@inputsegmentobject@lineto{\pgfmathresult pt}{\pgfpoint@decorate@lastparsed}{\pgf@x#1\pgf@y#2}%
  }%
  \edef\pgfpoint@decorate@lastparsed{\pgf@x#1\pgf@y#2}%
  \let\pgfpoint@decorate@lastnonmovetoparsed\pgfpoint@decorate@lastparsed%
  \expandafter\pgf@decorate@addtoinputsegmentobjects\expandafter{\pgf@decorate@temp}%
  \pgf@decorate@@parsesoftpath%
}%

\def\pgf@decorate@parsecurveto#1#2\pgfsyssoftpath@curvetosupportbtoken#3#4\pgfsyssoftpath@curvetotoken#5#6{%
  \pgf@decorate@curvelength{\pgfpoint@decorate@lastparsed}{\pgf@x#1\pgf@y#2}{\pgf@x#3\pgf@y#4}{\pgf@x#5\pgf@y#6}%
  \advance\pgfutil@tempdima\pgfmathresult pt\relax%
  \edef\pgf@decorate@temp{%
    \noexpand\pgf@decorate@inputsegmentobject@curveto{\pgfmathresult pt}{\pgfpoint@decorate@lastparsed}%
      {\pgf@x#1\pgf@y#2}{\pgf@x#3\pgf@y#4}{\pgf@x#5\pgf@y#6}%
  }%
  \expandafter\pgf@decorate@addtoinputsegmentobjects\expandafter{\pgf@decorate@temp}%
  \edef\pgfpoint@decorate@lastparsed{\pgf@x#5\pgf@y#6}%
  \let\pgfpoint@decorate@lastnonmovetoparsed\pgfpoint@decorate@lastparsed%
  \pgf@decorate@@parsesoftpath%
}%


\def\pgf@decorate@parseclosepath#1#2{%
  \pgf@decorate@linelength{\pgfpoint@decorate@lastparsed}{\pgf@x#1\pgf@y#2}%
  \advance\pgfutil@tempdima\pgfmathresult pt\relax%
  \edef\pgf@decorate@temp{%
    \noexpand\pgf@decorate@inputsegmentobject@closepath{\pgfmathresult pt}{\pgfpoint@decorate@lastparsed}{\pgf@x#1\pgf@y#2}%
  }%
  \expandafter\pgf@decorate@addtoinputsegmentobjects\expandafter{\pgf@decorate@temp}%
  \edef\pgfpoint@decorate@lastparsed{\pgf@x#1\pgf@y#2}%
  \let\pgfpoint@decorate@lastnonmovetoparsed\pgfpoint@decorate@lastparsed%
  \pgf@decorate@@parsesoftpath%
}%

\newif\ifpgfdecoraterectangleclockwise
\def\pgf@decorate@parserect#1#2\pgfsyssoftpath@rectsizetoken#3#4{%
  \let\pgf@decorate@orig@@parsesoftpath\pgf@decorate@@parsesoftpath%
  \let\pgf@decorate@@parsesoftpath\relax%
  \pgf@decorate@parsemoveto{#1}{#2}%
  \pgf@xa#1\relax%
  \pgf@ya#2\relax%
  \ifpgfdecoraterectangleclockwise%
    \advance\pgf@ya#4%
    \pgf@yb\pgf@ya%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgf@decorate@parselineto\pgf@temp%
    \advance\pgf@xa#3%
    \pgf@xb\pgf@xa%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgf@decorate@parselineto\pgf@temp%
    \advance\pgf@ya-#4%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgf@decorate@parselineto\pgf@temp%
    \advance\pgf@xa-#3%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgf@decorate@parseclosepath\pgf@temp%
  \else%
    \advance\pgf@xa#3%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \pgf@xb\pgf@xa%
    \expandafter\pgf@decorate@parselineto\pgf@temp%
    \advance\pgf@ya#4%
    \pgf@yb\pgf@ya%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgf@decorate@parselineto\pgf@temp%
    \advance\pgf@xa-#3%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgf@decorate@parselineto\pgf@temp%
    \advance\pgf@ya-#4%
    \edef\pgf@temp{{\the\pgf@xa}{\the\pgf@ya}}%
    \expandafter\pgf@decorate@parseclosepath\pgf@temp%
  \fi%
  \let\pgf@decorate@@parsesoftpath\pgf@decorate@orig@@parsesoftpath%
  \edef\pgf@marshal{\noexpand\pgf@decorate@parsemoveto{\the\pgf@xb}{\the\pgf@yb}}%
  \pgf@marshal%
}%




\def\pgf@decorate@linelength#1#2{%
  \pgf@process{\pgfpointdiff{#1}{#2}}%
  \pgfmathveclen@{\pgfmath@tonumber{\pgf@x}}{\pgfmath@tonumber{\pgf@y}}%
}%

\newif\ifpgf@decorate@subdivide
\def\pgf@decorate@curvelength#1#2#3#4{%
  \begingroup%
    \pgf@decorate@recursive@subdividecurve@left{#1}{#2}{#3}{#4}%
    \pgfutil@tempdimb\pgfmathresult pt\relax%
    \pgf@decorate@recursive@subdividecurve@right{#1}{#2}{#3}{#4}%
    \advance\pgfutil@tempdimb\pgfmathresult pt\relax%
    \pgfmath@returnone\pgfutil@tempdimb%
  \endgroup%
}%

\def\pgf@decorate@@curvelength#1#2#3#4{%
  \begingroup%
    \pgf@decorate@curvecordlength{#1}{#2}{#3}{#4}%
    \ifpgf@decorate@subdivide%
      \pgf@decorate@recursive@subdividecurve@left{#1}{#2}{#3}{#4}%
      \pgfutil@tempdimb\pgfmathresult pt\relax%
      \pgf@decorate@recursive@subdividecurve@right{#1}{#2}{#3}{#4}%
      \advance\pgfutil@tempdimb\pgfmathresult pt\relax%
      \expandafter\pgfmath@returnone\expandafter\pgfutil@tempdimb%
    \else%
      \expandafter\pgfmath@returnone\expandafter\pgfmathresult\expandafter p\expandafter t\expandafter%
    \fi%
  \endgroup%
}%

\def\pgf@decorate@curvelength@tolerance{1pt}%

\def\pgf@decorate@curvecordlength#1#2#3#4{%
  #4\relax%
  \pgf@xa\pgf@x\pgf@ya\pgf@y%
  #1\relax%
  \advance\pgf@xa-\pgf@x%
  \advance\pgf@ya-\pgf@y%
  \ifdim\pgf@xa<0pt\relax\pgf@xa-\pgf@xa\fi%
  \ifdim\pgf@ya<0pt\relax\pgf@ya-\pgf@ya\fi%
  \pgf@decorate@subdividetrue%
  \ifdim\pgf@xa<\pgf@decorate@curvelength@tolerance\relax%
    \ifdim\pgf@ya<\pgf@decorate@curvelength@tolerance\relax%
      \pgfmathveclen@{\pgfmath@tonumber{\pgf@xa}}{\pgfmath@tonumber{\pgf@ya}}%
      \pgf@decorate@subdividefalse%
    \fi%
  \fi%
}%

\def\pgf@decorate@recursive@subdividecurve@left#1#2#3#4{%
  {%
    #1\relax%
    \pgfutil@tempdima\pgf@x%
    \pgfutil@tempdimb\pgf@y%
    \pgf@xa.5\pgf@x\pgf@ya.5\pgf@y%
    \pgf@xb.25\pgf@x\pgf@yb.25\pgf@y%
    \pgf@xc.125\pgf@x\pgf@yc.125\pgf@y%
    #2\relax%
    \advance\pgf@xa.5\pgf@x\advance\pgf@ya.5\pgf@y%
    \advance\pgf@xb.5\pgf@x\advance\pgf@yb.5\pgf@y%
    \advance\pgf@xc.375\pgf@x\advance\pgf@yc.375\pgf@y%
    #3\relax%
    \advance\pgf@xb.25\pgf@x\advance\pgf@yb.25\pgf@y%
    \advance\pgf@xc.375\pgf@x\advance\pgf@yc.375\pgf@y%
    #4\relax%
    \advance\pgf@xc.125\pgf@x\advance\pgf@yc.125\pgf@y%
    \xdef\pgf@marshal{%
      \noexpand\pgf@decorate@@curvelength%
        {\pgf@x\the\pgfutil@tempdima\pgf@y\the\pgfutil@tempdimb}%
        {\pgf@x\the\pgf@xa\pgf@y\the\pgf@ya}{\pgf@x\the\pgf@xb\pgf@y\the\pgf@yb}
          {\pgf@x\the\pgf@xc\pgf@y\the\pgf@yc}%
    }%
  }%
  \pgf@marshal%
}%

\def\pgf@decorate@recursive@subdividecurve@right#1#2#3#4{%
  {%
    #1\relax%
    \pgfutil@tempdima.125\pgf@x\pgfutil@tempdimb.125\pgf@y%
    #2\relax%
    \advance\pgfutil@tempdima.375\pgf@x\advance\pgfutil@tempdimb.375\pgf@y%
    \pgf@xa.25\pgf@x\pgf@ya.25\pgf@y%
    #3\relax%
    \advance\pgfutil@tempdima.375\pgf@x\advance\pgfutil@tempdimb.375\pgf@y%
    \advance\pgf@xa.5\pgf@x\advance\pgf@ya.5\pgf@y%
    \pgf@xb.5\pgf@x\pgf@yb.5\pgf@y%
    #4\relax%
    \advance\pgfutil@tempdima.125\pgf@x\advance\pgfutil@tempdimb.125\pgf@y%
    \advance\pgf@xa.25\pgf@x\advance\pgf@ya.25\pgf@y%
    \advance\pgf@xb.5\pgf@x\advance\pgf@yb.5\pgf@y%
    \pgf@xc\pgf@x\pgf@yc\pgf@y%
    \xdef\pgf@marshal{%
      \noexpand\pgf@decorate@@curvelength%
        {\pgf@x\the\pgfutil@tempdima\pgf@y\the\pgfutil@tempdimb}%
        {\pgf@x\the\pgf@xa\pgf@y\the\pgf@ya}{\pgf@x\the\pgf@xb\pgf@y\the\pgf@yb}
          {\pgf@x\the\pgf@xc\pgf@y\the\pgf@yc}%
    }%
  }%
  \pgf@marshal%
}%


\def\pgf@decorate@inputsegmentobjects@reverse#1#2{%
  \def\pgf@decorate@path@storein{#2}%
  \def\pgf@decorate@inputsegments@@temp{}%
  \expandafter\pgf@decorate@inputsegments@@reverse@pass@first#1\pgf@stop}%

\def\pgf@decorate@inputsegments@@reverse@pass@first#1#2\pgf@stop{%
  \def\pgf@decorate@temp{#1}%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
    \pgf@decorate@inputsegments@@temp\expandafter\expandafter\expandafter%
      {\expandafter\pgf@decorate@temp\pgf@decorate@inputsegments@@temp}%
  \def\pgf@decorate@test{#2}
  \ifx\pgf@decorate@test\pgfutil@empty%
    \def\pgf@decorate@next{%
      \expandafter\pgf@decorate@inputsegmentobjects@reverse@pass@second\pgf@decorate@inputsegments@@temp\pgf@stop%
    }%
  \else%
    \def\pgf@decorate@next{\pgf@decorate@inputsegments@@reverse@pass@first#2\pgf@stop}%
  \fi%
  \pgf@decorate@next%
}%
\def\pgf@decorate@inputsegmentobjects@reverse@pass@second#1#2#3\pgf@stop{%
  \def\pgf@decorate@inputsegments@temp{#3}%
  \def\pgf@decorate@inputsegments@@temp{}%
  \let\pgf@decorate@current@inputsegmentobject=\pgfutil@empty
  \let\pgf@decorate@last@object=\pgfutil@empty
  \pgf@decorate@inputsegmentobjects@reverse@moveto@waitingtrue%
  \pgf@decorate@inputsegmentobjects@reverse@closepath@waitingfalse%
  \expandafter\pgf@decorate@path@@reverse@pass@second\pgf@decorate@inputsegments@temp\pgf@stop}%


\def\pgf@decorate@path@@reverse@pass@second#1{%
  \ifx#1\pgf@stop%
    \expandafter\def\expandafter\pgf@decorate@inputsegments@@temp\expandafter{%
      \pgf@decorate@inputsegments@@temp%
      {\pgf@decorate@inputsegmentobject@endofinputsegments}%
      {\pgf@decorate@inputsegmentobject@endofinputsegments}
    }%
    \expandafter\let\pgf@decorate@path@storein=\pgf@decorate@inputsegments@@temp%
    \let\pgf@decorate@next=\relax%
  \else%
    \ifx#1\pgf@decorate@inputsegmentobject@moveto%
      \let\pgf@decorate@next=\pgf@decorate@inputsegmentobjects@reverse@moveto%
    \else%
      \ifx#1\pgf@decorate@inputsegmentobject@lineto%
        \let\pgf@decorate@next=\pgf@decorate@inputsegmentobjects@reverse@lineto%
      \else%
        \ifx#1\pgf@decorate@inputsegmentobject@curveto%
          \let\pgf@decorate@next=\pgf@decorate@inputsegmentobjects@reverse@curveto%
        \else%
          \ifx#1\pgf@decorate@inputsegmentobject@closepath%
            \let\pgf@decorate@next=\pgf@decorate@inputsegmentobjects@reverse@closepath%
          \else%
          \fi%
        \fi%
      \fi%
    \fi%
  \fi%
  \pgf@decorate@next%
}%

\newif\ifpgf@decorate@inputsegmentobjects@reverse@moveto@waiting

\def\pgf@decorate@inputsegmentobjects@reverse@moveto#1{%
  \ifpgf@decorate@inputsegmentobjects@reverse@closepath@waiting%
    \edef\pgf@decorate@current@inputsegmentobject{%
      {\noexpand\pgf@decorate@inputsegmentobject@closepath%
        {\pgf@decorate@reverse@closepath@length}%
        {\pgf@decorate@last}%
        {#1}%
      }%
    }%
    \pgf@decorate@inputsegmentobjects@reverse@closepath@waitingfalse%
  \else%
    \let\pgf@decorate@current@inputsegmentobject=\pgfutil@empty%
  \fi%
  \pgf@decorate@inputsegmentobjects@reverse@moveto@waitingtrue%
  \pgf@decorate@path@@@reverse@pass@second%
}%

\newif\ifpgf@decorate@inputsegmentobjects@reverse@closepath@waiting

\def\pgf@decorate@inputsegmentobjects@reverse@closepath#1#2#3{%
  \pgf@decorate@inputsegmentobjects@reverse@closepath@waitingtrue%
  \def\pgf@decorate@reverse@closepath@length{#1}%
  \def\pgf@decorate@current@inputsegmentobject{}%
  \pgf@decorate@inputsegmentobjects@reverse@lineto{#1}{#2}{#3}%
}%

\def\pgf@decorate@inputsegmentobjects@reverse@lineto#1#2#3#4{%
  \ifpgf@decorate@inputsegmentobjects@reverse@moveto@waiting%
    \def\pgf@decorate@current@inputsegmentobject{{\pgf@decorate@inputsegmentobject@moveto{#3}}}%
    \pgf@decorate@inputsegmentobjects@reverse@moveto@waitingfalse%
  \else%
    \let\pgf@decorate@current@inputsegmentobject=\pgfutil@empty%
  \fi%
  \def\pgf@decorate@append@inputsegmentobject{{\pgf@decorate@inputsegmentobject@lineto{#1}{#3}{#2}}}%
  \ifx#4\pgf@decorate@inputsegmentobject@moveto%
    \ifpgf@decorate@inputsegmentobjects@reverse@closepath@waiting%
      \def\pgf@decorate@append@inputsegmentobject{{\pgf@decorate@inputsegmentobject@closepath{#1}{#3}{#2}}}%
      \pgf@decorate@inputsegmentobjects@reverse@closepath@waitingfalse%
    \else%
      \def\pgf@decorate@append@inputsegmentobject{{\pgf@decorate@inputsegmentobject@lineto{#1}{#3}{#2}}}%
    \fi%
  \fi%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
    \pgf@decorate@current@inputsegmentobject\expandafter\expandafter\expandafter%
      {\expandafter\pgf@decorate@current@inputsegmentobject\pgf@decorate@append@inputsegmentobject}
  \def\pgf@decorate@last{#2}%
  \pgf@decorate@path@@@reverse@pass@second#4%
}%

\def\pgf@decorate@inputsegmentobjects@reverse@curveto#1#2#3#4#5{%
  \ifpgf@decorate@inputsegmentobjects@reverse@moveto@waiting%
    \def\pgf@decorate@current@inputsegmentobject{%
      {\pgf@decorate@inputsegmentobject@moveto{#5}}%
      {\pgf@decorate@inputsegmentobject@curveto{#1}{#5}{#4}{#3}{#2}}%
    }%
    \pgf@decorate@inputsegmentobjects@reverse@moveto@waitingfalse%
  \else%
    \def\pgf@decorate@current@inputsegmentobject{{\pgf@decorate@inputsegmentobject@curveto{#1}{#5}{#4}{#3}{#2}}}%
  \fi%
  \def\pgf@decorate@last{#2}%
  \pgf@decorate@path@@@reverse@pass@second%
}%

\def\pgf@decorate@path@@@reverse@pass@second{%
  \ifx\pgf@decorate@current@inputsegmentobject\pgfutil@empty%
  \else%
    \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter%
      \pgf@decorate@inputsegments@@temp\expandafter\expandafter\expandafter%
        {\expandafter\pgf@decorate@inputsegments@@temp\pgf@decorate@current@inputsegmentobject}%
  \fi%
  \pgf@decorate@path@@reverse@pass@second%
}%





\let\startpgfdecoration=\pgfdecoration
\let\stoppgfdecoration=\endpgfdecoration

\let\startpgfmetadecoration=\pgfmetadecoration
\let\stoppgfmetadecoration=\endpgfmetadecoration






\pgfdeclaredecoration{lineto}{initial}{%
  \state{initial}[switch if input segment less than=\pgfdecoratedremainingdistance to input segment,
                  width=\pgfdecoratedremainingdistance]
  {
  }%
  \state{input segment}[width=\pgfdecoratedinputsegmentlength,next state=initial]
  {
    \pgfpathlineto{\pgfpointdecoratedinputsegmentlast}
  }%

  \state{final}{\pgfpathlineto{\pgfpointdecoratedpathlast}}%
}%

\pgfdeclaredecoration{moveto}{initial}{%
  \state{initial}[width=\pgfdecoratedremainingdistance]{}%
  \state{final}{\pgfpathmoveto{\pgfpointdecoratedpathlast}}%
}%


\pgfdeclaredecoration{curveto}{initial}{%
  \state{initial}[width=\pgfdecoratedinputsegmentlength/100]
  {
    \pgfpathlineto{\pgfpointorigin}
  }%
  \state{final}{\pgfpathlineto{\pgfpointdecoratedpathlast}}%
}%





\let\pgfsnakeremainingdistance=\pgfdecoratedremainingdistance
\let\pgfsnakecompleteddistance=\pgfdecoratedcompleteddistance
\def\pgfsnakeangle{\pgfdecoratedangle}%
\let\pgfdeclaresnake=\pgfdeclaredecoration
\let\pgfsetsnakesegmenttransformation=\pgfsetdecorationsegmenttransformation
\def\pgfpathsnakesto#1#2{%
  \edef\pgf@temp{#1}%
  \expandafter\pgfdecoration\expandafter{\pgf@temp}%
    \pgfpathlineto{#2}%
  \endpgfdecoration%
}%
\def\pgfpathsnaketo#1#2{\pgfpathsnakesto{{#1}{\pgfsnakeremainingdistance}}{#2}}%
\def\pgfpathsnakealongvector#1#2#3{%
  \pgf@process{#3}%
  \pgf@xa=\pgf@x%
  \pgf@ya=\pgf@y%
  \pgfmathparse{#2}%
  \pgf@xa=\pgfmathresult\pgf@xa%
  \pgf@ya=\pgfmathresult\pgf@ya%
  \advance\pgf@xa by\pgf@path@lastx%
  \advance\pgf@ya by\pgf@path@lasty%
  \edef\pgf@snake@lib@temp{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \pgfpathsnaketo{#1}{\pgf@snake@lib@temp}%
}%

\let\pgfsnakesegmentamplitude=\pgfdecorationsegmentamplitude
\let\pgfsnakesegmentlength=\pgfdecorationsegmentlength
\def\pgfsnakesegmentangle{\pgfdecorationsegmentangle}%
\def\pgfsnakesegmentobjectlength{\pgfkeysvalueof{/pgf/decoration/shape start width}}%
\def\pgfsnakesegmentaspect{\pgfdecorationsegmentaspect}%

\pgfset{%
  /pgf/segment amplitude/.style={/pgf/decoration={amplitude={#1},shape height={2*(#1)}}},
  /pgf/segment length/.style={/pgf/decoration={segment length={#1}}},
  /pgf/segment angle/.style={/pgf/decoration={angle={#1}}},
  /pgf/segment aspect/.style={/pgf/decoration={aspect={#1}}},
  /pgf/segment object length/.style={/pgf/decoration={shape width={#1},radius={#1}}}}%



\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduledecorations.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmodulematrix.code.tex ====

\ProvidesFileRCS{pgfmodulematrix.code.tex}

\usepgfmodule{shapes}%

\newif\ifpgfmatrix
\newif\ifpgf@matrix@correct@call

\newif\ifpgf@matrix@fixed

\newcount\pgfmatrixcurrentrow

\newcount\pgfmatrixcurrentcolumn
\newcount\pgf@matrix@numberofcolumns

\let\pgf@matrix@cell=\pgfnodeparttextbox %
\let\pgf@matrix@box=\pgf@matrix@cell %

\long\def\pgfmatrixbeforeassemblenode#1{%
  \long\def\pgf@matrix@before@assemnble@node{#1}}
\pgfmatrixbeforeassemblenode{}


\def\pgfsetmatrixrowsep#1{\def\pgfmatrixrowsep{#1}}%
\def\pgfsetmatrixcolumnsep#1{\def\pgfmatrixcolumnsep{#1}}%

\def\pgfmatrixrowsep{0pt}%
\def\pgfmatrixcolumnsep{0pt}%




\def\pgfmatrix#1#2#3#4#5#6{%
  \ifpgfmatrix%
    \pgferror{You cannot nest pgfmatrix environments, yet}
  \fi%
  \bgroup%
    \everycr{}%
    #6%
    \def\pgf@matrix@par@shape{#1}%
    \def\pgf@matrix@par@anchor{#2}%
    \def\pgf@matrix@par@name{#3}%
    \def\pgf@matrix@par@usage{#4}%
    \def\pgf@matrix@par@shift{#5}%
    \ifx\pgf@matrix@par@name\pgfutil@empty%
      \def\pgf@matrix@par@name{pgf@matrix@internal}%
    \fi%
    \pgfmatrixcurrentrow=0\relax%
    \pgfmatrixcurrentcolumn=0\relax%
    \pgf@matrix@numberofcolumns=0\relax%
    \let\\=\pgfmatrixendrow%
    \tabskip=0pt%
    \offinterlineskip%
    \pgfmatrixtrue%
    \let\pgf@matrix@node@list=\pgfutil@empty%
    \expandafter\let\csname pgf@matrix@column@finish@1\endcsname=\pgfutil@empty%
    \let\pgf@matrix@row@finish=\pgfutil@empty%
    \afterassignment\pgf@matrix@cont\let\pgf@next=%
}%
\def\pgf@matrix@cont{%
    \setbox\pgf@matrix@box=\hbox\bgroup\vbox\bgroup%
    \halign\bgroup%
    \pgf@matrix@init@row%
    \pgf@matrix@step@column%
    {%
      \pgf@matrix@startcell%
      ##%
      \pgf@matrix@endcell%
    }%
    &%
    ##\pgf@matrix@padding&&%
    \pgf@matrix@step@column%
    {%
      \pgf@matrix@startcell%
      ##%
      \pgf@matrix@endcell%
    }&%
    ##\pgf@matrix@padding%
    \cr%
}%

\def\pgf@end@matrix{%
      \egroup\egroup%
    \egroup%
    \pgf@matrix@before@assemnble@node
    \ifx\pgf@matrix@node@list\pgfutil@empty%
    \else%
      \pgf@matrix@compute@origin%
      \pgf@matrix@shift@nodes@initial%
    \fi%
    \pgftransformresetnontranslations%
    \pgftransformshift{\pgf@process{\pgftransformreset\pgf@matrix@par@shift\pgf@x=-\pgf@x\pgf@y=-\pgf@y}}%
    \pgfmultipartnode{\pgf@matrix@par@shape}{\pgf@matrix@par@anchor}{\pgf@matrix@par@name}{\pgf@matrix@par@usage}%
    \ifx\pgf@matrix@node@list\pgfutil@empty%
    \else%
      {%
        \pgftransformreset%
        \pgf@process{\pgfpointanchor{\pgf@matrix@par@name}{text}}%
        \xdef\pgf@matrix@offset{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
        \pgf@matrix@shift@nodes@secondary{\pgf@matrix@offset}%
      }%
    \fi%
}%





\def\pgfmatrixnextcell{%
  \let\pgf@matrix@signal@cell@end=\pgf@matrix@signal@cell@end%
  \pgfutil@ifnextchar[{\pgf@matrix@cell@cont}{\pgf@matrix@cell@cont[0pt]}}%

\def\pgf@matrix@cell@cont[#1]{%
  \xdef\pgf@matrix@last@nextcell@options{#1}%
  &\pgf@matrix@correct@calltrue&%
}%


\def\pgf@matrix@fixed@text{between origins}%
\def\pgf@matrix@natural@text{between borders}%

\def\pgf@matrix@addtolength#1#2{\edef\pgf@temp{#2}\expandafter\pgf@matrix@addtolength@\expandafter#1#2,\pgf@stop}%
\def\pgf@matrix@addtolength@#1#2,#3\pgf@stop{%
  \pgfkeys@spdef\pgf@temp{#2}%
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \ifx\pgf@temp\pgf@matrix@fixed@text%
      \global\pgf@matrix@fixedtrue%
    \else%
      \ifx\pgf@temp\pgf@matrix@natural@text%
        \global\pgf@matrix@fixedfalse%
      \else%
        \pgfmathaddtolength{#1}{#2}%
      \fi%
    \fi%
  \fi%
  \def\pgf@temp{#3}%
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \pgf@matrix@addtolength@#1#3\pgf@stop%
  \fi%
}%




\def\pgf@matrix@init@row{%
  \relax%
  \global\advance\pgfmatrixcurrentrow by 1\relax%
  \global\pgfmatrixcurrentcolumn=0\relax%
  \expandafter\gdef\csname pgf@matrix@maxy\the\pgfmatrixcurrentrow\endcsname{0pt}%
  \expandafter\gdef\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname{0pt}%
}%




\def\pgf@matrix@step@column{%
  \relax%
  \global\advance\pgfmatrixcurrentcolumn by1\relax%
}%




\def\pgf@matrix@startcell{%
  \let\pgf@nodecallback=\pgf@matrix@nodecallback%
  \pgfinterruptboundingbox%
  \pgftransformreset%
  \setbox\pgf@matrix@cell=\hbox\bgroup\bgroup%
    \pgf@relevantforpicturesizetrue
    \pgfsys@beginpicture%
    \normalbaselines%
    \pgfutil@ifnextchar\let%
    {%
      \afterassignment\pgf@matrix@empty@check\let\pgf@matrix@temp=%
    }%
    {%
      \pgf@matrix@empty@cell@false%
      \pgfmatrixbegincode%
    }%
}%

\def\pgf@matrix@empty@check{\futurelet\pgf@matrix@check@token\pgf@matrix@empty@check@cont}%
\def\pgf@matrix@empty@check@cont{%
  \ifx\pgf@matrix@check@token\pgf@matrix@signal@cell@end%
    \pgf@matrix@empty@cell@true%
    \expandafter%
    \pgfmatrixemptycode%
    \expandafter%
    \let%
  \else%
    \pgf@matrix@empty@cell@false%
    \expandafter%
    \pgfmatrixbegincode%
    \expandafter
    \let%
  \fi%
}%

\newif\ifpgf@matrix@empty@cell@



\def\pgf@matrix@endcell{%
    \ifpgf@matrix@empty@cell@%
    \else%
      \expandafter\expandafter\expandafter\pgfmatrixendcode%
      \expandafter\ifpgf@matrix@last@cell@in@row\expandafter\pgf@matrix@last@cell@in@rowtrue\expandafter\fi%
    \fi%
    \pgfsys@endpicture%
    \ifnum\pgfmatrixcurrentcolumn<\pgf@matrix@numberofcolumns%
    \else%
    \ifpgf@matrix@last@cell@in@row\else%
    {%
      \global\pgf@matrix@fixedfalse%
      \pgf@x=0pt%
      \pgf@matrix@addtolength{\pgf@x}{\pgfmatrixcolumnsep}%
      \pgf@matrix@addtolength{\pgf@x}{\pgf@matrix@last@nextcell@options}%
      \ifpgf@matrix@fixed%
        \expandafter\pgfutil@g@addto@macro\csname pgf@matrix@column@finish@\the\pgfmatrixcurrentcolumn\endcsname%
          {\global\pgf@picmaxx=0pt}%
      \fi%
      \advance\pgfmatrixcurrentcolumn by1\relax %
      \expandafter\xdef\csname pgf@matrix@column@sep@\the\pgfmatrixcurrentcolumn\endcsname{\the\pgf@x}%
      \ifpgf@matrix@fixed%
        \expandafter\gdef\csname pgf@matrix@column@finish@\the\pgfmatrixcurrentcolumn\endcsname{\global\pgf@picminx=0pt}%
      \else%
        \expandafter\global\expandafter\let\csname pgf@matrix@column@finish@\the\pgfmatrixcurrentcolumn\endcsname=\pgfutil@empty%
      \fi%
    }%
    \fi\fi%
    \ifdim\pgf@picmaxx=-16000pt\relax%
      \global\pgf@picmaxx=0pt\relax%
      \global\pgf@picminx=0pt\relax%
      \global\pgf@picmaxy=0pt\relax%
      \global\pgf@picminy=0pt\relax%
    \fi%
    \csname pgf@matrix@column@finish@\the\pgfmatrixcurrentcolumn\endcsname%
    \pgf@matrix@row@finish%
  \egroup\egroup%
  \ifnum\pgfmatrixcurrentcolumn>1\relax%
    \pgf@y=\csname pgf@matrix@column@sep@\the\pgfmatrixcurrentcolumn\endcsname\relax%
    \advance\pgf@picminx by-\pgf@y%
  \fi%
  \ifdim\pgf@picmaxy>\csname pgf@matrix@maxy\the\pgfmatrixcurrentrow\endcsname%
    \expandafter\xdef\csname pgf@matrix@maxy\the\pgfmatrixcurrentrow\endcsname{\the\pgf@picmaxy}%
  \fi%
  \ifdim\pgf@picminy<\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname%
    \expandafter\xdef\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname{\the\pgf@picminy}%
  \fi%
  \ht\pgf@matrix@cell=\pgf@picmaxy%
  \dp\pgf@matrix@cell=-\pgf@picminy%
  \ifnum\pgfmatrixcurrentcolumn>\pgf@matrix@numberofcolumns\relax%
    \expandafter\xdef\csname pgf@matrix@maxx\the\pgfmatrixcurrentcolumn\endcsname{\the\pgf@picmaxx}%
    \expandafter\xdef\csname pgf@matrix@minx\the\pgfmatrixcurrentcolumn\endcsname{\the\pgf@picminx}%
    \global\pgf@matrix@numberofcolumns=\pgfmatrixcurrentcolumn\relax%
  \else%
    \ifdim\pgf@picmaxx>\csname pgf@matrix@maxx\the\pgfmatrixcurrentcolumn\endcsname%
      \expandafter\xdef\csname pgf@matrix@maxx\the\pgfmatrixcurrentcolumn\endcsname{\the\pgf@picmaxx}%
    \fi%
    \ifdim\pgf@picminx<\csname pgf@matrix@minx\the\pgfmatrixcurrentcolumn\endcsname%
      \expandafter\xdef\csname pgf@matrix@minx\the\pgfmatrixcurrentcolumn\endcsname{\the\pgf@picminx}%
    \fi%
  \fi%
  \xdef\pgf@matrix@paddingskip{\the\pgf@picmaxx}%
  \hfil\hskip-\pgf@picminx%
  \wd\pgf@matrix@cell=0pt%
  \box\pgf@matrix@cell%
  \endpgfinterruptboundingbox%
}%

\let\pgfmatrixbegincode=\relax
\let\pgfmatrixendcode=\relax
\let\pgfmatrixemptycode=\relax



\def\pgf@matrix@nodecallback#1{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \xdef\pgf@matrix@node@list{\pgf@matrix@node@list,{#1}}%
    \expandafter\xdef\csname pgf@matrix@node@location@#1\endcsname{{\the\pgfmatrixcurrentrow}{\the\pgfmatrixcurrentcolumn}}%
  \fi%
}%




\def\pgf@matrix@padding{%
  \ifpgf@matrix@correct@call%
  \else%
    \pgferror{Single ampersand used with wrong catcode}%
  \fi%
  \hskip\pgf@matrix@paddingskip\hfil%
}%




\def\pgf@matrix@compute@origin{%
  {%
    \ifnum\pgfmatrixcurrentrow>0\relax%
      \expandafter\gdef\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname{0pt}%
    \fi
    \c@pgf@counta=\pgfmatrixcurrentrow\relax%
    \loop%
    \ifnum\c@pgf@counta>1\relax%
      \pgf@y=\csname pgf@matrix@miny\the\c@pgf@counta\endcsname\relax%
      \advance\pgf@y by\csname pgf@matrix@maxy\the\c@pgf@counta\endcsname\relax
      \advance\c@pgf@counta by-1\relax%
      \pgf@ya=\csname pgf@matrix@miny\the\c@pgf@counta\endcsname\relax%
      \advance\pgf@y by-\pgf@ya\relax%
      \expandafter\xdef\csname pgf@matrix@miny\the\c@pgf@counta\endcsname{\the\pgf@y}%
    \repeat%
  }%
  {%
    \ifnum\pgf@matrix@numberofcolumns>0\relax%
      \pgf@x=\csname pgf@matrix@minx1\endcsname\relax%
      \pgf@x=-\pgf@x%
      \expandafter\xdef\csname pgf@matrix@minx1\endcsname{\the\pgf@x}%
    \fi
    \c@pgf@counta=1\relax%
    \loop%
    \ifnum\c@pgf@counta<\pgf@matrix@numberofcolumns\relax%
      \pgf@x=\csname pgf@matrix@minx\the\c@pgf@counta\endcsname\relax%
      \advance\pgf@x by\csname pgf@matrix@maxx\the\c@pgf@counta\endcsname\relax%
      \advance\c@pgf@counta by1\relax%
      \pgf@xa=\csname pgf@matrix@minx\the\c@pgf@counta\endcsname\relax%
      \advance\pgf@x by-\pgf@xa\relax%
      \expandafter\xdef\csname pgf@matrix@minx\the\c@pgf@counta\endcsname{\the\pgf@x}%
    \repeat%
  }%
}%




\def\pgf@matrix@shift@nodes@initial{%
  {%
  \pgfutil@for\pgf@matrix@node@name:=\pgf@matrix@node@list\do{%
    \ifx\pgf@matrix@node@name\pgfutil@empty%
    \else%
      \expandafter\ifx\csname pgf@matrix@node@visited@\pgf@matrix@node@name\endcsname\relax%
        \pgf@shift@node{\pgf@matrix@node@name}{%
          \pgf@x=\csname pgf@matrix@minx%
            \expandafter\expandafter\expandafter\pgfutil@secondoftwo\csname pgf@matrix@node@location@\pgf@matrix@node@name\endcsname\endcsname%
          \pgf@y=\csname pgf@matrix@miny%
            \expandafter\expandafter\expandafter\pgfutil@firstoftwo\csname pgf@matrix@node@location@\pgf@matrix@node@name\endcsname\endcsname%
          }%
        \expandafter\let\csname pgf@matrix@node@visited@\pgf@matrix@node@name\endcsname=\pgfutil@empty%
      \fi%
    \fi%
  }%
  }%
}%



\def\pgf@matrix@shift@nodes@secondary#1{%
  \pgfutil@for\pgf@matrix@node@name:=\pgf@matrix@node@list\do{%
    \ifx\pgf@matrix@node@name\pgfutil@empty%
    \else%
      \expandafter\ifx\csname pgf@matrix@node@visited@\pgf@matrix@node@name\endcsname\relax%
        \pgf@shift@node{\pgf@matrix@node@name}{#1}%
        \expandafter\let\csname pgf@matrix@node@visited@\pgf@matrix@node@name\endcsname=\pgfutil@empty%
      \fi%
    \fi%
  }%
}%


\def\pgfmatrixendrow{%
  \let\pgf@matrix@signal@cell@end=\pgf@matrix@signal@cell@end
  \pgf@matrix@last@cell@in@rowtrue%
  \xdef\pgf@matrix@rowsep{\pgfmatrixrowsep}%
  &\pgf@matrix@correct@calltrue%
  \global\pgf@matrix@fixedfalse%
  \pgf@y=0pt%
  \pgf@matrix@addtolength\pgf@y{\pgf@matrix@rowsep}%
  \pgfutil@ifnextchar[{\pgfmatrixendrow@skip}{\pgf@matrix@finish@line}%
}%
\newif\ifpgf@matrix@last@cell@in@row

\def\pgf@matrix@signal@cell@end{\pgf@matrix@signal@cell@end}%

\def\pgfmatrixendrow@skip[#1]{%
  \pgf@matrix@addtolength\pgf@y{#1}%
  \pgf@matrix@finish@line%
}%

\def\pgf@matrix@finish@line{%
  \global\pgf@y=\pgf@y%
  \pgf@ya=-\pgf@y%
  \global\advance\pgf@ya by\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname%
  \expandafter\xdef\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname{\the\pgf@ya}%
  \pgfutil@ifnextchar\egroup{\cr\pgf@end@matrix}{\pgf@matrix@no@eom@found}%
}%

\def\pgf@matrix@eom@found{%
  \cr%
  \pgf@end@matrix%
}%

\def\pgf@matrix@no@eom@found{%
  \cr%
  \noalign{\vskip\pgf@y%
  \ifpgf@matrix@fixed%
    \vskip\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname%
    \vskip\pgf@y%
    \pgf@y=-\pgf@y%
    \expandafter\xdef\csname pgf@matrix@miny\the\pgfmatrixcurrentrow\endcsname{\the\pgf@y}%
    \gdef\pgf@matrix@row@finish{\global\pgf@picmaxy=0pt}%
  \else%
    \global\let\pgf@matrix@row@finish=\pgfutil@empty%
  \fi%
  }%
}%


\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmodulematrix.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduleplot.code.tex ====

\ProvidesFileRCS{pgfmoduleplot.code.tex}




\def\pgfplotstreamstart{\pgf@plotstreamstart}%
\def\pgfplotstreampoint#1{\gdef\pgfplotlastpoint{#1}\pgf@plotstreampoint{#1}}%
\def\pgfplotstreampointoutlier#1{\pgfplot@outliers{}{\pgf@plotstreamjump}{\pgfplotstreampoint{#1}}}%
\def\pgfplotstreampointundefined{\pgfplot@outliers{}{\pgf@plotstreamjump}{}}%
\def\pgfplotstreamnewdataset{\pgfplot@outliers{}{\pgf@plotstreamjump}{}}%
\def\pgfplotstreamspecial{\pgf@plotstreamspecial}%
\def\pgfplotstreamend{\pgf@plotstreamend}%

\def\pgfplot@ignorer#1#2#3{#1}%
\def\pgfplot@jumper#1#2#3{#2}%
\def\pgfplot@plotter#1#2#3{#3}%

\let\pgfplot@outliers\pgfplot@jumper
\let\pgfplot@undefined\pgfplot@jumper
\let\pgfplot@newdata\pgfplot@jumper

\pgfset{
  handle outlier points in plots/.is choice,
  handle outlier points in plots/ignore/.code=\let\pgfplot@outliers\pgfplot@ignorer,
  handle outlier points in plots/jump/.code=\let\pgfplot@outliers\pgfplot@jumper,
  handle outlier points in plots/plot/.code=\let\pgfplot@outliers\pgfplot@plotter,
  handle undefined points in plots/.is choice,
  handle undefined points in plots/ignore/.code=\let\pgfplot@undefined\pgfplot@ignorer,
  handle undefined points in plots/jump/.code=\let\pgfplot@undefined\pgfplot@jumper,
  handle new data sets in plots/.is choice,
  handle new data sets in plots/ignore/.code=\let\pgfplot@newdata\pgfplot@ignorer,
  handle new data sets in plots/jump/.code=\let\pgfplot@newdata\pgfplot@jumper,
}%



\def\pgfdeclareplothandler#1#2#3{%
  \def#1#2{%
    \pgfkeys{%
      /pgf/plots/@handler options/.cd,
      start=\relax,
      end macro=\relax,
      point macro=\pgfutil@gobble,
      jump macro=\relax,
      special macro=\pgfutil@gobble,%
      #3%
    }%
  }%
}%

\pgfkeys{%
  /pgf/plots/@handler options/.cd,
  start/.code=%
    \gdef\pgf@plotstreamstart{%
      \global\pgf@plot@startedfalse%
      \global\let\pgf@plotstreamend\pgf@plotstreamend@init%
      \global\let\pgf@plotstreampoint\pgf@plotstreampoint@init%
      \global\let\pgf@plotstreamjump\pgf@plotstreamjump@init%
      \global\let\pgf@plotstreamspecial\pgf@plotstreamspecial@init%
      #1%
    },%
  start macro/.code=%
    \gdef\pgf@plotstreamstart{%
      \global\pgf@plot@startedfalse%
      \global\let\pgf@plotstreamend\pgf@plotstreamend@init%
      \global\let\pgf@plotstreampoint\pgf@plotstreampoint@init%
      \global\let\pgf@plotstreamjump\pgf@plotstreamjump@init%
      \global\let\pgf@plotstreamspecial\pgf@plotstreamspecial@init%
      #1%
    },%
  end/.code=\gdef\pgf@plotstreamend@init{#1},
  end macro/.code=\global\let\pgf@plotstreamend@init#1,
  point/.code=\gdef\pgf@plotstreampoint@init##1{#1},
  point macro/.code=\global\let\pgf@plotstreampoint@init#1,
  jump/.code=\gdef\pgf@plotstreamjump@init{#1},
  jump macro/.code=\global\let\pgf@plotstreamjump@init#1,
  special/.code=\gdef\pgf@plotstreamspecial@init##1{#1},
  special macro/.code=\global\let\pgf@plotstreamspecial@init#1,
}%

\newif\ifpgf@plot@started





\def\pgfsetlinetofirstplotpoint{\let\pgf@plot@first@action=\pgfpathlineto}%



\def\pgfsetmovetofirstplotpoint{\let\pgf@plot@first@action=\pgfpathmoveto}%

\let\pgf@plot@first@action=\pgfpathmoveto







\pgfdeclareplothandler{\pgfplothandlerlineto}{}{
  point macro=\pgf@plot@line@handler,
  jump=\global\let\pgf@plotstreampoint\pgf@plot@line@handler@move%
}%

\def\pgf@plot@line@handler#1{%
  \pgf@plot@first@action{#1}%
  \global\let\pgf@plotstreampoint=\pgfpathlineto%
}%

\def\pgf@plot@line@handler@move#1{%
  \pgfpathmoveto{#1}%
  \global\let\pgf@plotstreampoint=\pgfpathlineto%
}%




\pgfdeclareplothandler{\pgfplothandlerpolygon}{}{%
  point macro=\pgf@plot@line@handler@close,
  jump macro=\pgf@plot@next@close@and@moveto,
  end macro=\pgf@plot@polygon@stop
}%

\def\pgf@plot@line@handler@close#1{%
  \pgfpathmoveto{#1}%
  \global\pgf@plot@startedtrue%
  \global\let\pgf@plotstreampoint=\pgfpathlineto%
}%

\def\pgf@plot@polygon@stop{%
  \ifpgf@plot@started%
    \pgfpathclose%
  \fi%
  \global\pgf@plot@startedfalse%
}%

\def\pgf@plot@next@close@and@moveto{%
  \ifpgf@plot@started%
    \pgfpathclose%
  \fi%
  \global\let\pgf@plotstreampoint\pgf@plot@line@handler@close%
}%








\pgfdeclareplothandler{\pgfplothandlerdiscard}{}{}%




\pgfdeclareplothandler{\pgfplothandlerrecord}{#1}{%
  start=\gdef#1{\pgfplotstreamstart},
  point=\expandafter\gdef\expandafter#1\expandafter{#1\pgfplotstreampoint{##1}},
  jump=\expandafter\gdef\expandafter#1\expandafter{#1\pgf@plotstreamjump},
  special=\expandafter\gdef\expandafter#1\expandafter{#1\pgfplotstreamspecial{##1}},
  end=\expandafter\gdef\expandafter#1\expandafter{#1\pgfplotstreamend},
}%




\def\pgfplotxyfile#1{%
  \begingroup%
    \def\b@pgfplotsxyfile@scanning@for@first{1}%
    \pgfplotstreamstart%
    \openin\r@pgf@reada=#1
    \ifeof\r@pgf@reada
      \pgfwarning{Plot data file `#1' not found.}
     \else
      \catcode`\#=14
      \catcode`\^^M=5
      \pgf@readxyfile%
    \fi
    \pgfplotstreamend%
  \endgroup%
}%

\let\pgf@savedpar=\par
\def\pgf@partext{\par}%
\def\pgf@readxyfile{%
  \pgfutil@read\r@pgf@reada to \pgf@temp%
  \let\par=\pgf@savedpar%
  \edef\pgf@temp{\pgf@temp}%
  \ifx\pgf@temp\pgfutil@empty%
    \if1\b@pgfplotsxyfile@scanning@for@first
    \else
        \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi%
    \fi
  \else\ifx\pgf@temp\pgf@partext%
    \if1\b@pgfplotsxyfile@scanning@for@first
    \else
        \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi%
    \fi
  \else%
    \expandafter\pgf@parsexyline\pgf@temp\pgf@stop%
  \fi\fi%
  \ifeof\r@pgf@reada\else\expandafter\pgf@readxyfile\fi%
}%

\def\pgf@parsexyline#1 #2 #3\pgf@stop{%
  \def\b@pgfplotsxyfile@scanning@for@first{0}%
  \edef\pgf@xyline@flag@val{#3}%
  \ifx\pgf@xyline@flag@val\pgf@xyline@flag@undef%
    \pgfplotstreampointundefined%
  \else\ifx\pgf@xyline@flag@val\pgf@xyline@flag@out%
    \pgfplotstreampointoutlier{\pgfpointxy{#1}{#2}}%
  \else%
    \pgfplotstreampoint{\pgfpointxy{#1}{#2}}%
  \fi\fi%
}%

\edef\pgf@xyline@flag@out{o\space}%
\edef\pgf@xyline@flag@undef{u\space}%





\def\pgfplotxyzfile#1{%
  \begingroup%
    \pgfplotstreamstart%
    \openin\r@pgf@reada=#1
    \ifeof\r@pgf@reada
      \pgfwarning{Plot data file `#1' not found.}
    \else
      \catcode`\#=14
      \catcode`\^^M=5
      \pgf@readxyzfile%
    \fi
    \pgfplotstreamend%
  \endgroup%
}%

\def\pgf@readxyzfile{%
  \pgfutil@read\r@pgf@reada to \pgf@temp%
  \ifx\pgf@temp\pgfutil@empty%
    \if1\b@pgfplotsxyfile@scanning@for@first
    \else
        \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi%
    \fi
  \else\ifx\pgf@temp\pgf@partext%
    \if1\b@pgfplotsxyfile@scanning@for@first
    \else
        \ifeof\r@pgf@reada\else\pgfplotstreamnewdataset\fi%
    \fi
  \else%
    \expandafter\pgf@parsexyzline\pgf@temp\pgf@stop%
  \fi\fi%
  \ifeof\r@pgf@reada\else\expandafter\pgf@readxyzfile\fi%
}%

\def\pgf@parsexyzline#1 #2 #3 #4\pgf@stop{%
  \def\b@pgfplotsxyfile@scanning@for@first{0}%
  \edef\pgf@xyline@flag@val{#4}%
  \ifx\pgf@xyline@flag@val\pgf@xyline@flag@undef%
    \pgfplotstreampointundefined%
  \else\ifx\pgf@xyline@flag@val\pgf@xyline@flag@out%
    \pgfplotstreampointoutlier{\pgfpointxyz{#1}{#2}{#3}}%
  \else%
    \pgfplotstreampoint{\pgfpointxyz{#1}{#2}{#3}}%
  \fi\fi%
}%





{%
  \catcode`\%=12
  \catcode`\"=12
  \xdef\pgf@gnuplot@head{set table \noexpand\pgf@plottablefile@quoted; set format "%.5f"}
}%

\let\pgf@plotwrite=\w@pgf@writea
\newif\ifpgf@resample@plot

\pgfkeys{%
  /pgf/plot/gnuplot call/.initial={gnuplot}}%

\def\pgfplotgnuplot{\pgfutil@ifnextchar[{\pgf@plotgnuplot}{\pgf@plotgnuplot[\jobname]}}%
\def\pgf@plotgnuplot[#1]#2{%
  \pgf@resample@plottrue%
  \pgfutilpreparefilename{#1.gnuplot}%
  \let\pgf@plotgnuplotfile=\pgfretval
  \pgfutilpreparefilename{#1.table}%
  \let\pgf@plottablefile=\pgfretval
  \let\pgf@plottablefile@quoted=\pgfretvalquoted
  \openin\pgfutil@inputcheck=\pgf@plotgnuplotfile\relax
  \ifeof\pgfutil@inputcheck%
  \else%
    \pgfutil@read\pgfutil@inputcheck to\pgf@temp%
    \pgfutil@read\pgfutil@inputcheck to\pgf@plot@line%
    \closein\pgfutil@inputcheck
    \edef\pgf@plot@code{#2\space}%
    \ifx\pgf@plot@code\pgf@plot@line%
      \openin\pgfutil@inputcheck=\pgfretval\relax
      \ifeof\pgfutil@inputcheck%
      \else%
        \closein\pgfutil@inputcheck
        \pgf@resample@plotfalse%
      \fi%
    \fi%
  \fi
  \ifpgf@resample@plot%
    \immediate\openout\pgf@plotwrite=\pgf@plotgnuplotfile\relax
    \immediate\pgfutil@write\pgf@plotwrite{\pgf@gnuplot@head}%
    \immediate\pgfutil@write\pgf@plotwrite{#2}%
    \immediate\closeout\pgf@plotwrite%
    \pgfutil@shellescape{%
      \pgfkeysvalueof{/pgf/plot/gnuplot call} \pgf@plotgnuplotfile}%
  \fi%
  \pgfplotxyfile{\pgf@plottablefile}%
}%



\def\pgfplotfunction#1#2#3{%
  \pgfplotstreamstart%
  \foreach#1in{#2}%
  {%
    \pgf@process{#3}%
    \edef\pgf@marshal{\noexpand\pgfplotstreampoint{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
    \pgf@marshal%
  }
  \pgfplotstreamend%
}%




\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduleplot.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduleshapes.code.tex ====

\ProvidesFileRCS{pgfmoduleshapes.code.tex}



\newbox\pgfnodeparttextbox



\def\pgfmultipartnode#1#2#3#4{%
  \pgfutil@ifundefined{pgf@sh@s@#1}%
  {\pgferror{Unknown shape ``#1''}}%
  {%
    {%
      \ifpgflatenodepositioning%
        \pgfsys@beginscope%
      \fi%
      \pgf@outer@adjust@hook%
      \let\pgf@sh@savedmacros=\pgfutil@empty%
      \let\pgf@sh@savedpoints=\pgfutil@empty%
      \def\pgf@sm@shape@name{#1}%
      \csname pgf@sh@s@#1\endcsname%
      \pgf@sh@savedpoints%
      \pgf@sh@savedmacros%
      \pgftransformshift{%
        \pgf@sh@reanchor{#1}{#2}%
        \pgf@x=-\pgf@x%
        \pgf@y=-\pgf@y%
      }%
      \expandafter\pgfsavepgf@process\csname pgf@sh@sa@#3\endcsname{%
        \pgf@sh@reanchor{#1}{#2}%
      }%
      \edef\pgf@node@name{#3}%
      \ifpgflatenodepositioning%
        \pgf@shapes@late@pos@begin%
      \fi%
      \ifx\pgf@node@name\pgfutil@empty%
      \else%
        \expandafter\xdef\csname pgf@sh@ns@\pgf@node@name\endcsname{#1}%
        \edef\pgf@sh@@temp{\noexpand\gdef\expandafter\noexpand\csname pgf@sh@np@\pgf@node@name\endcsname}%
        \expandafter\pgf@sh@@temp\expandafter{\pgf@sh@savedpoints}%
        \edef\pgf@sh@@temp{\noexpand\gdef\expandafter\noexpand\csname pgf@sh@ma@\pgf@node@name\endcsname}%
        \expandafter\pgf@sh@@temp\expandafter{\pgf@sh@savedmacros}%
        \pgfgettransform\pgf@temp%
        \expandafter\xdef\csname pgf@sh@nt@\pgf@node@name\endcsname{\pgf@temp}%
        \expandafter\xdef\csname pgf@sh@pi@\pgf@node@name\endcsname{\pgfpictureid}%
      \fi%
      \pgfutil@ifundefined{pgf@sh@bbg@#1}{}
      {{\pgfusetype{.behind background}\pgfidscope\pgfscope\csname pgf@sh@bbg@#1\endcsname\endpgfscope\endpgfidscope}}%
      \pgfutil@ifundefined{pgf@sh@bg@#1}{%
        \global\let\pgfpositionnodelaterpath\pgfutil@empty%
      }%
      {\pgfpushtype%
       \pgfusetype{.background}\csname pgf@sh@bg@#1\endcsname%
        \ifpgflatenodepositioning%
          \pgfsyssoftpath@getcurrentpath\pgfpositionnodelaterpath%
          \pgfprocessround{\pgfpositionnodelaterpath}{\pgfpositionnodelaterpath}%
          \global\let\pgfpositionnodelaterpath\pgfpositionnodelaterpath%
        \fi%
        #4\pgfpoptype}%
      \pgfutil@ifundefined{pgf@sh@fbg@#1}{}
      {{\pgfusetype{.before background}\pgfidscope\pgfscope\csname pgf@sh@fbg@#1\endcsname\endpgfscope\endpgfidscope}}%
      {%
        \expandafter\pgfutil@for\expandafter\pgf@shape@com\expandafter:\expandafter=\csname pgf@sh@boxes@#1\endcsname\do{%
          {%
            \pgfusetype{.\pgf@shape@com}%
            \pgftransformshift{\pgf@sh@reanchor{#1}{\pgf@shape@com}}%
            \pgfapproximatenonlineartransformation%
            \expandafter\pgfqboxsynced\expandafter{\csname pgfnodepart\pgf@shape@com box\endcsname}%
          }%
        }%
      }%
      \pgfutil@ifundefined{pgf@sh@bfg@#1}{}%
      {{\pgfusetype{.behind foreground}\pgfidscope\pgfscope\csname pgf@sh@bfg@#1\endcsname\endpgfscope\endpgfidscope}}%
      \pgfutil@ifundefined{pgf@sh@fg@#1}{}%
      {\pgfpushtype\pgfusetype{.foreground}\csname pgf@sh@fg@#1\endcsname#4\pgfpoptype}%
      \pgfutil@ifundefined{pgf@sh@ffg@#1}{}%
      {{\pgfusetype{.before foreground}\pgfidscope\pgfscope\csname pgf@sh@ffg@#1\endcsname\endpgfscope\endpgfidscope}}%
      \ifpgflatenodepositioning%
        \pgf@shapes@late@pos@end%
        \pgfsys@endscope%
      \else%
        \expandafter\pgf@nodecallback\expandafter{\pgf@node@name}%
      \fi%
    }%
  }%
}%
\let\pgf@outer@adjust@hook\relax

\def\pgf@shapes@late@pos@begin{%
  \edef\pgf@node@name{not yet positionedPGFINTERNAL\pgf@node@name}%
  \pgfinterruptboundingbox%
    \pgf@relevantforpicturesizetrue%
    \setbox\pgfpositionnodelaterbox=\hbox%
      \bgroup%
        \pgfsys@beginscope%
}%

\def\pgf@shapes@late@pos@end{%
       \pgfsys@endscope%
      \egroup%
    \ifdim\pgf@picminx>\pgf@picmaxx\relax%
      \def\pgfpositionnodelaterminx{0.0pt}%
      \let\pgfpositionnodelaterminy\pgfpositionnodelaterminx%
      \let\pgfpositionnodelatermaxx\pgfpositionnodelaterminx%
      \let\pgfpositionnodelatermaxy\pgfpositionnodelaterminx%
    \else%
      \edef\pgfpositionnodelaterminx{\the\pgf@picminx}%
      \edef\pgfpositionnodelaterminy{\the\pgf@picminy}%
      \edef\pgfpositionnodelatermaxx{\the\pgf@picmaxx}%
      \edef\pgfpositionnodelatermaxy{\the\pgf@picmaxy}%
    \fi%
    \let\pgfpositionnodelatername=\pgf@node@name%
    \pgf@positionnodelater@macro%
  \endpgfinterruptboundingbox%
}%

\def\pgf@shift@node#1#2{%
  {%
    \pgfsettransform{\csname pgf@sh@nt@#1\endcsname}%
    \pgf@process{#2}%
    \advance\pgf@pt@x by\pgf@x%
    \advance\pgf@pt@y by\pgf@y%
    \pgfgettransform{\pgf@temp}%
    \expandafter\xdef\csname pgf@sh@nt@#1\endcsname{\pgf@temp}%
  }%
}%




\def\pgfnode#1#2#3#4#5{%
  {%
    \setbox\pgfnodeparttextbox=\hbox%
    {%
      \pgfinterruptpicture%
        {#3}%
      \endpgfinterruptpicture%
    }%
    \pgfmultipartnode{#1}{#2}{#4}{#5}%
  }
}%




\def\pgfpositionnodelater#1{%
  \let\pgf@positionnodelater@macro=#1%
  \ifx\pgf@positionnodelater@macro\relax%
    \pgflatenodepositioningfalse%
  \else%
    \pgflatenodepositioningtrue%
  \fi%
}%
\newif\ifpgflatenodepositioning
\pgfpositionnodelater{\relax}%
\def\pgfpositionnodelaterbox{0}%





\def\pgfpositionnodenow#1{%
  \pgfinterruptpath%
  {%
    \pgfpointtransformed{#1}%
    \edef\pgf@temp@shift{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
    \pgftransformreset%
    \pgftransformshift{\pgf@temp@shift}%
    \pgfsys@pictureboxsynced\pgfpositionnodelaterbox%
    \pgf@shift@node{\pgfpositionnodelatername}{\pgf@temp@shift}%
    \pgfpointtransformed{\pgfqpoint{\pgfpositionnodelaterminx}{\pgfpositionnodelaterminy}}%
    \pgf@protocolsizes{\pgf@x}{\pgf@y}
    \pgfpointtransformed{\pgfqpoint{\pgfpositionnodelatermaxx}{\pgfpositionnodelatermaxy}}%
    \pgf@protocolsizes{\pgf@x}{\pgf@y}
    \expandafter\pgfpositionnodenow@rename\pgfpositionnodelatername\relax%
  }%
  {%
    \csname pgf@lns@\pgfpositionnodelatername\endcsname%
    \expandafter\global\expandafter\let\csname pgf@lns@\pgfpositionnodelatername\endcsname\relax%
  }%
  \endpgfinterruptpath%
}%

\def\pgfpositionnodenow@rename not yet positionedPGFINTERNAL#1\relax{%
  \pgfnoderename{#1}{not yet positionedPGFINTERNAL#1}
}%



\def\pgffakenode#1{%
  \edef\pgf@temp{\ifpgflatenodepositioning not yet positionedPGFINTERNAL\fi#1}%
  \expandafter\gdef\csname pgf@sh@ns@\pgf@temp\endcsname{coordinate}%
  \expandafter\gdef\csname pgf@sh@np@\pgf@temp\endcsname{\def\centerpoint{\pgfpointorigin}}%
  \expandafter\gdef\csname pgf@sh@nt@\pgf@temp\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
  \expandafter\global\expandafter\let\csname pgf@sh@ma@\pgf@temp\endcsname\pgfutil@empty%
  \expandafter\xdef\csname pgf@sh@pi@\pgf@temp\endcsname{\pgfpictureid}%
}%




\def\pgfnodepostsetupcode#1#2{%
  \ifpgflatenodepositioning%
    \expandafter\ifx\csname pgf@lns@not yet positionedPGFINTERNAL#1\endcsname\relax%
      \expandafter\gdef\csname pgf@lns@not yet positionedPGFINTERNAL#1\endcsname{#2}%
    \else%
      \expandafter\pgfutil@g@addto@macro\csname pgf@lns@not yet positionedPGFINTERNAL#1\endcsname{#2}%
    \fi%
  \fi%
}%




\def\pgfnodealias#1#2{%
  \pgf@node@gnamelet{pgf@sh@ns@#1}{pgf@sh@ns@#2}%
  \pgf@node@gnamelet{pgf@sh@np@#1}{pgf@sh@np@#2}%
  \pgf@node@gnamelet{pgf@sh@nt@#1}{pgf@sh@nt@#2}%
  \pgf@node@gnamelet{pgf@sh@pi@#1}{pgf@sh@pi@#2}%
  \pgf@node@gnamelet{pgf@sh@ma@#1}{pgf@sh@ma@#2}%
  \pgf@nodecallback{#1}%
}%
\def\pgf@node@gnamelet#1#2{%
  \expandafter\let\expandafter\pgf@temp\csname #2\endcsname%
  \expandafter\global\expandafter\let\csname #1\endcsname=\pgf@temp%
}%


\def\pgfnoderename#1#2{%
  \pgfnodealias{#1}{#2}%
  \expandafter\global\expandafter\let\csname pgf@sh@ns@#2\endcsname\relax
  \expandafter\global\expandafter\let\csname pgf@sh@np@#2\endcsname\relax
  \expandafter\global\expandafter\let\csname pgf@sh@nt@#2\endcsname\relax
  \expandafter\global\expandafter\let\csname pgf@sh@pi@#2\endcsname\relax
  \expandafter\global\expandafter\let\csname pgf@sh@ma@#2\endcsname\relax
}%





\def\pgfcoordinate#1#2{%
  \edef\pgf@temp{#1}%
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \ifpgflatenodepositioning%
      {\pgftransformshift{#2}\pgfnode{coordinate}{center}{}{#1}{}}%
    \else%
      \pgf@process{\pgfpointtransformed{#2}}%
      \expandafter\gdef\csname pgf@sh@ns@#1\endcsname{coordinate}%
      \expandafter\xdef\csname pgf@sh@np@#1\endcsname{%
        \noexpand\def\noexpand\centerpoint{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
      }
      \expandafter\gdef\csname pgf@sh@nt@#1\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
      \expandafter\global\expandafter\let\csname pgf@sh@ma@#1\endcsname\pgfutil@empty%
      \expandafter\xdef\csname pgf@sh@pi@#1\endcsname{\pgfpictureid}%
    \fi%
  \fi%
}%

\def\pgf@sh@redeferredanchor#1#2{%
  \expandafter\gdef\csname pgf@anchor@\pgf@sm@shape@name @#1\endcsname{#2}}%






\def\pgf@sh@resavedanchor#1#2{%
  \pgf@process{#2}%
  \edef\pgf@sh@marshal{%
    \noexpand\pgfutil@g@addto@macro\noexpand\pgf@sh@savedpoints{%
      \noexpand\def\noexpand#1{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
    }}%
  \pgf@sh@marshal%
}%


\def\pgf@sh@resaveddimen#1#2{%
  {#2\global\pgf@x=\pgf@x}%
  \edef\pgf@sh@marshal{%
    \noexpand\pgfutil@g@addto@macro\noexpand\pgf@sh@savedpoints{%
      \noexpand\def\noexpand#1{\the\pgf@x}%
    }}%
  \pgf@sh@marshal%
}%

\def\pgf@sh@resavedmacro#1#2{%
    \let#1\pgfutil@empty%
    \def\addtosavedmacro##1{%
        \expandafter\def\expandafter\pgf@sh@addtomacro@temp\expandafter{#1\noexpand\def\noexpand##1{##1}}%
        {\expandafter\pgfutil@toks@\expandafter{\pgf@sh@addtomacro@temp}\expandafter}%
        \expandafter\def\expandafter#1\expandafter{\the\pgfutil@toks@}%
    }%
  #2\relax%
  \edef\pgf@sh@marshal{%
    \noexpand\pgfutil@g@addto@macro\noexpand\pgf@sh@savedmacros{%
      \noexpand\def\noexpand#1{#1}%
    }}%
  \pgf@sh@marshal%
}%

\def\pgf@sh@reanchor#1#2{%
  \pgfutil@ifundefined{pgf@anchor@#1@#2}%
  {%
    \pgfutil@ifundefined{pgf@anchor@generic@#2}{%
        \pgfmathsetcounter{pgf@counta}{#2}%
        \csname pgf@anchor@#1@border\endcsname{\pgfqpointpolar{\the\c@pgf@counta}{1pt}}%
    }{%
        \csname pgf@anchor@generic@#2\endcsname{#1}%
    }%
  }%
  {\csname pgf@anchor@#1@#2\endcsname}%
}%

\def\pgfdeclaregenericanchor#1#2{%
  \expandafter\def\csname pgf@anchor@generic@#1\endcsname##1{#2}%
}%



\def\pgfpointanchor#1#2{%
  \pgfutil@ifundefined{pgf@sh@ns@#1}
  {\pgfutil@ifundefined{pgf@sh@ns@not yet positionedPGFINTERNAL#1}{%
      \pgferror{No shape named `#1' is known}}{
    }%
    \pgfpointorigin}%
  {%
    \pgf@process{%
      \edef\pgfreferencednodename{#1}%
      \csname pgf@sh@ma@#1\endcsname%
      \csname pgf@sh@np@#1\endcsname
      \pgf@sh@reanchor{\csname pgf@sh@ns@#1\endcsname}{#2}%
      {%
        \pgfsettransform{\csname pgf@sh@nt@#1\endcsname}%
        \pgf@pos@transform@glob%
      }%
      \pgf@shape@interpictureshift{#1}%
      \pgftransforminvert%
      \pgf@pos@transform@glob%
    }%
  }%
}%

\def\pgf@shape@interpictureshift#1{%
  \expandafter\ifx\csname pgf@sh@pi@#1\endcsname\pgfpictureid%
  \else%
    \pgfsys@getposition{\csname pgf@sh@pi@#1\endcsname}\pgf@shape@original@pos%
    \pgfsys@getposition{\pgfpictureid}\pgf@shape@current@pos%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\pgfpointorigin\pgf@shape@current@pos}%
    \advance\pgf@xa by-\pgf@x%
    \advance\pgf@ya by-\pgf@y%
    \pgf@process{\pgfpointorigin\pgf@shape@original@pos}%
    \advance\pgf@xa by\pgf@x%
    \advance\pgf@ya by\pgf@y%
    \pgf@x=\pgf@xa%
    \pgf@y=\pgf@ya%
  \fi%
}%




\def\pgfpointshapeborder#1#2{%
  \pgfutil@ifundefined{pgf@sh@ns@#1}
  {\pgferror{No shape named `#1' is known}%
    \pgfpointorigin}%
  {%
    \pgf@process{%
      \edef\pgfreferencednodename{#1}%
      \csname pgf@sh@ma@#1\endcsname%
      \csname pgf@sh@np@#1\endcsname%
      {%
        \pgf@process{\pgfpointtransformed{#2}}%
        \pgfsettransform{\csname pgf@sh@nt@#1\endcsname}%
        \pgftransforminvert%
        \pgf@pos@transform@glob%
        \pgf@xa=\pgf@x%
        \pgf@ya=\pgf@y%
        \pgf@process{\csname pgf@anchor@\csname pgf@sh@ns@#1\endcsname @center\endcsname}%
        \pgf@process{\pgf@shape@interpictureshift{#1}}%
        \advance\pgf@xa by-\pgf@x%
        \advance\pgf@ya by-\pgf@y%
        \pgf@xb=10pt
        \ifdim\pgf@xa<1pt\ifdim\pgf@xa>-1pt
          \pgf@xb=10\pgf@xa
        \fi\fi
        \pgf@yb=10pt
        \ifdim\pgf@ya<1pt\ifdim\pgf@ya>-1pt
          \pgf@yb=10\pgf@ya
        \fi\fi
        \ifdim\dimexpr\expandafter\Pgf@geT\the\pgf@xb\pgf@xb
                     +\expandafter\Pgf@geT\the\pgf@yb\pgf@yb\relax<0.04pt
          \expandafter\pgfutil@firstoftwo
        \else
          \expandafter\pgfutil@secondoftwo
        \fi
        {%
          \pgfwarning
            {Returning node center instead of a point on node border. Did you
            specify a point identical to the center of node
            ``\pgfreferencednodename''?}%
          \pgf@sh@reanchor{\csname pgf@sh@ns@#1\endcsname}{center}%
        }
        {%
          \csname pgf@anchor@\csname pgf@sh@ns@#1\endcsname @border\endcsname
            {\pgfqpoint{\pgf@xa}{\pgf@ya}}%
        }%
        \pgfsettransform{\csname pgf@sh@nt@#1\endcsname}%
        \pgf@pos@transform@glob%
        \global\pgf@x=\pgf@x%
        \global\pgf@y=\pgf@y%
      }%
      \pgf@shape@interpictureshift{#1}%
      \pgftransforminvert%
      \pgf@pos@transform@glob%
    }%
  }%
}%



\def\pgfgetnodeparts#1#2{%
  \expandafter\let\expandafter#1\csname pgf@sh@boxes@#2\endcsname%
}%



\long\def\pgfdeclareshape#1#2{%
  {%
    \def\pgf@sm@shape@name{#1}%
    \let\savedanchor=\pgf@sh@savedanchor
    \let\saveddimen=\pgf@sh@saveddimen
    \let\savedmacro=\pgf@sh@savedmacro%
    \let\deferredanchor=\pgf@sh@deferredanchor%
    \let\anchor=\pgf@sh@anchor
    \let\anchorborder=\pgf@sh@anchorborder
    \let\behindbackgroundpath=\pgf@sh@behindbgpath
    \let\backgroundpath=\pgf@sh@bgpath
    \let\beforebackgroundpath=\pgf@sh@beforebgpath
    \let\behindforegroundpath=\pgf@sh@behindfgpath
    \let\foregroundpath=\pgf@sh@fgpath
    \let\beforeforegroundpath=\pgf@sh@beforefgpath
    \let\nodeparts=\pgf@sh@boxes
    \let\inheritsavedanchors=\pgf@sh@inheritsavedanchors
    \let\inheritanchor=\pgf@sh@inheritanchor
    \let\inheritanchorborder=\pgf@sh@inheritanchorborder
    \let\inheritbehindbackgroundpath=\pgf@sh@inheritbehindbgpath
    \let\inheritbackgroundpath=\pgf@sh@inheritbgpath
    \let\inheritbeforebackgroundpath=\pgf@sh@inheritbeforebgpath
    \let\inheritbehindforegroundpath=\pgf@sh@inheritbehindfgpath
    \let\inheritforegroundpath=\pgf@sh@inheritfgpath
    \let\inheritbeforeforegroundpath=\pgf@sh@inheritbeforefgpath
    \let\inheritnodeparts=\pgf@sh@inheritboxes
    \anchorborder{\csname pgf@anchor@#1@center\endcsname}%
    \anchor{text}{\pgfpointorigin}%
    \nodeparts{text}%
    \expandafter\global\expandafter\let\csname pgf@sh@s@\pgf@sm@shape@name\endcsname=\pgfutil@empty%
    #2%
  }%
}%

\def\pgf@sh@savedanchor#1#2{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@\pgf@sm@shape@name\endcsname{\pgf@sh@resavedanchor{#1}{#2}}}%
\def\pgf@sh@saveddimen#1#2{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@\pgf@sm@shape@name\endcsname{\pgf@sh@resaveddimen{#1}{#2}}}%
 \def\pgf@sh@savedmacro#1#2{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@\pgf@sm@shape@name\endcsname{\pgf@sh@resavedmacro{#1}{#2}}}%
\def\pgf@sh@anchor#1#2{\expandafter\gdef\csname pgf@anchor@\pgf@sm@shape@name @#1\endcsname{#2}}%
\def\pgf@sh@deferredanchor#1#2{%
  \expandafter\pgfutil@g@addto@macro
    \csname pgf@sh@s@\pgf@sm@shape@name\endcsname{\pgf@sh@redeferredanchor{#1}{#2}}}%
\def\pgf@sh@anchorborder#1{\expandafter\gdef\csname pgf@anchor@\pgf@sm@shape@name @border\endcsname##1{\pgf@process{##1}#1}}%
\long\def\pgf@sh@behindbgpath#1{\expandafter\gdef\csname pgf@sh@bbg@\pgf@sm@shape@name\endcsname{#1}}%
\long\def\pgf@sh@bgpath#1{\expandafter\gdef\csname pgf@sh@bg@\pgf@sm@shape@name\endcsname{#1}}%
\long\def\pgf@sh@beforebgpath#1{\expandafter\gdef\csname pgf@sh@fbg@\pgf@sm@shape@name\endcsname{#1}}%
\long\def\pgf@sh@behindfgpath#1{\expandafter\gdef\csname pgf@sh@bfg@\pgf@sm@shape@name\endcsname{#1}}%
\long\def\pgf@sh@fgpath#1{\expandafter\gdef\csname pgf@sh@fg@\pgf@sm@shape@name\endcsname{#1}}%
\long\def\pgf@sh@beforefgpath#1{\expandafter\gdef\csname pgf@sh@ffg@\pgf@sm@shape@name\endcsname{#1}}%
\def\pgf@sh@boxes#1{\expandafter\gdef\csname pgf@sh@boxes@\pgf@sm@shape@name\endcsname{#1}}%

\def\pgf@sh@inheritsavedanchors[from=#1]{%
  \expandafter\pgfutil@g@addto@macro\csname pgf@sh@s@\pgf@sm@shape@name\endcsname{\csname pgf@sh@s@#1\endcsname}}%

\def\pgf@sh@inheritanchor[from=#1]#2{%
  \edef\pgf@marshal{\global\let\expandafter\noexpand\csname
    pgf@anchor@\pgf@sm@shape@name @#2\endcsname=\expandafter\noexpand\csname
    pgf@anchor@#1@#2\endcsname}%
  \pgf@marshal%
}%
\def\pgf@sh@inheritanchorborder[from=#1]{%
  \edef\pgf@marshal{\global\let\expandafter\noexpand\csname
    pgf@anchor@\pgf@sm@shape@name @border\endcsname=\expandafter\noexpand\csname
    pgf@anchor@#1@border\endcsname}%
  \pgf@marshal%
}%
\def\pgf@sh@inheritor#1#2{%
  \edef\pgf@marshal{\global\let\expandafter\noexpand\csname
    pgf@sh@#1@\pgf@sm@shape@name\endcsname=\expandafter\noexpand\csname
    pgf@sh@#1@#2\endcsname}%
  \pgf@marshal%
}%
\def\pgf@sh@inheritbehindbgpath[from=#1]{\pgf@sh@inheritor{bbg}{#1}}%
\def\pgf@sh@inheritbgpath[from=#1]{\pgf@sh@inheritor{bg}{#1}}%
\def\pgf@sh@inheritbeforebgpath[from=#1]{\pgf@sh@inheritor{fbg}{#1}}%
\def\pgf@sh@inheritbehindfgpath[from=#1]{\pgf@sh@inheritor{bfg}{#1}}%
\def\pgf@sh@inheritfgpath[from=#1]{\pgf@sh@inheritor{fg}{#1}}%
\def\pgf@sh@inheritbeforefgpath[from=#1]{\pgf@sh@inheritor{ffg}{#1}}%
\def\pgf@sh@inheritboxes[from=#1]{\pgf@sh@inheritor{boxes}{#1}}%




\pgfdeclareshape{coordinate}
{%
  \savedanchor\centerpoint{%
    \pgf@x=.5\wd\pgfnodeparttextbox%
    \pgf@y=.5\ht\pgfnodeparttextbox%
    \advance\pgf@y by -.5\dp\pgfnodeparttextbox%
  }%

  \anchor{center}{\centerpoint}%
  \anchor{north}{\centerpoint}%
  \anchor{north west}{\centerpoint}%
  \anchor{north east}{\centerpoint}%
  \anchor{west}{\centerpoint}%
  \anchor{east}{\centerpoint}%
  \anchor{mid}{\centerpoint}%
  \anchor{mid west}{\centerpoint}%
  \anchor{mid east}{\centerpoint}%
  \anchor{base}{\centerpoint}%
  \anchor{base west}{\centerpoint}%
  \anchor{base east}{\centerpoint}%
  \anchor{south}{\centerpoint}%
  \anchor{south west}{\centerpoint}%
  \anchor{south east}{\centerpoint}%
  \anchorborder{\centerpoint}%

  \nodeparts{}%
}%



\pgfset{
  inner xsep/.initial     =.3333em,
  inner ysep/.initial     =.3333em,
  inner sep/.style        ={/pgf/inner xsep={#1},/pgf/inner ysep={#1}},
  outer xsep/.initial     =.5\pgflinewidth,
  outer ysep/.initial     =.5\pgflinewidth,
  outer sep/.code         =\pgf@handle@outer@sep{#1},
  minimum width/.initial  =1pt,
  minimum height/.initial =1pt,
  minimum size/.style     ={/pgf/minimum width={#1},/pgf/minimum height={#1}},
}%



\def\pgf@handle@outer@sep#1{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgf@auto@text%
    \def\pgf@outer@adjust@hook{%
      \pgftransformationadjustments%
      \pgfkeyssetvalue{/pgf/outer xsep}{.5\pgflinewidth*\pgfhorizontaltransformationadjustment}%
      \pgfkeyssetvalue{/pgf/outer ysep}{.5\pgflinewidth*\pgfverticaltransformationadjustment}%
      \pgf@outer@auto@adjust@hook%
    }%
  \else%
    \pgfkeyssetvalue{/pgf/outer xsep}{#1}%
    \pgfkeyssetvalue{/pgf/outer ysep}{#1}%
  \fi%
}%
\def\pgf@auto@text{auto}%

\let\pgf@outer@auto@adjust@hook\relax



\newif\ifpgfshapeborderusesincircle
\pgfkeys{/pgf/shape border uses incircle/.is if=pgfshapeborderusesincircle}%
\pgfkeys{/pgf/shape border rotate/.initial=0}%


\pgfdeclareshape{rectangle}
{%
  \savedanchor\northeast{%
    \pgf@x=\the\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/inner xsep}}%
    \advance\pgf@x by 2\pgf@xc%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
    \ifdim\pgf@x<\pgf@xb%
      \pgf@x=\pgf@xb%
    \fi%
    \pgf@x=.5\pgf@x%
    \advance\pgf@x by.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
    \advance\pgf@x by\pgf@xa%
    \pgf@y=\ht\pgfnodeparttextbox%
    \advance\pgf@y by\dp\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/inner ysep}}%
    \advance\pgf@y by 2\pgf@yc%
    \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
    \ifdim\pgf@y<\pgf@yb%
      \pgf@y=\pgf@yb%
    \fi%
    \pgf@y=.5\pgf@y%
    \advance\pgf@y by-.5\dp\pgfnodeparttextbox%
    \advance\pgf@y by.5\ht\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
    \advance\pgf@y by\pgf@ya%
  }%

  \savedanchor\southwest{%
      \pgf@x=\wd\pgfnodeparttextbox%
      \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/inner xsep}}%
      \advance\pgf@x by 2\pgf@xc%
      \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}%
      \ifdim\pgf@x<\pgf@xb%
        \pgf@x=\pgf@xb%
      \fi%
      \pgf@x=-.5\pgf@x%
      \advance\pgf@x by.5\wd\pgfnodeparttextbox%
      \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}%
      \advance\pgf@x by-\pgf@xa%
      \pgf@y=\ht\pgfnodeparttextbox%
      \advance\pgf@y by\dp\pgfnodeparttextbox%
      \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/inner ysep}}%
      \advance\pgf@y by 2\pgf@yc%
      \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}%
      \ifdim\pgf@y<\pgf@yb%
        \pgf@y=\pgf@yb%
      \fi%
      \pgf@y=-.5\pgf@y%
      \advance\pgf@y by-.5\dp\pgfnodeparttextbox%
      \advance\pgf@y by.5\ht\pgfnodeparttextbox%
      \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}%
      \advance\pgf@y by-\pgf@ya%
  }%

  \anchor{center}{
    \pgf@process{\northeast}%
    \pgf@xa=.5\pgf@x%
    \pgf@ya=.5\pgf@y%
    \pgf@process{\southwest}%
    \pgf@x=.5\pgf@x%
    \pgf@y=.5\pgf@y%
    \advance\pgf@x by \pgf@xa%
    \advance\pgf@y by \pgf@ya%
  }%
  \anchor{mid}{\pgf@anchor@rectangle@center\pgfmathsetlength\pgf@y{.5ex}}%
  \anchor{base}{\pgf@anchor@rectangle@center\pgf@y=0pt}%
  \anchor{north}{
    \pgf@process{\southwest}%
    \pgf@xa=.5\pgf@x%
    \pgf@process{\northeast}%
    \pgf@x=.5\pgf@x%
    \advance\pgf@x by \pgf@xa%
  }%
  \anchor{south}{
    \pgf@process{\northeast}%
    \pgf@xa=.5\pgf@x%
    \pgf@process{\southwest}%
    \pgf@x=.5\pgf@x%
    \advance\pgf@x by \pgf@xa%
  }%
  \anchor{west}{
    \pgf@process{\northeast}%
    \pgf@ya=.5\pgf@y%
    \pgf@process{\southwest}%
    \pgf@y=.5\pgf@y%
    \advance\pgf@y by \pgf@ya%
  }%
  \anchor{mid west}{\southwest\pgfmathsetlength\pgf@y{.5ex}}%
  \anchor{base west}{\southwest\pgf@y=0pt}%
  \anchor{north west}{
    \southwest
    \pgf@xa=\pgf@x
    \northeast
    \pgf@x=\pgf@xa}%
  \anchor{south west}{\southwest}%
  \anchor{east}{%
    \pgf@process{\southwest}%
    \pgf@ya=.5\pgf@y%
    \pgf@process{\northeast}%
    \pgf@y=.5\pgf@y%
    \advance\pgf@y by \pgf@ya%
  }%
  \anchor{mid east}{\northeast\pgfmathsetlength\pgf@y{.5ex}}%
  \anchor{base east}{\northeast\pgf@y=0pt}%
  \anchor{north east}{\northeast}%
  \anchor{south east}{
    \northeast
    \pgf@xa=\pgf@x
    \southwest
    \pgf@x=\pgf@xa
  }%
  \anchorborder{%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \southwest%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \northeast%
    \advance\pgf@x by-\pgf@xa%
    \advance\pgf@y by-\pgf@ya%
    \pgf@xc=.5\pgf@x%
    \pgf@yc=.5\pgf@y%
    \advance\pgf@xa by\pgf@xc%
    \advance\pgf@ya by\pgf@yc%
    \edef\pgf@marshal{%
      \noexpand\pgfpointborderrectangle
      {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}
      {\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
    }%
    \pgf@process{\pgf@marshal}%
    \advance\pgf@x by\pgf@xa%
    \advance\pgf@y by\pgf@ya%
  }%

  \backgroundpath{
    \pgfpathrectanglecorners
    {\pgfpointadd{\southwest}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
    {\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}
  }%
}%


\expandafter\def\csname pgf@sh@ns@current subpath start\endcsname{coordinate}%
\expandafter\def\csname pgf@sh@np@current subpath start\endcsname{%
  \def\centerpoint{\expandafter\pgfqpoint\pgfsyssoftpath@lastmoveto}%
}%
\expandafter\def\csname pgf@sh@nt@current subpath start\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
\expandafter\def\csname pgf@sh@pi@current subpath start\endcsname{\pgfpictureid}%



\expandafter\def\csname pgf@sh@ns@current bounding box\endcsname{rectangle}%
\expandafter\def\csname pgf@sh@np@current bounding box\endcsname{%
  \def\southwest{\pgfqpoint{\pgf@picminx}{\pgf@picminy}}%
  \def\northeast{\pgfqpoint{\pgf@picmaxx}{\pgf@picmaxy}}%
}%
\expandafter\def\csname pgf@sh@nt@current bounding box\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
\expandafter\def\csname pgf@sh@pi@current bounding box\endcsname{\pgfpictureid}%


\expandafter\def\csname pgf@sh@ns@current path bounding box\endcsname{rectangle}%
\expandafter\def\csname pgf@sh@np@current path bounding box\endcsname{%
  \def\southwest{\pgfqpoint{\pgf@pathminx}{\pgf@pathminy}}%
  \def\northeast{\pgfqpoint{\pgf@pathmaxx}{\pgf@pathmaxy}}%
}%
\expandafter\def\csname pgf@sh@nt@current path bounding box\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
\expandafter\def\csname pgf@sh@pi@current path bounding box\endcsname{\pgfpictureid}%


\expandafter\def\csname pgf@sh@ns@current page\endcsname{rectangle}%
\expandafter\def\csname pgf@sh@np@current page\endcsname{%
  \def\southwest{\pgfpointorigin}%
  \def\northeast{\pgfpoint{\pgfsys@thepagewidth}{\pgfsys@thepageheight}}%
}%
\expandafter\def\csname pgf@sh@nt@current page\endcsname{{1}{0}{0}{1}{0pt}{0pt}}%
\expandafter\def\csname pgf@sh@pi@current page\endcsname{pgfpageorigin}%


\pgfkeys{/pgf/local bounding box/.code={%
    \expandafter\gdef\csname pgf@sh@ns@#1\endcsname{rectangle}
    \expandafter\gdef\csname pgf@sh@np@#1\endcsname{%
      \def\southwest{\pgfqpoint{\csname pgf@lbb@minx@#1\endcsname}{\csname pgf@lbb@miny@#1\endcsname}}%
      \def\northeast{\pgfqpoint{\csname pgf@lbb@maxx@#1\endcsname}{\csname pgf@lbb@maxy@#1\endcsname}}%
    }
    \expandafter\gdef\csname pgf@sh@nt@#1\endcsname{{1}{0}{0}{1}{0pt}{0pt}}
    \expandafter\gdef\csname pgf@sh@pi@#1\endcsname{\pgfpictureid}
    \expandafter\gdef\csname pgf@lbb@maxx@#1\endcsname{-16000pt}%
    \expandafter\gdef\csname pgf@lbb@minx@#1\endcsname{16000pt}%
    \expandafter\gdef\csname pgf@lbb@maxy@#1\endcsname{-16000pt}%
    \expandafter\gdef\csname pgf@lbb@miny@#1\endcsname{16000pt}%
    \pgf@size@hookedtrue%
    \expandafter\def\expandafter\pgf@path@size@hook\expandafter{\pgf@path@size@hook\pgf@lbb@do{#1}}
  },
  /pgf/freeze local bounding box/.code={%
    {%
      \csname pgf@sh@np@#1\endcsname%
      \southwest%
      \pgf@xa=\pgf@x%
      \pgf@ya=\pgf@y%
      \northeast%
      \expandafter\xdef\csname pgf@sh@np@#1\endcsname{%
        \noexpand\def\noexpand\southwest{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
        \noexpand\def\noexpand\northeast{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
      }%
    }%
  },
}%
\def\pgf@lbb@do#1{%
  \ifdim\pgf@size@hook@x<\csname pgf@lbb@minx@#1\endcsname\expandafter\xdef\csname pgf@lbb@minx@#1\endcsname{\the\pgf@size@hook@x}\fi%
  \ifdim\pgf@size@hook@x>\csname pgf@lbb@maxx@#1\endcsname\expandafter\xdef\csname pgf@lbb@maxx@#1\endcsname{\the\pgf@size@hook@x}\fi%
  \ifdim\pgf@size@hook@y<\csname pgf@lbb@miny@#1\endcsname\expandafter\xdef\csname pgf@lbb@miny@#1\endcsname{\the\pgf@size@hook@y}\fi%
  \ifdim\pgf@size@hook@y>\csname pgf@lbb@maxy@#1\endcsname\expandafter\xdef\csname pgf@lbb@maxy@#1\endcsname{\the\pgf@size@hook@y}\fi%
}%


\pgfdeclareshape{circle}
{%
  \savedanchor\centerpoint{%
    \pgf@x=.5\wd\pgfnodeparttextbox%
    \pgf@y=.5\ht\pgfnodeparttextbox%
    \advance\pgf@y by-.5\dp\pgfnodeparttextbox%
  }%

  \saveddimen\radius{%
    \pgf@ya=.5\ht\pgfnodeparttextbox%
    \advance\pgf@ya by.5\dp\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/inner ysep}}%
    \advance\pgf@ya by\pgf@yb%
    \pgf@xa=.5\wd\pgfnodeparttextbox%
    \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/inner xsep}}%
    \advance\pgf@xa by\pgf@xb%
    \pgf@process{\pgfpointnormalised{\pgfqpoint{\pgf@xa}{\pgf@ya}}}%
    \ifdim\pgf@x>\pgf@y%
        \c@pgf@counta=\pgf@x%
        \ifnum\c@pgf@counta=0\relax%
        \else%
          \divide\c@pgf@counta by 255\relax%
          \pgf@xa=16\pgf@xa\relax%
          \divide\pgf@xa by\c@pgf@counta%
          \pgf@xa=16\pgf@xa\relax%
        \fi%
      \else%
        \c@pgf@counta=\pgf@y%
        \ifnum\c@pgf@counta=0\relax%
        \else%
          \divide\c@pgf@counta by 255\relax%
          \pgf@ya=16\pgf@ya\relax%
          \divide\pgf@ya by\c@pgf@counta%
          \pgf@xa=16\pgf@ya\relax%
        \fi%
    \fi%
    \pgf@x=\pgf@xa%
    \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/minimum width}}%
    \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/minimum height}}%
    \ifdim\pgf@x<.5\pgf@xb%
        \pgf@x=.5\pgf@xb%
    \fi%
    \ifdim\pgf@x<.5\pgf@yb%
        \pgf@x=.5\pgf@yb%
    \fi%
    \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@xb<\pgf@yb%
      \advance\pgf@x by\pgf@yb%
    \else%
      \advance\pgf@x by\pgf@xb%
    \fi%
  }%

  \anchor{center}{\centerpoint}%
  \anchor{mid}{\centerpoint\pgfmathsetlength\pgf@y{.5ex}}%
  \anchor{base}{\centerpoint\pgf@y=0pt}%
  \anchor{north}{\centerpoint\advance\pgf@y by\radius}%
  \anchor{south}{\centerpoint\advance\pgf@y by-\radius}%
  \anchor{west}{\centerpoint\advance\pgf@x by-\radius}%
  \anchor{east}{\centerpoint\advance\pgf@x by\radius}%
  \anchor{mid west}{\centerpoint\advance\pgf@x by-\radius\pgfmathsetlength\pgf@y{.5ex}}%
  \anchor{mid east}{\centerpoint\advance\pgf@x by\radius\pgfmathsetlength\pgf@y{.5ex}}%
  \anchor{base west}{\centerpoint\advance\pgf@x by-\radius\pgf@y=0pt}%
  \anchor{base east}{\centerpoint\advance\pgf@x by\radius\pgf@y=0pt}%
  \anchor{north west}{
    \centerpoint
    \pgf@xa=\radius
    \advance\pgf@x by-0.707107\pgf@xa
    \advance\pgf@y by0.707107\pgf@xa
  }%
  \anchor{south west}{
    \centerpoint
    \pgf@xa=\radius
    \advance\pgf@x by-0.707107\pgf@xa
    \advance\pgf@y by-0.707107\pgf@xa
  }%
  \anchor{north east}{
    \centerpoint
    \pgf@xa=\radius
    \advance\pgf@x by0.707107\pgf@xa
    \advance\pgf@y by0.707107\pgf@xa
  }%
  \anchor{south east}{
    \centerpoint
    \pgf@xa=\radius
    \advance\pgf@x by0.707107\pgf@xa
    \advance\pgf@y by-0.707107\pgf@xa
  }%
  \anchorborder{%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \edef\pgf@marshal{%
      \noexpand\pgfpointborderellipse
      {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}
      {\noexpand\pgfqpoint{\radius}{\radius}}%
    }%
    \pgf@marshal%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \centerpoint%
    \advance\pgf@x by\pgf@xa%
    \advance\pgf@y by\pgf@ya%
  }%

  \backgroundpath{%
    \pgfutil@tempdima=\radius%
    \pgfmathsetlength{\pgf@xb}{\pgfkeysvalueof{/pgf/outer xsep}}%
    \pgfmathsetlength{\pgf@yb}{\pgfkeysvalueof{/pgf/outer ysep}}%
    \ifdim\pgf@xb<\pgf@yb%
      \advance\pgfutil@tempdima by-\pgf@yb%
    \else%
      \advance\pgfutil@tempdima by-\pgf@xb%
    \fi%
    \pgfpathcircle{\centerpoint}{\pgfutil@tempdima}%
  }%
}%





\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfmoduleshapes.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfrcs.code.tex ====

\ifx\eTeXrevision\undefined%
  \pgfutil@packageerror{PGF}{PGF requires etex in extended mode}{}%
  \csname @@end\expandafter\endcsname\expandafter\end%
\fi

\ifnum\eTeXversion<2
  \pgfutil@packageerror{PGF}{PGF requires etex version 2}{}%
  \csname @@end\expandafter\endcsname\expandafter\end%
\fi


\pgfutil@IfFileExists{pgf.revision.tex}{\input pgf.revision.tex } {%
    \def\pgfrevision{0.0}%
    \def\pgfversion{0.0}%
    \def\pgfversiondate{2014-07-01}%
    \def\pgfrevisiondate{2014-07-01}%
}

\begingroup
\catcode`\"=12
\pgfutil@IfUndefined{directlua}{}{%
    \directlua{pgf = {}; pgf.pgfversion = "\pgfversion"}%
}%
\endgroup

\let\pgftypesetversion=\pgfrevision


\ifx\pgfrcsloaded\undefined
\def\pgfrcsloaded{}

\edef\pgfrcsatcode{\the\catcode`\@}
\catcode`\@=11

\def\ProvidesFileRCS{%
    \let\pgfrcs@final=\ProvidesFileRCS@
^I\pgfrcs@parseinput
}
\def\ProvidesFileRCS@#1{%
    \ProvidesFile{#1}[\pgfversiondate\space v\pgfversion\space(\pgfrevision)]%
}

\def\pgf@remove@ext#1.#2\relax{%
    \def\pgfretval{#1}%
}%

\def\ProvidesPackageRCS{%
^I\let\pgfrcs@final=\ProvidesPackageRCS@
^I\pgfrcs@parseinput
}
\def\ProvidesPackageRCS@#1{%
    \pgf@remove@ext#1.\relax
    \edef\pgfrcs@marshal{{\pgfretval}[\pgfversiondate\space v\pgfversion\space(\pgfrevision)]}%
    \expandafter\ProvidesPackage\pgfrcs@marshal
}

\def\ProvidesClassRCS{%
^I\let\pgfrcs@final=\ProvidesClassRCS@
^I\pgfrcs@parseinput
}
\def\ProvidesClassRCS@#1{%
    \pgf@remove@ext#1.\relax
    \edef\pgfrcs@marshal{{\pgfretval}[\pgfversiondate\space v\pgfversion\space(\pgfrevision)]}%
    \expandafter\ProvidesClass\pgfrcs@marshal
}

\def\pgfrcs@parseinput@bracket{[}%
\def\pgfrcs@parseinput@dollarsign{$}%

\def\pgfrcs@parseinput#1{%
^I\def\pgfrcs@parseinput@{#1}%
^I\ifx\pgfrcs@parseinput@\pgfrcs@parseinput@bracket%
^I^I\let\next=\pgfrcs@parseinput@opt
^I\else
^I^I\ifx\pgfrcs@parseinput@\pgfrcs@parseinput@dollarsign
^I^I^I\let\next\pgfrcs@parseinput@dollar
^I^I\else
^I^I^I\def\next{\pgfrcs@final{#1}}%
^I^I\fi
^I\fi
^I\next
}
\def\pgfrcs@parseinput@opt#1] ${%
^I\pgfrcs@parseinput@dollar
}%
\def\pgfrcs@parseinput@dollar#1${%
^I\pgf@parseid $#1$%
^I\edef\pgfrcs@parseinput@{\pgf@rcsfile.\pgf@rcssuffix}%
^I\expandafter\pgfrcs@final\expandafter{\pgfrcs@parseinput@}%
}%
\def\pgf@parseid $#1: #2.#3,v #4 #5/#6/#7 #8${%
  \pgf@parsercsfile$#2/$
  \def\pgf@rcssuffix{#3}
  \def\pgf@rcsrevision{#4}
  \def\pgf@rcsdate{#5/#6/#7}
}
\def\pgf@parsercsfile$#1/#2${
  \def\pgf@temp{#2}
  \ifx\pgf@temp\pgfutil@empty
    \def\pgf@rcsfile{#1}
  \else
    \pgf@parsercsfile$#2$
  \fi}


\ifx\ProvidesPackage\@undefined
    \def\ProvidesPackage#1[#2]{\wlog{Loading package #1 version #2.}}
\fi

\ifx\ProvidesFile\@undefined
    \def\ProvidesFile#1[#2]{\wlog{Loading file #1 version #2.}}
\fi

\ProvidesPackageRCS{pgfrcs.code.tex}

\catcode`\@=\pgfrcsatcode

\fi


==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfrcs.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsys.code.tex ====

\ProvidesPackageRCS{pgfsys.code.tex}


\ifdefined\pgfkeysloaded\else
  \input pgfkeys.code.tex
\fi

\pgfkeys{/pgf/.is family}
\def\pgfset{\pgfqkeys{/pgf}}

\newif\ifpgfpicture


{\catcode`\p=12\catcode`\t=12\gdef\Pgf@geT#1pt{#1}}

\def\pgf@sys@tonumber#1{\expandafter\Pgf@geT\the#1}

\def\pgf@sys@bp@correct#1{#1=0.99627#1}

\def\pgf@sys@bp#1{%
  {%
    \pgf@x=#1\relax%
    \pgf@x=0.99627\pgf@x%
    \edef\temp{\expandafter\Pgf@geT\the\pgf@x\space}%
    \pgfutil@toks@\expandafter\expandafter\expandafter{\expandafter\pgfsysprotocol@currentprotocol\temp}%
    \xdef\pgfsysprotocol@currentprotocol{\the\pgfutil@toks@}%
  }%
}
\def\pgf@sys@pt#1{%
  {%
    \pgf@x=#1\relax%
    \edef\temp{\expandafter\Pgf@geT\the\pgf@x\space}%
    \pgfutil@toks@\expandafter\expandafter\expandafter{\expandafter\pgfsysprotocol@currentprotocol\temp}%
    \xdef\pgfsysprotocol@currentprotocol{\the\pgfutil@toks@}%
  }%
}


\newdimen\pgf@x
\newdimen\pgf@y
\newdimen\pgf@xa
\newdimen\pgf@ya
\newdimen\pgf@xb
\newdimen\pgf@yb
\newdimen\pgf@xc
\newdimen\pgf@yc
\newdimen\pgf@xd
\newdimen\pgf@yd

\newwrite\w@pgf@writea
\newread\r@pgf@reada
\let\pgfutil@inputcheck=\r@pgf@reada

\newcount\c@pgf@counta
\newcount\c@pgf@countb
\newcount\c@pgf@countc
\newcount\c@pgf@countd

\newtoks\t@pgf@toka
\newtoks\t@pgf@tokb
\newtoks\t@pgf@tokc

\let\pgfmath@x\pgf@x
\let\pgfmath@xa\pgf@xa
\let\pgfmath@xb\pgf@xb
\let\pgfmath@xc\pgf@xc

\let\pgfmath@y\pgf@y
\let\pgfmath@ya\pgf@ya
\let\pgfmath@yb\pgf@yb
\let\pgfmath@yc\pgf@yc

\let\c@pgfmath@counta\c@pgf@counta
\let\c@pgfmath@countb\c@pgf@countb
\let\c@pgfmath@countc\c@pgf@countc
\let\c@pgfmath@countd\c@pgf@countd






\def\pgf@sys@fail#1{%
  \expandafter\ifx\csname pgf@sys@fail@#1\endcsname\pgfutil@empty%
  \else%
    \expandafter\global\expandafter\let\csname pgf@sys@fail@#1\endcsname=\pgfutil@empty%
    \pgfwarning{Your graphic driver \pgfsysdriver\space does not support #1. This warning is given only once}%
  \fi%
}




\def\pgfsys@invoke{\pgf@sys@fail{invoking specials}}

\def\pgfsys@outerinvoke{\pgfsys@invoke}




\def\pgfsys@moveto#1#2{\pgf@sys@fail{path constructions}}

\def\pgfsys@lineto#1#2{\pgf@sys@fail{path constructions}}

\def\pgfsys@curveto#1#2#3#4#5#6{\pgf@sys@fail{path constructions}}

\def\pgfsys@rect#1#2#3#4{\pgf@sys@fail{path constructions}}

\def\pgfsys@closepath{\pgf@sys@fail{path constructions}}







\def\pgfsys@stroke{\pgf@sys@fail{path usage}}

\def\pgfsys@fill{\pgf@sys@fail{path usage}}

\def\pgfsys@fillstroke{\pgf@sys@fail{path usage}}

\def\pgfsys@clipnext{\pgf@sys@fail{path usage}}

\def\pgfsys@discardpath{\pgf@sys@fail{path usage}}

\def\pgfsys@closestroke{\pgfsys@closepath\pgfsys@stroke}

\newif\ifpgfsys@eorule




\def\pgfsys@setlinewidth#1{\pgf@sys@fail{setting the line width}}

\def\pgfsys@buttcap{\pgf@sys@fail{setting the line cap}}

\def\pgfsys@roundcap{\pgf@sys@fail{setting the line cap}}

\def\pgfsys@rectcap{\pgf@sys@fail{setting the line cap}}

\def\pgfsys@miterjoin{\pgf@sys@fail{setting the line join}}

\def\pgfsys@setmiterlimit#1{\pgf@sys@fail{setting the line cap}}

\def\pgfsys@roundjoin{\pgf@sys@fail{setting the line cap}}

\def\pgfsys@beveljoin{\pgf@sys@fail{setting the line cap}}

\def\pgfsys@setdash#1#2{\pgf@sys@fail{setting the dashing pattern}}






\def\pgfsys@color@rgb@stroke#1#2#3{\pgf@sys@fail{color}}

\def\pgfsys@color@rgb@fill#1#2#3{\pgf@sys@fail{color}}

\def\pgfsys@color@rgb#1#2#3{\pgfsys@color@rgb@stroke{#1}{#2}{#3}\pgfsys@color@rgb@fill{#1}{#2}{#3}}

\def\pgfsys@color@cmyk@stroke#1#2#3#4{\pgf@sys@fail{color}}

\def\pgfsys@color@cmyk@fill#1#2#3#4{\pgf@sys@fail{color}}

\def\pgfsys@color@cmyk#1#2#3#4{\pgfsys@color@cmyk@stroke{#1}{#2}{#3}{#4}\pgfsys@color@cmyk@fill{#1}{#2}{#3}{#4}}

\def\pgfsys@color@cmy@stroke#1#2#3{\pgf@sys@fail{color}}

\def\pgfsys@color@cmy@fill#1#2#3{\pgf@sys@fail{color}}

\def\pgfsys@color@cmy#1#2#3{\pgfsys@color@cmy@stroke{#1}{#2}{#3}\pgfsys@color@cmy@fill{#1}{#2}{#3}}

\def\pgfsys@color@gray@stroke#1{\pgf@sys@fail{color}}

\def\pgfsys@color@gray@fill#1{\pgf@sys@fail{color}}

\def\pgfsys@color@gray#1{\pgfsys@color@gray@stroke{#1}\pgfsys@color@gray@fill{#1}}

\newif\ifpgfsys@color@reset@inorder
\pgfsys@color@reset@inordertrue


\def\pgfsys@color@reset{}

\def\pgfsys@color@unstacked#1{}

\def\pgfsys@text@to@black@hook{}




\def\pgfsys@transformcm#1#2#3#4#5#6{\pgf@sys@fail{transformations}}

\def\pgfsys@transformshift#1#2{\pgfsys@transformcm{1}{0}{0}{1}{#1}{#2}}

\def\pgfsys@transformxyscale#1#2{\pgfsys@transformcm{#1}{0}{0}{#2}{0bp}{0bp}}

\def\pgfsys@viewboxmeet#1#2#3#4#5#6#7#8{\pgfsys@beginscope\pgf@sys@default@viewbox@impl{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{<}}

\def\pgfsys@viewboxslice#1#2#3#4#5#6#7#8{\pgfsys@beginscope\pgf@sys@default@viewbox@impl{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{>}}

\def\pgfsys@endviewbox{\pgfsys@endscope}


\def\pgf@sys@default@viewbox@impl#1#2#3#4#5#6#7#8#9{{%
    \pgf@x#1%
    \pgf@y#2%
    \pgf@xa#3%
    \pgf@ya#4%
    \advance\pgf@xa by-\pgf@x%
    \advance\pgf@ya by-\pgf@y%
    \pgfmathdivide@{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@ya}%
    \let\aspectr\pgfmathresult%
    \pgf@xb#5%
    \pgf@yb#6%
    \pgf@xc#7%
    \pgf@yc#8%
    \advance\pgf@xc by-\pgf@xb%
    \advance\pgf@yc by-\pgf@yb%
    \pgfmathdivide@{\pgf@sys@tonumber\pgf@xc}{\pgf@sys@tonumber\pgf@yc}%
    \let\aspects\pgfmathresult%
    \ifdim\aspectr pt#9\aspects pt%
      \pgfmathdivide@{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@xc}%
    \else%
      \pgfmathdivide@{\pgf@sys@tonumber\pgf@ya}{\pgf@sys@tonumber\pgf@yc}%
    \fi%
    \advance\pgf@x by.5\pgf@xa%
    \advance\pgf@xb by.5\pgf@xc%
    \advance\pgf@y by.5\pgf@ya%
    \advance\pgf@yb by.5\pgf@yc%
    \pgfsys@transformcm{\pgfmathresult}{0}{0}{\pgfmathresult}{\pgf@x}{\pgf@y}%
    \pgfsys@transformcm{1}{0}{0}{1}{-\pgf@xb}{-\pgf@yb}%
  }%
}





\def\pgfsys@beginscope{\pgf@sys@fail{scoping}}

\def\pgfsys@endscope{\pgf@sys@fail{scoping}}

\def\pgfsys@begin@idscope{%
  \begingroup%
    \edef\pgf@sys@cacheref{\pgfsys@id@refcurrent}%
    \expandafter\let\expandafter\pgfsys@beg@save\csname pgf@sys@att@beg@\pgf@sys@cacheref\endcsname%
    \expandafter\let\expandafter\pgfsys@end@save\csname pgf@sys@att@end@\pgf@sys@cacheref\endcsname%
    \ifx\pgfsys@beg@save\relax%
      \ifx\pgfsys@end@save\relax%
      \else%
        \pgfsys@call@save%
      \fi%
    \else%
      \pgfsys@call@save%
    \fi%
    \pgfsys@invalidate@currentid%
      \begingroup%
}

\def\pgfsys@call@save{%
  \pgfsys@beginscope%
  \pgfsys@beg@save%
  \expandafter\global\expandafter\let\csname pgf@sys@att@beg@\pgfsys@id@refcurrent\endcsname\relax%
  \expandafter\global\expandafter\let\csname pgf@sys@att@end@\pgfsys@id@refcurrent\endcsname\relax%
}

\def\pgfsys@end@idscope{
      \endgroup%
    \ifx\pgfsys@beg@save\relax%
      \ifx\pgfsys@end@save\relax%
      \else%
        \pgfsys@call@end%
      \fi%
    \else%
      \pgfsys@call@end%
    \fi%
  \endgroup
}

\def\pgfsys@call@end{%
  \pgfsys@end@save%
  \pgfsys@endscope%
}


\def\pgfsys@begin@text{}

\def\pgfsys@end@text{}




\newcount\pgf@sys@id@count

\def\pgfsys@new@id#1{%
  \edef#1{pgf\the\pgf@sys@id@count}%
  \global\advance\pgf@sys@id@count by1\relax%
}

\def\pgfsys@use@id#1{%
  \edef\pgf@sys@id@current@id{#1}%
  \let\pgfsys@current@type\pgfutil@empty%
}
\let\pgf@sys@id@current@id\pgfutil@empty

\def\pgfsys@clear@id{%
  \let\pgf@sys@id@current@id\pgfutil@empty%
}

\def\pgfsys@use@type#1{%
  \edef\pgfsys@current@type{#1}%
  \pgfsys@register@type\pgfsys@current@type%
}
\let\pgfsys@current@type\pgfutil@empty

\def\pgfsys@append@type#1{%
  \ifx\pgfsys@current@type\pgfutil@empty%
    \pgfsys@use@type{#1}%
  \else%
    \pgfsys@use@type{\pgfsys@current@type.#1}%
  \fi%
}

\def\pgfsys@register@type#1{%
  \expandafter\let\expandafter\pgf@sys@temp\csname pgf@sys@reg@type@#1\endcsname%
  \ifx\pgf@sys@temp\relax%
    {%
      \c@pgf@counta\pgf@sys@type@count\relax%
      \global\advance\c@pgf@counta by1\relax%
      \edef\pgf@sys@type@count{\the\c@pgf@counta}%
      \expandafter\xdef\csname pgf@sys@reg@type@#1\endcsname{y\the\c@pgf@counta}%
    }%
  \fi%
}
\def\pgf@sys@reg@type@{}
\def\pgf@sys@reg@type@background{b}
\def\pgf@sys@reg@type@path{p}
\def\pgf@sys@reg@type@text{t}
\expandafter\def\csname pgf@sys@reg@type@background.path\endcsname{bp}
\def\pgf@sys@type@count{0}

\def\pgfsys@push@type{%
  \expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgf@sys@typestack%
  \expandafter\expandafter\expandafter{\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\pgfsys@current@type%
    \expandafter\expandafter\expandafter{\expandafter\pgfsys@current@type\expandafter}%
    \expandafter\def\expandafter\pgf@sys@typestack\expandafter{\pgf@sys@typestack}}%
}
\let\pgf@sys@typestack\pgfutil@empty

\def\pgfsys@pop@type{\pgf@sys@typestack}

\def\pgfsys@id@ref#1#2{#1\csname pgf@sys@reg@type@#2\endcsname}

\def\pgfsys@id@refcurrent{\pgfsys@id@ref{\pgf@sys@id@current@id}{\pgfsys@current@type}}

\def\pgfsys@invalidate@currentid{%
  \expandafter\global\expandafter\let\csname pgf@sys@id@keylist@\pgfsys@id@refcurrent\endcsname\pgfutil@empty%
}

\def\pgfsys@attach@to@id#1#2#3#4{%
  \pgfsys@register@type{#2}%
  \expandafter\def\expandafter\pgf@sys@tempbeg\expandafter{\csname pgf@sys@att@beg@\pgfsys@id@ref{#1}{#2}\endcsname}%
  \expandafter\def\expandafter\pgf@sys@tempend\expandafter{\csname pgf@sys@att@end@\pgfsys@id@ref{#1}{#2}\endcsname}%
  \expandafter\ifx\pgf@sys@tempbeg\relax%
    \expandafter\let\pgf@sys@tempbeg\pgfutil@empty%
  \fi%
  \expandafter\ifx\pgf@sys@tempend\relax%
    \expandafter\let\pgf@sys@tempend\pgfutil@empty%
  \fi%
  \expandafter\let\expandafter\pgf@sys@tempbeg@cont\pgf@sys@tempbeg%
  \expandafter\let\expandafter\pgf@sys@tempend@cont\pgf@sys@tempend%
  \expandafter\expandafter\expandafter\gdef\expandafter\pgf@sys@tempbeg\expandafter{\pgf@sys@tempbeg@cont#3}%
  \def\pgf@sys@temp{#4}%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\gdef\expandafter\expandafter\expandafter\pgf@sys@tempend\expandafter\expandafter\expandafter{\expandafter\pgf@sys@temp\pgf@sys@tempend@cont}%
}

\def\pgfsys@if@fresh@id#1#2#3#4{%
  \edef\pgf@sys@temp{#1}%
  \ifx\pgf@sys@temp\pgfutil@empty%
    #4%
  \else%
    \pgfsys@register@type{#2}%
    \expandafter\ifx\csname pgf@sys@id@keylist@\pgfsys@id@ref{#1}{#2}\endcsname\pgfutil@empty%
      #4%
    \else%
      #3%
    \fi%
  \fi%
}

\def\pgfsys@if@fresh@currentid#1#2{%
  \ifx\pgf@sys@id@current@id\pgfutil@empty%
    #2%
  \else%
    \expandafter\ifx\csname pgf@sys@id@keylist@\pgfsys@id@refcurrent\endcsname\pgfutil@empty%
      #2%
    \else%
      #1%
    \fi%
  \fi%
}





\def\pgfsys@imagesuffixlist{}




\def\pgfsys@opacity#1{\pgfsys@stroke@opacity{#1}\pgfsys@fill@opacity{#1}}

\def\pgfsys@stroke@opacity#1{\pgf@sys@fail{opacity}}

\def\pgfsys@fill@opacity#1{\pgf@sys@fail{opacity}}

\def\pgfsys@transparencygroupfrombox#1{\pgf@sys@fail{transparency groups}}

\newif\ifpgfsys@transparency@group@isolated
\newif\ifpgfsys@transparency@group@knockout


\def\pgfsys@blend@mode#1{\pgf@sys@fail{blend mode}}


\def\pgfsys@definemask{\pgf@sys@fail{image masks}}

\def\pgfsys@fadingfrombox#1#2{\pgf@sys@fail{fadings}}

\def\pgfsys@usefading#1#2#3#4#5#6#7{\pgf@sys@fail{fadings}}

\def\pgfsys@clipfading{}



\def\pgfsys@horishading#1#2#3{\pgf@sys@fail{shadings}\pgf@sys@noshading{#1}}

\def\pgfsys@vertshading#1#2#3{\pgf@sys@fail{shadings}\pgf@sys@noshading{#1}}

\def\pgfsys@radialshading#1#2#3{\pgf@sys@fail{shadings}\pgf@sys@noshading{#1}}

\def\pgfsys@functionalshading#1#2#3#4{\pgf@sys@fail{shadings (functional)}\pgf@sys@noshading{#1}}

\def\pgf@sys@noshading#1{\expandafter\global\expandafter\let\csname @pgfshading#1!\endcsname=\pgfutil@empty}





\def\pgfsys@declarepattern#1#2#3#4#5#6#7#8#9{\pgf@sys@fail{patterns}}

\def\pgfsys@setpatternuncolored#1#2#3#4{\pgf@sys@fail{patterns}}

\def\pgfsys@setpatterncolored#1{\pgf@sys@fail{patterns}}







\newif\ifpgfsysanimationsupported


\def\pgfsys@animate#1{\pgf@sys@fail{animations}}





\def\pgfsys@animation@restart@always{}

\def\pgfsys@animation@restart@never{}

\def\pgfsys@animation@restart@whennotactive{}

\def\pgfsys@animation@repeat#1{}

\def\pgfsys@animation@repeat@indefinite{}

\def\pgfsys@animation@repeat@dur#1{}

\def\pgfsys@animation@freezeatend{}

\def\pgfsys@animation@removeatend{}

\def\pgfsys@animation@time#1#2#3#4#5{}

\def\pgfsys@stay@text{{stay}{0}}
\def\pgfsys@jump@text{{jump}{1}}

\def\pgfsys@animation@base{}

\def\pgfsys@animation@offset#1#2{}

\def\pgfsys@animation@syncbegin#1#2#3#4{}

\def\pgfsys@animation@syncend#1#2#3#4{}

\def\pgfsys@animation@event#1#2#3#4#5{}

\def\pgfsys@animation@repeat@event#1#2#3#4#5{}

\def\pgfsys@animation@accesskey#1#2#3{}

\def\pgf@sys@begin@text{begin}



\def\pgfsys@animation@accumulate{}

\def\pgfsys@animation@noaccumulate{}



\def\pgfsys@animation@whom#1#2{}



\def\pgfsys@animation@rotatealong{}

\def\pgfsys@animation@norotatealong{}

\def\pgfsys@animation@movealong#1{}

\def\pgfsys@animation@tip@markers#1#2{}

\def\pgfsys@animation@canvas@transform#1#2{}




\def\pgfsys@animation@val@current{}

\def\pgfsys@animation@val@text#1{}

\def\pgfsys@animation@val@scalar#1{}

\def\pgfsys@animation@val@dimension#1{}

\def\pgfsys@animation@val@color@rgb#1#2#3{}

\def\pgfsys@animation@val@color@cmyk#1#2#3#4{}

\def\pgfsys@animation@val@color@cmy#1#2#3{}

\def\pgfsys@animation@val@color@gray#1{}

\def\pgfsys@animation@val@path#1{}

\def\pgfsys@animation@val@translate#1#2{}

\def\pgfsys@animation@val@scale#1#2{}

\def\pgfsys@animation@val@viewbox#1#2#3#4{}

\def\pgfsys@animation@val@dash#1#2{}




\def\pgfsys@marker@declare#1#2{%
  {%
    \pgfpicturetrue%
    \pgfsysprotocol@getcurrentprotocol\pgfsys@marker@temp%
    \pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
    \pgfsysprotocol@bufferedtrue%
    \pgfsys@beginscope%
    #2%
    \pgfsys@endscope%
    \xdef#1{\the\pgf@sys@id@count}%
    \expandafter\expandafter\expandafter\global\expandafter\pgfsysprotocol@getcurrentprotocol\csname pgf@sys@marker@prot@#1\endcsname%
    \pgfsys@marker@declare@%
    \pgfsysprotocol@setcurrentprotocol\pgfsys@marker@temp%
    \global\advance\pgf@sys@id@count by1\relax%
  }%
}
\let\pgfsys@marker@declare@\relax

\def\pgfsys@marker@use#1{%
  \pgfsysprotocol@literal{\csname pgf@sys@marker@prot@#1\endcsname}%
}







\def\pgfsys@rdf@about#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@content#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@datatype#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@href#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@inlist{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@prefix#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@property#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@rel#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@resource#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@rev#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@src#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@typeof#1{\pgf@sys@fail{rdf}}

\def\pgfsys@rdf@vocab#1{\pgf@sys@fail{rdf}}




\def\pgfsys@papersize#1#2{\pgf@sys@fail{papersize}}

\def\pgfsys@global@papersize#1#2{\pgfsys@papersize{#1}{#2}}

\def\pgfsys@prepare@papersize#1#2{\pgfsys@papersize{#1}{#2}}

\ifx\paperheight\@undefined
  \def\pgfsys@thepageheight{\the\vsize} %
  \def\pgfsys@thepagewidth{\the\hsize}
\else
  \def\pgfsys@thepageheight{\paperheight}
  \def\pgfsys@thepagewidth{\paperwidth}
\fi



\def\pgfsys@markposition#1{\pgf@sys@fail{marking the current position}}


\def\pgfsys@getposition#1#2{\let#2=\relax}





\def\pgfsys@shadingoutsidepgfpicture#1{%
  #1%
}


\def\pgfsys@shadinginsidepgfpicture#1{%
  \pgf@makehbox{#1}%
  \setbox\pgf@hbox=\hbox{\hskip-.5\wd\pgf@hbox\lower.5\ht\pgf@hbox\hbox{\box\pgf@hbox}}%
  \pgfqbox{\pgf@hbox}%
}


\def\pgfsys@hbox#1{%
  \pgfsys@begin@idscope%
  \pgfsys@beginscope%
    \setbox#1=\hbox{\box#1}%
    \wd#1=0pt%
    \ht#1=0pt%
    \dp#1=0pt%
    \box#1%
  \pgfsys@endscope%
  \pgfsys@end@idscope%
}

\def\pgfsys@hboxsynced#1{%
  \pgfsys@beginscope\pgflowlevelsynccm\pgfsys@hbox#1\pgfsys@endscope%
}%

\def\pgfsys@pictureboxsynced#1{%
  {%
    \setbox0=\hbox{\pgfsys@beginpicture\box#1\pgfsys@endpicture}%
    \pgfsys@hboxsynced0%
  }%
}

\def\pgfsys@beginpicture{}

\def\pgfsys@endpicture{}

\def\pgfsys@typesetpicturebox#1{%
  \pgf@ya=\pgf@shift@baseline\relax%
  \advance\pgf@ya by-\pgf@picminy\relax%
  \advance\pgf@picmaxy by-\pgf@picminy\relax%
  \advance\pgf@picmaxx by-\pgf@picminx\relax%
  \setbox#1=\hbox{\hskip-\pgf@picminx\lower\pgf@picminy\box#1}%
  \ht#1=\pgf@picmaxy%
  \wd#1=\pgf@picmaxx%
  \dp#1=0pt%
  \leavevmode%
  \pgf@xa=\pgf@trimleft@final\relax  \ifdim\pgf@xa=0pt \else\kern\pgf@xa\fi
  \raise-\pgf@ya\box#1%
  \pgf@xa=\pgf@trimright@final\relax \ifdim\pgf@xa=0pt \else\kern\pgf@xa\fi
}

\def\pgfsys@beginpurepicture{\pgfsys@beginpicture}

\def\pgfsys@endpurepicture{\pgfsys@endpicture}

\def\pgfsys@defineimage{%
  \ifx\pgf@imagewidth\pgfutil@empty\else\edef\pgf@imagewidth{width=\pgf@imagewidth,}\fi%
  \ifx\pgf@imageheight\pgfutil@empty\else\edef\pgf@imageheight{height=\pgf@imageheight,}\fi%
  \ifx\pgf@imagepage\pgfutil@empty\else\edef\pgf@imagepage{page=\pgf@imagepage,}\fi%
  \edef\pgf@image{\noexpand\includegraphics[\pgf@imageheight\pgf@imagewidth]{\pgf@filename}}%
}


\def\pgfsys@defobject#1#2#3#4{%
  \pgfsysprotocol@getcurrentprotocol\pgfsys@temp%
  {%
    \pgfpicturetrue%
    \pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
    \pgfsysprotocol@bufferedtrue%
    \pgfsys@beginscope%
    #4%
    \pgfsys@endscope%
    \pgfsysprotocol@getcurrentprotocol\pgfsys@@temp%
    \expandafter\global\expandafter\let\csname #1\endcsname=\pgfsys@@temp%
  }%
  \pgfsysprotocol@setcurrentprotocol\pgfsys@temp%
}


\def\pgfsys@useobject#1#2{%
  \pgfsysprotocol@getcurrentprotocol\pgfsys@temp%
  {%
    \pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
    \pgfsysprotocol@bufferedfalse%
    #2%
    \expandafter\pgfsysprotocol@setcurrentprotocol\csname #1\endcsname%
    \pgfsysprotocol@invokecurrentprotocol%
  }%
  \pgfsysprotocol@setcurrentprotocol\pgfsys@temp%
}


\def\pgfsys@begininvisible{\pgfsys@transformcm{1}{0}{0}{1}{2000bp}{2000bp}}

\def\pgfsys@endinvisible{\pgfsys@transformcm{1}{0}{0}{1}{-2000bp}{-2000bp}}

\def\pgfsys@begininvisiblescope{\pgfsys@beginscope\pgfsys@begininvisible}

\def\pgfsys@endinvisiblescope{\pgfsys@endinvisible\pgfsys@endscope}


\def\pgfsys@atbegindocument{}


\ifdefined\pdfstrcmp
  \let\pgfsys@strcmp\pdfstrcmp
\else\ifdefined\strcmp
  \let\pgfsys@strcmp\strcmp
\else\ifdefined\directlua
  \directlua{
  local lft = lua.get_functions_table()
  lft[\string#lft+1] = function()
      local lhs = token.scan_string()
      local rhs = token.scan_string()
      if lhs < rhs then
          tex.sprint(-2, "-1")
      elseif lhs == rhs then
          tex.sprint(-2, "0")
      else
          tex.sprint(-2, "1")
      end
  end
  token.set_lua("pgfsys@strcmp", \string#lft, "global")
  }
\else
  \def\pgfsys@strcmp#1#2{\pgf@sys@fail{string comparison}}%
\fi\fi\fi



\ifx\pgfsysdriver\@undefined
  \pgfutil@guessdriver
\fi

\input pgf.cfg

\immediate\write-1{Driver file for pgf: \pgfsysdriver}
\pgfutil@InputIfFileExists{\pgfsysdriver}{}{%
  \pgferror{Driver file ``\pgfsysdriver'' not found.}}



\AtBeginDocument{
  \pgfsys@atbegindocument
  \let\pgfsys@atbegindocument=\pgfutil@empty
}




\pgfutil@aux@read@hook


\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsys.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsysprotocol.code.tex ====

\ProvidesFileRCS{pgfsysprotocol.code.tex}






\let\pgfsysprotocol@currentprotocol=\pgfutil@empty
\newif\ifpgfsysprotocol@buffered


\def\pgfsysprotocol@literalbuffered#1{%
  \edef\pgfsysprotocol@temp{{#1\space}}%
  \expandafter\pgfutil@g@addto@macro\expandafter\pgfsysprotocol@currentprotocol\pgfsysprotocol@temp%
}

\def\pgfsysprotocol@literal#1{%
  \pgfsysprotocol@literalbuffered{#1}%
  \ifpgfsysprotocol@buffered%
  \else%
    \pgfsysprotocol@flushcurrentprotocol%
  \fi%
}

\def\pgfsysprotocol@getcurrentprotocol#1{%
  \let#1=\pgfsysprotocol@currentprotocol%
}

\def\pgfsysprotocol@setcurrentprotocol#1{%
  \global\let\pgfsysprotocol@currentprotocol=#1%
}


\def\pgfsysprotocol@invokecurrentprotocol{%
  \ifx\pgfsysprotocol@currentprotocol\pgfutil@empty%
  \else%
    \expandafter\pgfsys@invoke\expandafter{\pgfsysprotocol@currentprotocol}%
  \fi%
}

\def\pgfsysprotocol@flushcurrentprotocol{%
  \pgfsysprotocol@invokecurrentprotocol%
  \pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
}


\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsysprotocol.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsyssoftpath.code.tex ====

\ProvidesFileRCS{pgfsyssoftpath.code.tex}







\let\pgfsyssoftpath@thepath=\pgfutil@empty
\let\pgfsyssoftpath@bigbuffer=\pgfutil@empty
\let\pgfsyssoftpath@smallbuffer=\pgfutil@empty
\newcount\pgfsyssoftpath@smallbuffer@items
\newcount\pgfsyssoftpath@bigbuffer@items

\def\pgfsyssoftpath@flushbuffers{%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\gdef%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\pgfsyssoftpath@thepath%
  \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter{%
    \expandafter\expandafter\expandafter\pgfsyssoftpath@thepath%
    \expandafter\pgfsyssoftpath@bigbuffer\pgfsyssoftpath@smallbuffer}%
  \global\let\pgfsyssoftpath@smallbuffer=\pgfutil@empty
  \global\let\pgfsyssoftpath@bigbuffer=\pgfutil@empty
  \global\pgfsyssoftpath@bigbuffer@items0\relax%
  \global\pgfsyssoftpath@smallbuffer@items0\relax%
}

\def\pgfsyssoftpath@getcurrentpath#1{%
  \pgfsyssoftpath@flushbuffers%
  \let#1=\pgfsyssoftpath@thepath%
}

\def\pgfsyssoftpath@setcurrentpath#1{%
  \global\let\pgfsyssoftpath@thepath=#1%
  \global\let\pgfsyssoftpath@smallbuffer=\pgfutil@empty
  \global\let\pgfsyssoftpath@bigbuffer=\pgfutil@empty
  \global\pgfsyssoftpath@bigbuffer@items0\relax%
  \global\pgfsyssoftpath@smallbuffer@items0\relax%
}


\def\pgfsyssoftpath@invokecurrentpath{%
  \pgfsyssoftpath@thepath%
  \pgfsyssoftpath@bigbuffer%
  \pgfsyssoftpath@smallbuffer%
}

\def\pgfsyssoftpath@flushcurrentpath{%
  \pgfsyssoftpath@invokecurrentpath%
  \pgfsyssoftpath@setcurrentpath\pgfutil@empty%
}

\def\pgfsyssoftpath@addtocurrentpath#1{%
  \global\advance\pgfsyssoftpath@smallbuffer@items by1\relax%
  \ifnum\pgfsyssoftpath@smallbuffer@items<40\relax%
    \expandafter\gdef\expandafter\pgfsyssoftpath@smallbuffer\expandafter{\pgfsyssoftpath@smallbuffer#1}%
  \else%
    \pgfsyssoftpath@smalloverflow{#1}%
  \fi%
}
\def\pgfsyssoftpath@smalloverflow#1{%
  \global\advance\pgfsyssoftpath@bigbuffer@items by1\relax%
  \ifnum\pgfsyssoftpath@bigbuffer@items<30\relax%
    \expandafter\expandafter\expandafter\gdef%
    \expandafter\expandafter\expandafter\pgfsyssoftpath@bigbuffer%
    \expandafter\expandafter\expandafter{\expandafter\pgfsyssoftpath@bigbuffer\pgfsyssoftpath@smallbuffer#1}%
    \global\let\pgfsyssoftpath@smallbuffer=\pgfutil@empty%
    \global\pgfsyssoftpath@smallbuffer@items0\relax%
  \else%
    \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\gdef%
    \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\pgfsyssoftpath@thepath%
    \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter{%
      \expandafter\expandafter\expandafter\pgfsyssoftpath@thepath
      \expandafter\pgfsyssoftpath@bigbuffer\pgfsyssoftpath@smallbuffer#1}%
    \global\let\pgfsyssoftpath@smallbuffer=\pgfutil@empty
    \global\let\pgfsyssoftpath@bigbuffer=\pgfutil@empty
    \global\pgfsyssoftpath@bigbuffer@items0\relax%
    \global\pgfsyssoftpath@smallbuffer@items0\relax%
  \fi%
}



\def\pgfsyssoftpath@lastmoveto{{0pt}{0pt}}

\newif\ifpgfsyssoftpathmovetorelevant
\pgfsyssoftpathmovetorelevanttrue

\def\pgfsyssoftpath@moveto#1#2{%
  \edef\pgfsyssoftpath@coord{{#1}{#2}}%
  \expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@movetotoken\pgfsyssoftpath@coord}%
  \ifpgfsyssoftpathmovetorelevant%
    \global\let\pgfsyssoftpath@lastmoveto\pgfsyssoftpath@coord%
  \fi%
}

\def\pgfsyssoftpath@lineto#1#2{%
  \edef\pgfsyssoftpath@coord{{#1}{#2}}%
  \expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@linetotoken\pgfsyssoftpath@coord}%
}


\def\pgfsyssoftpath@curveto#1#2#3#4#5#6{%
  \edef\pgfsyssoftpath@temp{{%
      \noexpand\pgfsyssoftpath@curvetosupportatoken{#1}{#2}%
      \noexpand\pgfsyssoftpath@curvetosupportbtoken{#3}{#4}%
      \noexpand\pgfsyssoftpath@curvetotoken{#5}{#6}%
    }}%
  \expandafter\pgfsyssoftpath@addtocurrentpath\pgfsyssoftpath@temp%
}


\def\pgfsyssoftpath@rect#1#2#3#4{%
  \edef\pgfsyssoftpath@temp{{%
    \noexpand\pgfsyssoftpath@rectcornertoken{#1}{#2}%
    \noexpand\pgfsyssoftpath@rectsizetoken{#3}{#4}%
  }}%
  \expandafter\pgfsyssoftpath@addtocurrentpath\pgfsyssoftpath@temp%
}

\def\pgfsyssoftpath@closepath{%
  \expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@closepathtoken\pgfsyssoftpath@lastmoveto}%
}

\def\pgfsyssoftpath@specialround#1#2{%
  \edef\pgfsyssoftpath@temp{{#1}{#2}}%
  \expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@specialroundtoken\pgfsyssoftpath@temp}%
}

\def\pgfsyssoftpath@movetotoken#1#2{\pgfsys@moveto{#1}{#2}}
\def\pgfsyssoftpath@linetotoken#1#2{\pgfsys@lineto{#1}{#2}}
\def\pgfsyssoftpath@rectcornertoken#1#2#3#4#5{\pgfsys@rect{#1}{#2}{#4}{#5}} %
\def\pgfsyssoftpath@curvetosupportatoken#1#2#3#4#5#6#7#8{\pgfsys@curveto{#1}{#2}{#4}{#5}{#7}{#8}}
\def\pgfsyssoftpath@closepathtoken#1#2{\pgfsys@closepath}
\let\pgfsyssoftpath@specialroundtoken=\pgfutil@gobbletwo
\def\pgfsyssoftpath@curvetosupportbtoken#1#2{curvetotokenb} %
\def\pgfsyssoftpath@curvetotoken#1#2{curvetotoken}%


\endinput

==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfsyssoftpath.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfutil-common.tex ====





\catcode`\@=11\relax


\newif\ifpgfutil@format@is@latex
\newif\ifpgfutil@format@is@plain
\newif\ifpgfutil@format@is@context


\let\pgfutil@exp\romannumeral
\chardef\pgfutil@exp@end=0


\catcode`\Q=3
\def\pgfutil@trimspaces#1{%
  \romannumeral-`0\pgfutil@trimspaces@\noexpand#1Q Q}
\def\pgfutil@trimspaces@#1 Q{\pgfutil@trimspaces@@#1Q}
\def\pgfutil@trimspaces@@#1Q#2{#1}
\catcode`\Q=11

\long\def\pgfutil@ifx#1#2{%
  \ifx#1#2%
    \expandafter\pgfutil@firstoftwo
  \else
    \expandafter\pgfutil@secondoftwo
  \fi}

\long\def\pgfutil@ifstrequal#1#2{%
  \ifnum\pgfsys@strcmp{\pgfutil@unexpanded{#1}}{\pgfutil@unexpanded{#2}}=0
    \expandafter\pgfutil@firstoftwo
  \else
    \expandafter\pgfutil@secondoftwo
  \fi
}

\def\pgfutil@ifxempty{\pgfutil@ifx\pgfutil@empty}

\long\def\pgfutil@ifempty#1{%
  \if\relax\detokenize{#1}\relax
    \expandafter\pgfutil@firstoftwo
  \else
    \expandafter\pgfutil@secondoftwo
  \fi}

\def\pgfutil@ifundefined#1{%
  \expandafter\pgfutil@ifx\csname#1\endcsname\relax}

\def\pgfutil@IfUndefined#1{%
  \ifcsname#1\endcsname
    \expandafter\pgfutil@secondoftwo
  \else
    \expandafter\pgfutil@firstoftwo
  \fi
}

\long\def\pgfutil@firstofone#1{#1}
\long\def\pgfutil@firstoftwo#1#2{#1}
\long\def\pgfutil@secondoftwo#1#2{#2}
\def\pgfutil@empty{}
\long\def\pgfutil@gobble@until@relax#1\relax{}
\long\def\pgfutil@gobble#1{}
\long\def\pgfutil@gobbletwo#1#2{}
\def\pgfutil@namedef#1{\expandafter\def\csname #1\endcsname}
\def\pgfutil@namelet#1{\expandafter\pgfutil@@namelet\csname#1\endcsname}
\def\pgfutil@@namelet#1#2{\expandafter\let\expandafter#1\csname#2\endcsname}
\long\def\pgfutil@g@addto@macro#1#2{%
  \begingroup
    \pgfutil@toks@\expandafter{#1#2}%
    \xdef#1{\the\pgfutil@toks@}%
 \endgroup}
\newif\ifpgfutil@tempswa
\newif\ifpgfutil@tempswb


\let\pgfutil@pushmacro@string\pgfutil@empty

\def\pgfutil@pushmacro#1{%
    \xdef\pgfutil@pushmacro@string{\string#1}%
    \ifcsname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname\else
        \csname newcount\expandafter\endcsname\csname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname
    \fi
    \global\advance\csname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname 1\relax
    \global\expandafter\let\csname\the\csname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname\pgfutil@pushmacro@string\endcsname#1%
}

\def\pgfutil@popmacro#1{%
    \xdef\pgfutil@pushmacro@string{\string#1}%
    \expandafter\let\expandafter#1\csname\the\csname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname\pgfutil@pushmacro@string\endcsname
    \global\advance\csname pgfutil@pushedmacro@\pgfutil@pushmacro@string\endcsname -1\relax
}


\long\def\pgfutil@ifnextchar#1#2#3{%
  \let\pgfutil@reserved@d=#1%
  \def\pgfutil@reserved@a{#2}%
  \def\pgfutil@reserved@b{#3}%
  \futurelet\pgfutil@let@token\pgfutil@ifnch}
\def\pgfutil@ifnch{%
  \ifx\pgfutil@let@token\pgfutil@sptoken
    \let\pgfutil@reserved@c\pgfutil@xifnch
  \else
    \ifx\pgfutil@let@token\pgfutil@reserved@d
      \let\pgfutil@reserved@c\pgfutil@reserved@a
    \else
      \let\pgfutil@reserved@c\pgfutil@reserved@b
    \fi
  \fi
  \pgfutil@reserved@c}
{%
  \def\:{\global\let\pgfutil@sptoken= } \:
  \def\:{\pgfutil@xifnch} \expandafter\gdef\: {\futurelet\pgfutil@let@token\pgfutil@ifnch}
}


\def\pgfutil@ignorespaces
  {\ifx\pgfutil@let@token\pgfutil@sptoken
     \expandafter\pgfutil@ignorespaces@helper
   \else
     \expandafter\pgfutil@next
   \fi}

{
  \def\:{\pgfutil@ignorespaces@helper}
  \expandafter\gdef\: {\futurelet\pgfutil@let@token\pgfutil@ignorespaces}
}


\newif\ifpgfutil@in@

\def\pgfutil@in@#1#2{%
 \def\pgfutil@in@@##1#1##2##3\pgfutil@in@@{%
  \ifx\pgfutil@in@##2\pgfutil@in@false\else\pgfutil@in@true\fi}%
 \pgfutil@in@@#2#1\pgfutil@in@\pgfutil@in@@}



\def\pgfutil@nnil{\pgfutil@nil}
\def\pgfutil@fornoop#1\@@#2#3{}
\long\def\pgfutil@for#1:=#2\do#3{%
  \expandafter\def\expandafter\pgfutil@fortmp\expandafter{#2}%
  \ifx\pgfutil@fortmp\pgfutil@empty \else
    \expandafter\pgfutil@forloop#2,\pgfutil@nil,\pgfutil@nil\@@#1{#3}\fi}
\long\def\pgfutil@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\pgfutil@nnil \else
       #5\def#4{#2}\ifx #4\pgfutil@nnil \else#5\pgfutil@iforloop #3\@@#4{#5}\fi\fi}
\long\def\pgfutil@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\pgfutil@nnil
       \expandafter\pgfutil@fornoop \else
      #4\relax\expandafter\pgfutil@iforloop\fi#2\@@#3{#4}}
\def\pgfutil@tfor#1:={\pgfutil@tf@r#1 }
\long\def\pgfutil@tf@r#1#2\do#3{\def\pgfutil@fortmp{#2}\ifx\pgfutil@fortmp\pgfutil@space\else
    \pgfutil@tforloop#2\pgfutil@nil\pgfutil@nil\@@#1{#3}\fi}
\long\def\pgfutil@tforloop#1#2\@@#3#4{\def#3{#1}\ifx #3\pgfutil@nnil
       \expandafter\pgfutil@fornoop \else
      #4\relax\expandafter\pgfutil@tforloop\fi#2\@@#3{#4}}

\def\pgfutil@space{ }


\chardef\pgfutil@inputcheck0
\def\pgfutil@IfFileExists#1#2#3{%
  \openin\pgfutil@inputcheck=#1 %
  \ifeof\pgfutil@inputcheck
     #3\relax
  \else
    #2\relax
  \fi
  \closein\pgfutil@inputcheck}

\def\pgfutil@InputIfFileExists#1#2#3{\pgfutil@IfFileExists{#1}{\input #1\relax#2}{#3}}%



\def\pgfutil@loop#1\pgfutil@repeat{\def\pgfutil@body{#1}\pgfutil@iterate}
\def\pgfutil@iterate{\pgfutil@body \let\pgfutil@next\pgfutil@iterate \else\let\pgfutil@next\relax\fi \pgfutil@next}
\let\pgfutil@repeat=\fi %


\let\pgfutil@scan@mark\relax
\let\pgfutil@scan@stop\relax

\long\def\pgfutil@switch#1#2#3#4#5{%
  \pgfutil@exp
  \pgfutil@switch@@{#1}%
  {#2}#3%
  {#2}{}%
  \pgfutil@scan@mark{#4}%
  \pgfutil@scan@mark{#5}%
  \pgfutil@scan@stop
}
\long\def\pgfutil@switch@@#1#2#3#4{%
  #1{#2}{#3}%
    {\pgfutil@switch@end{#4}}%
    {\pgfutil@switch@@{#1}{#2}}%
}
\long\def\pgfutil@switch@end#1#2#3\pgfutil@scan@mark#4#5\pgfutil@scan@stop{\pgfutil@exp@end#1#4}


\let\pgfutil@aux@read@hook=\relax



\newtoks\pgfutil@everybye




\def\pgfutil@addpdfresource@extgs#1{\pgf@sys@addpdfresource@extgs@plain{#1}}
\def\pgfutil@addpdfresource@colorspaces#1{\pgf@sys@addpdfresource@colorspaces@plain{#1}}
\def\pgfutil@addpdfresource@patterns#1{\pgf@sys@addpdfresource@patterns@plain{#1}}
\def\pgfutil@setuppdfresources{\pgf@sys@setuppdfresources@plain}



\let\pgfutil@insertatbegincurrentpage=\relax



\def\pgfutil@raggedright{\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax}
\def\pgfutil@raggedleft{\leftskip\z@ plus2em \rightskip\z@ \spaceskip.3333em \xspaceskip.5em\parfillskip0pt\relax}


\def\pgfutil@packageerror#1#2#3{\errhelp{#3}\errmessage{Package #1 Error: #2}}
\def\pgfutil@packagewarning#1#2{\immediate\write17{Package #1: Warning! #2.}}
\def\pgferror#1{\pgfutil@packageerror{pgf}{#1}{}}
\def\pgfwarning#1{\pgfutil@packagewarning{pgf}{#1}}





\def\usepgflibrary{\pgfutil@ifnextchar[{\use@pgflibrary}{\use@@pgflibrary}}%
\def\use@pgflibrary[#1]{\use@@pgflibrary{#1}}
\def\use@@pgflibrary#1{%
  \edef\pgf@list{#1}%
  \pgfutil@for\pgf@temp:=\pgf@list\do{%
    \expandafter\pgfkeys@spdef\expandafter\pgf@temp\expandafter{\pgf@temp}%
    \ifx\pgf@temp\pgfutil@empty
    \else
      \expandafter\ifx\csname pgf@library@\pgf@temp @loaded\endcsname\relax%
      \expandafter\let\csname pgf@library@\pgf@temp @loaded\endcsname=\pgfutil@empty%
      \expandafter\edef\csname pgf@library@#1@atcode\endcsname{\the\catcode`\@}
      \expandafter\edef\csname pgf@library@#1@barcode\endcsname{\the\catcode`\|}
      \expandafter\edef\csname pgf@library@#1@dollarcode\endcsname{\the\catcode`\$}
      \catcode`\@=11
      \catcode`\|=12
      \catcode`\$=3
      \pgfutil@InputIfFileExists{pgflibrary\pgf@temp.code.tex}{}{%
          \pgferror{I did not find the pgf library
            '\pgf@temp'. I looked for the file named
            pgflibrary\pgf@temp.code.tex, but could not find it in
            the current texmf trees.}
        }%
      \catcode`\@=\csname pgf@library@#1@atcode\endcsname
      \catcode`\|=\csname pgf@library@#1@barcode\endcsname
      \catcode`\$=\csname pgf@library@#1@dollarcode\endcsname
      \fi%
    \fi
  }%
}



\def\usepgfmodule{\pgfutil@ifnextchar[{\use@pgfmodule}{\use@@pgfmodule}}%
\def\use@pgfmodule[#1]{\use@@pgfmodule{#1}}
\def\use@@pgfmodule#1{%
  \edef\pgf@list{#1}%
  \pgfutil@for\pgf@temp:=\pgf@list\do{%
    \expandafter\ifx\csname pgf@module@\pgf@temp @loaded\endcsname\relax%
      \expandafter\let\csname pgf@module@\pgf@temp @loaded\endcsname=\pgfutil@empty%
      \expandafter\edef\csname pgf@module@#1@atcode\endcsname{\the\catcode`\@}
      \expandafter\edef\csname pgf@module@#1@barcode\endcsname{\the\catcode`\|}
      \expandafter\edef\csname pgf@module@#1@dollarcode\endcsname{\the\catcode`\$}
      \catcode`\@=11
      \catcode`\|=12
      \catcode`\$=3
      \input pgfmodule\pgf@temp.code.tex
      \catcode`\@=\csname pgf@module@#1@atcode\endcsname
      \catcode`\|=\csname pgf@module@#1@barcode\endcsname
      \catcode`\$=\csname pgf@module@#1@dollarcode\endcsname
    \fi%
  }%
}

\def\pgfutilensuremath#1{%
  \ifmmode#1\else$#1$\fi
}



\begingroup
    \catcode`\"=12
    \edef\pgf@loc@TMPa{"}%
    \gdef\pgfutilpreparefilename#1{%
        \begingroup
            \ifnum\the\catcode`\"=13
                \pgfutilconvertdcolon
            \fi
            \xdef\pgf@temp{#1}%
        \endgroup
        \expandafter\pgfutil@in@\expandafter"\expandafter{\pgf@temp}%
        \ifpgfutil@in@
            \def\pgf@loc@TMPa{\pgfutilstrreplace{"}{}}%
            \expandafter\pgf@loc@TMPa\expandafter{\pgf@temp}%
            \edef\pgfretval{"\pgfretval"}%
            \let\pgfretvalquoted=\pgfretval
        \else
            \let\pgfretval=\pgf@temp
            \edef\pgfretvalquoted{"\pgfretval"}%
        \fi
    }%
    \catcode`\"=13
    \xdef\pgfutilconvertdcolon{%
        \noexpand\def\noexpand"{\pgf@loc@TMPa}%
    }%
\endgroup

\def\pgfutil@command@to@string#1#2{%
    \expandafter\pgfutil@command@to@string@@\meaning#1\pgfutil@EOI{#2}%
}%
\xdef\pgfutil@glob@TMPa{\meaning\pgfutil@empty}%
\expandafter\def\expandafter\pgfutil@command@to@string@@\pgfutil@glob@TMPa#1\pgfutil@EOI#2{%
    \def#2{#1}%
}%
\begingroup
\catcode`\|=0
\catcode`\\=12
|gdef|pgfutil@backslash@as@other{\}%
|endgroup

\def\pgfutilifcontainsmacro#1#2#3{%
    \def\pgf@marshal{#1}%
    \pgfutil@command@to@string\pgf@marshal\pgf@marshal
    \edef\pgf@marshal{\noexpand\pgfutil@in@{\pgfutil@backslash@as@other}{\pgf@marshal}}%
    \pgf@marshal
    \ifpgfutil@in@
        \def\pgf@marshal{#2}%
    \else
        \def\pgf@marshal{#3}%
    \fi
    \pgf@marshal
}%

\def\pgfutilifstartswith#1#2#3#4{%
    \def\pgfutilifstartswith@ ##1#1##2\pgf@EOI{%
        \def\pgfutil@tmp{##1}%
        \ifx\pgfutil@tmp\pgfutil@empty
            \def\pgfutil@tmp#1####1\pgf@EOI{%
                \def\pgfretval{####1}%
            }%
            \pgfutil@tmp#2\pgf@EOI%
            #3\relax%
        \else
            #4\relax%
        \fi
    }%
    \pgfutilifstartswith@#2--#1\pgf@EOI%
}%

\long\def\pgfutilstrreplace#1#2#3{%
    \def\pgfretval{}%
    \long\def\pgfutil@search@and@replace@@##1#1##2\pgf@EOI{%
        \expandafter\def\expandafter\pgfretval\expandafter{\pgfretval ##1#2}%
        \pgfutil@search@and@replace@loop{#1}{##2}%
    }%
    \pgfutil@search@and@replace@loop{#1}{#3}%
}
\long\def\pgfutil@search@and@replace@loop#1#2{%
    \pgfutil@in@{#1}{#2}%
    \ifpgfutil@in@
        \def\pgf@loc@TMPa{\pgfutil@search@and@replace@@ #2\pgf@EOI}%
    \else
        \expandafter\def\expandafter\pgfretval\expandafter{\pgfretval #2}%
        \let\pgf@loc@TMPa=\relax
    \fi
    \pgf@loc@TMPa
}%

\def\pgfutilsolvetwotwoleq#1#2{%
    \begingroup
        \dimendef\aa=0
        \dimendef\ab=1
        \dimendef\ba=2
        \dimendef\bb=3
        \dimendef\ra=4
        \dimendef\rb=5
        \dimendef\tmpa=6
        \dimendef\tmpb=7
        \edef\pgf@temp{#1}%
        \expandafter\pgfutilsolvetwotwoleq@A\pgf@temp
        \edef\pgf@temp{#2}%
        \expandafter\pgfutilsolvetwotwoleq@r\pgf@temp
        \pgfutilsolvetwotwoleq@ifislarger\aa\ba{%
            \def\Pa{a}%
            \def\Pb{b}%
        }{%
            \def\Pa{b}%
            \def\Pb{a}%
        }%
        \tmpa=\csname m\Pa a\endcsname pt %
        \ifdim\tmpa<0pt \tmpa=-\tmpa\fi
        \ifdim\tmpa<0.0001pt
            \let\pgfmathresult=\pgfutil@empty
        \else
            \pgfmathreciprocal@
                {\csname m\Pa a\endcsname}%
            \let\pivot=\pgfmathresult
            \csname \Pb a\endcsname=\pivot\csname \Pb a\endcsname
            \edef\factor{\expandafter\pgf@sys@tonumber\csname \Pb a\endcsname}%
            \tmpa=-\factor\csname \Pa b\endcsname
            \advance\csname \Pb b\endcsname by\tmpa
            \tmpa=-\factor\csname r\Pa\endcsname
            \advance\csname r\Pb\endcsname by\tmpa
            \tmpa=\csname \Pb b\endcsname%
            \ifdim\tmpa<0pt \tmpa=-\tmpa\fi
            \ifdim\tmpa<0.0001pt
                \let\pgfmathresult=\pgfutil@empty
            \else
                \pgfmathdivide@
                    {\expandafter\pgf@sys@tonumber\csname r\Pb\endcsname}
                    {\expandafter\pgf@sys@tonumber\csname \Pb b\endcsname}%
                \expandafter\let\csname pgfmathresult\Pb\endcsname=\pgfmathresult
                \tmpa=\csname pgfmathresult\Pb\endcsname\csname \Pa b\endcsname
                \advance\csname r\Pa\endcsname by-\tmpa
                \tmpa=\pivot\csname r\Pa\endcsname
                \expandafter\edef\csname pgfmathresult\Pa\endcsname{\pgf@sys@tonumber\tmpa}%
                \edef\pgfmathresult{%
                    {\csname pgfmathresult\Pa\endcsname}%
                    {\csname pgfmathresult\Pb\endcsname}%
                }%
            \fi
        \fi
        \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%

\def\pgfutilsolvetwotwoleq@ifislarger#1#2#3#4{%
    \tmpa=#1
    \ifdim\tmpa<0pt
        \multiply\tmpa by-1
    \fi
    \tmpb=#2
    \ifdim\tmpb<0pt
        \multiply\tmpb by-1
    \fi
    \ifdim\tmpa>\tmpb
        #3%
    \else
        #4%
    \fi
}%

\def\pgfutilsolvetwotwoleqfloat@ifislarger#1#2#3#4{%
    \pgfmathfloatabs@{#1}\let\tmpa=\pgfmathresult
    \pgfmathfloatabs@{#2}\let\tmpb=\pgfmathresult
    \pgfmathfloatlessthan@{\tmpb}{\tmpa}%
    \ifpgfmathfloatcomparison
        #3%
    \else
        #4%
    \fi
}%
\def\pgfutilsolvetwotwoleq@A#1#2#3#4{%
    \def\maa{#1}\def\mab{#2}%
    \def\mba{#3}\def\mbb{#3}%
    \aa=#1pt \ab=#2pt
    \ba=#3pt \bb=#4pt
}
\def\pgfutilsolvetwotwoleq@r#1#2{%
    \ra=#1pt \rb=#2pt
}%
\def\pgfutilsolvetwotwoleqfloat@A#1#2#3#4{%
    \pgfmathfloatparsenumber{#1}\let\maa=\pgfmathresult
    \pgfmathfloatparsenumber{#2}\let\mab=\pgfmathresult
    \pgfmathfloatparsenumber{#3}\let\mba=\pgfmathresult
    \pgfmathfloatparsenumber{#4}\let\mbb=\pgfmathresult
}
\def\pgfutilsolvetwotwoleqfloat@r#1#2{%
    \pgfmathfloatparsenumber{#1}\let\ra=\pgfmathresult
    \pgfmathfloatparsenumber{#2}\let\rb=\pgfmathresult
}%

\def\pgfutilsolvetwotwoleqfloat#1#2{%
    \begingroup
        \pgfmathfloatcreate{1}{1.0}{-4}%
        \let\thresh=\pgfmathresult
        \edef\pgf@temp{#1}%
        \expandafter\pgfutilsolvetwotwoleqfloat@A\pgf@temp
        \edef\pgf@temp{#2}%
        \expandafter\pgfutilsolvetwotwoleqfloat@r\pgf@temp
        \pgfutilsolvetwotwoleqfloat@ifislarger\maa\mba{%
            \def\Pa{a}%
            \def\Pb{b}%
        }{%
            \def\Pa{b}%
            \def\Pb{a}%
        }%
        \expandafter\pgfmathfloatabs@\expandafter{\csname m\Pa a\endcsname}%
        \let\tmpa=\pgfmathresult
        \pgfmathfloatlessthan@{\tmpa}{\thresh}%
        \ifpgfmathfloatcomparison
            \let\pgfmathresult=\pgfutil@empty
        \else
            \expandafter\pgfmathfloatreciprocal@\expandafter{\csname m\Pa a\endcsname}%
            \let\pivot=\pgfmathresult
            \expandafter\pgfmathfloatmultiply@\expandafter{\csname m\Pb a\endcsname}{\pivot}%
            \let\factor=\pgfmathresult
            \expandafter\let\csname m\Pb a\endcsname=\factor
            \expandafter\pgfmathfloatmultiply@\expandafter{\csname m\Pa b\endcsname}{\factor}%
            \let\tmpa=\pgfmathresult
            \expandafter\pgfmathfloatsubtract@\expandafter{\csname m\Pb b\endcsname}{\tmpa}%
            \expandafter\let\csname m\Pb b\endcsname=\pgfmathresult
            \expandafter\pgfmathfloatmultiply@\expandafter{\csname r\Pa\endcsname}{\factor}%
            \let\tmpa=\pgfmathresult
            \expandafter\pgfmathfloatsubtract@\expandafter{\csname r\Pb\endcsname}{\tmpa}%
            \expandafter\let\csname r\Pb\endcsname=\pgfmathresult
            \expandafter\pgfmathfloatabs@\expandafter{\csname m\Pb b\endcsname}%
            \let\tmpa=\pgfmathresult
            \pgfmathfloatlessthan@{\tmpa}{\thresh}%
            \ifpgfmathfloatcomparison
                \let\pgfmathresult=\pgfutil@empty
            \else
                \edef\pgf@marshal{%
                    \noexpand\pgfmathfloatdivide@
                        {\csname r\Pb\endcsname}
                        {\csname m\Pb b\endcsname}%
                }%
                \pgf@marshal
                \expandafter\let\csname pgfmathresult\Pb\endcsname=\pgfmathresult
                \let\tmpa=\pgfmathresult
                \expandafter\pgfmathfloatmultiply@\expandafter{\csname m\Pa b\endcsname}{\tmpa}%
                \let\tmpa=\pgfmathresult
                \expandafter\pgfmathfloatsubtract@\expandafter{\csname r\Pa\endcsname}{\tmpa}%
                \expandafter\let\csname r\Pa\endcsname=\pgfmathresult
                \expandafter\pgfmathfloatmultiply@\expandafter{\csname r\Pa\endcsname}{\pivot}%
                \expandafter\let\csname pgfmathresult\Pa\endcsname=\pgfmathresult
                \edef\pgfmathresult{%
                    {\csname pgfmathresult\Pa\endcsname}%
                    {\csname pgfmathresult\Pb\endcsname}%
                }%
                \expandafter\pgfutilsolvetwotwoleqfloat@to@pgf@range\pgfmathresult
            \fi
        \fi
        \pgfmath@smuggleone\pgfmathresult
    \endgroup
}%


\def\pgfutilsolvetwotwoleqfloat@to@pgf@range#1#2{%
    \pgfmathfloatcreate{1}{1.6}{4}\let\pgfutilsolvetwotwoleqfloat@to@pgf@range@max=\pgfmathresult
    \pgfmathfloatabs@{#1}%
    \expandafter\pgfmathfloatlessthan@\expandafter{\pgfmathresult}{\pgfutilsolvetwotwoleqfloat@to@pgf@range@max}%
    \ifpgfmathfloatcomparison
        \pgfmathfloatabs@{#2}%
        \expandafter\pgfmathfloatlessthan@\expandafter{\pgfmathresult}{\pgfutilsolvetwotwoleqfloat@to@pgf@range@max}%
        \ifpgfmathfloatcomparison
            \pgfmathfloattofixed{#1}\let\tmpa=\pgfmathresult
            \pgfmathfloattofixed{#2}%
            \edef\pgfmathresult{{\tmpa}{\pgfmathresult}}%
        \else
            \let\pgfmathresult=\pgfutil@empty
        \fi
    \else
        \let\pgfmathresult=\pgfutil@empty
    \fi
}%

\let\pgfutil@write=\write
\let\pgfutil@read=\read

\let\pgfutil@protect\relax

\def\pgfutil@check@rerun#1#2{}

\newdimen\pgfutil@tempdima
\newdimen\pgfutil@tempdimb


\let\pgfutil@ifluatex\iffalse
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname directlua\endcsname\relax
\else
  \expandafter\let\csname pgfutil@ifluatex\expandafter\endcsname
    \csname iftrue\endcsname
\fi

\pgfutil@ifluatex
  \let\pgfutil@directlua\directlua
  \pgfutil@directlua{%
    tex.enableprimitives('pgfutil@',{'luaescapestring'})}
\else
  \def\pgfutil@directlua#1{}
  \def\pgfutil@luaescapestring#1{}
\fi


\def\pgfutil@shellescape@lua@eightseven#1{%
    \pgfutil@directlua{os.execute("\pgfutil@luaescapestring{#1}")}%
}%
\def\pgfutil@shellescape#1{%
    \immediate\write18{#1}%
}%
\pgfutil@IfUndefined{directlua}{%
}{%
    \pgfutil@IfUndefined{lastsavedimageresourcepages}{%
    }{%
        \let\pgfutil@shellescape=\pgfutil@shellescape@lua@eightseven
    }%
}%


\def\pgfutil@advancestringcounter#1{%
    \begingroup
        \c@pgf@counta=#1\relax
        \advance\c@pgf@counta by1
        \edef#1{\the\c@pgf@counta}%
        \pgfmath@smuggleone#1%
    \endgroup
}%

\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//pgfutil-common.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//separators.tex ====
\section{Separators with a shared cutoff}\label{sec:separators}

Decomposing a normalized schedule at selected slots is a central device
in Dolev--Warmuth \citep[Theorem~2]{DW1984} and in the proper-decomposition
construction of Nederlof, Swennenhuis, and Węgrzycki
\citep[Section~3]{NSW2025}. Here we prove the shared-cutoff form needed
for the interval construction: successive boundaries must separate the
same ideal of low-priority jobs. The global-list invariants in later
sections control these descriptions inside descendant intervals.

This section concerns one fixed frame and a domain consisting of a
contiguous interval of a feasible schedule. A set is an \emph{ideal}
in the domain if it contains every domain predecessor of each of its
members. Its complement in the domain is an upset.

\begin{definition}\label{def:separator}
Given an ideal \(S\) of low jobs in a domain, a slot \(z\) is a
\emph{separator at cutoff \(S\)} if
\begin{enumerate}[label=(\alph*)]
 \item every domain job before \(z\) that is outside \(S\) belongs to \(P_z\);
 \item every domain job after \(z\) that belongs to \(S\) belongs to \(D_z\).
\end{enumerate}
The other domain jobs are called high. A left boundary outside the domain
is also a separator when all low domain jobs descend from it; there are
then no domain jobs before that boundary.
\end{definition}

An actual separator has a useful description of its earlier jobs. For
a global set \(H\subseteq J\), put
\begin{equation}
 B_z(H)=P_z\cup\bigl(H\setminus\wD z\bigr).
 \label{eq:B-definition}
\end{equation}

\begin{lemma}\label{lem:separator-description}
If \(z\) is an actual separator for a domain \(U\) at cutoff \(S\),
and \(H\cap U=S\), then \(B_z(H)\cap U\) is exactly the set of
domain jobs strictly earlier than \(z\). Reversing order and time,
and exchanging low with high, preserves the separator property.
\end{lemma}
\begin{proof}
Every job in \(P_z\) is strictly earlier than \(z\). An earlier low
job is outside \(\wD z\). A low job at \(z\) belongs to \(\wD z\),
and a later low job belongs to \(D_z\) by separation. Finally, every
earlier high job belongs to \(P_z\). These observations give both
inclusions. Reversal exchanges the two conditions in
\Cref{def:separator}.
\end{proof}

\subsection{Lexicographic normalization}

A \emph{priority order} is a total order of the domain extending
precedence. Read a full schedule chronologically, with each triple sorted
by priority. Among the finitely many feasible full schedules of the
domain, choose one whose resulting sequence of priority indices is
lexicographically least. Call it \emph{normalized} for that priority.
This is an existence choice, not an operation of the decision algorithm.

\begin{lemma}\label{lem:lex-prefix}
In a normalized schedule, a feasible exchange that puts a better-priority
job into an earlier slot is impossible. More generally, fix a slot \(r\).
After any feasible reordering confined strictly after \(r\), a feasible
exchange of a job at \(r\) with a better-priority job at a later slot
is still impossible.
\end{lemma}
\begin{proof}
Replacing one member of a sorted triple by a better-priority job
lexicographically improves that triple. In the second assertion, the
schedule through \(r\) is unchanged by the intervening reordering.
The proposed exchange would therefore first change the normalized
sequence at \(r\), and improve it there. The resulting full schedule
would contradict minimality, regardless of what happens later.
\end{proof}

\begin{lemma}[Shared-cutoff walk]\label{lem:shared}
Fix a normalized full schedule of a domain and let \(S\) and \(S^+\)
be consecutive priority prefixes, differing by the promotion of one job
from high to low. Suppose \(s\) is a separator at cutoff \(S\),
either inside the domain or at its exterior left boundary.
Then there is a separator \(t\ge s\), found by advancing only to
domain slots on the right, that separates both \(S\) and \(S^+\).
If the priority order is specified on a larger job set and the promoted
job is outside the domain, one may take \(t=s\).
\end{lemma}
\begin{proof}
\textbf{One advance at a fixed cutoff.}
Keep the normalized schedule and its priority order fixed. Let \(L\)
be a prefix of that priority order, and suppose the current position
\(s\) satisfies the earlier-high condition for \(L\).
If a later low job does not descend from \(s\), choose the earliest
slot \(t>s\) containing such a job, and choose one of them, \(x\).
Every domain predecessor of \(x\) lies strictly before \(s\).
Indeed, that predecessor is low because \(L\) is an ideal.
A predecessor at \(s\) would force \(x\in D_s\). A predecessor
strictly between \(s\) and \(t\) would descend from \(s\), by the
earliest choice of \(t\), and again force \(x\in D_s\).

Let \(y\) be a high domain job at a slot \(r\) with \(s\le r=stealth]
  \fill[blue!7] (3.15,-.25) rectangle (6.35,.62);
  \draw[->,gray!75] (-.25,0) -- (10.6,0);
  \node[anchor=east,font=\footnotesize] at (10.6,-.75)
    {time in the working frame};
  \foreach \x in {0,3,6.5,9.6}
    {\draw[thick] (\x,-.18) -- (\x,.62);}
  \node[above] at (0,.62) {$a=s_0$};
  \node[above] at (3,.62) {$a'=s_i$};
  \node[above] at (6.5,.62) {$b'=s_{i+1}$};
  \node[above] at (9.6,.62) {$v=s_{q+1}$};
  \node at (4.75,.22) {$W'=(a',b')$};
  \node at (1.5,.22) {$\cdots$};
  \node at (8.05,.22) {$\cdots$};
  \draw[blue!65!black] (3,1.18) -- (3,1.4) -- (6.5,1.4) -- (6.5,1.18);
  \node[above,text=blue!65!black] at (4.75,1.4)
    {both endpoints separate at cutoff $S_i$};
  \node[anchor=north,align=center] at (4.75,-1.05)
    {$W'\cap S_i\subseteq D_{a'}$\qquad
     $W'\setminus S_i\subseteq P_{b'}$};
\end{tikzpicture}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//shared-cutoff.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//switch-localization.tex ====
\begin{tikzpicture}[x=1cm,y=1cm,font=\small,>=stealth]
  \fill[teal!8] (4.35,-.25) rectangle (7.25,.65);
  \draw[->,gray!75] (-.25,0) -- (10.6,0);
  \foreach \x in {0,2.2,4.2,7.4,9.6}
    {\draw[thick] (\x,-.18) -- (\x,.65);}
  \node[above] at (0,.65) {$a_-$};
  \node[above] at (2.2,.65) {$v_-$};
  \node[above] at (4.2,.65) {$a$};
  \node[above] at (7.4,.65) {$b$};
  \node[above] at (9.6,.65) {$b_-$};
  \node at (5.8,.25) {$W=(a,b)$};
  \draw[gray] (0,1.24) -- (0,1.43) -- (9.6,1.43) -- (9.6,1.24);
  \node[above] at (4.8,1.43) {$U=(a_-,b_-)$};
  \node[anchor=east,font=\footnotesize] at (10.6,-.7)
    {time in the new frame};
  \node[anchor=north,align=center] at (4.8,-1.05)
    {$G=D_{a_-}\cap (J\setminus\widehat P_a)
      \cap (J\setminus\widehat P_{v_-})\cap H_-^*$};
  \node[draw=teal!60!black,fill=teal!3,rounded corners=2pt,
        inner sep=8pt,align=center,font=\footnotesize] at (4.8,-2.33)
    {If $z\in G$ were at or before $a$, then $z\in U$ and hence $z\in H_-$.\\[3pt]
     At or before $v_-$: $z\in\widehat P_{v_-}$.
     \qquad After $v_-$ through $a$: $z\in\widehat P_a$.};
\end{tikzpicture}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//switch-localization.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikz.code.tex ====

\ProvidesPackageRCS{tikz.code.tex}


\def\tikzerror#1{\pgfutil@packageerror{tikz}{#1}{}}

\usepgflibrary{plothandlers}

\newdimen\tikz@lastx
\newdimen\tikz@lasty
\newdimen\tikz@lastxsaved
\newdimen\tikz@lastysaved
\newdimen\tikz@lastmovetox
\newdimen\tikz@lastmovetoy

\newdimen\tikzleveldistance
\newdimen\tikzsiblingdistance

\newbox\tikz@figbox
\newbox\tikz@figbox@bg
\newbox\tikz@tempbox
\newbox\tikz@tempbox@bg

\newcount\tikztreelevel
\newcount\tikznumberofchildren
\newcount\tikznumberofcurrentchild

\newcount\tikz@fig@count

\newif\iftikz@node@is@a@label
\newif\iftikz@snaked
\newif\iftikz@decoratepath

\let\tikz@options\pgfutil@empty
\def\tikz@addoption#1{%
  \expandafter\def\expandafter\tikz@options\expandafter{\tikz@options#1}}%
\def\tikz@addmode#1{%
  \expandafter\def\expandafter\tikz@mode\expandafter{\tikz@mode#1}}%
\def\tikz@addtransform#1{%
  \ifx\tikz@transform\relax
    #1%
  \else
    \expandafter\def\expandafter\tikz@transform\expandafter{\tikz@transform#1}%
  \fi
}%



\pgfkeys{/tikz/.is family}%

\def\tikzset{\pgfqkeys{/tikz}}%

\def\tikzoption#1{%
  \pgfutil@ifnextchar[%
    {\tikzoption@opt{#1}}{\tikzoption@noopt{#1}}}%
\def\tikzoption@opt#1[#2]#3{%
  \pgfkeysdef{/tikz/#1}{#3}%
  \pgfkeyssetvalue{/tikz/#1/.@def}{#2}}%
\def\tikzoption@noopt#1#2{%
  \pgfkeysdef{/tikz/#1}{#2}%
  \pgfkeyssetvalue{/tikz/#1/.@def}{\pgfkeysvaluerequired}}%

\tikzoption{baseline}[0pt]{%
  \pgfutil@ifnextchar(%
    {\tikz@baseline@coordinate}{\tikz@baseline@simple}#1\@nil}%
\def\tikz@baseline@simple#1\@nil{\pgfsetbaseline{#1}}%
\def\tikz@baseline@coordinate#1\@nil{%
  \pgfsetbaselinepointlater{\tikz@scan@one@point\pgfutil@firstofone#1}}%

\tikzoption{trim left}[0pt]{\pgfutil@ifnextchar({\tikz@trim@coordinate{left}}{\tikz@trim@simple{left}}#1\@nil}%
\tikzoption{trim right}{\pgfutil@ifnextchar({\tikz@trim@coordinate{right}}{\tikz@trim@simple{right}}#1\@nil}%
\def\tikz@trim@simple#1#2\@nil{\csname pgfsettrim#1\endcsname{#2}}%
\def\tikz@trim@coordinate#1#2\@nil{\csname pgfsettrim#1pointlater\endcsname{\tikz@scan@one@point\pgfutil@firstofone#2}}%

\tikzoption{line width}{\tikz@semiaddlinewidth{#1}}%

\def\tikz@semiaddlinewidth#1{\tikz@addoption{\pgfsetlinewidth{#1}}\pgfmathsetlength\pgflinewidth{#1}}%

\tikzoption{cap}{\tikz@addoption{\csname pgfset#1cap\endcsname}}%
\tikzoption{join}{\tikz@addoption{\csname pgfset#1join\endcsname}}%
\tikzoption{line cap}{\tikz@addoption{\csname pgfset#1cap\endcsname}}%
\tikzoption{line join}{\tikz@addoption{\csname pgfset#1join\endcsname}}%
\tikzoption{miter limit}{\tikz@addoption{\pgfsetmiterlimit{#1}}}%

\tikzoption{dash pattern}{%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\pgfutil@empty%
    \def\tikz@dashpattern{}%
    \tikz@addoption{\pgfsetdash{}{0pt}}%
  \else%
    \def\tikz@dashpattern{}%
    \expandafter\tikz@scandashon\pgfutil@gobble#1o\@nil%
    \edef\tikz@temp{{\tikz@dashpattern}{\noexpand\tikz@dashphase}}%
    \expandafter\tikz@addoption\expandafter{\expandafter\pgfsetdash\tikz@temp}%
  \fi}%
\tikzoption{dash phase}{%
  \def\tikz@dashphase{#1}%
  \edef\tikz@temp{{\tikz@dashpattern}{\noexpand\tikz@dashphase}}%
  \expandafter\tikz@addoption\expandafter{\expandafter\pgfsetdash\tikz@temp}%
}%
\tikzoption{dash}{\tikz@parse@full@dash#1\pgf@stop}%
\def\tikz@parse@full@dash#1phase#2\pgf@stop{%
  \def\tikz@dashphase{#2}%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\pgfutil@empty%
    \def\tikz@dashpattern{}%
    \tikz@addoption{\pgfsetdash{}{0pt}}%
  \else%
    \def\tikz@dashpattern{}%
    \expandafter\tikz@scandashon\pgfutil@gobble#1o\@nil%
    \edef\tikz@temp{{\tikz@dashpattern}{\noexpand\tikz@dashphase}}%
    \expandafter\tikz@addoption\expandafter{\expandafter\pgfsetdash\tikz@temp}%
  \fi%
}%
\def\tikz@dashphase{0pt}%
\def\tikz@dashpattern{}%

\def\tikz@scandashon n#1o{%
  \expandafter\def\expandafter\tikz@dashpattern\expandafter{\tikz@dashpattern{#1}}%
  \pgfutil@ifnextchar\@nil{\pgfutil@gobble}{\tikz@scandashoff}}%
\def\tikz@scandashoff ff#1o{%
  \expandafter\def\expandafter\tikz@dashpattern\expandafter{\tikz@dashpattern{#1}}%
  \pgfutil@ifnextchar\@nil{\pgfutil@gobble}{\tikz@scandashon}}%

\tikzset{
    dash expand off/.code={%
        \ifcsname tikz@library@decorations@loaded\endcsname\else
            \tikzerror{You need \string\usetikzlibrary{decorations} for ``dash expand off''}%
        \fi
        \tikz@addoption{%
            \pgfgetpath\currentpath
            \pgfprocessround{\currentpath}{\currentpath}%
            \pgf@decorate@parsesoftpath{\currentpath}{\currentpath}%
            \pgfmathsetmacro\on{\expandafter\pgfutil@firstoftwo\tikz@dashpattern}%
            \pgfmathsetmacro\off{\expandafter\pgfutil@secondoftwo\tikz@dashpattern}%
            \pgfmathsetmacro\tikz@dashphase{\tikz@dashphase}%
            \pgfmathsubtract@{\on}{\tikz@dashphase}%
            \pgfmathmax@{\pgfmathresult,0}%
            \let\dashphase=\pgfmathresult
            \edef\rest{\pgf@sys@tonumber\dimexpr\pgf@decorate@totalpathlength - \on pt + 2\dimexpr\dashphase pt\relax\relax}%
            \edef\onoff{\pgf@sys@tonumber\dimexpr\on pt+\off pt\relax}%
            \pgfmathdivide@{\rest}{\onoff}%
            \pgfmathfloor@{\pgfmathresult}%
            \pgfmathmax@{\pgfmathresult,1}%
            \pgfmathdivide@{\rest}{\pgfmathresult}%
            \pgfmathsubtract@{\pgfmathresult}{\on}%
            \pgfmathmax@{\pgfmathresult,\off}%
            \edef\tikz@marshal{\noexpand\pgfsetdash{{+\on pt}{+\pgfmathresult pt}}{+\dashphase pt}}%
            \tikz@marshal
        }%
    }
}

\tikzoption{draw opacity}{\tikz@addoption{\pgfsetstrokeopacity{#1}}}%

\tikzoption{double}[]{%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\tikz@nonetext%
    \tikz@addmode{\tikz@mode@doublefalse}%
  \else%
    \ifx\tikz@temp\pgfutil@empty%
    \else%
      \pgfsetinnerstrokecolor{#1}%
    \fi%
    \tikz@addmode{\tikz@mode@doubletrue}%
    \tikzset{every double/.try}%
  \fi}%
\tikzoption{double distance}{%
  \pgfmathsetlength{\pgf@x}{#1}%
  \edef\tikz@double@setup{%
    \pgf@x=\the\pgf@x%
    \advance\pgf@x by2\pgflinewidth%
    \pgflinewidth=\pgf@x%
    \noexpand\pgfsetlinewidth{\pgflinewidth}%
    \noexpand\pgfsetinnerlinewidth{\the\pgf@x}%
  }%
  \tikzset{double}}%
\def\tikz@double@setup{%
  \pgf@x=2\pgflinewidth%
  \advance\pgf@x by0.6pt%
  \pgflinewidth=\pgf@x%
  \pgfsetlinewidth{\pgflinewidth}%
  \pgfsetinnerlinewidth{0.6pt}%
}%
\tikzset{double distance between line centers/.code={
  \pgfmathsetlength{\pgf@x}{#1}%
  \edef\tikz@double@setup{%
    \pgf@x=\pgflinewidth%
    \pgf@xa=\the\pgf@x%
    \advance\pgf@x by\pgf@xa%
    \advance\pgf@xa by-\pgflinewidth%
    \pgflinewidth=\pgf@x%
    \noexpand\pgfsetlinewidth{\pgflinewidth}%
    \noexpand\pgfsetinnerlinewidth{\pgf@xa}%
  }%
  \tikzset{double}}}%
\tikzset{double equal sign distance/.style={double distance between line centers=0.45ex}}%





\tikzoption{even odd rule}[]{\tikz@addoption{\pgfseteorule}}%
\tikzoption{nonzero rule}[]{\tikz@addoption{\pgfsetnonzerorule}}%

\tikzoption{fill opacity}{\tikz@addoption{\pgfsetfillopacity{#1}}}%



\tikzoption{opacity}{\tikz@addoption{\pgfsetstrokeopacity{#1}\pgfsetfillopacity{#1}}}%



\tikzset{blend mode/.code={\tikz@addoption{\pgfsetblendmode{#1}}}}%


\tikzoption{color}{%
  \tikz@addoption{%
    \ifx\tikz@fillcolor\pgfutil@empty%
      \ifx\tikz@strokecolor\pgfutil@empty%
      \else%
        \pgfsys@color@reset@inorderfalse%
        \let\tikz@strokecolor\pgfutil@empty%
        \let\tikz@fillcolor\pgfutil@empty%
      \fi%
    \else%
      \pgfsys@color@reset@inorderfalse%
      \let\tikz@strokecolor\pgfutil@empty%
      \let\tikz@fillcolor\pgfutil@empty%
    \fi%
    \pgfutil@colorlet{tikz@color}{#1}%
    \pgfutil@colorlet{.}{tikz@color}%
    \pgfsetcolor{.}%
    \pgfsys@color@reset@inordertrue%
  }%
  \def\tikz@textcolor{#1}}%



\tikzoption{rounded corners}[4pt]{\pgfsetcornersarced{\pgfpoint{#1}{#1}}}%
\tikzoption{sharp corners}[]{\pgfsetcornersarced{\pgfpointorigin}}%

\tikzset{x radius/.initial=0pt}%
\tikzset{y radius/.initial=0pt}%
\tikzset{%
  radius/.code={%
    \pgfmathparse{#1}%
    \ifpgfmathunitsdeclared
      \pgfkeyssetevalue{/tikz/x radius}{\pgfmathresult pt}%
      \pgfkeyssetevalue{/tikz/y radius}{\pgfmathresult pt}%
    \else
      \pgfkeyssetevalue{/tikz/x radius}{\pgfmathresult}%
      \pgfkeyssetevalue{/tikz/y radius}{\pgfmathresult}%
    \fi
  }%
}%
\tikzset{start angle/.initial=}%
\tikzset{end angle/.initial=}%
\tikzset{delta angle/.initial=}%


\tikzoption{x}{\tikz@handle@vec{\pgfsetxvec}{\tikz@handle@x}#1\relax}%
\tikzoption{y}{\tikz@handle@vec{\pgfsetyvec}{\tikz@handle@y}#1\relax}%
\tikzoption{z}{\tikz@handle@vec{\pgfsetzvec}{\tikz@handle@z}#1\relax}%

\def\tikz@handle@vec#1#2{\pgfutil@ifnextchar({\tikz@handle@coordinate#1}{\tikz@handle@single#2}}%
\def\tikz@handle@coordinate#1{\tikz@scan@one@point#1}%
\def\tikz@handle@single#1#2\relax{#1{#2}}%
\def\tikz@handle@x#1{\pgfsetxvec{\pgfpoint{#1}{0pt}}}%
\def\tikz@handle@y#1{\pgfsetyvec{\pgfpoint{0pt}{#1}}}%
\def\tikz@handle@z#1{\pgfsetzvec{\pgfpoint{#1}{#1}}}%


\tikzoption{scale}{\tikz@addtransform{\pgftransformscale{#1}}}%
\tikzoption{scale around}{\tikz@addtransform{\def\tikz@aroundaction{\pgftransformscale}\tikz@doaround{#1}}}%
\tikzoption{xscale}{\tikz@addtransform{\pgftransformxscale{#1}}}%
\tikzoption{xslant}{\tikz@addtransform{\pgftransformxslant{#1}}}%
\tikzoption{yscale}{\tikz@addtransform{\pgftransformyscale{#1}}}%
\tikzoption{yslant}{\tikz@addtransform{\pgftransformyslant{#1}}}%
\tikzoption{rotate}{\tikz@addtransform{\pgftransformrotate{#1}}}%
\tikzoption{rotate around}{\tikz@addtransform{\def\tikz@aroundaction{\pgftransformrotate}\tikz@doaround{#1}}}%
\def\tikz@doaround#1{%
  \edef\tikz@temp{#1}%
  \expandafter\tikz@doparseA\tikz@temp%
}%
\def\tikz@doparseA#1:{%
  \def\tikz@temp@rot{#1}%
  \tikz@scan@one@point\tikz@doparseB%
}%
\def\tikz@doparseB#1{%
  \pgf@process{#1}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \pgftransformshift{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
  \tikz@aroundaction{\tikz@temp@rot}%
  \pgftransformshift{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}%
}%

\tikzoption{shift}{\tikz@addtransform{\tikz@scan@one@point\pgftransformshift#1\relax}}%
\tikzoption{xshift}{\tikz@addtransform{\pgftransformxshift{#1}}}%
\tikzoption{yshift}{\tikz@addtransform{\pgftransformyshift{#1}}}%
\tikzoption{cm}{\tikz@addtransform{\tikz@parse@cm#1\relax}}%
\tikzoption{reset cm}[]{\tikz@addtransform{\pgftransformreset}}%
\tikzoption{shift only}[]{\tikz@addtransform{\pgftransformresetnontranslations}}%

\def\tikz@parse@cm#1,#2,#3,#4,{%
  \def\tikz@p@cm{{#1}{#2}{#3}{#4}}%
  \tikz@scan@one@point\tikz@parse@cmA}%
\def\tikz@parse@cmA#1{%
  \expandafter\pgftransformcm\tikz@p@cm{#1}%
}%

\tikzset{transform canvas/.code=%
  {%
    \tikz@addoption
    {%
      {%
        \pgftransformreset%
        \let\tikz@transform=\relax%
        \tikzset{#1}%
        \pgflowlevelsynccm%
      }%
      \pgf@relevantforpicturesizefalse%
    }%
  }%
}%

\tikzset{turn/.code={%
    \pgf@x=0pt%
    \pgf@y\pgf@x%
    \pgf@process{\tikz@tangent}%
    \advance\pgf@x by-\tikz@lastx%
    \advance\pgf@y by-\tikz@lasty%
    \pgfpointnormalised{}%
    \pgf@x=-\pgf@x%
    \pgf@ya=-\pgf@y%
    \pgftransformcm%
    {\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@ya}}%
    {\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@x}}{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
  }%
}%

\def\tikz@tangent@lookup{%
  \pgfgetpath\tikz@temp%
  \pgfprocesspathextractpoints\tikz@temp%
  \pgfpointsecondlastonpath%
}%

\def\tikz@xyz@rotate@let{%
  \let\pgf@z=\pgf@yc%
  \let\pgf@za=\pgf@xc%
}%

\def\tikz@xyz@rotate@xyz@xaxis#1#2#3#4{%
  \tikz@xyz@rotate@let%
  \pgf@x=#1\relax%
  \pgf@ya=#2\relax%
  \pgf@za=#3\relax%
  \pgfmathsin@{#4}\let\tikz@xyz@sin=\pgfmathresult%
  \pgfmathcos@{#4}\let\tikz@xyz@cos=\pgfmathresult%
  \pgf@y=\tikz@xyz@cos\pgf@ya%
  \advance\pgf@y by-\tikz@xyz@sin\pgf@za%
  \pgf@z=\tikz@xyz@sin\pgf@ya%
  \advance\pgf@z by\tikz@xyz@cos\pgf@za%
}%

\def\tikz@xyz@rotate@xyz@yaxis#1#2#3#4{%
  \tikz@xyz@rotate@let%
  \pgf@xa=#1\relax%
  \pgf@y=#2\relax%
  \pgf@za=#3\relax%
  \pgfmathsin@{#4}\let\tikz@xyz@sin=\pgfmathresult%
  \pgfmathcos@{#4}\let\tikz@xyz@cos=\pgfmathresult%
  \pgf@x=\tikz@xyz@cos\pgf@xa%
  \advance\pgf@x by\tikz@xyz@sin\pgf@za%
  \pgf@z=-\tikz@xyz@sin\pgf@xa%
  \advance\pgf@z by\tikz@xyz@cos\pgf@za%
}%

\def\tikz@xyz@rotate@xyz@zaxis#1#2#3#4{%
  \tikz@xyz@rotate@let%
  \pgf@xa=#1\relax%
  \pgf@ya=#2\relax%
  \pgf@z=#3\relax%
  \pgfmathsin@{#4}\let\tikz@xyz@sin=\pgfmathresult%
  \pgfmathcos@{#4}\let\tikz@xyz@cos=\pgfmathresult%
  \pgf@x=\tikz@xyz@cos\pgf@xa%
  \advance\pgf@x by-\tikz@xyz@sin\pgf@ya%
  \pgf@y=\tikz@xyz@sin\pgf@xa%
  \advance\pgf@y by\tikz@xyz@cos\pgf@ya%
}%

\tikzset{rotate around x/.code={%
    \tikz@xyz@rotate@let%
    \pgfmathparse{#1}\let\tikz@xyz@angle=\pgfmathresult%
    \tikz@xyz@rotate@xyz@xaxis{0pt}{1pt}{0pt}{\tikz@xyz@angle}%
    \pgfextract@process\tikz@xyz@rotate@yvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
    \tikz@xyz@rotate@xyz@xaxis{0pt}{0pt}{1pt}{\tikz@xyz@angle}%
    \pgfsetzvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
    \pgfsetyvec{\tikz@xyz@rotate@yvec}%
  },
  rotate around y/.code={%
    \tikz@xyz@rotate@let%
    \pgfmathparse{#1}\let\tikz@xyz@angle=\pgfmathresult%
    \tikz@xyz@rotate@xyz@yaxis{1pt}{0pt}{0pt}{\tikz@xyz@angle}%
    \pgfextract@process\tikz@xyz@rotate@xvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
    \tikz@xyz@rotate@xyz@yaxis{0pt}{0pt}{1pt}{\tikz@xyz@angle}%
    \pgfsetzvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
    \pgfsetxvec{\tikz@xyz@rotate@xvec}%
  },
  rotate around z/.code={%
    \tikz@xyz@rotate@let%
    \pgfmathparse{#1}\let\tikz@xyz@angle=\pgfmathresult%
    \tikz@xyz@rotate@xyz@zaxis{1pt}{0pt}{0pt}{\tikz@xyz@angle}%
    \pgfextract@process\tikz@xyz@rotate@xvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
    \tikz@xyz@rotate@xyz@zaxis{0pt}{1pt}{0pt}{\tikz@xyz@angle}%
    \pgfsetyvec{\pgfpointxyz{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@z}}}%
    \pgfsetxvec{\tikz@xyz@rotate@xvec}%
  },
}%

\tikzoption{xstep}{\def\tikz@grid@x{#1}}%
\tikzoption{ystep}{\def\tikz@grid@y{#1}}%
\tikzoption{step}{\tikz@handle@vec{\tikz@step@point}{\tikz@step@single}#1\relax}%
\def\tikz@step@single#1{\def\tikz@grid@x{#1}\def\tikz@grid@y{#1}}%
\def\tikz@step@point#1{\pgf@process{#1}\edef\tikz@grid@x{\the\pgf@x}\edef\tikz@grid@y{\the\pgf@y}}%

\def\tikz@grid@x{1cm}%
\def\tikz@grid@y{1cm}%


\newif\iftikz@current@point@local
\tikzset{current point is local/.is if=tikz@current@point@local}%

\newif\iftikz@mode@double
\newif\iftikz@mode@fill
\newif\iftikz@mode@draw
\newif\iftikz@mode@clip
\newif\iftikz@mode@boundary
\newif\iftikz@mode@shade
\newif\iftikz@mode@fade@path
\newif\iftikz@mode@fade@scope
\let\tikz@mode=\pgfutil@empty

\def\tikz@nonetext{none}%

\tikzoption{path only}[]{\let\tikz@mode=\pgfutil@empty}%
\tikzset{
  shade/.is choice,
  shade/.default=true,
  shade/true/.code=\tikz@addmode{\tikz@mode@shadetrue},
  shade/false/.code=\tikz@addmode{\tikz@mode@shadefalse},
  shade/none/.code=\tikz@addmode{\tikz@mode@shadefalse},
}%

\tikzoption{fill}[]{%
  \edef\tikz@temp{#1}%
  \ifx\tikz@temp\tikz@nonetext%
    \tikz@addmode{\tikz@mode@fillfalse}%
  \else%
    \ifx\tikz@temp\pgfutil@empty%
    \else%
      \tikz@addoption{\pgfsetfillcolor{#1}}%
      \def\tikz@fillcolor{#1}%
    \fi%
    \tikz@addmode{\tikz@mode@filltrue}%
  \fi%
}%
\tikzoption{draw}[]{%
  \edef\tikz@temp{#1}%
  \ifx\tikz@temp\tikz@nonetext%
    \tikz@addmode{\tikz@mode@drawfalse}%
  \else%
    \ifx\tikz@temp\pgfutil@empty%
    \else%
      \tikz@addoption{\pgfsetstrokecolor{#1}}%
      \def\tikz@strokecolor{#1}%
    \fi%
    \tikz@addmode{\tikz@mode@drawtrue}%
  \fi%
}%
\tikzoption{clip}[]{\tikz@addmode{\tikz@mode@cliptrue}}%
\tikzoption{use as bounding box}[]{\tikz@addmode{\tikz@mode@boundarytrue}}%

\tikzoption{save path}{\tikz@addmode{\pgfsyssoftpath@getcurrentpath#1\global\let#1=#1}}%
\tikzoption{use path}{\tikz@addmode{\pgfsyssoftpath@setcurrentpath#1}}%

\let\tikz@fillcolor=\pgfutil@empty
\let\tikz@strokecolor=\pgfutil@empty

\tikzset{insert path/.code=\tikz@scan@next@command#1\pgf@stop}%

\tikzset{pattern/.code=\tikzerror{You need to say \string\usetikzlibrary{patterns}},
         pattern color/.style=pattern}%

\tikzset{path picture/.code=\tikz@addmode{\def\tikz@path@picture{#1}}}%

\tikzset{path fading/.code={
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\tikz@nonetext%
    \tikz@addmode{\tikz@mode@fade@pathfalse}%
  \else%
    \ifx\tikz@temp\pgfutil@empty%
    \else%
      \def\tikz@path@fading{#1}%
    \fi%
    \tikz@addmode{\tikz@mode@fade@pathtrue}%
  \fi%
  },
  path fading/.default=,
  scope fading/.code={
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\tikz@nonetext%
    \tikz@addmode{\tikz@mode@fade@scopefalse}%
  \else%
    \ifx\tikz@temp\pgfutil@empty%
    \else%
      \def\tikz@scope@fading{#1}%
    \fi%
    \tikz@addmode{\tikz@mode@fade@scopetrue}%
  \fi%
  },
  scope fading/.default=}%
\tikzset{fit fading/.is if=tikz@fade@adjust}%
\tikzset{fading transform/.store in=\tikz@fade@transform}%
\tikzset{fading angle/.style={fading transform={rotate={#1}}}}%

\newif\iftikz@fade@adjust%
\tikz@fade@adjusttrue%
\let\tikz@fade@transform\pgfutil@empty%

\pgfutil@colorlet{transparent}{pgftransparent}%
\def\tikz@do@fade@transform{\let\tikz@transform=\relax\expandafter\tikzset\expandafter{\tikz@fade@transform}}%



\newif\iftikz@transparency@group%
\tikzset{/tikz/transparency group/.code=\tikz@transparency@grouptrue\def\tikz@transparency@group@options{isolated=true,#1}\let\tikz@blend@group\pgfutil@empty}%
\tikzset{/tikz/blend group/.code=\tikz@transparency@grouptrue\def\tikz@transparency@group@options{isolated=true}\def\tikz@blend@group{\pgfsetblendmode{#1}}}%

\let\tikz@blend@group\pgfutil@empty

\tikzoption{shading}{\def\tikz@shading{#1}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{shading angle}{\def\tikz@shade@angle{#1}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{top color}{%
  \pgfutil@colorlet{tikz@axis@top}{#1}%
  \pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
  \def\tikz@shading{axis}\def\tikz@shade@angle{0}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{bottom color}{%
  \pgfutil@colorlet{tikz@axis@bottom}{#1}%
  \pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
  \def\tikz@shading{axis}\def\tikz@shade@angle{0}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{middle color}{%
  \pgfutil@colorlet{tikz@axis@middle}{#1}%
  \def\tikz@shading{axis}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{left color}{%
  \pgfutil@colorlet{tikz@axis@top}{#1}%
  \pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
  \def\tikz@shading{axis}\def\tikz@shade@angle{90}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{right color}{%
  \pgfutil@colorlet{tikz@axis@bottom}{#1}%
  \pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
  \def\tikz@shading{axis}\def\tikz@shade@angle{90}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{ball color}{\pgfutil@colorlet{tikz@ball}{#1}\def\tikz@shading{ball}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{inner color}{\pgfutil@colorlet{tikz@radial@inner}{#1}\def\tikz@shading{radial}\tikz@addmode{\tikz@mode@shadetrue}}%
\tikzoption{outer color}{\pgfutil@colorlet{tikz@radial@outer}{#1}\def\tikz@shading{radial}\tikz@addmode{\tikz@mode@shadetrue}}%

\def\tikz@shading{axis}%
\def\tikz@shade@angle{0}%

\pgfdeclareverticalshading[tikz@axis@top,tikz@axis@middle,tikz@axis@bottom]{axis}{100bp}{%
  color(0bp)=(tikz@axis@bottom);
  color(25bp)=(tikz@axis@bottom);
  color(50bp)=(tikz@axis@middle);
  color(75bp)=(tikz@axis@top);
  color(100bp)=(tikz@axis@top)}%

\pgfutil@colorlet{tikz@axis@top}{gray}%
\pgfutil@colorlet{tikz@axis@middle}{gray!50!white}%
\pgfutil@colorlet{tikz@axis@bottom}{white}%

\pgfdeclareradialshading[tikz@ball]{ball}{\pgfqpoint{-10bp}{10bp}}{%
 color(0bp)=(tikz@ball!15!white);
 color(9bp)=(tikz@ball!75!white);
 color(18bp)=(tikz@ball!70!black);
 color(25bp)=(tikz@ball!50!black);
 color(50bp)=(black)}%

\pgfutil@colorlet{tikz@ball}{blue}%

\pgfdeclareradialshading[tikz@radial@inner,tikz@radial@outer]{radial}{\pgfpointorigin}{%
 color(0bp)=(tikz@radial@inner);
 color(25bp)=(tikz@radial@outer);
 color(50bp)=(tikz@radial@outer)}%

\pgfutil@colorlet{tikz@radial@inner}{gray}%
\pgfutil@colorlet{tikz@radial@outer}{white}%


\tikzset{
  pin distance/.store in=\tikz@pin@distance,
  pin distance=3ex,
  pin position/.store in=\tikz@pin@default@pos,
  pin position=above,
  pin edge/.store in=\tikz@pin@edge@style,
  pin edge={},
  tikz@pin@post/.code={\global\let\tikz@pin@edge@style@smuggle=\tikz@pin@edge@style},
  tikz@pre@pin@edge/.code={%
    \toks0=\expandafter{\tikz@pin@edge@style@smuggle}%
    \edef\pgf@marshal{\noexpand\tikzset{tikz@pin@options/.style={\the\toks0}}}%
    \pgf@marshal
  },%
}%

\tikzset{%
  pin/.code={%
    \begingroup
      \ifnum\the\catcode`\:=\active\relax
        \def\tikz@next{%
          \endgroup
          \tikz@parse@pin@active@i{#1}}%
      \else
        \def\tikz@next{%
          \endgroup
          \pgfutil@ifnextchar[%
            {\tikz@parse@pin@nonactive}
            {\tikz@parse@pin@nonactive[]}#1:\pgf@nil}%
      \fi
    \tikz@next}}%

\begingroup
  \catcode`\:=\active\relax

  \gdef\tikz@parse@pin@active@i#1{%
    \pgfutil@ifnextchar[%
      {\tikz@parse@pin@active}
      {\tikz@parse@pin@active[]}#1:\pgf@nil}%

  \long\gdef\tikz@parse@pin@active[#1]#2:#3\pgf@nil{%
    \def\tikz@temp{#3}%
    \ifx\tikz@temp\pgfutil@empty
      \tikz@@parse@pin@active[#1]\tikz@pin@default@pos:#2:\pgf@nil%
    \else
      \tikz@@parse@pin@active[#1]#2:#3\pgf@nil%
    \fi}%

  \long\gdef\tikz@@parse@pin@active[#1]#2:#3:\pgf@nil{%
    \tikzset{%
      append after command = {%
        \bgroup
          [current point is local = true]
          \pgfextra{\let\tikz@save@last@node=\tikzlastnode\tikz@node@is@a@labelfalse}%
          node [tikz@label@angle = #2,
                anchor=@auto,
                every pin,
                #1,
                append after command = {%
                  (\tikz@save@last@node)
                  edge [every pin edge,
                        tikz@pre@pin@edge,
                        tikz@pin@options]
                  (\tikzlastnode)},
                tikz@label@post = \tikz@pin@distance,
                tikz@pin@post] {#3}
        \egroup}}}%
\endgroup

\long\def\tikz@parse@pin@nonactive[#1]#2:#3\pgf@nil{%
  \def\tikz@temp{#3}%
  \ifx\tikz@temp\pgfutil@empty
    \tikz@@parse@pin@nonactive[#1]\tikz@pin@default@pos:#2:\pgf@nil%
  \else
    \tikz@@parse@pin@nonactive[#1]#2:#3\pgf@nil%
  \fi}%

\long\def\tikz@@parse@pin@nonactive[#1]#2:#3:\pgf@nil{%
  \tikzset{%
    append after command = {%
      \bgroup
        [current point is local = true]
        \pgfextra{\let\tikz@save@last@node=\tikzlastnode\tikz@node@is@a@labelfalse}%
        node [tikz@label@angle = #2,
              anchor=@auto,
              every pin,
              #1,
              append after command = {%
                (\tikz@save@last@node)
                edge [every pin edge,
                      tikz@pre@pin@edge,
                      tikz@pin@options]
                (\tikzlastnode)},
              tikz@label@post = \tikz@pin@distance,
              tikz@pin@post] {#3}
      \egroup}}}%


\tikzset{
  label distance/.store in=\tikz@label@distance,
  label distance=0pt,
  label position/.store in=\tikz@label@default@pos,
  label position=above,
  absolute/.is if=tikz@absolute,
  tikz@label@angle/.store in=\tikz@label@angle
}%

\newif\iftikz@absolute
\def\tikz@on@text{center}%

\tikzset{tikz@label@post/.code 2 args={
  \edef\tikz@label@angle{\tikz@label@angle}%
  \expandafter\pgfkeys@spdef\expandafter\tikz@label@angle\expandafter{\tikz@label@angle}%
  \csname tikz@label@angle@is@\tikz@label@angle\endcsname
  \ifx\tikz@label@angle\tikz@on@text%
    \def\tikz@node@at{\pgfpointanchor{\tikzlastnode}{center}}%
    \def\tikz@anchor{center}%
  \else%
    \iftikz@absolute%
      \pgftransformreset%
      \pgf@process{%
        \pgfpointshapeborder{\tikzlastnode}%
        {\pgfpointadd{\pgfpointanchor{\tikzlastnode}{center}}{\pgfpointpolar{\tikz@label@angle}{1pt}}}}%
      \edef\tikz@node@at{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
      \tikz@compute@direction{\tikz@label@angle}%
      \tikz@addtransform{\pgftransformshift{\pgfpointpolar{\tikz@label@angle}{#1}}}%
    \else%
      \pgf@process{\pgfpointanchor{\tikzlastnode}{\tikz@label@angle}}%
      \edef\tikz@node@at{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
      \pgf@xb=\pgf@x%
      \pgf@yb=\pgf@y%
      \pgf@process{\pgfpointanchor{\tikzlastnode}{center}}%
      \pgf@xc=\pgf@x%
      \pgf@yc=\pgf@y%
      \tikz@label@simplefalse%
      \ifdim\pgf@xc=\pgf@xb\relax%
        \ifdim\pgf@yc=\pgf@yb\relax%
          \tikz@label@simpletrue%
        \fi%
      \fi%
      \iftikz@label@simple%
        \tikz@compute@direction{\tikz@label@angle}%
        \tikz@addtransform{\pgftransformshift{\pgfpointpolar{\tikz@label@angle}{#1}}}%
      \else%
        \pgf@process{\pgfpointnormalised{%
            \pgfpointdiff{\pgfpointtransformed{\pgfqpoint{\pgf@xc}{\pgf@yc}}}{\pgfpointtransformed{\pgfqpoint{\pgf@xb}{\pgf@yb}}}}}%
        \edef\pgf@marshal{%
          \noexpand\tikz@addtransform{\noexpand\pgftransformshift{\noexpand\pgfpointscale{#1}{
                \noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}}}%
        \pgf@marshal%
        \pgf@xc=\pgf@x%
        \pgf@yc=\pgf@y%
        \pgf@x=\pgf@yc%
        \pgf@y=-\pgf@xc%
        \ifx\tikz@anchor\tikz@auto@text%
          \tikz@auto@anchor%
        \fi%
      \fi%
    \fi%
  \fi}
}%

\newif\iftikz@label@simple%

\tikzset{%
  label/.code={%
    \begingroup
      \ifnum\the\catcode`\:=\active\relax
        \def\tikz@next{%
          \endgroup
          \tikz@parse@label@active@i{#1}}%
      \else
        \def\tikz@next{%
          \endgroup
          \pgfutil@ifnextchar[%
            {\tikz@parse@label@nonactive}
            {\tikz@parse@label@nonactive[]}#1:\pgf@nil}%
      \fi
    \tikz@next}}%

\begingroup
  \catcode`\:=\active\relax

  \gdef\tikz@parse@label@active@i#1{%
    \pgfutil@ifnextchar[%
      {\tikz@parse@label@active}
      {\tikz@parse@label@active[]}#1:\pgf@nil}%

  \gdef\tikz@parse@label@active[#1]#2:#3\pgf@nil{%
    \def\tikz@temp{#3}%
    \ifx\tikz@temp\pgfutil@empty
      \tikz@@parse@label@active[#1]\tikz@label@default@pos:#2:\pgf@nil%
    \else
      \def\tikz@temp{#2}%
      \ifx\tikz@temp\pgfutil@empty
        \tikz@@parse@label@active[#1]\tikz@label@default@pos:#3\pgf@nil%
      \else
        \tikz@@parse@label@active[#1]#2:#3\pgf@nil%
      \fi
    \fi
  }%

  \gdef\tikz@@parse@label@active[#1]#2:#3:\pgf@nil{%
    \tikzset{%
      append after command = {%
        \bgroup
          [current point is local=true]
          \pgfextra{\let\tikz@save@last@fig@name=\tikz@last@fig@name\tikz@node@is@a@labelfalse}
          node [tikz@label@angle = #2,
                anchor=@auto,
                every label,
                #1,
                tikz@label@post = \tikz@label@distance] {\iftikz@handle@active@nodes\expandafter\scantokens\else\expandafter\pgfutil@firstofone\fi{#3\noexpand}}
          \pgfextra{\global\let\tikz@last@fig@name=\tikz@save@last@fig@name}
        \egroup}}}%
\endgroup

\def\tikz@parse@label@nonactive[#1]#2:#3\pgf@nil{%
  \def\tikz@temp{#3}%
  \ifx\tikz@temp\pgfutil@empty
    \tikz@@parse@label@nonactive[#1]\tikz@label@default@pos:#2:\pgf@nil%
  \else
    \def\tikz@temp{#2}%
    \ifx\tikz@temp\pgfutil@empty
      \tikz@@parse@label@nonactive[#1]\tikz@label@default@pos:#3\pgf@nil%
    \else
      \tikz@@parse@label@nonactive[#1]#2:#3\pgf@nil%
    \fi
  \fi
}%

\def\tikz@@parse@label@nonactive[#1]#2:#3:\pgf@nil{%
  \tikzset{%
    append after command = {%
      \bgroup
        [current point is local=true]
        \pgfextra{\let\tikz@save@last@fig@name=\tikz@last@fig@name\tikz@node@is@a@labelfalse}
        node [tikz@label@angle = #2,
              anchor=@auto,
              every label,
              #1,
              tikz@label@post = \tikz@label@distance] {\iftikz@handle@active@nodes\expandafter\scantokens\else\expandafter\pgfutil@firstofone\fi{#3\noexpand}}
        \pgfextra{\global\let\tikz@last@fig@name=\tikz@save@last@fig@name}
      \egroup}}}%

\expandafter\def\csname tikz@label@angle@is@right\endcsname{\def\tikz@label@angle{0}}%
\expandafter\def\csname tikz@label@angle@is@above right\endcsname{\def\tikz@label@angle{45}}%
\expandafter\def\csname tikz@label@angle@is@above\endcsname{\def\tikz@label@angle{90}}%
\expandafter\def\csname tikz@label@angle@is@above left\endcsname{\def\tikz@label@angle{135}}%
\expandafter\def\csname tikz@label@angle@is@left\endcsname{\def\tikz@label@angle{180}}%
\expandafter\def\csname tikz@label@angle@is@below left\endcsname{\def\tikz@label@angle{225}}%
\expandafter\def\csname tikz@label@angle@is@below\endcsname{\def\tikz@label@angle{270}}%
\expandafter\def\csname tikz@label@angle@is@below right\endcsname{\def\tikz@label@angle{315}}%

\def\tikz@compute@direction#1{%
  \ifx\tikz@anchor\tikz@auto@text%
  \let\tikz@do@auto@anchor=\relax
  \pgfmathsetcount{\c@pgf@counta}{#1}%
  \ifnum\c@pgf@counta<0\relax
    \advance\c@pgf@counta by 360\relax%
  \fi%
  \ifnum\c@pgf@counta>359\relax
    \advance\c@pgf@counta by-360\relax%
  \fi%
  \ifnum\c@pgf@counta<4\relax%
    \def\tikz@anchor{west}%
  \else\ifnum\c@pgf@counta<87\relax%
    \def\tikz@anchor{south west}%
  \else\ifnum\c@pgf@counta<94\relax%
    \def\tikz@anchor{south}%
  \else\ifnum\c@pgf@counta<177\relax%
    \def\tikz@anchor{south east}%
  \else\ifnum\c@pgf@counta<184\relax%
    \def\tikz@anchor{east}%
  \else\ifnum\c@pgf@counta<267\relax%
    \def\tikz@anchor{north east}%
  \else\ifnum\c@pgf@counta<274\relax%
    \def\tikz@anchor{north}%
  \else\ifnum\c@pgf@counta<357\relax%
    \def\tikz@anchor{north west}%
  \else%
    \def\tikz@anchor{west}%
  \fi\fi\fi\fi\fi\fi\fi\fi%
  \fi%
}%
\def\tikz@auto@text{@auto}%

\tikzset{
  name/.code={\edef\tikz@fig@name{\tikz@pp@name{#1}}\let\tikz@id@name\tikz@fig@name},%
  name prefix/.initial=,%
  name suffix/.initial=,%
  local bounding box/.style={/pgf/local bounding box/.expanded=\tikz@pp@name{#1}}
}%
\def\tikz@pp@name#1{\csname pgfk@/tikz/name prefix\endcsname#1\csname pgfk@/tikz/name suffix\endcsname}%


\tikzset{
  node contents/.code=\def\tikz@node@content{#1},
  pic type/.code=\def\tikz@node@content{#1}, %
}%

\tikzset{
  behind path/.code=\def\tikz@whichbox{\tikz@figbox@bg},
  in front of path/.code=\def\tikz@whichbox{\tikz@figbox}
}%
\def\tikz@whichbox{\tikz@figbox}%

\tikzoption{at}{\tikz@scan@one@point\tikz@set@at#1}%
\def\tikz@set@at#1{\def\tikz@node@at{#1}}%

\tikzoption{shape}{\edef\tikz@shape{#1}}%

\tikzoption{nodes}{\tikzset{every node/.append style={#1}}}%

\tikzset{alias/.code={%
    \tikz@fig@mustbenamed
    \begingroup
    \toks0=\expandafter{\tikz@alias}%
    \edef\pgf@temp{\noexpand\pgfnodealias{\tikz@pp@name{#1}}{\noexpand\tikz@fig@name}}%
    \toks1=\expandafter{\pgf@temp}%
    \xdef\pgf@marshal{%
        \noexpand\def\noexpand\tikz@alias{\the\toks0 \the\toks1 }%
    }%
    \endgroup
    \pgf@marshal
}}%

\def\tikzaddafternodepathoption#1{#1\tikzset{prefix after command={\pgfextra{#1}}}}%
\tikzset{after node path/.style={append after command={#1}}}%


\tikzset{pic text/.store in=\tikzpictext}%
\let\tikzpictext\relax
\tikzset{pic text options/.store in=\tikzpictextoptions}%
\let\tikzpictextoptions\pgfutil@empty



\tikzoption{anchor}{\def\tikz@anchor{#1}\let\tikz@do@auto@anchor=\relax}%

\tikzoption{left}[]{\def\tikz@anchor{east}\tikz@possibly@transform{x}{-}{#1}}%
\tikzoption{right}[]{\def\tikz@anchor{west}\tikz@possibly@transform{x}{}{#1}}%
\tikzoption{above}[]{\def\tikz@anchor{south}\tikz@possibly@transform{y}{}{#1}}%
\tikzoption{below}[]{\def\tikz@anchor{north}\tikz@possibly@transform{y}{-}{#1}}%
\tikzoption{above left}[]%
  {\def\tikz@anchor{south east}%
    \tikz@possibly@transform{x}{-}{#1}\tikz@possibly@transform{y}{}{#1}}%
\tikzoption{above right}[]%
  {\def\tikz@anchor{south west}%
    \tikz@possibly@transform{x}{}{#1}\tikz@possibly@transform{y}{}{#1}}%
\tikzoption{below left}[]%
  {\def\tikz@anchor{north east}%
    \tikz@possibly@transform{x}{-}{#1}\tikz@possibly@transform{y}{-}{#1}}%
\tikzoption{below right}[]%
  {\def\tikz@anchor{north west}%
    \tikz@possibly@transform{x}{}{#1}\tikz@possibly@transform{y}{-}{#1}}%
\tikzset{centered/.code=\def\tikz@anchor{center}}%

\tikzoption{node distance}{\def\tikz@node@distance{#1}}%
\def\tikz@node@distance{1cm}%

\tikzoption{above of}{\tikz@of{#1}{90}}%
\tikzoption{below of}{\tikz@of{#1}{-90}}%
\tikzoption{left of}{\tikz@of{#1}{180}}%
\tikzoption{right of}{\tikz@of{#1}{0}}%
\tikzoption{above left of}{\tikz@of{#1}{135}}%
\tikzoption{below left of}{\tikz@of{#1}{-135}}%
\tikzoption{above right of}{\tikz@of{#1}{45}}%
\tikzoption{below right of}{\tikz@of{#1}{-45}}%
\def\tikz@of#1#2{%
  \def\tikz@anchor{center}%
  \let\tikz@do@auto@anchor=\relax%
  \tikz@addtransform{%
    \expandafter\tikz@extract@node@dist\tikz@node@distance and\pgf@stop%
    \pgftransformshift{\pgfpointpolar{#2}{\tikz@extracted@node@distance}}}%
  \def\tikz@node@at{\pgfpointanchor{\tikz@pp@name{#1}}{center}}}%
\def\tikz@extract@node@dist#1and#2\pgf@stop{%
  \def\tikz@extracted@node@distance{#1}}%

\tikzset{
  transform shape nonlinear/.is choice,
  transform shape nonlinear/.default=true,
  transform shape nonlinear/true/.code=\let\tikz@nlt\relax,
  transform shape nonlinear/false/.code=\def\tikz@nlt{\pgfapproximatenonlineartranslation},
  transform shape nonlinear=false,
}%


\tikzoption{transform shape}[true]{%
  \csname tikz@fullytransformed#1\endcsname%
  \iftikz@fullytransformed%
    \pgfresetnontranslationattimefalse%
  \else%
    \pgfresetnontranslationattimetrue%
  \fi%
}%

\newif\iftikz@fullytransformed
\pgfresetnontranslationattimetrue%

\def\tikz@anchor{center}%
\def\tikz@shape{rectangle}%

\def\tikz@possibly@transform#1#2#3{%
  \let\tikz@do@auto@anchor=\relax%
  \def\tikz@test{#3}%
  \ifx\tikz@test\pgfutil@empty%
  \else%
    \pgfmathsetlength{\pgf@x}{#3}%
    \pgf@x=#2\pgf@x\relax%
    \edef\tikz@marshal{\noexpand\tikz@addtransform{%
        \expandafter\noexpand\csname  pgftransform#1shift\endcsname{\the\pgf@x}}}%
    \tikz@marshal%
  \fi%
}%


\tikzoption{remember picture}[true]{\csname pgfrememberpicturepositiononpage#1\endcsname}
\tikzset{
    overlay/.is choice,
    overlay/true/.code={\pgf@relevantforpicturesizefalse},
    overlay/false/.code={\pgf@relevantforpicturesizetrue},
    overlay/.default=true
}



\tikzoption{sloped}[true]{\csname pgfslopedattime#1\endcsname}%
\tikzoption{allow upside down}[true]{\csname pgfallowupsidedownattime#1\endcsname}%

\tikzoption{pos}{\edef\tikz@time{#1}\ifx\tikz@time\pgfutil@empty\else\pgfmathsetmacro\tikz@time{\tikz@time}\fi}%

\tikzoption{auto}[]{\csname tikz@install@auto@anchor@#1\endcsname}%
\tikzoption{swap}[]{%
  \def\tikz@temp{left}%
  \ifx\tikz@auto@anchor@direction\tikz@temp%
    \def\tikz@auto@anchor@direction{right}%
  \else%
    \def\tikz@auto@anchor@direction{left}%
  \fi%
}%
\tikzset{'/.style=swap}%


\def\tikz@install@auto@anchor@{\let\tikz@do@auto@anchor=\tikz@auto@anchor@on}%
\def\tikz@install@auto@anchor@false{\let\tikz@do@auto@anchor=\relax}%
\def\tikz@install@auto@anchor@left{\let\tikz@do@auto@anchor=\tikz@auto@anchor@on\def\tikz@auto@anchor@direction{left}}%
\def\tikz@install@auto@anchor@right{\let\tikz@do@auto@anchor=\tikz@auto@anchor@on\def\tikz@auto@anchor@direction{right}}%

\let\tikz@do@auto@anchor=\relax%

\def\tikz@auto@anchor@on{\csname tikz@auto@anchor@\tikz@auto@anchor@direction\endcsname}

\def\tikz@auto@anchor@left{\tikz@auto@pre\tikz@auto@anchor\tikz@auto@post}%
\def\tikz@auto@anchor@right{\tikz@auto@pre\tikz@auto@anchor@prime\tikz@auto@post}%

\def\tikz@auto@anchor@direction{left}%

\tikzoption{text}{\def\tikz@textcolor{#1}}%
\tikzoption{font}{\def\tikz@textfont{#1}}%
\tikzoption{node font}{\def\tikz@node@textfont{#1}}%
\tikzoption{text opacity}{\def\tikz@textopacity{#1}}%
\tikzoption{text width}{\def\tikz@text@width{#1}}%
\tikzoption{text height}{\def\tikz@text@height{#1}}%
\tikzoption{text depth}{\def\tikz@text@depth{#1}}%
\tikzoption{text ragged}[]%
{\def\tikz@text@action{\pgfutil@raggedright\rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax}}%
\tikzoption{text badly ragged}[]{\def\tikz@text@action{\pgfutil@raggedright\relax}}%
\tikzoption{text ragged left}[]%
{\def\tikz@text@action{\pgfutil@raggedleft\leftskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax}}%
\tikzoption{text badly ragged left}[]{\def\tikz@text@action{\pgfutil@raggedleft\relax}}%
\tikzoption{text justified}[]{\def\tikz@text@action{\leftskip0pt\rightskip0pt\relax}}%
\tikzoption{text centered}[]{\def\tikz@text@action{%
  \leftskip0pt plus2em%
  \rightskip0pt plus2em%
  \spaceskip.3333em \xspaceskip.5em%
  \parfillskip=0pt%
  \iftikz@warn@for@narrow@centered\else\hbadness10000\fi%
  \let\\=\@centercr%
  \relax}}%
\tikzoption{text badly centered}[]%
{\def\tikz@text@action{%
  \let\\=\@centercr%
  \parfillskip=0pt%
  \rightskip\pgfutil@flushglue%
  \leftskip\pgfutil@flushglue\relax}}%
\tikzset{badness warnings for centered text/.is if=tikz@warn@for@narrow@centered}%
\newif\iftikz@warn@for@narrow@centered

\def\tikz@text@reset{%
  \let\tikz@text@width=\pgfutil@empty
  \let\tikz@text@height=\pgfutil@empty
  \let\tikz@text@depth=\pgfutil@empty
  \let\tikz@textcolor=\pgfutil@empty
  \let\tikz@textfont=\pgfutil@empty
  \let\tikz@textopacity=\pgfutil@empty
  \let\tikz@node@textfont=\pgfutil@empty
  \def\tikz@text@action{\pgfutil@raggedright\rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax}%
}
\tikz@text@reset


\tikzset{
  node halign header/.initial=,
  align/.is choice,
  align/left/.style  ={text ragged,node halign header=\tikz@align@left@header},
  align/flush left/.style  ={text badly ragged,node halign header=\tikz@align@left@header},
  align/right/.style ={text ragged left,node halign header=\tikz@align@right@header},
  align/flush right/.style ={text badly ragged left,node halign header=\tikz@align@right@header},
  align/center/.style={text centered,node halign header=\tikz@align@center@header},
  align/flush center/.style={text badly centered,node halign header=\tikz@align@center@header},
  align/justify/.style ={text justified,node halign header=\tikz@align@left@header},
  align/none/.style ={text justified,node halign header=},
}%
\def\tikz@align@left@header{##\hfil\cr}%
\def\tikz@align@right@header{\hfil##\cr}%
\def\tikz@align@center@header{\hfil##\hfil\cr}%



\tikzoption{arrows}{\tikz@processarrows{#1}}%


\tikzoption{>}{\pgfdeclarearrow{name=<->,means={#1}}}%
\pgfdeclarearrow{name=|<->|,   means={>[sep=0pt].|}}%

\tikzoption{shorten <}{\pgfsetshortenstart{#1}}%
\tikzoption{shorten >}{\pgfsetshortenend{#1}}%

\def\tikz@processarrows#1{%
  \def\tikz@current@arrows{#1}%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\pgfutil@empty%
  \else%
    \pgfsetarrows{#1}%
  \fi%
}%

\def\tikz@current@arrows{-}%

\tikzoption{bend}{\tikz@scan@one@point\tikz@set@parabola@bend#1\relax}%
\tikzoption{bend pos}{\def\tikz@parabola@bend@factor{#1}}%
\tikzoption{parabola height}{%
  \def\tikz@parabola@bend@factor{.5}%
  \def\tikz@parabola@bend{\pgfpointadd{\pgfpoint{0pt}{#1}}{\tikz@last@position@saved}}}%

\def\tikz@parabola@bend{\tikz@last@position@saved}%
\def\tikz@parabola@bend@factor{0}%

\def\tikz@set@parabola@bend#1{\def\tikz@parabola@bend{#1}}%

\tikzoption{domain}{\edef\tikz@plot@domain{#1}\expandafter\tikz@plot@samples@recalc\tikz@plot@domain\relax}%
\tikzoption{range}{\def\tikz@plot@range{#1}}%
\tikzoption{yrange}{\def\tikz@plot@range{#1}}%
\let\tikz@plot@range=\pgfutil@empty
\tikzoption{xrange}{\def\tikz@plot@xrange{#1}}%
\let\tikz@plot@xrange=\pgfutil@empty

\tikzoption{smooth}[]{\let\tikz@plot@handler=\pgfplothandlercurveto}%
\tikzoption{smooth cycle}[]{\let\tikz@plot@handler=\pgfplothandlerclosedcurve}%
\tikzoption{sharp plot}[]{\let\tikz@plot@handler\pgfplothandlerlineto}%
\tikzoption{sharp cycle}[]{\let\tikz@plot@handler\pgfplothandlerpolygon}%

\tikzoption{tension}{\pgfsetplottension{#1}}%

\tikzoption{xcomb}[]{\let\tikz@plot@handler=\pgfplothandlerxcomb}%
\tikzoption{ycomb}[]{\let\tikz@plot@handler=\pgfplothandlerycomb}%
\tikzoption{polar comb}[]{\let\tikz@plot@handler=\pgfplothandlerpolarcomb}%
\tikzoption{ybar}[]{\let\tikz@plot@handler=\pgfplothandlerybar}%
\tikzoption{ybar interval}[]{\let\tikz@plot@handler=\pgfplothandlerybarinterval}%
\tikzoption{xbar interval}[]{\let\tikz@plot@handler=\pgfplothandlerxbarinterval}%
\tikzoption{xbar}[]{\let\tikz@plot@handler=\pgfplothandlerxbar}%
\tikzoption{const plot}[]{\let\tikz@plot@handler=\pgfplothandlerconstantlineto}%
\tikzoption{const plot mark left}[]{\let\tikz@plot@handler=\pgfplothandlerconstantlineto}%
\tikzoption{const plot mark right}[]{\let\tikz@plot@handler=\pgfplothandlerconstantlinetomarkright}%
\tikzoption{const plot mark mid}[]{\let\tikz@plot@handler=\pgfplothandlerconstantlinetomarkmid}%
\tikzoption{jump mark right}[]{\let\tikz@plot@handler=\pgfplothandlerjumpmarkright}%
\tikzoption{jump mark mid}[]{\let\tikz@plot@handler=\pgfplothandlerjumpmarkmid}%
\tikzoption{jump mark left}[]{\let\tikz@plot@handler=\pgfplothandlerjumpmarkleft}%

\tikzoption{raw gnuplot}[true]{\csname tikz@plot@raw@gnuplot#1\endcsname}%
\tikzoption{prefix}{\def\tikz@plot@prefix{#1}}%
\tikzoption{id}{\def\tikz@plot@id{#1}}%

\tikzoption{samples}{\pgfmathsetmacro\tikz@plot@samples{max(2,#1)}\expandafter\tikz@plot@samples@recalc\tikz@plot@domain\relax}%
\tikzoption{samples at}{\def\tikz@plot@samplesat{#1}}%
\tikzoption{parametric}[true]{\csname tikz@plot@parametric#1\endcsname}%

\tikzoption{variable}{\def\tikz@plot@var{#1}}%

\tikzoption{only marks}[]{\let\tikz@plot@handler\pgfplothandlerdiscard}%

\tikzoption{mark}{%
    \def\tikz@plot@mark{#1}%
    \def\tikz@temp{none}%
    \ifx\tikz@temp\tikz@plot@mark
        \let\tikz@plot@mark=\pgfutil@empty
    \fi
}%
\tikzset{
    no marks/.style={mark=none},%
    no markers/.style={mark=none},%
    every mark/.style={},
    mark options/.style={%
        every mark/.style={#1}%
    }}%
\tikzoption{mark size}{\pgfsetplotmarksize{#1}}%

\tikzoption{mark indices}{\def\tikz@mark@list{#1}}%
\tikzoption{mark phase}{\pgfsetplotmarkphase{#1}}%
\tikzoption{mark repeat}{\pgfsetplotmarkrepeat{#1}}%

\let\tikz@mark@list=\pgfutil@empty

\let\tikz@plot@handler=\pgfplothandlerlineto
\let\tikz@plot@mark=\pgfutil@empty

\def\tikz@plot@samples{25}%
\def\tikz@plot@domain{-5:5}%
\def\tikz@plot@var{\x}%
\def\tikz@plot@samplesat{-5,-4.5833333,...,5}%
\def\tikz@plot@samples@recalc#1:#2\relax{%
  \begingroup
  \pgfmathparse{#1}%
  \let\tikz@temp@start=\pgfmathresult%
  \pgfmathparse{#2}%
  \let\tikz@temp@end=\pgfmathresult%
  \pgfmathsetmacro\tikz@temp@diff{(\tikz@temp@end-\tikz@temp@start)/(\tikz@plot@samples-1)}%
  \pgfkeys{/pgf/fpu/output format/fixed/.try}%
  \pgfmathsetmacro\tikz@temp@diff@abs{abs(\tikz@temp@diff)}%
  \ifdim\tikz@temp@diff@abs pt<0.0001pt\relax%
    \edef\tikz@plot@samplesat{\tikz@temp@start,\tikz@temp@end}%
  \else%
    \pgfmathparse{\tikz@temp@start+\tikz@temp@diff}%
    \edef\tikz@plot@samplesat{\tikz@temp@start,\pgfmathresult,...,\tikz@temp@end}%
  \fi%
  \pgfmath@smuggleone\tikz@plot@samplesat
  \endgroup
}%


\def\tikz@plot@prefix{\jobname.}%
\def\tikz@plot@id{pgf-plot}%

\newif\iftikz@plot@parametric
\newif\iftikz@plot@raw@gnuplot


\tikzoption{to path}{\def\tikz@to@path{#1}}%

\def\tikz@to@path{-- (\tikztotarget) \tikztonodes}%

\tikzset{edge macro/.store in=\tikz@edge@macro}%
\let\tikz@edge@macro\pgfutil@empty

\tikzset{
  edge node/.code={
    \expandafter\def\expandafter\tikz@tonodes\expandafter{\tikz@tonodes #1}
  },
  edge label/.style={/tikz/edge node={node[auto]{#1}}},
  edge label'/.style={/tikz/edge node={node[auto,swap]{#1}}},
}%


\tikzset{
  append after command/.code=\expandafter\def\expandafter\tikz@after@path\expandafter{\tikz@after@path#1},
  prefix after command/.code={%
    \def\tikz@temp{#1}%
    \expandafter\expandafter\expandafter\def%
    \expandafter\expandafter\expandafter\tikz@after@path%
    \expandafter\expandafter\expandafter{%
      \expandafter\tikz@temp\tikz@after@path}%
  },
}%
\let\tikz@after@path\pgfutil@empty


\newif\iftikz@child@missing
\pgfkeys{/tikz/missing/.is if=tikz@child@missing}%

\tikzset{edge from parent macro/.initial=\tikz@edge@from@parent@macro}%
\def\tikz@edge@from@parent@macro#1#2{
  [style=edge from parent, #1, /utils/exec=\tikz@node@is@a@labeltrue] \tikz@edge@to@parent@path #2}%

\tikzoption{edge from parent path}{\def\tikz@edge@to@parent@path{#1}}%

\tikzoption{parent anchor}{\def\tikzparentanchor{.#1}\ifx\tikzparentanchor\tikz@border@text\let\tikzparentanchor\pgfutil@empty\fi}%
\tikzoption{child anchor}{\def\tikzchildanchor{.#1}\ifx\tikzchildanchor\tikz@border@text\let\tikzchildanchor\pgfutil@empty\fi}%

\tikzoption{level distance}{\pgfmathsetlength\tikzleveldistance{#1}}%
\tikzoption{sibling distance}{\pgfmathsetlength\tikzsiblingdistance{#1}}%

\tikzoption{growth function}{\let\tikz@grow=#1}%

\tikzset{grow siblings on line/.style={growth function=\tikz@grow@direction}}%

\tikzoption{growth parent anchor}{\def\tikz@growth@anchor{#1}}%
\tikzoption{grow}{\tikz@set@growth{#1}\edef\tikz@special@level{\the\tikztreelevel}}%
\tikzoption{grow'}{\tikz@set@growth{#1}\tikz@swap@growth\edef\tikz@special@level{\the\tikztreelevel}}%

\def\tikz@growth@anchor{center}%

\def\tikz@special@level{-1}%

\def\tikz@swap@growth{%
  \let\tikz@temp=\tikz@angle@grow@right%
  \let\tikz@angle@grow@right=\tikz@angle@grow@left%
  \let\tikz@angle@grow@left=\tikz@temp%
}%

\def\tikz@set@growth#1{%
  \let\tikz@grow=\tikz@grow@direction%
  \expandafter\ifx\csname tikz@grow@direction@#1\endcsname\relax%
    \c@pgf@counta=#1\relax%
  \else%
    \c@pgf@counta=\csname tikz@grow@direction@#1\endcsname%
  \fi%
  \edef\tikz@angle@grow{\the\c@pgf@counta}%
  \advance\c@pgf@counta by-90\relax%
  \edef\tikz@angle@grow@left{\the\c@pgf@counta}%
  \advance\c@pgf@counta by180\relax%
  \edef\tikz@angle@grow@right{\the\c@pgf@counta}%
}%

\def\tikz@border@text{.border}%
\let\tikzparentanchor=\pgfutil@empty
\let\tikzchildanchor=\pgfutil@empty
\def\tikz@edge@to@parent@path{(\tikzparentnode\tikzparentanchor) -- (\tikzchildnode\tikzchildanchor)}%

\tikzleveldistance=15mm%
\tikzsiblingdistance=15mm%

\def\tikz@grow@direction@down{-90}%
\def\tikz@grow@direction@up{90}%
\def\tikz@grow@direction@left{180}%
\def\tikz@grow@direction@right{0}%

\def\tikz@grow@direction@south{-90}%
\def\tikz@grow@direction@north{90}%
\def\tikz@grow@direction@west{180}%
\def\tikz@grow@direction@east{0}%

\expandafter\def\csname tikz@grow@direction@north east\endcsname{45}%
\expandafter\def\csname tikz@grow@direction@north west\endcsname{135}%
\expandafter\def\csname tikz@grow@direction@south east\endcsname{-45}%
\expandafter\def\csname tikz@grow@direction@south west\endcsname{-135}%

\def\tikz@grow@direction{%
  \pgftransformshift{\pgfpointpolar{\tikz@angle@grow}{\tikzleveldistance}}%
  \ifnum\tikztreelevel=\tikz@special@level%
  \else%
    \pgf@xc=.5\tikzsiblingdistance%
    \c@pgf@counta=\tikznumberofchildren%
    \advance\c@pgf@counta by1\relax%
    \pgfutil@tempdima=\c@pgf@counta\pgf@xc%
    \pgftransformshift{\pgfpointpolar{\tikz@angle@grow@left}{\pgfutil@tempdima}}%
    \pgftransformshift{\pgfpointpolar{\tikz@angle@grow@right}{\tikznumberofcurrentchild\tikzsiblingdistance}}%
  \fi%
}%

\tikzset{grow=down}%


\tikzset{snake/.code=\tikzerror{You need to say \string\usetikzlibrary{snakes}}}%

\tikzset{decorate/.code=\tikzerror{You need to load a  decoration library}}%

\usepgfmodule{matrix}%

\tikzoption{matrix}[true]{\csname tikz@is@matrix#1\endcsname}%

\tikzoption{matrix anchor}{\def\tikz@matrix@anchor{#1}}%

\tikzoption{column sep}{\def\pgfmatrixcolumnsep{#1}}%
\tikzoption{row sep}{\def\pgfmatrixrowsep{#1}}%

\tikzoption{cells}{\tikzset{every cell/.append style={#1}}}%

\tikzoption{ampersand replacement}{\def\tikz@ampersand@replacement{#1}}%

\newif\iftikz@is@matrix
\let\tikz@matrix@anchor=\pgfutil@empty
\let\tikz@ampersand@replacement=\pgfutil@empty


\tikzset{%
  handle active characters in code/.is if=tikz@handle@active@code,
  handle active characters in nodes/.is if=tikz@handle@active@nodes,
}%
\newif\iftikz@handle@active@code
\newif\iftikz@handle@active@nodes


\tikzoption{execute at begin picture}{\expandafter\def\expandafter\tikz@atbegin@picture\expandafter{\tikz@atbegin@picture#1}}%
\tikzoption{execute at end picture}{\expandafter\def\expandafter\tikz@atend@picture\expandafter{\tikz@atend@picture#1}}%
\tikzoption{execute at begin scope}{\expandafter\def\expandafter\tikz@atbegin@scope\expandafter{\tikz@atbegin@scope#1}}%
\tikzoption{execute at end scope}{\expandafter\def\expandafter\tikz@atend@scope\expandafter{\tikz@atend@scope#1}}%
\tikzoption{execute at begin to}{\expandafter\def\expandafter\tikz@atbegin@to\expandafter{\tikz@atbegin@to#1}}%
\tikzoption{execute at end to}{\expandafter\def\expandafter\tikz@atend@to\expandafter{\tikz@atend@to#1}}%
\tikzoption{execute at begin node}{\expandafter\def\expandafter\tikz@atbegin@node\expandafter{\tikz@atbegin@node#1}}%
\tikzoption{execute at end node}{\expandafter\def\expandafter\tikz@atend@node\expandafter{\tikz@atend@node#1}}%
\tikzoption{execute at begin matrix}{\expandafter\def\expandafter\tikz@atbegin@matrix\expandafter{\tikz@atbegin@matrix#1}}%
\tikzoption{execute at end matrix}{\expandafter\def\expandafter\tikz@atend@matrix\expandafter{\tikz@atend@matrix#1}}%
\tikzoption{execute at begin cell}{\expandafter\def\expandafter\tikz@atbegin@cell\expandafter{\tikz@atbegin@cell#1}}%
\tikzoption{execute at end cell}{\expandafter\def\expandafter\tikz@atend@cell\expandafter{\tikz@atend@cell#1}}%
\tikzoption{execute at empty cell}{\expandafter\def\expandafter\tikz@at@emptycell\expandafter{\tikz@at@emptycell#1}}%

\let\tikz@atbegin@picture=\pgfutil@empty
\let\tikz@atend@picture=\pgfutil@empty
\let\tikz@atbegin@scope=\pgfutil@empty
\let\tikz@atend@scope=\pgfutil@empty
\let\tikz@atbegin@to=\pgfutil@empty
\let\tikz@atend@to=\pgfutil@empty
\let\tikz@atbegin@node=\pgfutil@empty
\let\tikz@atend@node=\pgfutil@empty
\let\tikz@atbegin@cell=\pgfutil@empty
\let\tikz@atend@cell=\pgfutil@empty
\let\tikz@at@emptycell=\pgfutil@empty
\let\tikz@atbegin@matrix=\pgfutil@empty
\let\tikz@atend@matrix=\pgfutil@empty


\tikzset{preaction/.code=\expandafter\def\expandafter\tikz@preactions\expandafter{\tikz@preactions\tikz@extra@preaction{#1}}}%
\tikzset{postaction/.code=\expandafter\def\expandafter\tikz@postactions\expandafter{\tikz@postactions\tikz@extra@postaction{#1}}}%
\let\tikz@preactions=\pgfutil@empty
\let\tikz@postactions=\pgfutil@empty

\tikzoption{set style}{\tikzstyle#1}%

\def\tikzstyle{\pgfutil@ifnextchar\bgroup\tikz@style@parseA\tikz@style@parseB}%
\def\tikz@style@parseB#1={\tikz@style@parseA{#1}=}%
\def\tikz@style@parseA#1#2=#3[#4]{%
  \pgfutil@in@[{#2}%
  \ifpgfutil@in@%
    \tikz@style@parseC{#1}#2={#4}%
  \else%
    \tikz@style@parseD{#1}#2={#4}%
  \fi%
}%

\def\tikz@style@parseC#1[#2]#3=#4{%
  \pgfkeys{/tikz/#1/.default={#2}}%
  \pgfutil@in@+{#3}%
  \ifpgfutil@in@%
    \pgfkeys{/tikz/#1/.append style={#4}}%
  \else%
    \pgfkeys{/tikz/#1/.style={#4}}%
  \fi}%
\def\tikz@style@parseD#1#2=#3{%
  \pgfutil@in@+{#2}%
  \ifpgfutil@in@%
    \pgfkeys{/tikz/#1/.append style={#3}}%
  \else%
    \pgfkeys{/tikz/#1/.style={#3}}%
  \fi}%



\tikzset{help lines/.style=              {color=gray,line width=0.2pt}}%

\tikzset{every picture/.style=           {}}%
\tikzset{every path/.style=              {}}%
\tikzset{every scope/.style=             {}}%
\tikzset{every plot/.style=              {}}%
\tikzset{every node/.style=              {}}%
\tikzset{every child/.style=             {}}%
\tikzset{every child node/.style=        {}}%
\tikzset{every to/.style=                {}}%
\tikzset{every cell/.style=              {}}%
\tikzset{every matrix/.style=            {}}%
\tikzset{every edge/.style=              {draw}}%
\tikzset{every label/.style=             {draw=none,fill=none}}%
\tikzset{every pin/.style=               {draw=none,fill=none}}%
\tikzset{every pin edge/.style=          {help lines}}%

\tikzset{ultra thin/.style=              {line width=0.1pt}}%
\tikzset{very thin/.style=               {line width=0.2pt}}%
\tikzset{thin/.style=                    {line width=0.4pt}}%
\tikzset{semithick/.style=               {line width=0.6pt}}%
\tikzset{thick/.style=                   {line width=0.8pt}}%
\tikzset{very thick/.style=              {line width=1.2pt}}%
\tikzset{ultra thick/.style=             {line width=1.6pt}}%

\tikzset{solid/.style=                   {dash pattern=}}%
\tikzset{dotted/.style=                  {dash pattern=on \pgflinewidth off 2pt}}%
\tikzset{densely dotted/.style=          {dash pattern=on \pgflinewidth off 1pt}}%
\tikzset{loosely dotted/.style=          {dash pattern=on \pgflinewidth off 4pt}}%
\tikzset{dashed/.style=                  {dash pattern=on 3pt off 3pt}}%
\tikzset{densely dashed/.style=          {dash pattern=on 3pt off 2pt}}%
\tikzset{loosely dashed/.style=          {dash pattern=on 3pt off 6pt}}%
\tikzset{dashdotted/.style=              {dash pattern=on 3pt off 2pt on \the\pgflinewidth off 2pt}}%
\tikzset{dash dot/.style=                {dash pattern=on 3pt off 2pt on \the\pgflinewidth off 2pt}}%
\tikzset{densely dashdotted/.style=      {dash pattern=on 3pt off 1pt on \the\pgflinewidth off 1pt}}%
\tikzset{densely dash dot/.style=        {dash pattern=on 3pt off 1pt on \the\pgflinewidth off 1pt}}%
\tikzset{loosely dashdotted/.style=      {dash pattern=on 3pt off 4pt on \the\pgflinewidth off 4pt}}%
\tikzset{loosely dash dot/.style=        {dash pattern=on 3pt off 4pt on \the\pgflinewidth off 4pt}}%
\tikzset{dashdotdotted/.style=           {dash pattern=on 3pt off 2pt on \the\pgflinewidth off 2pt on \the\pgflinewidth off 2pt}}%
\tikzset{densely dashdotdotted/.style=   {dash pattern=on 3pt off 1pt on \the\pgflinewidth off 1pt on \the\pgflinewidth off 1pt}}%
\tikzset{loosely dashdotdotted/.style=   {dash pattern=on 3pt off 4pt on \the\pgflinewidth off 4pt on \the\pgflinewidth off 4pt}}%
\tikzset{dash dot dot/.style=         {dash pattern=on 3pt off 2pt on \the\pgflinewidth off 2pt on \the\pgflinewidth off 2pt}}%
\tikzset{densely dash dot dot/.style=   {dash pattern=on 3pt off 1pt on \the\pgflinewidth off 1pt on \the\pgflinewidth off 1pt}}%
\tikzset{loosely dash dot dot/.style=   {dash pattern=on 3pt off 4pt on \the\pgflinewidth off 4pt on \the\pgflinewidth off 4pt}}%


\tikzset{transparent/.style=             {opacity=0}}%
\tikzset{ultra nearly transparent/.style={opacity=0.05}}%
\tikzset{very nearly transparent/.style= {opacity=0.1}}%
\tikzset{nearly transparent/.style=      {opacity=0.25}}%
\tikzset{semitransparent/.style=         {opacity=0.5}}%
\tikzset{nearly opaque/.style=           {opacity=0.75}}%
\tikzset{very nearly opaque/.style=      {opacity=0.9}}%
\tikzset{ultra nearly opaque/.style=     {opacity=0.95}}%
\tikzset{opaque/.style=                  {opacity=1}}%

\tikzset{at start/.style=                {pos=0}}%
\tikzset{very near start/.style=         {pos=0.125}}%
\tikzset{near start/.style=              {pos=0.25}}%
\tikzset{midway/.style=                  {pos=0.5}}%
\tikzset{near end/.style=                {pos=0.75}}%
\tikzset{very near end/.style=           {pos=0.875}}%
\tikzset{at end/.style=                  {pos=1}}%

\tikzset{bend at start/.style=           {bend pos=0,bend={+(0,0)}}}%
\tikzset{bend at end/.style=             {bend pos=1,bend={+(0,0)}}}%

\tikzset{edge from parent/.style=        {draw}}%



\tikzset{
  animate/.code=\tikzerror{You need to say \string\usetikzlibrary{animations} to use animations}
}

\newif\iftikz@is@node
\let\tikz@id@name\pgfutil@empty
\let\tikz@id@hook\pgfutil@empty
\def\tikz@call@id@hook{\ifx\tikz@id@hook\pgfutil@empty\else\tikz@id@hook\pgfuseid{\tikz@id@name}\fi}%


\let\tikz@clear@rdf@options\relax
\let\tikz@do@rdf@post@options\relax
\let\tikz@do@rdf@pre@options\relax



\pgfkeys{/tikz/style/.style={#1}}%

\pgfkeys{/tikz/.unknown/.code=%
  \let\tikz@key\pgfkeyscurrentname%
  \pgfkeys{/pgf/\tikz@key/.try={#1}}%
  \ifpgfkeyssuccess%
  \else%
    \expandafter\pgfutil@in@\expandafter!\expandafter{\tikz@key}%
    \ifpgfutil@in@%
      \expandafter\tikz@addoption\expandafter{\expandafter\tikz@compat@color@set\expandafter{\tikz@key}}%
      \edef\tikz@textcolor{\tikz@key}%
    \else%
      \pgfutil@doifcolorelse{\tikz@key}
      {%
        \expandafter\tikz@addoption\expandafter{\expandafter\tikz@compat@color@set\expandafter{\tikz@key}}%
        \edef\tikz@textcolor{\tikz@key}%
      }%
      {%
        \expandafter\pgfutil@in@\expandafter-\expandafter{\tikz@key}%
        \ifpgfutil@in@%
          \expandafter\tikz@processarrows\expandafter{\tikz@key}%
        \else%
          \expandafter\ifx\csname pgf@sh@s@\tikz@key\endcsname\relax%
            \pgfkeys{/errors/unknown key/.expand
              once=\expandafter{\expandafter/\expandafter t\expandafter i\expandafter k\expandafter z\expandafter/\tikz@key}{#1}}%
          \else%
            \edef\tikz@shape{\tikz@key}%
          \fi%
        \fi%
      }%
    \fi%
  \fi%
}%
\def\tikz@compat@color@set#1{%
  \pgfutil@color{#1}\pgfutil@colorlet{pgffillcolor}{#1}%
  \expandafter\let\expandafter\pgf@temp\csname\string\color@pgffillcolor\endcsname%
  \global\let\pgf@strokecolor@global=\pgf@temp
  \global\let\pgf@fillcolor@global=\pgf@temp
}%

\def\tikz@startup@env{%
  \ifnum\the\catcode`\;=\active\relax\expandafter\let\expandafter\tikz@origsemi\expandafter=\tikz@activesemicolon\fi%
  \ifnum\the\catcode`\:=\active\relax\expandafter\let\expandafter\tikz@origcolon\expandafter=\tikz@activecolon\fi%
  \ifnum\the\catcode`\|=\active\relax\expandafter\let\expandafter\tikz@origbar\expandafter=\tikz@activebar\fi%
  \tikz@deactivatthings%
  \iftikz@handle@active@code%
    \tikz@switchoff@shorthands%
  \fi%
}%

\newif\iftikz@inside@picture
\tikz@inside@picturefalse
\def\tikz@check@inside@picture{%
  \iftikz@inside@picture%
    \pgfwarning{Nesting tikzpictures is NOT supported}%
  \fi%
  \tikz@inside@picturetrue%
}

\def\tikzpicture{%
  \begingroup%
    \tikz@startup@env%
    \tikz@collect@scope@anims\tikz@picture}%
\def\tikz@picture[#1]{%
  \pgfpicture%
  \let\tikz@atbegin@picture=\pgfutil@empty%
  \let\tikz@atend@picture=\pgfutil@empty%
  \let\tikz@transform=\relax%
  \def\tikz@time{.5}%
  \tikz@installcommands%
  \scope[every picture,#1]%
  \iftikz@handle@active@code%
    \tikz@switchoff@shorthands%
  \fi%
  \expandafter\tikz@atbegin@picture%
  \tikz@lib@scope@check%
}%
\def\endtikzpicture{%
    \tikz@atend@picture%
    \global\let\pgf@shift@baseline@smuggle=\pgf@baseline%
    \global\let\pgf@trimleft@final@smuggle=\pgf@trimleft%
    \global\let\pgf@trimright@final@smuggle=\pgf@trimright%
    \global\let\pgf@remember@smuggle=\ifpgfrememberpicturepositiononpage%
    \pgf@remember@layerlist@globally
    \endscope%
    \let\pgf@baseline=\pgf@shift@baseline@smuggle%
    \let\pgf@trimleft=\pgf@trimleft@final@smuggle%
    \let\pgf@trimright=\pgf@trimright@final@smuggle%
    \let\ifpgfrememberpicturepositiononpage=\pgf@remember@smuggle%
    \pgf@restore@layerlist@from@global
  \endpgfpicture\endgroup}%




\def\tikz{%
  \begingroup%
    \tikz@startup@env%
    \tikz@collect@scope@anims\tikz@opt}%
\def\tikz@opt[#1]{\tikzpicture[#1]\pgfutil@ifnextchar\bgroup{\tikz@}{\tikz@@single}}%
\def\tikz@{\bgroup\tikz@auto@end@pathtrue\aftergroup\endtikzpicture\aftergroup\endgroup\let\pgf@temp=}%
\def\tikz@@single#1{%
  \expandafter\ifx\csname tikz@protected@command\string#1\endcsname\relax%
    \expandafter\tikz@@%
  \else%
    \begingroup\def\tikz@path@do@at@end{\endgroup\endtikzpicture\endgroup}%
  \fi%
  #1%
}%

\expandafter\let\csname tikz@protected@command\string\draw\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\pattern\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\fill\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\filldraw\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\shade\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\shadedraw\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\clip\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\graph\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\useasboundingbox\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\node\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\coordinate\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\matrix\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\datavisualization\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\path\endcsname\pgfutil@empty%
\expandafter\let\csname tikz@protected@command\string\pic\endcsname\pgfutil@empty%

\def\tikz@@{%
  \let\tikz@next=\tikz@collectnormalsemicolon%
  \ifnum\the\catcode`\;=\active\relax%
    \let\tikz@next=\tikz@collectactivesemicolon%
  \fi%
  \tikz@next}%
\def\tikz@collectnormalsemicolon#1;{#1;\endtikzpicture\endgroup}
{
  \catcode`\;=\active
  \gdef\tikz@collectactivesemicolon#1;{#1;\endtikzpicture\endgroup}
}%

\def\tikzifinpicture#1#2{%
    \pgfutil@ifundefined{filldraw}{#2}{#1}%
}%


\def\tikz@collect@scope@anims#1{%
  \pgfutil@ifnextchar[#1{#1[]}%
}%

\def\tikz@scope@env{%
  \pgfscope%
  \begingroup%
  \let\tikz@atbegin@scope=\pgfutil@empty%
  \let\tikz@atend@scope=\pgfutil@empty%
  \let\tikz@options=\pgfutil@empty%
  \tikz@clear@rdf@options%
  \let\tikz@mode=\pgfutil@empty%
  \let\tikz@id@name=\pgfutil@empty%
  \tikz@transparency@groupfalse%
  \tikzset{every scope/.try}%
  \tikz@collect@scope@anims\tikz@scope@opt%
}%
\def\tikz@scope@opt[#1]{%
  \tikzset{#1}%
  \tikz@options%
  \tikz@do@rdf@pre@options%
  \iftikz@transparency@group\expandafter\pgftransparencygroup\expandafter[\tikz@transparency@group@options]\tikz@blend@group\fi%
  \tikz@is@nodefalse%
  \tikz@call@id@hook%
  \pgfidscope%
    \tikz@do@rdf@post@options%
    \begingroup%
      \let\tikz@id@name\pgfutil@empty%
      \expandafter\tikz@atbegin@scope%
      \expandafter\pgfclearid%
      \tikz@lib@scope@check%
}%
\def\endtikz@scope@env{%
      \tikz@atend@scope%
    \endgroup%
  \endpgfidscope%
  \iftikz@transparency@group\endpgftransparencygroup\fi%
  \endgroup%
  \endpgfscope%
  \tikz@lib@scope@check%
}%


\def\tikz@scoped{\tikz@collect@scope@anims\tikz@scoped@opt}%
\def\tikz@scoped@opt[#1]{\scope[#1]\pgfutil@ifnextchar\bgroup{\tikz@scoped@}{\tikz@scoped@@single}}%
\def\tikz@scoped@{\bgroup\tikz@auto@end@pathtrue\aftergroup\endscope\let\pgf@temp=}%
\def\tikz@scoped@@single#1{%
  \expandafter\ifx\csname tikz@scoped@protected@command\string#1\endcsname\relax%
    \expandafter\tikz@scoped@@%
  \else%
    \begingroup\def\tikz@scoped@path@do@at@end{\endgroup\endscope}%
  \fi%
  #1%
}%
\def\tikz@scoped@@{%
  \let\tikz@scoped@next=\tikz@scoped@collectnormalsemicolon%
  \ifnum\the\catcode`\;=\active\relax%
    \let\tikz@scoped@next=\tikz@scoped@collectactivesemicolon%
  \fi%
  \tikz@scoped@next}%
\def\tikz@scoped@collectnormalsemicolon#1;{#1;\endscope}
{
  \catcode`\;=\active
  \gdef\tikz@scoped@collectactivesemicolon#1;{#1;\endscope}
}%


\def\tikzaddtikzonlycommandshortcutlet#1#2{%
    \expandafter\def\expandafter\tikz@installcommands\expandafter{\tikz@installcommands
        \let#1=#2%
    }%
}%

\def\tikzaddtikzonlycommandshortcutdef#1#2{%
    \expandafter\def\expandafter\tikz@installcommands\expandafter{\tikz@installcommands
        \def#1{#2}%
    }%
}%

\def\tikz@installcommands{%
  \let\tikz@origscope=\scope%
  \let\tikz@origscoped=\scoped%
  \let\tikz@origendscope=\endscope%
  \let\tikz@origstartscope=\startscope%
  \let\tikz@origstopscope=\stopscope%
  \let\tikz@origpath=\path%
  \let\tikz@origagainpath=\againpath%
  \let\tikz@origdraw=\draw%
  \let\tikz@origpattern=\pattern%
  \let\tikz@origfill=\fill%
  \let\tikz@origfilldraw=\filldraw%
  \let\tikz@origshade=\shade%
  \let\tikz@origshadedraw=\shadedraw%
  \let\tikz@origclip=\clip%
  \let\tikz@origuseasboundingbox=\useasboundingbox%
  \let\tikz@orignode=\node%
  \let\tikz@origpic=\pic%
  \let\tikz@origcoordinate=\coordinate%
  \let\tikz@origmatrix=\matrix%
  \let\tikz@origcalendar=\calendar%
  \let\tikz@origdv=\datavisualization%
  \let\tikz@origgraph=\graph%
  \let\scope=\tikz@scope@env%
  \let\scoped=\tikz@scoped%
  \let\endscope=\endtikz@scope@env%
  \let\startscope=\scope%
  \let\stopscope=\endscope%
  \let\path=\tikz@command@path%
  \let\againpath=\tikz@command@againpath%
  \def\draw{\path[draw]}%
  \def\pattern{\path[pattern]}%
  \def\fill{\path[fill]}%
  \def\filldraw{\path[fill,draw]}%
  \def\shade{\path[shade]}%
  \def\shadedraw{\path[shade,draw]}%
  \def\clip{\path[clip]}%
  \def\graph{\path graph}%
  \def\useasboundingbox{\path[use as bounding box]}%
  \def\node{\tikz@path@overlay{node}}%
  \def\pic{\tikz@path@overlay{pic}}%
  \def\coordinate{\tikz@path@overlay{coordinate}}%
  \def\matrix{\tikz@path@overlay{node[matrix]}}%
  \def\calendar{\tikz@lib@cal@calendar}%
  \def\datavisualization{\tikz@lib@datavisualization}%
}%
\ifx\tikz@lib@cal@calendar\@undefined
\def\tikz@lib@cal@calendar{\tikzerror{You need to say \string\usetikzlibrary{calendar} to use the \string\calendar{} command}}%
\fi
\ifx\tikz@lib@datavisualization\@undefined
\def\tikz@lib@datavisualization{\tikzerror{You need to say \string\usetikzlibrary{datavisualization} to use the \string\datavisualization{} command}}%
\fi

\def\tikz@path@overlay#1{%
  \let\tikz@signal@path=\tikz@signal@path%
  \pgfutil@ifnextchar<{\tikz@path@overlayed{#1}}{\path #1}}%
\def\tikz@path@overlayed#1<#2>{\path<#2> #1}%

\def\tikz@uninstallcommands{%
  \let\scope=\tikz@origscope%
  \let\scoped=\tikz@origscoped%
  \let\endscope=\tikz@origendscope%
  \let\startscope=\tikz@origstartscope%
  \let\stopscope=\tikz@origstopscope%
  \let\path=\tikz@origpath%
  \let\againpath=\tikz@origagainpath%
  \let\draw=\tikz@origdraw%
  \let\pattern=\tikz@origpattern%
  \let\fill=\tikz@origfill%
  \let\filldraw=\tikz@origfilldraw%
  \let\shade=\tikz@origshade%
  \let\shadedraw=\tikz@origshadedraw%
  \let\clip=\tikz@origclip%
  \let\useasboundingbox=\tikz@origuseasboundingbox%
  \let\node=\tikz@orignode%
  \let\pic=\tikz@origpic%
  \let\coordinate=\tikz@origcoordinate%
  \let\matrix=\tikz@origmatrix%
  \let\calendar=\tikz@origcalendar%
  \let\datavisualization=\tikz@origdv%
  \let\graph=\tikz@origgraph%
}%


{%
  \catcode`\;=12
  \gdef\tikz@nonactivesemicolon{;}%
  \catcode`\:=12
  \gdef\tikz@nonactivecolon{:}%
  \catcode`\|=12
  \gdef\tikz@nonactivebar{|}%
  \catcode`\!=12
  \gdef\tikz@nonactiveexlmark{!}%
  \catcode`\;=\active
  \catcode`\:=\active
  \catcode`\|=\active
  \catcode`\"=\active
  \catcode`\!=\active
  \gdef\tikz@activesemicolon{;}%
  \gdef\tikz@activecolon{:}%
  \gdef\tikz@activebar{|}%
  \gdef\tikz@activequotes{"}%
  \global\let\tikz@active@quotes@token="%
  \gdef\tikz@activeexlmark{!}%
  \gdef\tikz@deactivatthings{%
    \def;{\tikz@nonactivesemicolon}%
    \def:{\tikz@nonactivecolon}%
    \def|{\tikz@nonactivebar}%
    \def!{\tikz@nonactiveexlmark}%
  }%
}%

\let\tikz@orig@shorthands\pgfutil@empty
\def\tikz@switchoff@shorthands{%
  \ifx\tikz@orig@shorthands\pgfutil@empty%
    \edef\tikz@orig@shorthands{%
      \catcode\noexpand`\noexpand\;\the\catcode`\;\relax%
      \catcode\noexpand`\noexpand\:\the\catcode`\:\relax%
      \catcode\noexpand`\noexpand\|\the\catcode`\|\relax%
      \catcode\noexpand`\noexpand\!\the\catcode`\!\relax%
      \catcode\noexpand`\noexpand\,\the\catcode`\,\relax%
      \catcode\noexpand`\noexpand\<\the\catcode`\<\relax%
      \catcode\noexpand`\noexpand\>\the\catcode`\>\relax%
      \catcode\noexpand`\noexpand\"\the\catcode`\"\relax%
      \catcode\noexpand`\noexpand\'\the\catcode`\'\relax%
      \catcode\noexpand`\noexpand\-\the\catcode`\-\relax%
      \catcode\noexpand`\noexpand\=\the\catcode`\=\relax%
      \catcode\noexpand`\noexpand\.\the\catcode`\.\relax%
      \catcode\noexpand`\noexpand\$\the\catcode`\$\relax%
    }%
    \catcode`\;12\relax%
    \catcode`\:12\relax%
    \catcode`\|12\relax%
    \catcode`\!12\relax%
    \catcode`\,12\relax%
    \catcode`\<12\relax%
    \catcode`\>12\relax%
    \catcode`\"12\relax%
    \catcode`\'12\relax%
    \catcode`\-12\relax%
    \catcode`\=12\relax%
    \catcode`\.12\relax%
    \catcode`\$3\relax%
  \fi%
}%




\def\tikz@command@path{%
  \let\tikz@signal@path=\tikz@signal@path%
  \pgfutil@ifnextchar[{\tikz@check@earg}%
  {\pgfutil@ifnextchar<{\tikz@doopt}{\tikz@@command@path}}}%
\pgfutil@protected\def\tikz@signal@path{\tikz@signal@path}%
\def\tikz@check@earg[#1]{%
  \pgfutil@ifnextchar<{\tikz@swap@args[#1]}{\tikz@@command@path[#1]}}
\def\tikz@swap@args[#1]<#2>{\tikz@command@path<#2>[#1]}%

\def\tikz@doopt{%
  \let\tikz@next=\tikz@eargnormalsemicolon%
  \ifnum\the\catcode`\;=\active\relax%
    \let\tikz@next=\tikz@eargactivesemicolon%
  \fi%
  \tikz@next}%
\long\def\tikz@eargnormalsemicolon<#1>#2;{\alt<#1>{\tikz@@command@path#2;}{\tikz@path@do@at@end}}%
{
  \catcode`\;=\active
  \long\global\def\tikz@eargactivesemicolon<#1>#2;{\alt<#1>{\tikz@@command@path#2;}{\tikz@path@do@at@end}}%
}

\def\tikz@@command@path{%
  \edef\tikzscope@linewidth{\the\pgflinewidth}%
  \begingroup%
    \setbox\tikz@figbox=\box\pgfutil@voidb@x%
    \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
    \let\tikz@path@do@at@end=\tikz@lib@scope@check%
    \let\tikz@options=\pgfutil@empty%
    \tikz@clear@rdf@options%
    \let\tikz@mode=\pgfutil@empty%
    \let\tikz@moveto@waiting=\relax%
    \let\tikz@timer=\relax%
    \let\tikz@tangent=\relax%
    \let\tikz@collected@onpath=\pgfutil@empty%
    \let\tikz@preactions=\pgfutil@empty%
    \let\tikz@postactions=\pgfutil@empty%
    \tikz@snakedfalse%
    \tikz@decoratepathfalse%
    \tikz@node@is@a@labelfalse%
    \tikz@resetexpandcount
    \pgf@path@lastx=0pt%
    \pgf@path@lasty=0pt%
    \tikz@lastx=0pt%
    \tikz@lasty=0pt%
    \tikz@lastxsaved=0pt%
    \tikz@lastysaved=0pt%
    \tikzset{every path/.try}%
    \tikz@scan@next@command%
}%
\def\tikz@scan@next@command{%
  \ifx\tikz@collected@onpath\pgfutil@empty%
  \else%
    \tikz@invoke@collected@onpath%
  \fi%
  \afterassignment\tikz@handle\let\pgf@let@token=%
}%
\newcount\tikz@expandcount
\def\tikz@resetexpandcount{\tikz@expandcount=100\relax}
\let\tikz@collected@onpath=\pgfutil@empty%

\edef\tikz@frozen@relax@token{\ifnum0=0\fi}

\def\tikz@handle{%
  \pgfutil@switch\pgfutil@ifx\pgf@let@token{%
    {(}{\let\pgfutil@next\tikz@movetoabs}%
    {+}{\let\pgfutil@next\tikz@movetorel}%
    {-}{\let\pgfutil@next\tikz@lineto}%
    {.}{\let\pgfutil@next\tikz@dot}%
    {r}{\let\pgfutil@next\tikz@rect}%
    {n}{\let\pgfutil@next\tikz@fig}%
    {[}{\let\pgfutil@next\tikz@parse@options}%
    {c}{\let\pgfutil@next\tikz@cchar}%
    {\bgroup}{\let\pgfutil@next\tikz@beginscope}%
    {\egroup}{\let\pgfutil@next\tikz@endscope}%
    {;}{\let\pgfutil@next\tikz@finish}%
    {a}{\let\pgfutil@next\tikz@a@char}%
    {e}{\let\pgfutil@next\tikz@e@char}%
    {g}{\let\pgfutil@next\tikz@g@char}%
    {s}{\let\pgfutil@next\tikz@schar}%
    {|}{\let\pgfutil@next\tikz@vh@lineto}%
    {p}{\pgfsetmovetofirstplotpoint\let\pgfutil@next\tikz@pchar}%
    {t}{\let\pgfutil@next\tikz@to}%
    {\pgfextra}{\let\pgfutil@next\tikz@extra}%
    {\foreach}{\let\pgfutil@next\tikz@foreach}%
    {f}{\let\pgfutil@next\tikz@fchar}%
    {\pgf@stop}{\let\pgfutil@next\relax}%
    {\par}{\let\pgfutil@next\tikz@scan@next@command}%
    {d}{\let\pgfutil@next\tikz@decoration}%
    {l}{\let\pgfutil@next\tikz@l@char}%
    {:}{\let\pgfutil@next\tikz@colon@char}%
    {\relax}{\relax\let\pgfutil@next\tikz@scan@next@command}%
  }{\tikz@resetexpandcount\pgfutil@next}{\tikz@expand}%
}%

\def\tikz@l@char{%
  \pgfutil@ifnextchar e{\tikz@let@command}{%
    \pgfutil@ifnextchar i{\tikz@lsystem}{%
      \pgfutil@ifnextchar-{\tikz@@lsystem}{\tikz@expand}%
    }%
  }%
}%

\def\tikz@lsystem{%
  \tikzerror{You need to say \string\usetikzlibrary{lindenmayersystems} to draw Lindenmayer systems}
}%

\def\tikz@@lsystem{%
  \tikzerror{You need to say \string\usetikzlibrary{lindenmayersystems} to draw L-systems}
}%

\def\tikz@pchar{\pgfutil@ifnextchar l{\tikz@plot}{\pgfutil@ifnextchar i{\tikz@subpicture}{\tikz@parabola}}}%
\def\tikz@cchar{%
  \pgfutil@ifnextchar i{\tikz@circle}%
  {\pgfutil@ifnextchar h{\tikz@children}{\tikz@cochar}}}%
\def\tikz@cochar o{%
  \pgfutil@ifnextchar o{\tikz@coordinate}{\tikz@cosine}}%
\def\tikz@e@char{%
  \pgfutil@ifnextchar l{\tikz@ellipse}{\tikz@@e@char}}%
\def\tikz@a@char{%
  \pgfutil@ifnextchar r{\tikz@arcA}{\tikzerror{Arc expected}}}%
\def\tikz@@e@char dge{%
  \pgfutil@ifnextchar f{\tikz@edgetoparent}{\tikz@edge@plain}}%

\def\tikz@schar{\pgfutil@ifnextchar i{\tikz@sine}{\tikz@svg@path}}%

\def\tikz@g@char r{\pgfutil@ifnextchar i{\tikz@grid}{\tikz@graph}}%


\def\tikz@svg@path{%
  \tikzerror{You need to say \string\usetikzlibrary{svg.path} to use the svg path command}
}%


\def\tikz@finish{%
  \box\tikz@figbox@bg%
  \iftikz@decoratepath%
    \tikz@lib@dec@decorate@path%
  \fi%
  \pgfsyssoftpath@getcurrentpath\tikz@actions@path%
  \edef\tikz@restorepathsize{%
    \global\pgf@pathmaxx=\the\pgf@pathmaxx%
    \global\pgf@pathmaxy=\the\pgf@pathmaxy%
    \global\pgf@pathminx=\the\pgf@pathminx%
    \global\pgf@pathminy=\the\pgf@pathminy%
  }%
  \tikz@preactions%
  \let\tikz@path@picture=\pgfutil@empty%
  \tikz@mode@fillfalse%
  \tikz@mode@drawfalse%
  \tikz@mode@doublefalse%
  \tikz@mode@clipfalse%
  \tikz@mode@boundaryfalse%
  \tikz@mode@fade@pathfalse%
  \tikz@mode@fade@scopefalse%
  \edef\tikz@pathextend{%
    {\noexpand\pgfqpoint{\the\pgf@pathminx}{\the\pgf@pathminy}}%
    {\noexpand\pgfqpoint{\the\pgf@pathmaxx}{\the\pgf@pathmaxy}}%
  }%
  \tikz@mode%
  \iftikz@mode@fade@path%
    \tikz@addoption{%
      \iftikz@fade@adjust%
        \iftikz@mode@draw%
          \pgfsetfadingforcurrentpathstroked{\tikz@path@fading}{\tikz@do@fade@transform}%
        \else%
          \pgfsetfadingforcurrentpath{\tikz@path@fading}{\tikz@do@fade@transform}%
        \fi%
      \else%
        \pgfsetfading{\tikz@path@fading}{\tikz@do@fade@transform}%
      \fi%
      \tikz@mode@fade@pathfalse%
    }%
  \fi%
  \iftikz@mode@fade@scope%
    \iftikz@fade@adjust%
      \iftikz@mode@draw%
        \pgfsetfadingforcurrentpathstroked{\tikz@scope@fading}{\tikz@do@fade@transform}%
      \else%
        \pgfsetfadingforcurrentpath{\tikz@scope@fading}{\tikz@do@fade@transform}%
      \fi%
    \else%
      \pgfsetfading{\tikz@scope@fading}{\tikz@do@fade@transform}%
    \fi%
    \tikz@mode@fade@scopefalse%
  \fi%
  \ifx\tikz@options\pgfutil@empty%
  \else%
    \pgfsys@beginscope%
      \let\pgfscope@stroke@color=\pgf@strokecolor@global%
      \let\pgfscope@fill@color=\pgf@fillcolor@global%
      \begingroup%
        \tikz@options%
  \fi%
  \tikz@do@rdf@pre@options%
  \tikz@is@nodefalse%
  \tikz@call@id@hook%
  \iftikz@mode@clip\else%
    \pgfidscope%
      \tikz@do@rdf@post@options%
      \begingroup%
  \fi%
  \iftikz@mode@fill%
    \iftikz@mode@shade%
      \pgfsyssoftpath@getcurrentpath\tikz@temppath
      \pgfprocessround{\tikz@temppath}{\tikz@temppath}%
      \pgfsyssoftpath@setcurrentpath\tikz@temppath%
      \pgfsyssoftpath@invokecurrentpath%
      \pgfpushtype%
      \pgfusetype{.path fill}%
      \pgfsys@fill%
      \pgfpoptype%
      \tikz@mode@fillfalse%
    \else%
      \ifx\tikz@path@picture\pgfutil@empty%
      \else%
        \pgfsyssoftpath@getcurrentpath\tikz@temppath
        \pgfprocessround{\tikz@temppath}{\tikz@temppath}%
        \pgfsyssoftpath@setcurrentpath\tikz@temppath%
        \pgfsyssoftpath@invokecurrentpath%
        \pgfpushtype%
        \pgfusetype{.path fill}%
        \pgfsys@fill%
        \pgfpoptype%
        \tikz@mode@fillfalse%
      \fi%
    \fi%
  \fi%
  \iftikz@mode@shade%
    \pgfsyssoftpath@getcurrentpath\tikz@temppath
    \pgfprocessround{\tikz@temppath}{\tikz@temppath}%
    \pgfsyssoftpath@setcurrentpath\tikz@temppath%
    \pgfpushtype%
    \pgfusetype{.path shade}%
    \pgfshadepath{\tikz@shading}{\tikz@shade@angle}%
    \pgfpoptype%
    \tikz@mode@shadefalse%
  \fi%
  \ifx\tikz@path@picture\pgfutil@empty%
  \else%
    \begingroup%
      \pgfusetype{.path picture}%
      \pgfidscope%
      \pgfsys@beginscope%
        \let\tikz@id@name\pgfutil@empty%
        \pgfclearid%
        \pgfsyssoftpath@getcurrentpath\tikz@temppath
        \pgfprocessround{\tikz@temppath}{\tikz@temppath}%
        \pgfsyssoftpath@setcurrentpath\tikz@temppath%
        \pgfsyssoftpath@invokecurrentpath%
        \pgfsys@clipnext%
        \pgfsys@discardpath%
        \pgf@relevantforpicturesizefalse%
        \expandafter\def\csname pgf@sh@ns@path picture bounding box\endcsname{rectangle}
        \expandafter\edef\csname pgf@sh@np@path picture bounding box\endcsname{%
          \def\noexpand\southwest{\noexpand\pgfqpoint{\the\pgf@pathminx}{\the\pgf@pathminy}}%
          \def\noexpand\northeast{\noexpand\pgfqpoint{\the\pgf@pathmaxx}{\the\pgf@pathmaxy}}%
        }
        \expandafter\def\csname pgf@sh@nt@path picture bounding box\endcsname{{1}{0}{0}{1}{0pt}{0pt}}
        \expandafter\def\csname pgf@sh@pi@path picture bounding box\endcsname{\pgfpictureid}
        \pgfinterruptpath%
          \tikz@path@picture%
        \endpgfinterruptpath%
      \pgfsys@endscope%
      \endpgfidscope%
    \endgroup%
    \let\tikz@path@picture=\pgfutil@empty%
  \fi%
  \iftikz@mode@draw%
    \iftikz@mode@double%
      \begingroup%
        \pgfsys@beginscope%
          \tikz@double@setup%
    \fi%
  \fi%
  \pgfpushtype%
  \edef\tikz@temp{\noexpand\pgfusepath{%
    \iftikz@mode@fill fill,\fi%
    \iftikz@mode@draw draw,\fi%
    \iftikz@mode@clip clip\fi%
    }}%
  \pgfusetype{.path}%
  \tikz@temp%
  \pgfpoptype%
  \tikz@mode@fillfalse%
  \iftikz@mode@draw%
    \iftikz@mode@double%
        \pgfsys@endscope%
      \endgroup%
    \fi%
  \fi%
  \tikz@mode@drawfalse%
  \tikz@postactions%
  \box\tikz@figbox%
  \iftikz@mode@clip\else\endgroup\endpgfidscope\fi%
  \ifx\tikz@options\pgfutil@empty%
  \else%
      \endgroup%
      \global\let\pgf@strokecolor@global=\pgfscope@stroke@color%
      \global\let\pgf@fillcolor@global=\pgfscope@fill@color%
    \pgfsys@endscope%
    \iftikz@mode@clip%
      \tikzerror{Extra options not allowed for clipping path command.}%
    \fi%
  \fi%
  \iftikz@mode@clip%
    \aftergroup\pgf@relevantforpicturesizefalse%
  \fi%
  \iftikz@mode@boundary%
    \aftergroup\pgf@relevantforpicturesizefalse%
  \fi%
  \endgroup%
  \global\pgflinewidth=\tikzscope@linewidth%
  \tikz@path@do@at@end%
}%
\let\tikz@lib@scope@check\pgfutil@empty%
\def\tikz@path@do@at@end{\tikz@lib@scope@check}%
\def\tikz@@pathtext{@path}%

\def\pgf@outer@auto@adjust@hook{%
  {%
    \tikz@mode@drawfalse%
    \tikz@mode%
    \expandafter%
  }%
  \iftikz@mode@draw\else%
    \pgfkeyslet{/pgf/outer xsep}\pgf@zero@text
    \pgfkeyslet{/pgf/outer ysep}\pgf@zero@text
  \fi%
}%


\def\tikz@extra@preaction#1{%
  {%
    \pgfsys@beginscope%
      \setbox\tikz@figbox=\box\pgfutil@voidb@x%
      \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
      \path[#1];%
      \pgfsyssoftpath@setcurrentpath\tikz@actions@path%
      \tikz@restorepathsize%
    \pgfsys@endscope%
  }%
}%

\def\tikz@extra@postaction#1{%
  {%
    \pgfsys@beginscope%
      \setbox\tikz@figbox=\box\pgfutil@voidb@x%
      \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
      \tikz@restorepathsize%
      \path[#1]\pgfextra{\pgfsyssoftpath@setcurrentpath\tikz@actions@path};%
      \pgf@resetpathsizes%
    \pgfsys@endscope%
  }%
}%



\def\tikz@skip#1{\tikz@scan@next@command#1}%
\def\tikz@expand{%
  \advance\tikz@expandcount by -1
  \ifnum\tikz@expandcount<0\relax%
    \expandafter\pgfutil@firstoftwo
  \else
    \expandafter\pgfutil@secondoftwo
  \fi
  {%
    \tikzerror{Giving up on this path. Did you forget a semicolon?}%
    \global\let\tikz@expand@last@token=\pgf@let@token
    \tikz@finish%
    \expandafter\let\expandafter\tikz@expand@last@token@\csname tikz@expand@last@token\endcsname
    \global\let\tikz@expand@last@token=\relax
    \tikz@expand@last@token@
  }{%
    \tikz@@expand
  }%
}

\def\tikz@@expand{%
  \expandafter\tikz@scan@next@command\pgf@let@token}%




\newif\iftikz@auto@end@path

\def\tikz@beginscope{\begingroup\tikz@auto@end@pathfalse\tikz@scan@next@command}%
\def\tikz@endscope{%
  \iftikz@auto@end@path\expandafter\tikz@finish\expandafter\egroup\else\expandafter\tikz@@endscope\fi%
}%
\def\tikz@@endscope{%
    \global\setbox\tikz@tempbox=\box\tikz@figbox%
    \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
    \global\let\tikz@tangent@temp\tikz@tangent%
    \edef\tikz@marshal{%
      \tikz@lastx=\the\tikz@lastx%
      \tikz@lasty=\the\tikz@lasty%
      \iftikz@current@point@local%
      \else%
        \tikz@lastxsaved=\the\tikz@lastxsaved%
        \tikz@lastysaved=\the\tikz@lastysaved%
        \ifx\tikz@moveto@waiting\relax%
          \let\tikz@moveto@waiting\relax%
        \else%
          \def\noexpand\tikz@moveto@waiting{\tikz@moveto@waiting}%
        \fi%
        \iftikz@shapeborder%
          \noexpand\tikz@shapebordertrue%
          \def\noexpand\tikz@shapeborder@name{\tikz@shapeborder@name}%
        \else%
          \noexpand\tikz@shapeborderfalse%
        \fi%
      \fi%
    }%
    \expandafter%
  \endgroup\tikz@marshal%
  \setbox\tikz@figbox=\box\tikz@tempbox%
  \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
  \let\tikz@tangent\tikz@tangent@temp%
  \tikz@scan@next@command}%



\def\tikz@extra{\pgfutil@ifnextchar\bgroup\tikz@@extra\relax}%
\long\def\tikz@@extra#1{#1\tikz@scan@next@command}%
\let\endpgfextra=\tikz@scan@next@command

\def\pgfextra{pgfextra}%



\def\tikz@fchar oreach{\tikz@foreach}%

\def\tikz@foreach{%
  \def\pgffor@beginhook{%
    \tikz@lastx=\tikz@foreach@save@lastx%
    \tikz@lasty=\tikz@foreach@save@lasty%
    \tikz@lastxsaved=\tikz@foreach@save@lastxsaved%
    \tikz@lastysaved=\tikz@foreach@save@lastysaved%
    \setbox\tikz@figbox=\box\tikz@tempbox%
    \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
    \expandafter\tikz@scan@next@command\pgfutil@firstofone}%
  \def\pgffor@endhook{\pgfextra{%
      \xdef\tikz@foreach@save@lastx{\the\tikz@lastx}%
      \xdef\tikz@foreach@save@lasty{\the\tikz@lasty}%
      \xdef\tikz@foreach@save@lastxsaved{\the\tikz@lastxsaved}%
      \xdef\tikz@foreach@save@lastysaved{\the\tikz@lastysaved}%
      \global\setbox\tikz@tempbox=\box\tikz@figbox%
      \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
      \pgfutil@gobble}}%
  \def\pgffor@afterhook{%
    \tikz@lastx=\tikz@foreach@save@lastx%
    \tikz@lasty=\tikz@foreach@save@lasty%
    \tikz@lastxsaved=\tikz@foreach@save@lastxsaved%
    \tikz@lastysaved=\tikz@foreach@save@lastysaved%
    \let\pgffor@beginhook\relax%
    \let\pgffor@endhook\relax%
    \let\pgffor@afterhook\relax%
    \setbox\tikz@figbox=\box\tikz@tempbox%
    \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
    \tikz@scan@next@command}%
  \global\setbox\tikz@tempbox=\box\tikz@figbox%
  \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
  \xdef\tikz@foreach@save@lastx{\the\tikz@lastx}%
  \xdef\tikz@foreach@save@lasty{\the\tikz@lasty}%
  \xdef\tikz@foreach@save@lastxsaved{\the\tikz@lastxsaved}%
  \xdef\tikz@foreach@save@lastysaved{\the\tikz@lastysaved}%
  \foreach}%



\def\tikz@command@againpath#1{%
  \pgfextra{%
    \pgfsyssoftpath@getcurrentpath\tikz@temp%
    \expandafter\pgfutil@g@addto@macro\expandafter\tikz@temp\expandafter{#1}%
    \pgfsyssoftpath@setcurrentpath\tikz@temp%
  }%
}%



\def\tikz@colon@char#1=#2{%
  \tikz@scan@next@command{[animate={myself:{#1}={#2}}]}%
}%




\newif\iftikz@shapeborder


\def\tikz@movetoabs{\tikz@moveto(}%
\def\tikz@movetorel{\tikz@moveto+}%
\def\tikz@moveto{%
  \tikz@scan@one@point{\tikz@@moveto}}%
\def\tikz@@moveto#1{%
    \tikz@make@last@position{#1}%
  \iftikz@shapeborder%
    \edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
  \else%
    \tikz@@movetosave{\tikz@last@position}%
    \let\tikz@moveto@waiting=\relax%
  \fi%
  \tikz@scan@next@command%
}%

\def\tikz@@movetosave#1{%
  {\pgftransformreset
    \pgf@process{#1}%
    \xdef\tikz@marshal{%
      \tikz@lastmovetox=\the\pgf@x\relax%
      \tikz@lastmovetoy=\the\pgf@y\relax%
    }%
  }%
  \tikz@marshal
  \pgfpathmoveto{#1}%
}%

  
\let\tikz@moveto@waiting=\relax %

\def\tikz@flush@moveto{%
  \ifx\tikz@moveto@waiting\relax%
  \else%
    \tikz@@movetosave{\tikz@last@position}%
  \fi%
  \let\tikz@moveto@waiting=\relax%
}%


\def\tikz@flush@moveto@toward#1#2#3{%
  \ifx\tikz@moveto@waiting\relax%
  \else%
    \pgf@process{\pgfpointshapeborder{\tikz@moveto@waiting}{#1}}%
    #2=\pgf@x%
    #3=\pgf@y%
    \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
    \tikz@@movetosave{\pgfqpoint{\pgf@x}{\pgf@y}}%
  \fi%
  \let\tikz@moveto@waiting=\relax%
}%



\def\tikz@collect@coordinate@onpath#1c{%
  \pgfutil@ifnextchar y{\tikz@cycle@expander@add#1}{\tikz@collect@coordinate@onpath@{#1}}}%
\def\tikz@collect@coordinate@onpath@#1oordinate{%
  \pgfutil@ifnextchar[{\tikz@@collect@coordinate@opt#1}{\tikz@@collect@coordinate@opt#1[]}}%
\def\tikz@@collect@coordinate@opt#1[#2]{%
  \pgfutil@ifnextchar({\tikz@@collect@coordinate#1[#2]}{%
  \tikz@collect@label@onpath#1node[shape=coordinate,#2]{}}}%
\def\tikz@@collect@coordinate#1[#2](#3){%
  \tikz@collect@label@onpath#1node[shape=coordinate,#2](#3){}}%

\newif\iftikz@collect@pic

\def\tikz@collect@label@onpath#1node{%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath node}%
  \let\tikz@collect@cont#1%
  \tikz@collect@picfalse%
  \tikz@collect@label@scan}%

\def\tikz@collect@pic@onpath#1pic{%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath pic}%
  \let\tikz@collect@cont#1
  \tikz@collect@pictrue%
  \tikz@collect@label@scan}%

\def\tikz@collect@label@scan{%
  \pgfutil@ifnextchar f{\tikz@collect@nodes}{%
    \pgfutil@ifnextchar({\tikz@collect@paran}%
    {\pgfutil@ifnextchar[{\tikz@collect@options}%
      {\pgfutil@ifnextchar:{\tikz@collect@animation}%
        {\pgfutil@ifnextchar\bgroup{\tikz@collect@arg}%
          {\tikz@collect@cont}}}}}%
}%

\def\tikz@collect@nodes foreach#1in{%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath foreach#1in}%
  \pgfutil@ifnextchar\bgroup\tikz@collect@nodes@group\tikz@collect@nodes@one%
}%
\def\tikz@collect@nodes@one#1{%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath #1}%
  \tikz@collect@label@scan%
}%
\def\tikz@collect@nodes@group#1{%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath{#1}}%
  \tikz@collect@label@scan%
}%

\def\tikz@collect@animation#1=#2{%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath#1={#2}}%
  \tikz@collect@label@scan%
}%
\def\tikz@collect@paran#1){%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath#1)}%
  \tikz@collect@label@scan%
}%
\def\tikz@collect@options#1]{%
  \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath#1]}%
  \tikz@collect@label@scan%
}%
\def\tikz@collect@arg#1{%
  \iftikz@handle@active@nodes%
    \iftikz@collect@pic%
      \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath{#1}}%
    \else%
      \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath{\scantokens{#1}}}%
    \fi%
  \else%
    \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath{#1}}%
  \fi%
  \tikz@collect@cont%
}%

\def\tikz@invoke@collected@onpath{%
  \tikz@node@is@a@labeltrue%
  \let\tikz@temp=\tikz@collected@onpath%
  \let\tikz@collected@onpath=\pgfutil@empty%
  \expandafter\tikz@scan@next@command\tikz@temp\pgf@stop%
  \tikz@node@is@a@labelfalse%
}%



\def\tikz@cycle@expander#1{\pgfutil@ifnextchar c{\tikz@cycle@expander@{#1}}{#1}}%
\def\tikz@cycle@expander@#1c{\pgfutil@ifnextchar y{\tikz@cycle@expander@add{#1}}{#1c}}%
\def\tikz@cycle@expander@add#1ycle{#1(current subpath start)--cycle}%





\def\tikz@lineto{%
  \pgfutil@ifnextchar |%
  {\expandafter\tikz@hv@lineto\pgfutil@gobble}%
  {\expandafter\pgfutil@ifnextchar\tikz@activebar{\expandafter\tikz@hv@lineto\pgfutil@gobble}%
    {\expandafter\tikz@lineto@mid\pgfutil@gobble}}}%
\def\tikz@lineto@mid{%
  \pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@lineto@mid}%
  {%
    \pgfutil@ifnextchar c{\tikz@close}{%
      \pgfutil@ifnextchar p{\tikz@lineto@plot@or@pic}{\tikz@scan@one@point{\tikz@@lineto}}}}}%
\def\tikz@lineto@plot@or@pic p{%
  \pgfutil@ifnextchar i{\tikz@collect@pic@onpath\tikz@lineto@mid p}{%
    \pgfsetlinetofirstplotpoint\tikz@plot}%
}%
\def\tikz@@lineto#1{%
  \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}
  \iftikz@shapeborder%
    \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\tikz@last@position}}%
    \tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
    \tikz@flush@moveto@toward{\tikz@last@position}\pgf@x\pgf@y%
    \tikz@path@lineto{\tikz@last@position}%
    \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
    \tikz@make@last@position{#1}%
    \edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
  \else%
    \tikz@make@last@position{#1}%
    \tikz@flush@moveto@toward{\tikz@last@position}\pgf@x\pgf@y%
    \tikz@path@lineto{\tikz@last@position}%
    \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \fi%
  \let\tikz@timer=\tikz@timer@line%
  \let\tikz@tangent\tikz@timer@start%
  \tikz@scan@next@command%
}%

\def\tikz@path@lineto#1{%
  \iftikz@snaked%
    {
      \pgfsyssoftpathmovetorelevantfalse%
      \pgfpathsnakesto{\tikz@presnake,{\tikz@snake}{\tikz@mainsnakelength}{\noexpand\tikz@snake@install@trans}{},\tikz@postsnake}{#1}%
    }
  \else%
    \pgfpathlineto{#1}%
  \fi%
}%

\def\tikz@path@close#1{%
  \iftikz@snaked%
    {%
      \pgftransformreset%
      \pgfpathsnakesto{\tikz@presnake,{\tikz@snake}{\tikz@mainsnakelength}{\noexpand\tikz@snake@install@trans}{},\tikz@postsnake}{#1}%
    }%
  \fi%
  \pgfpathclose%
}%



\def\tikz@hv@lineto{%
  \pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@hv@lineto}{%
  \pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@hv@lineto}%
  {\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@hv@lineto}%
    {\tikz@scan@one@point{\tikz@@hv@lineto}}}}}%
\def\tikz@@hv@lineto#1{%
  \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \pgf@yc=\tikz@lasty%
  \tikz@make@last@position{#1}%
  \edef\tikz@tangent{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\pgf@yc}}%
  \tikz@flush@moveto@toward{\pgfqpoint{\tikz@lastx}{\pgf@yc}}\pgf@x\pgf@yc%
  \iftikz@shapeborder%
    {%
      \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\pgfqpoint{\tikz@lastx}{\pgf@yc}}}%
      \tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
      \tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\pgf@yc}}%
      \tikz@path@lineto{\tikz@last@position}%
      \xdef\tikz@timer@end@temp{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
    }%
    \let\tikz@timer@end=\tikz@timer@end@temp%
    \edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
  \else%
    \tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\pgf@yc}}%
    \tikz@path@lineto{\tikz@last@position}%
    \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \fi%
  \let\tikz@timer=\tikz@timer@hvline%
  \tikz@scan@next@command%
}%


\def\tikz@vh@lineto-{\tikz@vh@lineto@next}%
\def\tikz@vh@lineto@next{%
  \pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@vh@lineto@next}{%
  \pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@vh@lineto@next}%
  {\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@vh@lineto@next}%
    {\tikz@scan@one@point\tikz@@vh@lineto}}}}%
\def\tikz@@vh@lineto#1{%
  \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \pgf@xc=\tikz@lastx%
  \tikz@make@last@position{#1}%
  \edef\tikz@tangent{\noexpand\pgfqpoint{\the\pgf@xc}{\the\tikz@lasty}}%
  \tikz@flush@moveto@toward{\pgfqpoint{\pgf@xc}{\tikz@lasty}}\pgf@xc\pgf@y%
  \iftikz@shapeborder%
    {%
      \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\pgfqpoint{\pgf@xc}{\tikz@lasty}}}%
      \tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
      \tikz@path@lineto{\pgfqpoint{\pgf@xc}{\tikz@lasty}}%
      \tikz@path@lineto{\tikz@last@position}%
      \xdef\tikz@timer@end@temp{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
    }%
    \let\tikz@timer@end=\tikz@timer@end@temp%
    \edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
  \else%
    \tikz@path@lineto{\pgfqpoint{\pgf@xc}{\tikz@lasty}}%
    \tikz@path@lineto{\tikz@last@position}%
    \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \fi%
  \let\tikz@timer=\tikz@timer@vhline%
  \tikz@scan@next@command%
}%

\def\tikz@close c{%
  \pgfutil@ifnextchar o{\tikz@collect@coordinate@onpath\tikz@lineto@mid c}%
  {\tikz@@close c}}%
\def\tikz@@close cycle{%
  \tikz@flush@moveto%
  \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}
  \tikz@make@last@position{\expandafter\pgfpoint\pgfsyssoftpath@lastmoveto}%
  \tikz@path@close{\expandafter\pgfpoint\pgfsyssoftpath@lastmoveto}%
  \def\pgfstrokehook{}%
  \edef\tikz@timer@end{%
      \noexpand\pgfqpoint{\the\tikz@lastmovetox}{\the\tikz@lastmovetoy}}%
  \let\tikz@timer=\tikz@timer@line%
  \let\tikz@tangent\tikz@timer@start%
  \tikz@scan@next@command%
}%


\def\tikz@parse@options#1]{%
  \tikzset{#1}%
  \tikz@scan@next@command%
}%

\def\tikz@edge@plain{%
  \begingroup%
    \ifx\tikz@to@use@whom\pgfutil@undefined\else\tikz@to@use@whom\fi
    \let\tikz@to@or@edge@function=\tikz@do@edge%
    \let\tikz@@to@local@options\pgfutil@empty%
    \let\tikz@collected@onpath=\pgfutil@empty%
    \tikz@to@or@edge}%

\def\tikz@to o{%
  \tikz@to@use@last@coordinate%
  \let\tikz@to@or@edge@function=\tikz@do@to%
  \let\tikz@@to@local@options\pgfutil@empty%
  \let\tikz@collected@onpath=\pgfutil@empty%
  \tikz@to@or@edge}%

\def\tikz@to@or@edge{%
  \pgfutil@ifnextchar[{\tikz@to@or@edge@option}{%
    \pgfutil@ifnextchar:{\tikz@to@or@edge@animation}{%
      \tikz@@to@collect}}%
}%
\def\tikz@to@or@edge@option[#1]{%
  \expandafter\def\expandafter\tikz@@to@local@options\expandafter{\tikz@@to@local@options,#1}%
  \tikz@to@or@edge%
}%
\def\tikz@to@or@edge@animation:#1=#2{%
  \expandafter\def\expandafter\tikz@@to@local@options\expandafter{\tikz@@to@local@options,%
    animate={myself:{#1}={#2}}}%
  \tikz@to@or@edge%
}%
\def\tikz@@to@collect{%
  \pgfutil@ifnextchar(\tikz@@to@or@edge@coordinate%
  {\pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@@to@collect}%
    {\pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@@to@collect}%
      {\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@@to@collect}%
        {\pgfutil@ifnextchar +{\tikz@scan@one@point\tikz@@to@or@edge@math}%
          {\tikzerror{(, +, coordinate, pic, or node expected}%
            \tikz@@to@or@edge@coordinate()}}}}}%
}%

\def\tikz@@to@or@edge@coordinate({%
  \pgfutil@ifnextchar${%
    \tikz@scan@one@point\tikz@@to@or@edge@math(%
  }{%
    \pgfutil@ifnextchar[{%
      \tikz@scan@one@point\tikz@@to@or@edge@math(%
    }{%
      \tikz@@to@or@edge@@coordinate(%
    }%
  }%
}%
\def\tikz@@to@or@edge@math#1{%
  \pgf@process{#1}%
  \iftikz@updatecurrent\else
    \tikz@updatenextfalse
  \fi
  \edef\tikztotarget{\the\pgf@x,\the\pgf@y}%
  \tikz@to@or@edge@function%
}%

\def\tikz@@to@or@edge@@coordinate(#1){%
  \def\tikztotarget{#1}%
  \tikz@to@or@edge@function%
}%

\def\tikz@do@edge{%
  \ifx\tikz@edge@macro\pgfutil@empty%
    \setbox\tikz@whichbox=\hbox\bgroup%
      \unhbox\tikz@whichbox%
      \hbox\bgroup
        \bgroup%
          \pgfinterruptpath%
            \pgfscope%
              \let\tikz@transform=\pgfutil@empty%
              \let\tikz@options=\pgfutil@empty%
              \tikz@clear@rdf@options%
              \let\tikz@tonodes=\tikz@collected@onpath%
              \def\tikztonodes{{\pgfextra{\tikz@node@is@a@labeltrue}\tikz@tonodes}}%
              \let\tikz@collected@onpath=\pgfutil@empty%
              \tikz@options%
              \tikz@do@rdf@pre@options%
              \pgfidscope%
              \tikz@do@rdf@post@options%
              \tikz@transform%
              \let\tikz@transform=\relax%
              \let\tikz@after@path\pgfutil@empty%
              \tikz@atbegin@to%
                \tikz@enable@edge@quotes%
                \path[style=every edge]\expandafter[\tikz@@to@local@options](\tikztostart)\tikz@to@path
                \pgfextra{\global\let\tikz@after@path@smuggle=\tikz@after@path};%
              \tikz@atend@to%
              \endpgfidscope%
            \endpgfscope%
          \endpgfinterruptpath%
        \egroup
      \egroup%
    \egroup%
    \global\setbox\tikz@tempbox=\box\tikz@whichbox%
    \expandafter\endgroup%
    \expandafter\setbox\tikz@whichbox=\box\tikz@tempbox%
  \else%
      \expandafter\expandafter\expandafter\tikz@edge@macro%
      \expandafter\expandafter\expandafter{\expandafter\tikz@@to@local@options\expandafter}\expandafter{\tikz@collected@onpath}%
    \endgroup%
    \let\tikz@after@path@smuggle=\pgfutil@empty%
  \fi%
  \expandafter\tikz@scan@next@command\tikz@after@path@smuggle%
}%

\def\tikz@do@to{%
  \let\tikz@tonodes=\tikz@collected@onpath%
  \def\tikztonodes{{\pgfextra{\tikz@node@is@a@labeltrue}\tikz@tonodes}}%
  \let\tikz@collected@onpath=\pgfutil@empty%
  \tikz@scan@next@command%
  {%
    \pgfextra{\let\tikz@after@path\pgfutil@empty}%
    \pgfextra{\tikz@atbegin@to}%
    \pgfextra{\tikz@enable@edge@quotes}%
    [style=every to]\expandafter[\tikz@@to@local@options]\tikz@to@path%
    \pgfextra{\tikz@atend@to}%
    \pgf@stop%
    \expandafter\tikz@scan@next@command\expandafter%
  }\tikz@after@path%
  \pgfextra{\tikz@updatenexttrue\tikz@updatecurrenttrue}%
}%


\def\tikz@to@use@last@coordinate{%
  \iftikz@shapeborder%
    \edef\tikztostart{\tikz@shapeborder@name}%
  \else%
    \edef\tikztostart{\the\tikz@lastx,\the\tikz@lasty}%
  \fi%
}%
\def\tikz@to@use@last@fig@name{%
  \edef\tikztostart{\tikz@to@last@fig@name}%
}%




\def\tikz@graph aph{\tikz@lib@graph@parser}%

\def\tikz@lib@graph@parser{\pgfutil@ifnextchar[\tikz@graph@error{\tikz@graph@error[]}}%
\def\tikz@graph@error[#1]#2{%
  \tikzerror{You need to say \string\usetikzlibrary{graphs} in order to use the graph syntax}%
  \tikz@lib@graph@parser@done%
}%

\def\tikz@lib@graph@parser@done{%
  \tikz@scan@next@command%
}%




\def\tikz@edgetoparent from parent{\pgfutil@ifnextchar[\tikz@@edgetoparent{\tikz@@edgetoparent[]}}%
\def\tikz@@edgetoparent[#1]{%
  \let\tikz@edge@to@parent@needed=\pgfutil@empty%
  \def\tikz@edgetoparent@options{#1}%
  \begingroup%
    \let\tikz@collected@onpath=\pgfutil@empty%
    \tikz@edgetoparentcollect%
}%
\def\tikz@edgetoparentcollect{%
  \pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@edgetoparentcollect}%
  {%
      \expandafter%
    \endgroup%
    \expandafter\tikz@edgetoparent@rollout\expandafter{\tikz@collected@onpath}%
  }%
}%

\def\tikz@edgetoparent@rollout#1{%
  \pgfkeysgetvalue{/tikz/edge from parent macro}\tikz@etop@temp
  \expandafter\tikz@scan@next@command\expandafter\tikz@etop@temp\expandafter{\tikz@edgetoparent@options}{#1}%
}%



\def\tikz@dot.{\tikz@@dot}%
\def\tikz@@dot{%
  \pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@@dot}{%
  \pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@@dot}%
  {\pgfutil@ifnextchar c{\tikz@curveto@double}{\tikz@curveto@auto}}}%
}%

\def\tikz@curveto@double co{%
  \pgfutil@ifnextchar o{\tikz@collect@coordinate@onpath\tikz@@dot co}
  {\tikz@cureveto@@double}}%
\def\tikz@cureveto@@double ntrols#1{%
  \tikz@scan@one@point\tikz@curveA#1%
}%
\def\tikz@curveA#1{%
  \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  {%
    \tikz@lastxsaved=\tikz@lastx%
    \tikz@lastysaved=\tikz@lasty%
    \tikz@make@last@position{#1}%
    \xdef\tikz@curve@first{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  }%
  \pgfutil@ifnextchar a
  {\tikz@curveBand}%
  {\let\tikz@curve@second\tikz@curve@first\tikz@curveCdots}%
}%
\def\tikz@curveBand and{%
  \tikz@scan@one@point\tikz@curveB%
}%
\def\tikz@curveB#1{%
  \def\tikz@curve@second{#1}%
  \tikz@curveCdots}
\def\tikz@curveCdots{%
  \afterassignment\tikz@curveCdot\let\pgfutil@next=}%
\def\tikz@curveCdot.{%
  \ifx\pgfutil@next.%
  \else%
    \tikzerror{Dot expected}%
  \fi%
  \iftikz@updatenext
    \tikz@updatecurrenttrue%
  \fi
  \tikz@curveCcheck%
}%
\def\tikz@curveCcheck{%
  \pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@curveCcheck}{%
  \pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@curveCcheck}%
  {\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@curveCcheck}
    {\tikz@scan@one@point\tikz@curveC}}}%
}%
\def\tikz@curveC#1{%
  \tikz@make@last@position{#1}%
  \edef\tikz@curve@third{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  {%
    \tikz@lastxsaved=\tikz@lastx%
    \tikz@lastysaved=\tikz@lasty%
    \tikz@make@last@position{\tikz@curve@second}%
    \xdef\tikz@curve@second{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  }%
  \ifx\tikz@moveto@waiting\relax%
  \else%
    \pgf@process{\pgfpointshapeborder{\tikz@moveto@waiting}{\tikz@curve@first}}%
    \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \tikz@@movetosave{\pgfqpoint{\pgf@x}{\pgf@y}}%
  \fi%
  \let\tikz@timer@cont@one=\tikz@curve@first%
  \let\tikz@timer@cont@two=\tikz@curve@second%
  \iftikz@shapeborder%
    {%
      \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\tikz@curve@second}}%
      \tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
      \edef\tikz@curve@third{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
      \pgfpathcurveto{\tikz@curve@first}{\tikz@curve@second}{\tikz@curve@third}%
      \global\let\tikz@timer@end@temp=\tikz@curve@third%
    }%
    \let\tikz@timer@end=\tikz@timer@end@temp%
    \edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
  \else%
    \pgfpathcurveto{\tikz@curve@first}{\tikz@curve@second}{\tikz@curve@third}%
    \let\tikz@timer@end=\tikz@curve@third
    \let\tikz@moveto@waiting=\relax%
  \fi%
  \let\tikz@timer=\tikz@timer@curve%
  \let\tikz@tangent=\tikz@curve@second%
  \tikz@scan@next@command%
}%


\def\tikz@rect ectangle{%
  \tikz@flush@moveto%
  \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \tikz@@rect}%
\def\tikz@@rect{%
  \pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@@rect}{%
  \pgfutil@ifnextchar p{\tikz@collect@pic@onpath\tikz@@rect}%
  {\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@@rect}%
    {
      \pgf@xa=\tikz@lastx\relax%
      \pgf@ya=\tikz@lasty\relax%
      \tikz@scan@one@point\tikz@rectB}}}}%
\def\tikz@rectB#1{%
  \tikz@make@last@position{#1}%
  \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \let\tikz@timer=\tikz@timer@line%
          \tikz@@movetosave{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \tikz@path@lineto{\pgfqpoint{\pgf@xa}{\tikz@lasty}}%
  \tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
  \tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\pgf@ya}}%
  \iftikz@snaked%
    \tikz@path@lineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
  \fi%
  \pgfpathclose%
          \tikz@@movetosave{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
  \def\pgfstrokehook{}%
  \let\tikz@tangent\relax%
  \tikz@scan@next@command%
}%



\def\tikz@grid id{%
  \tikz@flush@moveto%
  \pgf@xa=\tikz@lastx\relax%
  \pgf@ya=\tikz@lasty\relax%
  \pgfutil@ifnextchar[{\tikz@gridA}{\tikz@gridA[]}}%
\def\tikz@gridA[#1]{%
  \def\tikz@grid@options{#1}%
  \tikz@cycle@expander{\tikz@scan@one@point\tikz@gridB}}%
\def\tikz@gridB#1{%
  \tikz@make@last@position{#1}%
  \let\tikz@tangent\relax%
  {%
    \let\tikz@after@path\pgfutil@empty%
    \expandafter\tikzset\expandafter{\tikz@grid@options}
    \tikz@checkunit{\tikz@grid@x}%
    \iftikz@isdimension%
      \pgf@process{\pgfpoint{\tikz@grid@x}{0pt}}%
    \else%
      \pgf@process{\pgfpointxy{\tikz@grid@x}{0}}%
    \fi%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \tikz@checkunit{\tikz@grid@y}%
    \iftikz@isdimension%
      \pgf@process{\pgfpoint{0pt}{\tikz@grid@y}}%
    \else%
      \pgf@process{\pgfpointxy{0}{\tikz@grid@y}}%
    \fi%
    \advance\pgf@xb by\pgf@x%
    \advance\pgf@yb by\pgf@y%
    \pgfpathgrid[stepx=\pgf@xb,stepy=\pgf@yb]%
      {\pgfqpoint{\pgf@xa}{\pgf@ya}}{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
  \expandafter}%
  \expandafter\tikz@scan@next@command\tikz@after@path%
}%



\def\tikz@plot lot{%
  \tikz@flush@moveto%
  \pgfutil@ifnextchar[{\tikz@@plot}{\tikz@@plot[]}}%
\def\tikz@@plot[#1]{%
  \let\tikz@tangent\tikz@tangent@lookup%
  \begingroup%
    \let\tikz@after@path\pgfutil@empty%
    \let\tikz@options=\pgfutil@empty%
    \tikzset{every plot/.try}%
    \tikzset{#1}%
    \pgfutil@ifnextchar f{\tikz@plot@f}%
    {\pgfutil@ifnextchar c{\tikz@plot@scan@points}%
      {\pgfutil@ifnextchar ({\tikz@plot@expression}{%
      \tikzerror{Cannot parse this plotting data}%
       \endgroup}}}}%
\def\tikz@plot@f f{\pgfutil@ifnextchar i{\tikz@plot@file}{\tikz@plot@function}}%

\def\tikz@plot@file ile#1{\def\tikz@plot@data{\pgfplotxyfile{#1}}\tikz@@@plot}%
\def\tikz@plot@scan@points coordinates#1{%
  \pgfplothandlerrecord\tikz@plot@data%
  \pgfplotstreamstart%
  \pgfutil@ifnextchar\pgf@stop{\pgfplotstreamend\expandafter\tikz@@@plot\pgfutil@gobble}
  {\tikz@scan@one@point\tikz@plot@next@point}%
  #1\pgf@stop%
}%
\def\tikz@plot@next@point#1{%
  \pgfplotstreampoint{#1}%
  \pgfutil@ifnextchar\pgf@stop{\pgfplotstreamend\expandafter\tikz@@@plot\pgfutil@gobble}%
  {\tikz@scan@one@point\tikz@plot@next@point}%
}%
\def\tikz@plot@function unction#1{%
  \def\tikz@plot@filename{\tikz@plot@prefix\tikz@plot@id}%
  \iftikz@plot@raw@gnuplot%
    \def\tikz@plot@data{\pgfplotgnuplot[\tikz@plot@filename]{#1}}%
  \else%
    \iftikz@plot@parametric%
      \def\tikz@plot@data{\pgfplotgnuplot[\tikz@plot@filename]{%
          set samples \tikz@plot@samples;
          set parametric;
          plot [t=\tikz@plot@domain]
          [\tikz@plot@xrange]
          [\tikz@plot@range]
          #1}}%
    \else%
      \def\tikz@plot@data{\pgfplotgnuplot[\tikz@plot@filename]{%
          set samples \tikz@plot@samples;
          plot [x=\tikz@plot@domain]
          \ifx\tikz@plot@range\pgfutil@empty\else[\tikz@plot@range]\fi
          #1}}%
    \fi%
  \fi%
  \tikz@@@plot%
}%

\def\tikz@plot@no@resample{%
  \pgfutil@IfFileExists{\tikz@plot@filename.table}%
  {\def\tikz@plot@data{\pgfplotxyfile{\tikz@plot@filename.table}}}%
  {}%
}%

\def\tikz@plot@expression(#1){%
  \edef\tikz@plot@data{\noexpand\pgfplotfunction{\expandafter\noexpand\tikz@plot@var}{\tikz@plot@samplesat}}%
  \expandafter\def\expandafter\tikz@plot@data\expandafter{\tikz@plot@data{\tikz@scan@one@point\pgfutil@firstofone(#1)}}%
  \tikz@@@plot%
}%

\def\tikz@@@plot{%
    \def\pgfplotlastpoint{\pgfpointorigin}%
    \tikz@plot@handler%
    \tikz@plot@data%
    \global\let\tikz@@@temp=\pgfplotlastpoint%
    \ifx\tikz@plot@mark\pgfutil@empty%
    \else%
      \setbox\tikz@whichbox=\hbox{%
        \unhbox\tikz@whichbox%
        \hbox{{%
          \pgfinterruptpath%
            \pgfscope%
              \let\tikz@options=\pgfutil@empty%
              \let\tikz@transform=\pgfutil@empty%
              \tikzset{every mark}%
              \tikz@options%
              \ifx\tikz@mark@list\pgfutil@empty%
                \pgfplothandlermark{\tikz@transform\pgfuseplotmark{\tikz@plot@mark}}%
              \else
                \pgfplothandlermarklisted{\tikz@transform\pgfuseplotmark{\tikz@plot@mark}}{\tikz@mark@list}%
              \fi
              \tikz@plot@data%
            \endpgfscope
          \endpgfinterruptpath%
        }}%
      }%
    \fi%
    \global\setbox\tikz@tempbox=\box\tikz@whichbox%
    \global\let\tikz@after@path@smuggle=\tikz@after@path
  \expandafter\endgroup%
  \expandafter\setbox\tikz@whichbox=\box\tikz@tempbox%
  \tikz@make@last@position{\tikz@@@temp}%
  \expandafter\tikz@scan@next@command\tikz@after@path@smuggle%
}%


\pgfdeclareplotmark{ball}
{%
  \def\tikz@shading{ball}%
  \shade (0pt,0pt) circle (\pgfplotmarksize);%
}%




\def\tikz@cosine s{\tikz@cycle@expander{\tikz@scan@one@point\tikz@@cosine}}
\def\tikz@@cosine#1{%
  \let\tikz@tangent\tikz@tangent@lookup%
  \tikz@flush@moveto%
  \pgf@process{#1}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \advance\pgf@xc by-\tikz@lastx%
  \advance\pgf@yc by-\tikz@lasty%
  \advance\tikz@lastx by\pgf@xc%
  \advance\tikz@lasty by\pgf@yc%
  \tikz@lastxsaved=\tikz@lastx%
  \tikz@lastysaved=\tikz@lasty%
  \tikz@updatecurrenttrue%
  \pgfpathcosine{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
  \tikz@scan@next@command%
}%

\def\tikz@sine in{\tikz@cycle@expander{\tikz@scan@one@point\tikz@@sine}}
\def\tikz@@sine#1{%
  \let\tikz@tangent\tikz@tangent@lookup%
  \tikz@flush@moveto%
  \pgf@process{#1}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \advance\pgf@xc by-\tikz@lastx%
  \advance\pgf@yc by-\tikz@lasty%
  \advance\tikz@lastx by\pgf@xc%
  \advance\tikz@lasty by\pgf@yc%
  \tikz@lastxsaved=\tikz@lastx%
  \tikz@lastysaved=\tikz@lasty%
  \tikz@updatecurrenttrue%
  \pgfpathsine{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
  \tikz@scan@next@command%
}%

\def\tikz@parabola arabola{%
  \let\tikz@tangent\tikz@tangent@lookup%
  \pgfutil@ifnextchar[{\tikz@parabola@options}{\tikz@parabola@options[]}}%

\def\tikz@parabola@options[#1]{%
  \def\tikz@parabola@option{#1}%
  \pgfutil@ifnextchar b{\tikz@parabola@scan@bend}{\tikz@cycle@expander{\tikz@scan@one@point\tikz@parabola@semifinal}}}%
\def\tikz@parabola@scan@bend bend{\tikz@scan@one@point\tikz@parabola@scan@bendB}%
\def\tikz@parabola@scan@bendB#1{%
  \def\tikz@parabola@bend{#1}%
  \tikz@cycle@expander{\tikz@scan@one@point\tikz@parabola@semifinal}%
}%
\def\tikz@parabola@semifinal#1{%
  \tikz@flush@moveto%
  \pgf@xb=\tikz@lastx%
  \pgf@yb=\tikz@lasty%
  \tikz@make@last@position{#1}%
  \pgf@xc=\tikz@lastx%
  \pgf@yc=\tikz@lasty%
  \begingroup%
    \let\tikz@after@path\pgfutil@empty%
    \expandafter\tikzset\expandafter{\tikz@parabola@option}%
    \tikz@lastxsaved=\tikz@parabola@bend@factor\tikz@lastx%
    \tikz@lastysaved=\tikz@parabola@bend@factor\tikz@lasty%
    \advance\tikz@lastxsaved by\pgf@xb%
    \advance\tikz@lastysaved by\pgf@yb%
    \advance\tikz@lastxsaved by-\tikz@parabola@bend@factor\pgf@xb%
    \advance\tikz@lastysaved by-\tikz@parabola@bend@factor\pgf@yb%
    \expandafter\tikz@make@last@position\expandafter{\tikz@parabola@bend}%
    \advance\pgf@xc by-\tikz@lastx%
    \advance\pgf@yc by-\tikz@lasty%
    \advance\tikz@lastx by-\pgf@xb%
    \advance\tikz@lasty by-\pgf@yb%
    \xdef\tikz@parabola@b{{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}}%
  \expandafter\endgroup%
  \expandafter\expandafter\expandafter\pgfpathparabola\expandafter\tikz@parabola@b%
  \expandafter\tikz@scan@next@command\tikz@after@path%
}%


\def\tikz@circle ircle{\tikz@flush@moveto\tikz@@circle}%
\def\tikz@ellipse llipse{\tikz@flush@moveto\tikz@@circle}%
\def\tikz@@circle{%
  \let\tikz@tangent\relax%
  \pgfutil@ifnextchar(\tikz@@@circle
  {\pgfutil@ifnextchar[\tikz@circle@opt{%
    \advance\tikz@expandcount by -10\relax%
    \ifnum\tikz@expandcount<0\relax%
      \let\pgfutil@next=\tikz@@circle@normal%
    \else%
      \let\pgfutil@next=\tikz@@circle@scanexpand%
    \fi%
    \pgfutil@next%
  }}%
}%
\def\tikz@@circle@scanexpand{\expandafter\tikz@@circle}%
\def\tikz@@circle@normal{\tikz@circle@opt[]}%

\def\tikz@circle@opt[#1]{%
  {%
    \def\tikz@node@at{\tikz@last@position}%
    \let\tikz@transform=\pgfutil@empty%
    \tikzset{every circle/.try,#1}%
    \pgftransformshift{\tikz@node@at}%
    \tikz@transform%
    \tikz@do@ellipse{\pgfkeysvalueof{/tikz/x radius}}{\pgfkeysvalueof{/tikz/y radius}}
  }%
  \tikz@scan@next@command%
}%

\def\tikz@@@circle(#1){%
  {%
    \pgftransformshift{\tikz@last@position}%
    \pgfutil@in@{ and }{#1}%
    \ifpgfutil@in@%
      \tikz@@ellipseB(#1)%
    \else%
      \tikz@do@circle{#1}%
    \fi%
  }%
  \tikz@scan@next@command%
}%
\def\tikz@@ellipseB(#1 and #2){%
  \tikz@do@ellipse{#1}{#2}%
}%
\def\tikz@do@circle#1{%
  \pgfmathparse{#1}%
  \let\tikz@ellipse@x=\pgfmathresult
  \ifpgfmathunitsdeclared
    \pgfpathellipse{\pgfpointorigin}%
      {\pgfqpoint{\tikz@ellipse@x pt}{0pt}}%
      {\pgfpoint{0pt}{\tikz@ellipse@x pt}}%
  \else
    \pgfpathellipse{\pgfpointorigin}%
      {\pgfpointxy{\tikz@ellipse@x}{0}}%
      {\pgfpointxy{0}{\tikz@ellipse@x}}%
  \fi
}
\def\tikz@do@ellipse#1#2{
  \pgfmathparse{#1}%
  \let\tikz@ellipse@x=\pgfmathresult%
  \ifpgfmathunitsdeclared%
    \pgfmathparse{#2}%
    \let\tikz@ellipse@y=\pgfmathresult%
    \ifpgfmathunitsdeclared%
      \pgfpathellipse{\pgfpointorigin}{%
        \pgfqpoint{\tikz@ellipse@x pt}{0pt}}{\pgfpoint{0pt}{\tikz@ellipse@y pt}}%
    \else%
      \tikzerror{You cannot mix dimensions and dimensionless values in an ellipse}%
    \fi%
  \else%
    \pgfmathparse{#2}%
    \let\tikz@ellipse@y=\pgfmathresult%
    \ifpgfmathunitsdeclared%
      \tikzerror{You cannot mix dimensions and dimensionless values in an ellipse}%
    \else%
      \pgfpathellipse{\pgfpointorigin}{%
        \pgfpointxy{\tikz@ellipse@x}{0}}{\pgfpointxy{0}{\tikz@ellipse@y}}%
    \fi%
  \fi%
}%

\def\tikz@arcA rc{\tikz@flush@moveto\tikz@arc@cont}%
\def\tikz@arc@cont{%
  \pgfutil@ifnextchar(%
  {\tikz@@arcto}{%
    \pgfutil@ifnextchar[%
    {\tikz@arc@opt}%
    {%
      \advance\tikz@expandcount by -10\relax%
      \ifnum\tikz@expandcount<0\relax%
        \let\pgfutil@next=\tikz@@arc@normal%
      \else%
        \let\pgfutil@next=\tikz@@arc@scanexpand%
      \fi%
      \pgfutil@next%
    }%
  }%
}%
\def\tikz@@arc@scanexpand{\expandafter\tikz@arc@cont}%
\def\tikz@@arc@normal{\tikz@arc@opt[]}%


\def\tikz@arc@opt[#1]{%
  {%
    \tikzset{every arc/.try,#1}%
    \pgfkeysgetvalue{/tikz/start angle}\tikz@s
    \pgfkeysgetvalue{/tikz/end angle}\tikz@e
    \pgfkeysgetvalue{/tikz/delta angle}\tikz@d
    \ifx\tikz@s\pgfutil@empty%
      \pgfmathsetmacro\tikz@s{\tikz@e-\tikz@d}
    \else
      \ifx\tikz@e\pgfutil@empty%
        \pgfmathsetmacro\tikz@e{\tikz@s+\tikz@d}
      \fi%
    \fi%
    \xdef\pgf@marshal{\noexpand%
    \tikz@do@arc{\tikz@s}{\tikz@e}
      {\pgfkeysvalueof{/tikz/x radius}}
      {\pgfkeysvalueof{/tikz/y radius}}}%
  }%
  \pgf@marshal%
  \tikz@arcfinal%
}%

\def\tikz@@arcto(#1){%
  \edef\tikz@temp{(#1)}%
  \expandafter\tikz@@@arcto@check@slashand\tikz@temp%
}%

\def\tikz@@@arcto@check@slashand(#1:#2:#3){%
  \pgfutil@in@{ and }{#3}%
  \ifpgfutil@in@%
    \tikz@parse@arc@and(#1:#2:#3)%
  \else%
    \tikz@parse@arc@and(#1:#2:{#3} and {#3})%
  \fi%
  \tikz@arcfinal%
}%

\def\tikz@parse@arc@and(#1:#2:#3 and #4){%
  \tikz@do@arc{#1}{#2}{#3}{#4}%
}%
\def\tikz@do@arc#1#2#3#4{%
  \let\tikz@tangent\tikz@tangent@lookup%
  \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
  \pgfmathsetmacro\tikz@timer@start@angle{#1}%
  \pgfmathsetmacro\tikz@timer@end@angle{#2}%
  \pgfmathparse{#3}%
  \let\tikz@arc@x=\pgfmathresult%
  \ifpgfmathunitsdeclared%
    \pgfmathparse{#4}%
    \let\tikz@arc@y=\pgfmathresult%
    \ifpgfmathunitsdeclared%
      \tikz@@@arcfinal{\pgfpatharc{\tikz@timer@start@angle}{\tikz@timer@end@angle}{\tikz@arc@x pt and \tikz@arc@y pt}}
      {\pgfpointpolar{\tikz@timer@start@angle}{\tikz@arc@x pt and \tikz@arc@y pt}}
      {\pgfpointpolar{\tikz@timer@end@angle}{\tikz@arc@x pt and \tikz@arc@y pt}}%
      \edef\tikz@timer@zero@axis{\noexpand\pgfqpoint{\tikz@arc@x pt}{0pt}}
      \edef\tikz@timer@ninety@axis{\noexpand\pgfqpoint{0pt}{\tikz@arc@y pt}}
    \else%
      \tikzerror{You cannot mix dimensions and dimensionless values in an arc}%
    \fi%
  \else%
    \pgfmathparse{#4}%
    \let\tikz@arc@y=\pgfmathresult%
    \ifpgfmathunitsdeclared%
      \tikzerror{You cannot mix dimensions and dimensionless values in an arc}%
    \else%
      \tikz@@@arcfinal{\pgfpatharcaxes{\tikz@timer@start@angle}{\tikz@timer@end@angle}{\pgfpointxy{\tikz@arc@x}{0}}{\pgfpointxy{0}{\tikz@arc@y}}}
      {\pgfpointpolarxy{\tikz@timer@start@angle}{\tikz@arc@x and \tikz@arc@y}}{\pgfpointpolarxy{\tikz@timer@end@angle}{\tikz@arc@x and \tikz@arc@y}}%
      \pgf@process{\pgfpointxy{\tikz@arc@x}{0}}
      \edef\tikz@timer@zero@axis{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
      \pgf@process{\pgfpointxy{0}{\tikz@arc@y}}
      \edef\tikz@timer@ninety@axis{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
     \fi%
  \fi%
}%

\def\tikz@@@arcfinal#1#2#3{%
  #1%
  \pgf@process{#2}
  \xdef\tikz@arc@save@first{\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
  \pgf@process{#3}
  \xdef\tikz@arc@save@second{\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
}%

\def\tikz@arcfinal{%
  \pgf@process{\tikz@arc@save@first}%
  \advance\tikz@lastx by-\pgf@x%
  \advance\tikz@lasty by-\pgf@y%
  \pgf@process{\tikz@arc@save@second}%
  \advance\tikz@lastx by\pgf@x%
  \advance\tikz@lasty by\pgf@y%
  \tikz@lastxsaved=\tikz@lastx%
  \tikz@lastysaved=\tikz@lasty%
  \let\tikz@timer=\tikz@timer@arc%
  \tikz@scan@next@command%
}%


\def\tikz@coordinate ordinate{%
  \pgfutil@ifnextchar[{\tikz@@coordinate@opt}{\tikz@@coordinate@opt[]}}%
\def\tikz@@coordinate@opt[#1]{%
  \pgfutil@ifnextchar({\tikz@@coordinate[#1]}
  {\tikz@fig ode[shape=coordinate,#1]{}}}%
\def\tikz@@coordinate[#1](#2){%
  \pgfutil@ifnextchar a{\tikz@@coordinate@at[#1](#2)}
  {\tikz@fig ode[shape=coordinate,#1](#2){}}}%
\def\tikz@@coordinate@at[#1](#2)a{%
  \pgfutil@ifnextchar t{\tikz@@coordinate@@at[#1](#2)a}%
  {\tikz@fig ode[shape=coordinate,#1](#2){}a}%
}%
\def\tikz@@coordinate@@at[#1](#2)at#3({%
  \def\tikz@coordinate@caller{\tikz@fig ode[shape=coordinate,#1](#2)at}%
  \tikz@scan@one@point\tikz@@coordinate@at@math(%
}%
\def\tikz@@coordinate@at@math#1{%
  \pgf@process{#1}%
  \edef\tikz@temp{(\the\pgf@x,\the\pgf@y)}%
  \expandafter\tikz@coordinate@caller\tikz@temp{}%
}%



\def\tikz@fig ode{%
  \pgfutil@ifnextchar a\tikz@test@also{%
    \pgfutil@ifnextchar f{\tikz@nodes@start}\tikz@normal@fig}}%
\def\tikz@test@also a{\pgfutil@ifnextchar l\tikz@node@also{\tikz@normal@fig a}}%
\def\tikz@normal@fig{%
  \edef\tikz@save@line@width{\the\pgflinewidth}%
  \begingroup%
  \let\tikz@fig@name=\pgfutil@empty%
    \begingroup%
      \tikz@is@matrixfalse%
      \let\nodepart=\tikz@nodepart%
      \let\tikz@atbegin@scope=\pgfutil@empty%
      \let\tikz@atend@scope=\pgfutil@empty%
      \let\tikz@do@after@node=\tikz@scan@next@command%
      \let\tikz@options=\pgfutil@empty%
      \tikz@clear@rdf@options%
      \let\tikz@id@name=\pgfutil@empty%
      \let\tikz@after@path=\pgfutil@empty%
      \let\tikz@transform=\pgfutil@empty%
      \let\tikz@mode=\pgfutil@empty%
      \tikz@decoratepathfalse%
      \let\tikz@preactions=\pgfutil@empty%
      \let\tikz@postactions=\pgfutil@empty%
      \let\tikz@alias=\pgfutil@empty%
      \def\tikz@node@at{\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
      \let\tikz@time@for@matrix\tikz@time%
      \let\tikz@node@content\relax%
      \pgfgetpath\tikzpathuptonow%
      \iftikz@node@is@a@label%
      \else%
        \let\tikz@time\pgfutil@empty%
      \fi%
      \tikz@node@reset@hook%
      \tikzset{every node/.try}%
      \tikz@@scan@fig}%
\def\tikz@@scan@fig{%
  \pgfutil@ifnextchar a{\tikz@fig@scan@at}
  {\pgfutil@ifnextchar({\tikz@fig@scan@name}
    {\pgfutil@ifnextchar[{\tikz@fig@scan@options}%
      {\pgfutil@ifnextchar:{\tikz@fig@scan@animation}%
        {\pgfutil@ifnextchar\bgroup{\tikz@fig@main}%
          {\tikzerror{A node must have a (possibly empty) label text}%
            \tikz@fig@main{}}}}}}}%
\def\tikz@fig@scan@at at{%
  \tikz@scan@one@point\tikz@@fig@scan@at}%
\def\tikz@@fig@scan@at#1{%
  \def\tikz@node@at{#1}\tikz@@scan@fig}%
\def\tikz@fig@scan@name(#1){%
    \pgfkeysvalueof{/tikz/name/.@cmd}#1\pgfeov%
    \tikz@@scan@fig}%
\long\def\tikz@fig@scan@options[#1]{\iftikz@node@is@pic\tikz@enable@pic@quotes\else\tikz@enable@node@quotes\fi\tikzset{#1}\ifx\tikz@node@content\relax\expandafter\tikz@@scan@fig\else\tikz@expand@node@contents\fi}%
\def\tikz@fig@scan@animation:#1=#2{\tikzset{animate={myself:{#1}={#2}}}\tikz@@scan@fig}%
\def\tikz@expand@node@contents{%
  \expandafter\tikz@@scan@fig\expandafter{\tikz@node@content}%
}%
\let\tikz@node@reset@hook=\pgfutil@empty%
\let\tikz@node@begin@hook=\pgfutil@empty%
\def\tikz@fig@main{%
  \iftikz@node@is@pic%
    \tikz@node@is@picfalse%
    \expandafter\tikz@subpicture@handle%
  \else%
    \afterassignment\tikz@@fig@main\expandafter\let\expandafter\next\expandafter=%
  \fi}%
\def\tikz@@fig@main{%
    \pgfutil@ifundefined{pgf@sh@s@\tikz@shape}%
    {\tikzerror{Unknown shape ``\tikz@shape.'' Using ``rectangle'' instead}%
      \def\tikz@shape{rectangle}}%
    {}%
    \expandafter\xdef\csname tikz@dcl@coord@\tikz@fig@name\endcsname{%
      \csname tikz@scan@point@coordinate\endcsname}%
    \tikzset{every \tikz@shape\space node/.try}%
    \tikz@node@textfont%
    \tikz@node@begin@hook%
    \iftikz@is@matrix%
      \let\tikz@next=\tikz@do@matrix%
    \else%
      \let\tikz@next=\tikz@do@fig%
    \fi%
    \tikz@next%
}%
\let\tikz@nodepart@list\pgfutil@empty
\def\tikz@do@fig{%
    \pgfutil@for\tikz@temp:=\tikz@nodepart@list\do{%
      \expandafter\setbox\csname pgfnodepart\tikz@temp box\endcsname=\box\pgfutil@voidb@x%
    }%
    \setbox\pgfnodeparttextbox=\hbox%
      \bgroup%
        \pgfinterruptpicture%
        \pgfsys@begin@text%
          \pgfsys@text@to@black@hook%
          \tikzset{every text node part/.try}%
          \ifx\tikz@textopacity\pgfutil@empty%
          \else%
            \pgfsetfillopacity{\tikz@textopacity}%
            \pgfsetstrokeopacity{\tikz@textopacity}%
          \fi%
          \ifx\tikz@text@width\pgfutil@empty%
            \tikz@textfont%
          \else%
            \begingroup%
                \pgfmathsetlength{\pgf@x}{\tikz@text@width}%
              \pgfutil@minipage[t]{\pgf@x}\leavevmode\hbox{}%
                \tikz@textfont%
                \tikz@text@action%
          \fi%
          \tikz@atbegin@node%
          \bgroup%
            \aftergroup\unskip%
            \ifx\tikz@textcolor\pgfutil@empty%
            \else%
              \pgfutil@colorlet{.}{\tikz@textcolor}%
              \pgfutil@color{\tikz@textcolor}%
            \fi%
            \setbox\tikz@figbox=\box\pgfutil@voidb@x%
            \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
            \tikz@uninstallcommands%
            \iftikz@handle@active@code%
              \tikz@orig@shorthands%
              \let\tikz@orig@shorthands\pgfutil@empty%
            \fi%
            \ifnum\the\catcode`\;=\active\relax\expandafter\let\tikz@activesemicolon=\tikz@origsemi\fi%
            \ifnum\the\catcode`\:=\active\relax\expandafter\let\tikz@activecolon=\tikz@origcolon\fi%
            \ifnum\the\catcode`\|=\active\relax\expandafter\let\tikz@activebar=\tikz@origbar\fi%
            \aftergroup\tikz@fig@collectresetcolor%
            \tikz@signal@halign@check%
            \tikz@text@reset%
            \tikz@halign@check%
            \ignorespaces%
}%
\def\tikz@fig@collectresetcolor{%
  \pgfutil@ifnextchar\reset@color%
  {\reset@color\afterassignment\tikz@fig@collectresetcolor\let\tikz@temp=}\tikz@fig@boxdone%
}%
\def\tikz@fig@boxdone{%
            \tikz@atend@node%
          \ifx\tikz@text@width\pgfutil@empty%
          \else%
              \pgfutil@endminipage%
            \endgroup%
          \fi%
        \pgfsys@end@text%
        \endpgfinterruptpicture%
      \egroup%
    \pgfutil@ifnextchar c{\tikz@fig@mustbenamed\tikz@fig@continue}%
    {\pgfutil@ifnextchar[{\tikz@fig@mustbenamed\tikz@fig@continue}%
      {\pgfutil@ifnextchar t{\tikz@fig@mustbenamed\tikz@fig@continue}
        {\pgfutil@ifnextchar e{\tikz@fig@mustbenamed\tikz@fig@continue}
          {\ifx\tikz@after@path\pgfutil@empty\expandafter\tikz@fig@continue\else\expandafter\tikz@fig@mustbenamed\expandafter\tikz@fig@continue\fi}}}}}%

\tikzset{
  matrix/inner style/every cell/.code={%
    \tikzset{every cell/.try={\the\pgfmatrixcurrentrow}{\the\pgfmatrixcurrentcolumn}}%
  },
  matrix/inner style/column/.code={%
    \tikzset{column \the\pgfmatrixcurrentcolumn/.try}%
  },
  matrix/inner style/even odd column/.code={
    \ifodd\pgfmatrixcurrentcolumn%
      \tikzset{every odd column/.try}%
    \else%
      \tikzset{every even column/.try}%
    \fi
  },
  matrix/inner style/row/.code={%
    \tikzset{row \the\pgfmatrixcurrentrow/.try}%
  },
  matrix/inner style/even odd row/.code={%
    \ifodd\pgfmatrixcurrentrow%
      \tikzset{every odd row/.try}%
    \else%
      \tikzset{every even row/.try}%
    \fi
  },
  matrix/inner style/cell/.code={%
    \tikzset{row \the\pgfmatrixcurrentrow\space column \the\pgfmatrixcurrentcolumn/.try}%
  },
  matrix/inner style order/.store in=\tikz@common@matrix@code@styleorder,
  matrix/inner style order={
    every cell,
    column,
    even odd column,
    row,
    even odd row,
    cell
  },
}%

\def\tikz@do@matrix{%
    \tikzset{every matrix/.try}%
    \tikz@node@transformations%
    \tikz@fig@mustbenamed%
    \setbox\tikz@whichbox=\hbox\bgroup%
      \unhbox\tikz@whichbox%
      \hbox\bgroup\bgroup%
          \pgfinterruptpath%
            \pgfscope%
              \ifx\tikz@time\pgfutil@empty\let\tikz@time\tikz@time@for@matrix\fi%
              \tikz@options%
              \tikz@do@rdf@pre@options%
              \tikz@is@nodefalse%
              \tikz@call@id@hook%
              \pgfidscope%
                \tikz@do@rdf@post@options%
                \begingroup%
                \let\tikz@id@name\pgfutil@empty%
                \pgfclearid%
                \setbox\tikz@figbox=\box\pgfutil@voidb@x%
                \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
                \let\tikzmatrixname=\tikz@fig@name%
                \edef\tikz@m@anchor{\ifx\tikz@matrix@anchor\pgfutil@empty\tikz@anchor\else\tikz@matrix@anchor\fi}%
                \expandafter\pgfutil@in@\expandafter{\expandafter.\expandafter}\expandafter{\tikz@m@anchor}%
                \ifpgfutil@in@%
                  \expandafter\tikz@matrix@split\tikz@m@anchor\relax%
                \else%
                  \def\tikz@matrix@shift{\pgfpointorigin}%
                \fi%
                \let\tikz@transform=\relax%
                \pgfmatrixbeforeassemblenode{\tikzset{every outer matrix/.try}}%
                \pgfmatrix%
                {\tikz@shape}%
                {\tikz@m@anchor}%
                {\tikz@fig@name}%
                {%
                  \pgfutil@tempdima=\pgflinewidth%
                  {\begingroup\tikz@finish}%
                  \global\pgflinewidth=\pgfutil@tempdima%
                }%
                {\tikz@matrix@shift}%
                {%
                  \tikz@matrix@make@active@ampersand%
                  \def\pgfmatrixbegincode{%
                    \pgfsys@beginscope%
                    \tikz@common@matrix@code%
                    \tikz@atbegin@cell%
                  }%
                  \def\tikz@common@matrix@code{%
                    \let\tikz@options=\pgfutil@empty%
                    \let\tikz@mode=\pgfutil@empty%
                    \pgfutil@for\pgf@temp:=\tikz@common@matrix@code@styleorder\do{%
                      \toks0=\expandafter{\romannumeral-`0\expandafter\pgfutil@trimspaces\expandafter{\pgf@temp}}%
                      \def\pgf@marshal{}%
                      \pgfutil@ifxempty\pgf@temp{}{%
                        \edef\pgf@marshal{\noexpand\tikzset{matrix/inner style/.cd,\the\toks0}}%
                      }%
                      \pgf@marshal
                    }%
                    \tikz@options%
                  }%
                  \def\pgfmatrixendcode{%
                    \tikz@atend@cell%
                    \pgfsys@endscope%
                  }%
                  \def\pgfmatrixemptycode{%
                    \pgfsys@beginscope%
                    \tikz@common@matrix@code%
                    \tikz@at@emptycell%
                    \pgfsys@endscope%
                  }%
                  \tikz@atbegin@matrix%
                  \aftergroup\tikz@do@matrix@cont}%
                \bgroup%
}%
\def\tikz@do@matrix@cont{%
                \tikz@atend@matrix%
              \endgroup%
              \endpgfidscope%
            \endpgfscope
          \endpgfinterruptpath%
      \egroup\egroup%
    \egroup%
    \tikz@node@finish%
}%
{%
  \catcode`\&=13
  \gdef\tikz@matrix@make@active@ampersand{%
    \ifx\tikz@ampersand@replacement\pgfutil@empty%
      \catcode`\&=13%
      \let&=\pgfmatrixnextcell%
    \else%
      \expandafter\let\tikz@ampersand@replacement=\pgfmatrixnextcell%
    \fi%
  }%
}%


\def\tikz@matrix@split#1.#2\relax{%
  \def\tikz@m@anchor{text}%
  \def\tikz@matrix@shift{\pgfpointanchor{#1}{#2}}%
}%

\def\tikz@fig@continue{%
    \ifx\tikz@text@width\pgfutil@empty%
    \else%
      \pgfmathsetlength{\pgf@x}{\tikz@text@width}%
      \wd\pgfnodeparttextbox=\pgf@x%
    \fi%
    \ifx\tikz@text@height\pgfutil@empty%
    \else%
      \pgfmathsetlength{\pgf@x}{\tikz@text@height}%
      \ht\pgfnodeparttextbox=\pgf@x%
    \fi%
    \ifx\tikz@text@depth\pgfutil@empty%
    \else%
      \pgfmathsetlength{\pgf@x}{\tikz@text@depth}%
      \dp\pgfnodeparttextbox=\pgf@x%
    \fi%
    \tikz@node@transformations%
    \tikz@nlt%
    \setbox\tikz@whichbox=\hbox{%
      \unhbox\tikz@whichbox%
      \hbox{{%
          \pgfinterruptpath%
            \pgfscope%
              \tikz@options%
              \tikz@do@rdf@pre@options%
              \tikz@is@nodetrue%
              \tikz@call@id@hook%
              \pgfidscope%
                \tikz@do@rdf@post@options%
                \let\tikz@id@name\pgfutil@empty%
                \setbox\tikz@figbox=\box\pgfutil@voidb@x%
                \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
                \setbox\pgfnodeparttextbox=\hbox{{%
                    \pgfsys@begin@text%
                    \ifx\tikz@textcolor\pgfutil@empty%
                    \else%
                      \pgfutil@colorlet{.}{\tikz@textcolor}%
                    \fi%
                    \pgfsetcolor{.}%
                    \pgfusetype{.text}%
                    \pgfidscope%
                      \box\pgfnodeparttextbox%
                    \endpgfidscope%
                    \pgfsys@end@text%
                  }}%
                \pgfmultipartnode{\tikz@shape}{\tikz@anchor}{\tikz@fig@name}{%
                  \pgfutil@tempdima=\pgflinewidth%
                  {\begingroup\tikz@finish}%
                  \global\pgflinewidth=\pgfutil@tempdima%
                }%
              \endpgfidscope%
            \endpgfscope%
          \endpgfinterruptpath%
      }}%
    }%
    \tikz@alias%
    \tikz@node@finish%
}%


\def\tikz@fig@mustbenamed{%
  \ifx\tikz@fig@name\pgfutil@empty%
    \global\advance\tikz@fig@count by1\relax
    \edef\tikz@fig@name{tikz@f@\the\tikz@fig@count}%
    \let\tikz@id@name\tikz@fig@name%
  \fi%
}%

\def\tikz@node@transformations{%
  \ifx\tikz@time\pgfutil@empty%
    \pgftransformshift{\tikz@node@at}%
    \iftikz@fullytransformed%
    \else%
      \pgftransformresetnontranslations%
    \fi%
  \else%
    \tikz@do@auto@anchor%
    \tikz@timer%
  \fi%
  \tikz@transform%
}%

\def\tikz@node@finish{%
    \global\let\tikz@last@fig@name=\tikz@fig@name%
    \global\let\tikz@after@path@smuggle=\tikz@after@path%
    \global\setbox\tikz@tempbox=\box\tikz@figbox%
    \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
  \endgroup\endgroup%
  \setbox\tikz@figbox=\box\tikz@tempbox%
  \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
  \global\pgflinewidth=\tikz@save@line@width%
  \tikz@do@after@path@smuggle%
  \tikz@node@is@picfalse
  \tikz@do@after@node%
}%
\let\tikz@fig@continue@orig=\tikz@fig@continue

\def\tikz@do@after@node{\tikz@scan@next@command}%

\def\tikz@do@after@path@smuggle{%
  \let\tikz@to@last@fig@name=\tikz@last@fig@name%
  \let\tikz@to@use@whom=\tikz@to@use@last@fig@name%
  \let\tikzlastnode=\tikz@last@fig@name%
  \ifx\tikz@after@path@smuggle\pgfutil@empty%
  \else%
    \ifpgflatenodepositioning%
      \expandafter\expandafter\expandafter\tikz@call@late%
      \expandafter\expandafter\expandafter{\expandafter\tikz@last@fig@name\expandafter}\expandafter{\tikz@after@path@smuggle}%
    \else%
      \tikz@scan@next@command{\tikz@after@path@smuggle}\pgf@stop%
    \fi%
  \fi%
}%

\def\tikz@call@late#1#2{\pgfnodepostsetupcode{#1}{\path[late options={name={#1},append after command={#2}}];}}%

\newif\iftikz@do@align

\def\tikz@signal@halign@check{%
  \tikz@do@alignfalse
  \ifx\tikz@text@width\pgfutil@empty%
    \pgfkeysgetvalue{/tikz/node halign header}\tikz@align@header%
    \ifx\tikz@align@header\pgfutil@empty%
    \else%
      \tikz@do@aligntrue%
    \fi%
  \fi%
}
\def\tikz@halign@check{%
  \iftikz@do@align%
    \setbox\tikz@align@aligned@box=\box\pgfutil@voidb@x%
    \let\\=\tikz@align@newline%
    \expandafter\tikz@start@align%
  \fi%
}%
\def\tikz@align@newline{\pgfutil@protect\tikz@align@newline@}%
\def\tikz@align@newline@{\unskip\pgfutil@ifnextchar[\tikz@@align@newline{\tikz@@align@newline[0pt]}}%
\def\tikz@@align@newline[#1]{\egroup\tikz@align@continue\pgfmathparse{#1}\let\tikz@align@temp=\pgfmathresult\tikz@start@align}%
\let\tikz@align@aligned@box=\pgfnodeparttextbox
\let\tikz@align@line@box=\tikz@figbox

\def\tikz@start@align{%
  \setbox\tikz@align@line@box=\hbox\bgroup\bgroup%
    \aftergroup\tikz@align@collectresetcolor\ignorespaces%
}%
\def\tikz@align@collectresetcolor{%
  \pgfutil@ifnextchar\reset@color%
  {\reset@color\afterassignment\tikz@align@collectresetcolor\let\tikz@temp=}%
  {\tikz@align@end@check}%
}%
\def\tikz@align@end@check{%
  \egroup%
  \ifvoid\tikz@align@aligned@box%
    \setbox\tikz@align@aligned@box=\box\tikz@align@line@box%
  \else%
    \setbox\tikz@align@aligned@box=\vbox{%
      \expandafter\expandafter\expandafter\halign\expandafter\expandafter\expandafter{\tikz@align@header%
        \box\tikz@align@aligned@box\cr%
        \noalign{\vskip\tikz@align@temp pt}%
        \unhbox\tikz@align@line@box\unskip\cr}}%
  \fi%
  \pgfutil@ifnextchar\tikz@align@continue{}
  {%
      \box\tikz@align@aligned@box%
    \egroup%
  }%
}%
\def\tikz@align@continue{\tikz@@align@continue}%
\let\tikz@@align@continue=\pgfutil@empty


\def\tikz@node@also lso{\pgfutil@ifnextchar[\tikz@node@also@opt{\tikz@node@also@opt[]}}%
\def\tikz@node@also@opt[#1]{
  \pgfutil@ifnextchar(%
  {\tikz@node@also@opt@cont[#1]}%
  {\tikzerror{Syntax error in node also: ``('' expected.}%
    \tikz@scan@next@command}%
}%
\def\tikz@node@also@opt@cont[#1](#2){\tikzset{late options={name=#2,#1}}\tikz@scan@next@command}%




\def\tikz@nodepart{\pgfutil@ifnextchar[\tikz@@nodepart{\tikz@@nodepart[]}}%
\def\tikz@@nodepart[#1]#2{%
  \tikz@atend@node%
  \unskip%
  \gdef\tikz@nodepart@options{#1}%
  \gdef\tikz@nodepart@name{#2}%
  \global\let\tikz@fig@continue=\tikz@nodepart@continue%
  \pgfutil@ifnextchar x{\egroup\relax}{\egroup\relax}%
}%
\def\tikz@nodepart@continue{%
  \global\let\tikz@fig@continue=\tikz@fig@continue@orig%
  \ifx\tikz@nodepart@list\pgfutil@empty%
    \let\tikz@nodepart@list\tikz@nodepart@name%
  \else%
    \edef\tikz@nodepart@list{\tikz@nodepart@list,\tikz@nodepart@name}%
  \fi%
   \expandafter\setbox\csname pgfnodepart\tikz@nodepart@name box\endcsname=\hbox%
      \bgroup%
        \pgfinterruptpicture%
        \pgfsys@begin@text%
        \pgfsys@text@to@black@hook%
        \tikzset{every \tikz@nodepart@name\space node part/.try}%
        \expandafter\tikzset\expandafter{\tikz@nodepart@options}%
        \ifx\tikz@textopacity\pgfutil@empty%
        \else%
          \pgfsetfillopacity{\tikz@textopacity}%
          \pgfsetstrokeopacity{\tikz@textopacity}%
        \fi%
        \ifx\tikz@textcolor\pgfutil@empty%
        \else%
          \pgfutil@colorlet{.}{\tikz@textcolor}%
        \fi%
        \pgfsetcolor{.}%
          \ifx\tikz@text@width\pgfutil@empty%
            \tikz@textfont%
          \else%
            \begingroup%
              \pgfmathsetlength{\pgf@x}{\tikz@text@width}%
              \pgfutil@minipage[t]{\pgf@x}\leavevmode\hbox{}%
                \tikz@textfont%
                \tikz@text@action%
          \fi%
          \bgroup%
            \aftergroup\unskip%
            \setbox\tikz@figbox=\box\pgfutil@voidb@x%
            \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
            \tikz@uninstallcommands%
            \iftikz@handle@active@code%
              \tikz@orig@shorthands%
              \let\tikz@orig@shorthands\pgfutil@empty%
            \fi%
            \ifnum\the\catcode`\;=\active\relax\expandafter\let\tikz@activesemicolon=\tikz@origsemi\fi%
            \ifnum\the\catcode`\:=\active\relax\expandafter\let\tikz@activecolon=\tikz@origcolon\fi%
            \ifnum\the\catcode`\|=\active\relax\expandafter\let\tikz@activebar=\tikz@origbar\fi%
            \tikz@atbegin@node%
            \aftergroup\tikz@fig@collectresetcolor%
            \tikz@signal@halign@check%
            \tikz@text@reset%
            \tikz@halign@check%
            \ignorespaces%
}%



\def\tikz@nodes@start{%
  \let\tikz@nodes@list\pgfutil@empty%
  \iftikz@node@is@pic%
    \def\tikz@nodes@collect{pic }%
  \else%
    \def\tikz@nodes@collect{node }%
  \fi%
  \tikz@nodes%
}%
\def\tikz@nodes foreach{\pgfutil@ifnextchar x\tikz@nodes@\tikz@nodes@}%
\def\tikz@nodes@#1in{%
  \expandafter\def\expandafter\tikz@nodes@list\expandafter{\tikz@nodes@list\foreach#1in}%
  \pgfutil@ifnextchar\bgroup\tikz@nodes@group\tikz@nodes@one%
}%
\def\tikz@nodes@one#1{%
  \expandafter\def\expandafter\tikz@nodes@list\expandafter{\tikz@nodes@list#1}%
  \pgfutil@ifnextchar f\tikz@nodes\tikz@nodes@scan%
}%
\def\tikz@nodes@group#1{%
  \expandafter\def\expandafter\tikz@nodes@list\expandafter{\tikz@nodes@list{#1}}%
  \pgfutil@ifnextchar f\tikz@nodes\tikz@nodes@scan%
}%
\def\tikz@nodes@scan{%
  \pgfutil@ifnextchar a{\tikz@nodes@at}%
  {\pgfutil@ifnextchar({\tikz@nodes@name}%
    {\pgfutil@ifnextchar[{\tikz@nodes@opt}%
      {\pgfutil@ifnextchar\bgroup{\tikz@nodes@main}%
      {\tikzerror{Nodes must have a (possibly empty) label text}%
        \tikz@fig@main{}}}}}}%

\def\tikz@nodes@at at{\pgfutil@ifnextchar({\tikz@nodes@at@}{\tikz@nodes@at@@}}%
\def\tikz@nodes@at@#1){%
  \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect at#1)}%
  \tikz@nodes@scan}%
\def\tikz@nodes@at@@#1{%
  \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect at#1}%
  \tikz@nodes@scan}%

\def\tikz@nodes@name#1){%
  \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect#1)}%
  \tikz@nodes@scan}%
\def\tikz@nodes@opt#1]{%
  \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect#1]}%
  \tikz@nodes@scan}%
\def\tikz@nodes@main#1{%
  \iftikz@handle@active@nodes%
    \iftikz@node@is@pic%
      \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect{#1}}%
    \else%
      \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect{\scantokens{#1}}}%
    \fi%
  \else%
    \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect{#1}}%
  \fi%
  \global\setbox\tikz@tempbox=\box\tikz@figbox%
  \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
  \tikz@nodes@list{%
    \setbox\tikz@figbox=\box\tikz@tempbox%
    \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
    \expandafter\tikz@scan@next@command\tikz@nodes@collect\pgfextra\relax%
    \global\setbox\tikz@tempbox=\box\tikz@figbox%
    \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
  }%
  \setbox\tikz@figbox=\box\tikz@tempbox%
  \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
  \tikz@scan@next@command%
}%



\tikzset{late options/.code=\tikz@late@options{#1}}%
\def\tikz@late@options#1{%
  \begingroup%
    \iftikz@shapeborder%
      \let\tikz@fig@name=\tikz@shapeborder@name%
    \else%
      \let\tikz@fig@name=\pgfutil@empty%
    \fi%
    \tikz@is@matrixfalse%
    \let\tikz@options=\pgfutil@empty%
    \tikz@clear@rdf@options%
    \let\tikz@after@path=\pgfutil@empty%
    \let\tikz@afternodepathoptions=\pgfutil@empty%
    \let\tikz@alias=\pgfutil@empty%
    \let\tikz@transform=\pgfutil@empty%
    \tikz@decoratepathfalse%
    \tikz@node@reset@hook%
    \tikz@enable@node@quotes%
    \tikzset{every node/.try,#1}%
    \ifx\tikz@fig@name\pgfutil@empty%
      \tikzerror{Late options must reference some existing node}%
    \fi%
    \tikz@node@begin@hook%
    \tikz@alias%
    \tikzgdlatenodeoptionacallback{\tikz@fig@name}%
    \global\let\tikz@last@fig@name=\tikz@fig@name%
    \global\let\tikz@after@path@smuggle=\tikz@after@path%
  \endgroup%
  \tikz@do@after@path@smuggle%
}%



\def\tikz@auto@pre{%
  \begingroup
    \pgfresetnontranslationattimefalse
    \ifpgfslopedattime
      \pgfslopedattimefalse%
    \else
      \pgfslopedattimetrue%
    \fi
    \pgfallowupsidedownattimetrue%
    \tikz@timer%
    \pgf@x=\pgf@pt@aa pt%
    \pgf@y=\pgf@pt@ab pt%
    \pgfpointnormalised{}%
}%

\def\tikz@auto@post{%
    \global\let\tikz@anchor@smuggle=\tikz@anchor%
  \endgroup%
  \let\tikz@anchor=\tikz@anchor@smuggle%
}%

\def\tikz@auto@anchor{%
    \ifdim\pgf@x>0.05pt%
      \ifdim\pgf@y>0.05pt%
        \def\tikz@anchor{south east}%
      \else\ifdim\pgf@y<-0.05pt%
        \def\tikz@anchor{south west}%
      \else
        \def\tikz@anchor{south}%
      \fi\fi%
    \else\ifdim\pgf@x<-0.05pt%
      \ifdim\pgf@y>0.05pt%
        \def\tikz@anchor{north east}%
      \else\ifdim\pgf@y<-0.05pt%
        \def\tikz@anchor{north west}%
      \else
        \def\tikz@anchor{north}%
      \fi\fi%
    \else%
      \ifdim\pgf@y>0pt%
        \def\tikz@anchor{east}%
      \else%
        \def\tikz@anchor{west}%
      \fi%
    \fi\fi%
}%

\def\tikz@auto@anchor@prime{%
    \ifdim\pgf@x>0.05pt%
      \ifdim\pgf@y>0.05pt%
        \def\tikz@anchor{north west}%
      \else\ifdim\pgf@y<-0.05pt%
        \def\tikz@anchor{north east}%
      \else
        \def\tikz@anchor{north}%
      \fi\fi%
    \else\ifdim\pgf@x<-0.05pt%
      \ifdim\pgf@y>0.05pt%
        \def\tikz@anchor{south west}%
      \else\ifdim\pgf@y<-0.05pt%
        \def\tikz@anchor{south east}%
      \else
        \def\tikz@anchor{south}%
      \fi\fi%
    \else%
      \ifdim\pgf@y>0pt%
        \def\tikz@anchor{west}%
      \else%
        \def\tikz@anchor{east}%
      \fi%
    \fi\fi%
}%


\def\tikzgdeventcallback#1#2{}%
\def\tikzgdeventgroupcallback#1{}%
\def\tikzgdlatenodeoptionacallback#1{}%


\def\tikz@children{%
  \let\tikz@children@list=\pgfutil@empty%
  \tikznumberofchildren=0\relax%
  \tikz@collect@children c}%

\def\tikz@collect@children{\pgfutil@ifnextchar c{\tikz@collect@children@cchar}{\tikz@children@collected}}%
\def\tikz@collect@children@cchar c{\pgfutil@ifnextchar h{\tikz@collect@child}{\tikz@children@collected c}}%
\def\tikz@collect@child hild{\pgfutil@ifnextchar[{\tikz@collect@childA}{\tikz@collect@childA[]}}%
\def\tikz@collect@childA[#1]{\pgfutil@ifnextchar f{\tikz@collect@children@foreach[#1]}{\tikz@collect@childB[#1]}}%
\def\tikz@collect@childB[#1]{%
  \advance\tikznumberofchildren by1\relax
  \expandafter\def\expandafter\tikz@children@list\expandafter{\tikz@children@list \tikz@childnode[#1]}%
  \pgfutil@ifnextchar\bgroup{\tikz@collect@child@code}{\tikz@collect@child@code{}}}%
\def\tikz@collect@child@code#1{%
  \expandafter\def\expandafter\tikz@children@list\expandafter{\tikz@children@list{#1}}%
  \tikz@collect@children%
}%
\def\tikz@collect@children@foreach[#1]foreach#2in#3{%
  \pgfutil@ifnextchar\bgroup{\tikz@collect@children@foreachA{#1}{#2}{#3}}{\tikz@collect@children@foreachA{#1}{#2}{#3}{}}}%
\def\tikz@collect@children@foreachA#1#2#3#4{%
  \expandafter\def\expandafter\tikz@children@list\expandafter
    {\tikz@children@list\tikz@childrennodes[#1]{#2}{#3}{#4}}%
  \c@pgf@counta=\tikznumberofchildren%
  \foreach#2in{#3}%
  {%
    \global\advance\c@pgf@counta by1\relax%
  }%
  \tikznumberofchildren=\c@pgf@counta%
  \tikz@collect@children%
}%
\long\def\tikz@children@collected{%
  \begingroup%
    \advance\tikztreelevel by 1\relax%
    \tikzgdeventgroupcallback{descendants}%
    \let\tikz@options=\pgfutil@empty%
    \tikz@clear@rdf@options%
    \let\tikz@transform=\pgfutil@empty%
    \tikzset{level/.try=\the\tikztreelevel,level \the\tikztreelevel/.try}%
    \tikz@transform%
    \let\tikz@transform=\relax%
    \let\tikzparentnode=\tikz@last@fig@name%
    \ifx\tikz@grow\relax\else%
      \pgftransformshift{\pgfpointanchor{\tikzparentnode}{\tikz@growth@anchor}}%
    \fi%
    \tikznumberofcurrentchild=0\relax%
    \tikz@children@list%
    \global\setbox\tikz@tempbox=\box\tikz@figbox%
    \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
  \endgroup%
  \setbox\tikz@figbox=\box\tikz@tempbox%
  \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
  \tikz@scan@next@command%
}%

\def\tikz@childrennodes[#1]#2#3#4{%
  \c@pgf@counta=\tikznumberofcurrentchild\relax%
  \setbox\tikz@tempbox=\box\tikz@figbox%
  \setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
  \foreach#2in{#3}{%
    \tikznumberofcurrentchild=\c@pgf@counta\relax%
    \setbox\tikz@figbox=\box\tikz@tempbox%
    \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
    \tikz@childnode[#1]{#4}%
    \global\c@pgf@counta=\tikznumberofcurrentchild\relax%
    \global\setbox\tikz@tempbox=\box\tikz@figbox%
    \global\setbox\tikz@tempbox@bg=\box\tikz@figbox@bg%
  }%
  \tikznumberofcurrentchild=\c@pgf@counta\relax%
  \setbox\tikz@figbox=\box\tikz@tempbox%
  \setbox\tikz@figbox@bg=\box\tikz@tempbox@bg%
}%



\def\tikz@childnode[#1]#2{%
  \advance\tikznumberofcurrentchild by1\relax%
  {\tikzset{every child/.try,#1}\expandafter}%
  \iftikz@child@missing%
    \tikzgdeventcallback{node}{}%
  \else%
  \setbox\tikz@whichbox=\hbox\bgroup%
    \unhbox\tikz@whichbox%
    \hbox\bgroup\bgroup%
        \pgfinterruptpath%
          \pgfscope%
            \let\tikz@transform=\pgfutil@empty%
            \tikzset{every child/.try,#1}%
            \tikz@options%
            \tikz@transform%
            \let\tikz@transform=\relax%
            \tikz@grow%
            \edef\tikz@parent@node@name{[name=\tikzparentnode-\the\tikznumberofcurrentchild,style=every child node]}%
            \def\tikz@child@node@text{[shape=coordinate]{}}
            \tikz@parse@child@node#2\pgf@stop%
            \expandafter\expandafter\expandafter\node
            \expandafter\tikz@parent@node@name
              \tikz@child@node@text
              \pgfextra{\global\let\tikz@childnode@name=\tikz@last@fig@name};%
            \let\tikzchildnode=\tikz@childnode@name%
            {%
              \def\tikz@edge@to@parent@needed{edge from parent}
              \ifx\tikz@child@node@rest\pgfutil@empty%
                \path edge from parent;%
              \else%
                \path \tikz@child@node@rest \tikz@edge@to@parent@needed;%
              \fi%
            }%
        \endpgfscope%
      \endpgfinterruptpath%
    \egroup\egroup%
  \egroup%
  \fi%
}%

\def\tikz@parse@child@node{%
  \pgfutil@ifnextchar n{\tikz@parse@child@node@n}%
  {\pgfutil@ifnextchar c{\tikz@parse@child@node@c}%
    {\pgfutil@ifnextchar\pgf@stop\tikz@parse@child@node@rest\tikz@parse@child@node@expand}}}%
\def\tikz@parse@child@node@expand{%
  \advance\tikz@expandcount by-1\relax%
  \ifnum\tikz@expandcount<0\relax%
    \expandafter\tikz@parse@child@node@rest%
  \else%
    \expandafter\expandafter\expandafter\tikz@parse@child@node%
  \fi%
}%
\def\tikz@parse@child@node@rest#1\pgf@stop{\tikz@resetexpandcount\def\tikz@child@node@rest{#1}}%
\def\tikz@parse@child@node@c c{\tikz@resetexpandcount\pgfutil@ifnextchar o{\tikz@parse@child@node@co}{\tikz@parse@child@node@rest c}}%
\def\tikz@parse@child@node@co o{\pgfutil@ifnextchar o{\tikz@parse@child@node@coordinate}{\tikz@parse@child@node@rest co}}%
\def\tikz@parse@child@node@coordinate ordinate{%
  \pgfutil@ifnextchar ({\tikz@@parse@child@node@coordinate}{%
    \def\tikz@child@node@text{[shape=coordinate]{}}%
    \tikz@parse@child@node@rest}}%
\def\tikz@@parse@child@node@coordinate(#1){%
  \pgfutil@ifnextchar a{\tikz@p@c@n@c@at(#1)}{%
    \def\tikz@child@node@text{[shape=coordinate,name=#1]{}}%
    \tikz@parse@child@node@rest}}%
\def\tikz@p@c@n@c@at(#1)at#2({%
  \def\tikz@child@node@text@pre{[shape=coordinate,name=#1]at}%
  \tikz@scan@one@point\tikz@p@c@n@c@at@math(%
}%
\def\tikz@p@c@n@c@at@math#1{%
  \pgf@process{#1}%
  \edef\tikz@marshal{(\the\pgf@x,\the\pgf@y){}}%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\tikz@child@node@text%
  \expandafter\expandafter\expandafter{\expandafter\tikz@child@node@text@pre\tikz@marshal}%
  \tikz@parse@child@node@rest%
}%
\def\tikz@parse@child@node@n node{\tikz@resetexpandcount%
  \let\tikz@child@node@text=\pgfutil@empty%
  \tikz@p@c@s}%
\def\tikz@p@c@s{%
  \pgfutil@ifnextchar a{\tikz@p@c@s@at}
  {\pgfutil@ifnextchar ({\tikz@p@c@s@paran}
    {\pgfutil@ifnextchar [{\tikz@p@c@s@bra}
      {\pgfutil@ifnextchar \bgroup{\tikz@p@c@s@group}
        {\tikzerror{Cannot parse this node}}}}}}%
\def\tikz@p@c@s@at at#1({%
  \tikz@scan@one@point\tikz@p@c@s@at@math(%
}%
\def\tikz@p@c@s@at@math#1{%
  \pgf@process{#1}%
  \edef\tikz@marshal{ at(\the\pgf@x,\the\pgf@y)}%
  \expandafter\expandafter\expandafter\def%
  \expandafter\expandafter\expandafter\tikz@child@node@text%
  \expandafter\expandafter\expandafter{\expandafter\tikz@child@node@text\tikz@marshal}
  \tikz@p@c@s}%
\def\tikz@p@c@s@paran(#1){%
  \expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text(#1)}
  \tikz@p@c@s}%
\def\tikz@p@c@s@bra[#1]{%
  \expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text[#1]}
  \tikz@p@c@s}%
\def\tikz@p@c@s@group#1{%
  \iftikz@handle@active@nodes%
    \expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text{\scantokens{#1}}}%
  \else%
    \expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text{#1}}
  \fi%
  \tikz@parse@child@node@rest%
}%



\def\tikz@decoration ecorate{%
  \pgfutil@ifnextchar[{\tikz@lib@decoration}{\tikz@lib@decoration[]}%
}%

\def\tikz@lib@decoration[#1]#2{\tikzerror{You need to load a decoration library}}%

\def\tikz@lib@dec@decorate@path{\tikzerror{You need to load a decoration library}}%



\def\tikz@let@command et#1in{%
  \tikzerror{You need to say \string\usetikzlibrary{calc} to use the let command}%
  \tikz@scan@next@command%
}%


\newif\iftikz@node@is@pic
\def\tikz@subpicture ic{\tikz@node@is@pictrue\tikz@scan@next@command node}%
\def\tikz@subpicture@handle#1{%
  \pgfkeys@spdef\tikz@temp{#1}%
  \expandafter\tikz@subpicture@handle@\expandafter{\tikz@temp}%
}%
\def\tikz@subpicture@handle@#1{
  \pgfkeys{/tikz/pics/.cd,#1}%
  \tikz@node@transformations%
  \let\tikz@transform=\relax%
  \let\tikz@picmode\tikz@mode%
  \tikzset{name prefix ../.style/.expanded={/tikz/name prefix=\pgfkeysvalueof{/tikz/name prefix}}}%
  \ifx\tikz@fig@name\pgfutil@empty\else%
    \tikzset{name prefix/.expanded=\tikz@fig@name}%
  \fi%
  \pgfkeysvalueof{/tikz/pics/setup code}%
  \pgfkeysgetvalue{/tikz/pics/code}{\tikz@pic@code}
  \ifx\tikz@pic@code\pgfutil@empty\else%
  \setbox\tikz@whichbox=\hbox\bgroup%
    \unhbox\tikz@whichbox%
      \hbox\bgroup
        \bgroup%
          \pgfinterruptpath%
            \pgfscope%
              \tikz@options%
              \setbox\tikz@figbox=\box\pgfutil@voidb@x%
              \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
              \tikz@atbegin@scope%
              \scope[every pic/.try]%
                \tikz@pic@code%
              \endscope%
              \tikz@atend@scope%
            \endpgfscope%
          \endpgfinterruptpath%
        \egroup
      \egroup%
    \egroup%
  \fi%
  \pgfkeysgetvalue{/tikz/pics/foreground code}{\tikz@pic@code}
  \ifx\tikz@pic@code\pgfutil@empty\else%
  \setbox\tikz@figbox=\hbox\bgroup%
    \unhbox\tikz@figbox%
      \hbox\bgroup
        \bgroup%
          \pgfinterruptpath%
            \pgfscope%
              \tikz@options%
              \setbox\tikz@figbox=\box\pgfutil@voidb@x%
              \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
              \tikz@atbegin@scope%
              \scope[every front pic/.try]%
                \tikz@pic@code%
              \endscope%
              \tikz@atend@scope%
            \endpgfscope%
          \endpgfinterruptpath%
        \egroup
      \egroup%
    \egroup%
  \fi%
  \pgfkeysgetvalue{/tikz/pics/background code}{\tikz@pic@code}
  \ifx\tikz@pic@code\pgfutil@empty\else%
  \setbox\tikz@figbox@bg=\hbox\bgroup%
    \unhbox\tikz@figbox@bg%
      \hbox\bgroup
        \bgroup%
          \pgfinterruptpath%
            \pgfscope%
              \tikz@options%
              \setbox\tikz@figbox=\box\pgfutil@voidb@x%
              \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x%
              \tikz@atbegin@scope%
              \scope[every behind pic/.try]%
                \tikz@pic@code%
              \endscope%
              \tikz@atend@scope%
            \endpgfscope%
          \endpgfinterruptpath%
        \egroup
      \egroup%
    \egroup%
  \fi%
  \tikz@node@finish%
}%
\tikzset{
  pic actions/.code=\tikz@addmode{\tikz@picmode}
}%

\tikzset{
  pics/setup code/.initial=,
  pics/code/.initial=,
  pics/background code/.initial=,
  pics/foreground code/.initial=
}%


\def\tikzdeclarepic#1#2{\pgfkeys{/tikz/#1/.cd,#2}}%

\pgfkeysdef{/handlers/.pic}{%
  \edef\pgf@temp{\pgfkeyscurrentpath}%
  \edef\pgf@temp{\expandafter\tikz@smuggle@pics@in\pgf@temp\pgf@stop}%
  \expandafter\pgfkeys\expandafter{\pgf@temp/.style={code={#1}}}%
}%
\def\tikz@smuggle@pics@in/tikz/#1\pgf@stop{/tikz/pics/#1}%


\def\tikz@timer@line{%
  \pgftransformlineattime{\tikz@time}{\tikz@timer@start}{\tikz@timer@end}%
}%

\def\tikz@timer@vhline{%
  \ifdim\tikz@time pt<0.5pt%
    \pgf@process{\tikz@timer@start}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\tikz@timer@end}%
    \pgf@xb=\tikz@time pt%
    \pgf@xb=2\pgf@xb%
    \edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}{\noexpand\tikz@timer@start}{%
        \noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@y}}}%
    \tikz@marshal%
  \else%
    \pgf@process{\tikz@timer@start}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\tikz@timer@end}%
    \pgf@xb=\tikz@time pt%
    \pgf@xb=2\pgf@xb%
    \advance\pgf@xb by-1pt%
    \edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}%
      {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@y}}{\noexpand\tikz@timer@end}}%
    \tikz@marshal%
  \fi%
}%

\def\tikz@timer@hvline{%
  \ifdim\tikz@time pt<0.5pt%
    \pgf@process{\tikz@timer@start}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\tikz@timer@end}%
    \pgf@xb=\tikz@time pt%
    \pgf@xb=2\pgf@xb%
    \edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}{\noexpand\tikz@timer@start}{%
        \noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@ya}}}%
    \tikz@marshal%
  \else%
    \pgf@process{\tikz@timer@start}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\tikz@timer@end}%
    \pgf@xb=\tikz@time pt%
    \pgf@xb=2\pgf@xb%
    \advance\pgf@xb by-1pt%
    \edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}%
      {\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@ya}}{\noexpand\tikz@timer@end}}%
    \tikz@marshal%
  \fi%
}%

\def\tikz@timer@curve{%
  \pgftransformcurveattime{\tikz@time}{\tikz@timer@start}{\tikz@timer@cont@one}{\tikz@timer@cont@two}{\tikz@timer@end}%
}%


\def\tikz@timer@arc{%
  \pgfmathcos@{\tikz@timer@start@angle}%
  \let\tikz@angle@cos\pgfmathresult%
  \pgfmathsin@{\tikz@timer@start@angle}%
  \let\tikz@angle@sin\pgfmathresult%
  \pgftransformarcaxesattime{\tikz@time}{%
    \pgfpointdiff{%
      \pgfpointadd{%
        \pgfpointscale{\tikz@angle@cos}{\tikz@timer@zero@axis}%
      }{%
        \pgfpointscale{\tikz@angle@sin}{\tikz@timer@ninety@axis}%
      }%
    }%
    {\tikz@timer@start}%
  }%
  {\tikz@timer@zero@axis}%
  {\tikz@timer@ninety@axis}%
  {\tikz@timer@start@angle}{\tikz@timer@end@angle}%
}%




\def\tikzdeclarecoordinatesystem#1#2{%
  \expandafter\def\csname tikz@parse@cs@#1\endcsname(##1){%
    \pgf@process{%
      #2%
      \global\let\tikz@smubble@b=\tikz@shapeborder@name%
    }%
    \let\tikz@shapeborder@name=\tikz@smubble@b%
    \edef\tikz@return@coordinate{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
}%
\def\tikzaliascoordinatesystem#1#2{%
  \edef\pgf@marshal{\noexpand\let\expandafter\noexpand\csname
    tikz@parse@cs@#1\endcsname=\expandafter\noexpand\csname
    tikz@parse@cs@#2\endcsname}%
  \pgf@marshal%
}%



\tikzdeclarecoordinatesystem{canvas}
{%
  \tikzset{cs/.cd,x=0pt,y=0pt,#1}%
  \pgfpoint{\tikz@cs@x}{\tikz@cs@y}%
}%

\tikzdeclarecoordinatesystem{canvas polar}
{%
  \tikzset{cs/.cd,angle=0,radius=0cm,#1}%
  \pgfpointpolar{\tikz@cs@angle}{\tikz@cs@xradius and \tikz@cs@yradius}%
}%

\tikzdeclarecoordinatesystem{xyz}
{%
  \tikzset{cs/.cd,x=0,y=0,z=0,#1}%
  \pgfpointxyz{\tikz@cs@x}{\tikz@cs@y}{\tikz@cs@z}%
}%

\tikzdeclarecoordinatesystem{xyz polar}
{%
  \tikzset{cs/.cd,angle=0,radius=0,#1}%
  \pgfpointpolarxy{\tikz@cs@angle}{\tikz@cs@xradius and \tikz@cs@yradius}%
}%
\tikzaliascoordinatesystem{xy polar}{xyz polar}%


\tikzdeclarecoordinatesystem{node}
{%
  \tikzset{cs/.cd,name=,anchor=none,angle=none,#1}%
  \ifx\tikz@cs@anchor\tikz@nonetext%
    \ifx\tikz@cs@angle\tikz@nonetext%
      \expandafter\ifx\csname pgf@sh@ns@\tikz@cs@node\endcsname\tikz@coordinate@text%
      \else
        \aftergroup\tikz@shapebordertrue%
        \edef\tikz@shapeborder@name{\tikz@pp@name{\tikz@cs@node}}%
      \fi%
      \pgfpointanchor{\tikz@pp@name{\tikz@cs@node}}{center}%
    \else%
      \pgfpointanchor{\tikz@pp@name{\tikz@cs@node}}{\tikz@cs@angle}%
    \fi%
  \else%
    \pgfpointanchor{\tikz@pp@name{\tikz@cs@node}}{\tikz@cs@anchor}%
  \fi%
}%

\tikzset{cs/first line/.code=\def\tikz@cs@line@a{#1}\def\tikz@cs@type@a{line}}%
\tikzset{cs/second line/.code=\def\tikz@cs@line@b{#1}\def\tikz@cs@type@b{line}}%

\tikzset{cs/first node/.code=\tikz@cs@unpack{\tikz@cs@node@a}{\tikz@cs@type@a}{#1}}%
\tikzset{cs/second node/.code=\tikz@cs@unpack{\tikz@cs@node@b}{\tikz@cs@type@b}{#1}}%

\def\tikz@cs@unpack#1#2#3{%
  \expandafter\ifx\csname pgf@sh@ns@#3\endcsname\relax%
    \tikzerror{Undefined node ``#3''}%
  \else%
    \def#1{#3}%
    \edef#2{\csname pgf@sh@ns@#3\endcsname}%
  \fi%
}%

\tikzset{cs/solution/.initial=1}%

\tikzset{cs/horizontal line through/.store in=\tikz@cs@hori@line}%
\tikzset{cs/vertical line through/.store in=\tikz@cs@vert@line}%

\tikzdeclarecoordinatesystem{intersection}
{%
  \tikzset{cs/.cd,#1}%
  \expandafter\ifx\csname tikz@intersect@\tikz@cs@type@a @and@\tikz@cs@type@b\endcsname\relax%
    \tikzerror{I do not know how to compute the intersection
    of a \tikz@cs@type@a and a \tikz@cs@type@b. Try saying
    \string\usetikzlibrary{calc}}%
    \pgfpointorigin%
  \else%
    \csname tikz@intersect@\tikz@cs@type@a @and@\tikz@cs@type@b\endcsname%
  \fi%
}%

\def\tikz@intersect@line@and@line{%
  \expandafter\tikz@scan@one@point\expandafter\tikz@parse@line\tikz@cs@line@a%
  \pgf@xa=\pgf@xc%
  \pgf@ya=\pgf@yc%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \expandafter\tikz@scan@one@point\expandafter\tikz@parse@line\tikz@cs@line@b%
  \edef\pgf@marshal{%
    {\noexpand\pgfpointintersectionoflines%
      {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
      {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
      {\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
      {\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}}%
  \pgf@marshal%
}%

\def\tikz@parse@line#1--{%
  \pgf@process{#1}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \tikz@scan@one@point\pgf@process%
}%


\tikzdeclarecoordinatesystem{perpendicular}
{%
  \tikzset{cs/.cd,#1}%
  \expandafter\tikz@scan@one@point\expandafter\tikz@parse@intersection@a\tikz@cs@hori@line%
  \expandafter\tikz@scan@one@point\expandafter\tikz@parse@intersection@b\tikz@cs@vert@line%
  \pgfqpoint{\the\pgf@xb}{\the\pgf@ya}
}%

\tikzdeclarecoordinatesystem{barycentric}
{%
  {%
    \pgf@xa=0pt%
    \pgf@ya=0pt%
    \pgf@xb=0pt%
    \tikz@bary@dolist#1,=,%
    \pgfmathparse{1/\the\pgf@xb}%
    \global\pgf@x=\pgfmathresult\pgf@xa%
    \global\pgf@y=\pgfmathresult\pgf@ya%
  }%
}%

\def\tikz@bary@dolist#1=#2,{%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\pgfutil@empty%
  \else
    \pgf@process{\pgfpointanchor{#1}{center}}%
    \pgfmathparse{#2}%
    \advance\pgf@xa by\pgfmathresult\pgf@x%
    \advance\pgf@ya by\pgfmathresult\pgf@y%
    \advance\pgf@xb by\pgfmathresult pt%
    \expandafter\tikz@bary@dolist%
  \fi%
}%

\tikzset{cs/x/.store in=\tikz@cs@x}%
\tikzset{cs/y/.store in=\tikz@cs@y}%
\tikzset{cs/z/.store in=\tikz@cs@z}%
\tikzset{cs/angle/.store in=\tikz@cs@angle}%
\tikzset{cs/x radius/.store in=\tikz@cs@xradius}%
\tikzset{cs/y radius/.store in=\tikz@cs@yradius}%
\tikzset{cs/radius/.style={/tikz/cs/x radius={#1},/tikz/cs/y radius={#1}}}%
\tikzset{cs/name/.store in=\tikz@cs@node}%
\tikzset{cs/anchor/.store in=\tikz@cs@anchor}%





\def\tikz@last@position{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
\def\tikz@last@position@saved{\pgfqpoint{\tikz@lastxsaved}{\tikz@lastysaved}}%

\def\tikz@make@last@position#1{%
  \pgf@process{#1}%
  \tikz@lastx=\pgf@x\relax%
  \tikz@lasty=\pgf@y\relax%
  \iftikz@updatecurrent%
    \tikz@lastxsaved=\pgf@x\relax%
    \tikz@lastysaved=\pgf@y\relax%
  \fi%
  \iftikz@updatenext
    \tikz@updatecurrenttrue%
  \fi
}%

\newif\iftikz@updatecurrent
\tikz@updatecurrenttrue
\newif\iftikz@updatenext
\tikz@updatenexttrue




\def\tikz@scan@one@point#1{%
  \let\tikz@to@use@whom=\tikz@to@use@last@coordinate%
  \tikz@shapeborderfalse%
  \pgfutil@ifnextchar+{\tikz@scan@relative#1}{\tikz@scan@absolute#1}}%
\def\tikz@scan@absolute#1{%
  \pgfutil@ifnextchar({\tikz@scan@@absolute#1}%
  {%
    \advance\tikz@expandcount by -1
    \ifnum\tikz@expandcount<0\relax%
      \let\pgfutil@next=\tikz@@scangiveup%
    \else%
      \let\pgfutil@next=\tikz@@scanexpand%
    \fi%
    \pgfutil@next{#1}%
  }%
}%
\def\tikz@@scanexpand#1{\expandafter\tikz@scan@one@point\expandafter#1}%
\def\tikz@@scangiveup#1{\tikzerror{Cannot parse this coordinate}#1{\pgfpointorigin}}%
\def\tikz@scan@@absolute#1({%
  \pgfutil@ifnextchar[%
  {\def\tikz@scan@point@recall{#1}\tikz@scan@options}%
  {\tikz@@@scan@@absolute#1(}%
}%

\def\tikz@scan@options[#1]#2{%
  \def\tikz@scan@point@options{#1}%
  \tikz@@@scan@@absolute\tikz@scan@handle@options(#2%
}%

\def\tikz@scan@handle@options#1{%
  {%
    \pgftransformreset%
    \let\tikz@transform=\pgfutil@empty%
    \expandafter\tikzset\expandafter{\tikz@scan@point@options}%
    \tikz@transform%
    \pgf@process{\pgfpointtransformed{#1}}%
    \xdef\tikz@marshal{\expandafter\noexpand\tikz@scan@point@recall{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
  }%
  \tikz@marshal%
}%

\def\tikz@@@scan@@absolute#1({%
  \pgfutil@ifnextchar{$}%
  {\tikz@parse@calculator#1(}
  {\tikz@scan@no@calculator#1(}%
}%
\def\tikz@scan@no@calculator#1(#2){%
  \edef\tikz@scan@point@coordinate{(#2)}%
  \expandafter\tikz@@scan@@no@calculator\expandafter#1\tikz@scan@point@coordinate%
}%
\def\tikz@@scan@@no@calculator#1(#2){%
  \pgfutil@in@{cs:}{#2}%
  \ifpgfutil@in@%
    \let\pgfutil@next\tikz@parse@coordinatesystem%
  \else%
    \pgfutil@in@{intersection }{#2}%
    \ifpgfutil@in@%
      \let\pgfutil@next\tikz@parse@intersection%
    \else%
      \pgfutil@in@|{#2}%
      \ifpgfutil@in@
        \pgfutil@in@{-|}{#2}%
        \ifpgfutil@in@
          \let\pgfutil@next\tikz@parse@hv%
        \else%
          \let\pgfutil@next\tikz@parse@vh%
        \fi%
      \else%
        \pgfutil@in@:{#2}%
        \ifpgfutil@in@
          \let\pgfutil@next\tikz@parse@polar%
        \else%
          \pgfutil@in@,{#2}%
          \ifpgfutil@in@%
            \let\pgfutil@next\tikz@parse@regular%
          \else%
            \let\pgfutil@next\tikz@parse@node%
          \fi%
        \fi%
      \fi%
    \fi%
  \fi%
  \pgfutil@next#1(#2)%
}%

\def\tikz@parse@calculator#1($#2$){%
  \tikzerror{You need to say \string\usetikzlibrary{calc} for coordinate calculation}%
  #1{\pgfpointorigin}%
}%

\def\tikz@parse@coordinatesystem#1(#2 cs:#3){%
  \let\tikz@return@coordinate=\pgfpointorigin%
  \pgfutil@ifundefined{tikz@parse@cs@#2}
  {\tikzerror{Unknown coordinate system '#2'}}
  {\csname tikz@parse@cs@#2\endcsname(#3)}%
  \expandafter#1\expandafter{\tikz@return@coordinate}%
}%


\newif\iftikz@isdimension
\def\tikz@checkunit#1{%
  \pgfmathparse{#1}%
  \let\iftikz@isdimension=\ifpgfmathunitsdeclared%
}%

\def\tikz@parse@polar#1(#2:#3){%
  \pgfutil@ifundefined{tikz@polar@dir@#2}
  {\tikz@@parse@polar#1({#2}:{#3})}
  {\tikz@@parse@polar#1(\csname tikz@polar@dir@#2\endcsname:{#3})}%
}%
\def\tikz@@parse@polar#1(#2:#3){%
  \pgfutil@in@{ and }{#3}%
  \ifpgfutil@in@%
    \edef\tikz@args{({#2}:#3)}%
  \else%
    \edef\tikz@args{({#2}:{#3} and {#3})}%
  \fi%
  \expandafter\tikz@@@parse@polar\expandafter#1\tikz@args%
}%
\def\tikz@@@parse@polar#1(#2:#3 and #4){%
  \tikz@checkunit{#3}%
  \iftikz@isdimension%
    \tikz@checkunit{#4}%
    \iftikz@isdimension%
      \def\tikz@next{#1{\pgfpointpolar{#2}{#3 and #4}}}%
    \else%
      \tikzerror{You cannot mix dimension and dimensionless values for polar coordinates}
      \def\tikz@next{#1{\pgfpointorigin}}%
    \fi%
  \else%
    \tikz@checkunit{#4}%
    \iftikz@isdimension%
      \tikzerror{You cannot mix dimension and dimensionless values for polar coordinates}
      \def\tikz@next{#1{\pgfpointorigin}}%
    \else%
      \def\tikz@next{#1{\pgfpointpolarxy{#2}{#3 and #4}}}%
    \fi%
  \fi%
  \tikz@next%
}%
\def\tikz@polar@dir@up{90}%
\def\tikz@polar@dir@down{-90}%
\def\tikz@polar@dir@left{180}%
\def\tikz@polar@dir@right{0}%
\def\tikz@polar@dir@north{90}%
\def\tikz@polar@dir@south{-90}%
\def\tikz@polar@dir@east{0}%
\def\tikz@polar@dir@west{180}%
\expandafter\def\csname tikz@polar@dir@north east\endcsname{45}%
\expandafter\def\csname tikz@polar@dir@north west\endcsname{135}%
\expandafter\def\csname tikz@polar@dir@south east\endcsname{-45}%
\expandafter\def\csname tikz@polar@dir@south west\endcsname{-135}%


\def\tikz@parse@regular#1(#2,{%
    \pgfutil@ifnextchar\bgroup{\tikz@@parse@regular#1{#2}}{\tikz@@@parse@regular#1{#2}}%
}%
\def\tikz@@parse@regular#1#2#3{%
    \pgfutil@ifnextchar[{%
        \tikz@@@parse@regular#1{#2}{#3}}%
      {\tikz@@@parse@regular#1{#2}{{#3}}}}%

\def\tikz@@@parse@regular#1#2#3){%
  \pgfutil@in@,{#3}%
  \ifpgfutil@in@%
    \tikz@parse@splitxyz{#1}{#2}#3,%
  \else%
    \tikz@checkunit{#2}%
    \iftikz@isdimension%
      \tikz@checkunit{#3}%
      \iftikz@isdimension%
        \def\pgfutil@next{#1{\pgfpoint{#2}{#3}}}%
      \else%
        \def\pgfutil@next{#1{\pgfpointadd{\pgfpoint{#2}{0pt}}{\pgfpointxy{0}{#3}}}}%
      \fi%
    \else%
      \tikz@checkunit{#3}%
      \iftikz@isdimension%
        \def\pgfutil@next{#1{\pgfpointadd{\pgfpoint{0pt}{#3}}{\pgfpointxy{#2}{0}}}}%
      \else%
        \def\pgfutil@next{#1{\pgfpointxy{#2}{#3}}}%
      \fi%
    \fi%
  \fi%
  \pgfutil@next%
}%

\def\tikz@parse@splitxyz#1#2#3,#4,{%
  \def\pgfutil@next{#1{\pgfpointxyz{#2}{#3}{#4}}}%
}%

\def\tikz@coordinate@text{coordinate}%

\def\tikz@parse@node#1(#2){%
  \pgfutil@in@.{#2}%
  \ifpgfutil@in@
    \tikz@calc@anchor#2\tikz@stop%
  \else%
    \tikz@calc@anchor#2.center\tikz@stop%
    \ifcsname pgf@sh@ns@\tikz@pp@name{#2}\endcsname
      \expandafter\ifx\csname pgf@sh@ns@\tikz@pp@name{#2}\endcsname\tikz@coordinate@text%
      \else
        \tikz@shapebordertrue%
        \def\tikz@shapeborder@name{\tikz@pp@name{#2}}%
      \fi%
    \else\ifcsname pgf@sh@ns@#2\endcsname
      \expandafter\ifx\csname pgf@sh@ns@#2\endcsname\tikz@coordinate@text%
      \else
        \tikz@shapebordertrue%
        \def\tikz@shapeborder@name{#2}%
      \fi%
    \fi\fi
  \fi%
  \edef\tikz@marshal{\noexpand#1{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
  \tikz@marshal%
}%

\def\tikz@calc@anchor#1.#2\tikz@stop{%
  \ifcsname pgf@sh@ns@\tikz@pp@name{#1}\endcsname%
    \pgfpointanchor{\tikz@pp@name{#1}}{#2}%
  \else
    \pgfpointanchor{#1}{#2}%
  \fi
}%


\def\tikz@parse@hv#1(#2){%
  \pgfutil@in@{ -| }{#2}%
  \ifpgfutil@in@%
    \let\tikz@next=\tikz@parse@hvboth%
  \else%
    \pgfutil@in@{ -|}{#2}%
    \ifpgfutil@in@%
      \let\tikz@next=\tikz@parse@hvleft%
    \else%
      \pgfutil@in@{-| }{#2}%
      \ifpgfutil@in@%
        \let\tikz@next=\tikz@parse@hvright%
      \else%
        \let\tikz@next=\tikz@parse@hvdone%
      \fi%
    \fi%
  \fi%
  \tikz@next#1(#2)}%
\def\tikz@parse@hvboth#1(#2 -| #3){\tikz@parse@vhdone#1({#3}|-{#2})}%
\def\tikz@parse@hvleft#1(#2 -|#3){\tikz@parse@vhdone#1({#3}|-{#2})}%
\def\tikz@parse@hvright#1(#2-| #3){\tikz@parse@vhdone#1({#3}|-{#2})}%
\def\tikz@parse@hvdone#1(#2-|#3){\tikz@parse@vhdone#1({#3}|-{#2})}%

\def\tikz@parse@vh#1(#2){%
  \pgfutil@in@{ |- }{#2}%
  \ifpgfutil@in@%
    \let\tikz@next=\tikz@parse@vhboth%
  \else%
    \pgfutil@in@{ |-}{#2}%
    \ifpgfutil@in@%
      \let\tikz@next=\tikz@parse@vhleft%
    \else%
      \pgfutil@in@{|- }{#2}%
      \ifpgfutil@in@%
        \let\tikz@next=\tikz@parse@vhright%
      \else%
        \let\tikz@next=\tikz@parse@vhdone%
      \fi%
    \fi%
  \fi%
  \tikz@next#1(#2)}%
\def\tikz@parse@vhboth#1(#2 |- #3){\tikz@parse@vhdone#1({#2}|-{#3})}%
\def\tikz@parse@vhleft#1(#2 |-#3){\tikz@parse@vhdone#1({#2}|-{#3})}%
\def\tikz@parse@vhright#1(#2|- #3){\tikz@parse@vhdone#1({#2}|-{#3})}%
\def\tikz@parse@vhdone#1(#2|-#3){%
  {%
    \tikz@@@scan@@absolute\tikz@parse@vh@mid(#2)%
    \tikz@@@scan@@absolute\tikz@parse@vh@end(#3)%
    \xdef\tikz@marshal{\noexpand#1{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}}%
  }%
  \tikz@marshal%
}%
\def\tikz@parse@vh@mid#1{\pgf@process{#1}\pgf@xa=\pgf@x}%
\def\tikz@parse@vh@end#1{\pgf@process{#1}\pgf@ya=\pgf@y}%

\def\tikz@parse@intersection#1(intersection{%
  \pgfutil@ifnextchar o{%
    \tikz@parse@main@intersection#1 1%
  }{%
    \tikz@parse@main@intersection#1%
  }%
}%
\def\tikz@parse@main@intersection#1#2of #3 and #4){%
  \tikzset{cs/solution={#2}}%
  \pgfutil@in@{--}{#3}%
  \ifpgfutil@in@%
    \tikz@reparse@line{first}#3\pgf@stop%
  \else%
    \tikzset{cs/first node={#3}}%
  \fi%
  \pgfutil@in@{--}{#4}%
  \ifpgfutil@in@%
    \tikz@reparse@line{second}#4\pgf@stop%
  \else%
    \tikzset{cs/second node={#4}}%
  \fi%
  \tikz@parse@cs@intersection()%
  \edef\pgf@marshal{\noexpand#1{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
  \pgf@marshal%
}%
\def\tikz@reparse@line#1#2--#3\pgf@stop{%
  \tikzset{cs/#1 line={(#2)--(#3)}}%
}%


\def\tikz@parse@intersection@a#1{\pgf@process{#1}\pgf@xa=\pgf@x\pgf@ya=\pgf@y}%
\def\tikz@parse@intersection@b#1{\pgf@process{#1}\pgf@xb=\pgf@x\pgf@yb=\pgf@y}%

\def\tikz@scan@relative#1+{%
  \pgfutil@ifnextchar+{\tikz@scan@plusplus#1}{\tikz@scan@oneplus#1}}%

\def\tikz@scan@plusplus#1+{%
  \def\tikz@doafter{#1}%
  \tikz@scan@absolute\tikz@add%
}%
\def\tikz@add#1{%
  \tikz@doafter{\pgfpointadd{#1}{\tikz@last@position@saved}}%
}%
\def\tikz@scan@oneplus#1{%
  \def\tikz@doafter{#1}%
  \tikz@updatecurrentfalse%
  \tikz@scan@absolute\tikz@add%
}%




\let\tikz@enable@node@quotes\relax
\let\tikz@enable@edge@quotes\relax
\let\tikz@enable@pic@quotes\relax





\def\usetikzlibrary{\pgfutil@ifnextchar[{\use@tikzlibrary}{\use@@tikzlibrary}}%
\def\use@tikzlibrary[#1]{\use@@tikzlibrary{#1}}%
\def\use@@tikzlibrary#1{%
  \edef\pgf@list{#1}%
  \pgfutil@for\pgf@temp:=\pgf@list\do{%
    \expandafter\pgfkeys@spdef\expandafter\pgf@temp\expandafter{\pgf@temp}%
    \ifx\pgf@temp\pgfutil@empty
    \else
      \expandafter\ifx\csname tikz@library@\pgf@temp @loaded\endcsname\relax%
      \expandafter\global\expandafter\let\csname tikz@library@\pgf@temp @loaded\endcsname=\pgfutil@empty%
      \expandafter\edef\csname tikz@library@#1@atcode\endcsname{\the\catcode`\@}
      \expandafter\edef\csname tikz@library@#1@barcode\endcsname{\the\catcode`\|}
      \expandafter\edef\csname tikz@library@#1@dollarcode\endcsname{\the\catcode`\$}
      \catcode`\@=11
      \catcode`\|=12
      \catcode`\$=3
      \pgfutil@InputIfFileExists{tikzlibrary\pgf@temp.code.tex}{}{
        \pgfutil@IfFileExists{pgflibrary\pgf@temp.code.tex}{%
          \expandafter\usepgflibrary\expandafter{\pgf@temp}%
        }{%
          \tikzerror{I did not find the tikz library
            '\pgf@temp'. I looked for files named
            tikzlibrary\pgf@temp.code.tex and
            pgflibrary\pgf@temp.code.tex, but neither
            could be found in the current texmf trees.}
        }}%
      \catcode`\@=\csname tikz@library@#1@atcode\endcsname
      \catcode`\|=\csname tikz@library@#1@barcode\endcsname
      \catcode`\$=\csname tikz@library@#1@dollarcode\endcsname
      \fi%
    \fi
  }%
}%



\usetikzlibrary{topaths}%




\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikz.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarycalc.code.tex ====

\ProvidesFileRCS{tikzlibrarycalc.code.tex}




\def\tikz@let@command et{%
  \let\p=\tikz@cc@dop%
  \let\x=\tikz@cc@dox%
  \let\y=\tikz@cc@doy%
  \let\n=\tikz@cc@don%
  \pgfutil@ifnextchar i{\tikz@cc@stop@let}{\tikz@cc@handle@line}%
}%
\def\tikz@cc@handle@line{%
  \pgfutil@ifnextchar\p{%
    \tikz@cc@handle@coor%
  }{%
    \pgfutil@ifnextchar\n{%
      \tikz@cc@handle@num%
    }{%
      \pgfutil@ifnextchar i{%
        \tikz@cc@stop@let
      }{%
        \tikzerror{``\string\p'' or ``\string\n'' expected}%
      }%
    }%
  }%
}%
\def\tikz@cc@handle@num\n#1#2=#3{%
  \pgfmathparse{#3}%
  \expandafter\edef\csname tikz@cc@n@#1\endcsname{\pgfmathresult\ifpgfmathunitsdeclared pt\fi}
  \pgfutil@ifnextchar,{\tikz@cc@handle@nextline}{\tikz@cc@stop@let}%
}%
\def\tikz@cc@handle@coor\p#1#2={%
  \def\tikz@cc@coord@name{#1}%
  \tikz@scan@one@point\tikz@cc@dolet%
}%
\def\tikz@cc@dolet#1{%
  \pgf@process{#1}%
  \expandafter\edef\csname tikz@cc@p@\tikz@cc@coord@name\endcsname{\the\pgf@x,\the\pgf@y}%
  \expandafter\edef\csname tikz@cc@x@\tikz@cc@coord@name\endcsname{\the\pgf@x}%
  \expandafter\edef\csname tikz@cc@y@\tikz@cc@coord@name\endcsname{\the\pgf@y}%
  \pgfutil@ifnextchar,{\tikz@cc@handle@nextline}{\tikz@cc@stop@let}%
}%
\def\tikz@cc@handle@nextline,{%
  \tikz@cc@handle@line%
}%
\def\tikz@cc@stop@let in{%
  \tikz@scan@next@command%
}%

\def\tikz@cc@dop#1{\csname tikz@cc@p@#1\endcsname}%
\def\tikz@cc@dox#1{\csname tikz@cc@x@#1\endcsname}%
\def\tikz@cc@doy#1{\csname tikz@cc@y@#1\endcsname}%
\def\tikz@cc@don#1{\csname tikz@cc@n@#1\endcsname}%




\def\tikz@parse@calculator#1(${%
  \def\tikz@cc@command{#1}%
  \begingroup%
    \pgf@xa=0pt%
    \pgf@ya=0pt%
    \tikz@cc@parse+%
}%

\def\tikz@cc@parse{%
  \pgfutil@ifnextchar${%
    \tikz@cc@end%
  }
  {\pgfutil@ifnextchar+{%
      \tikz@cc@add%
    }{%
      \pgfutil@ifnextchar-{%
        \tikz@cc@sub%
      }{%
        \tikzerror{+ or - expected}%
        \tikz@cc@end$%
      }%
    }%
  }%
}%

\def\tikz@cc@end$#1){%
    \xdef\tikz@marshal{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
  \endgroup%
  \expandafter\tikz@cc@command\expandafter{\tikz@marshal}%
}%


\def\tikz@cc@add+{%
  \def\tikz@cc@factor{1}%
  \tikz@cc@factororcoordinate%
}%
\def\tikz@cc@sub-{%
  \def\tikz@cc@factor{-1}%
  \tikz@cc@factororcoordinate%
}%

\def\tikz@cc@factororcoordinate{%
  \pgfutil@ifnextchar({%
    \tikz@cc@coordinate%
  }{%
    \tikz@cc@parse@factor%
  }%
}%

\def\tikz@cc@parse@factor#1*({%
  \pgfmathparse{#1*\tikz@cc@factor}%
  \let\tikz@cc@factor=\pgfmathresult%
  \tikz@cc@coordinate(%
}%

\def\tikz@cc@coordinate{%
  \tikz@scan@absolute\tikz@cc@after@coordinate%
}%
\def\tikz@cc@after@coordinate#1{%
  \pgf@process{#1}%
  \pgf@xb=\pgf@x%
  \pgf@yb=\pgf@y%
  \tikz@cc@mid@checks%
}%



\def\tikz@cc@mid@checks{%
  \ifnum\the\catcode`\!=\active\relax
    \expandafter\tikz@cc@mid@checks@active
  \else
    \expandafter\tikz@cc@mid@checks@nonactive
  \fi
}%

\def\tikz@cc@mid@checks@nonactive{%
  \pgfutil@ifnextchar!{%
    \tikz@cc@mid@nonactive%
  }{%
    \advance\pgf@xa by\tikz@cc@factor\pgf@xb
    \advance\pgf@ya by\tikz@cc@factor\pgf@yb
    \tikz@cc@parse%
  }%
}%

\def\tikz@cc@mid@nonactive!{%
  \pgfutil@ifnextchar({%
    \tikz@scan@one@point\tikz@cc@project%
  }{%
    \tikz@cc@mid@num@nonactive%
  }%
}%

\begingroup
  \catcode`\!=\active
  \gdef\tikz@cc@mid@checks@active{%
    \pgfutil@ifnextchar!{%
      \tikz@cc@mid@active%
    }{%
      \advance\pgf@xa by\tikz@cc@factor\pgf@xb
      \advance\pgf@ya by\tikz@cc@factor\pgf@yb
      \tikz@cc@parse%
    }%
  }%

  \gdef\tikz@cc@mid@active!{%
    \pgfutil@ifnextchar({%
      \tikz@scan@one@point\tikz@cc@project%
    }{%
      \tikz@cc@mid@num@active%
    }%
  }%
\endgroup


\def\tikz@cc@mid@num@nonactive#1!{\tikz@cc@mid@num{#1}}%

\begingroup
  \catcode`\!=\active
  \gdef\tikz@cc@mid@num@active#1!{\tikz@cc@mid@num{#1}}%
\endgroup

\def\tikz@cc@mid@num#1{%
  \pgfmathparse{#1}%
  \ifpgfmathunitsdeclared%
    \let\tikz@cc@mid@unit=\pgfmathresult%
    \expandafter\tikz@cc@scan@rot\expandafter\tikz@cc@after@unit%
  \else%
    \let\tikz@cc@mid@factor=\pgfmathresult%
    \pgfmathparse{1-\tikz@cc@mid@factor}%
    \let\tikz@cc@mid@factor@one=\pgfmathresult%
    \expandafter\tikz@cc@scan@rot\expandafter\tikz@cc@after@num%
  \fi%
}%

\def\tikz@cc@after@num#1{%
  \pgf@process{#1}%
  \pgf@xb=\tikz@cc@mid@factor@one\pgf@xb%
  \pgf@yb=\tikz@cc@mid@factor@one\pgf@yb%
  \advance\pgf@xb by\tikz@cc@mid@factor\pgf@x%
  \advance\pgf@yb by\tikz@cc@mid@factor\pgf@y%
  \tikz@cc@mid@checks%
}%




\def\tikz@cc@after@unit#1{%
  \pgf@process{#1}%
  \advance\pgf@x by-\pgf@xb%
  \advance\pgf@y by-\pgf@yb%
  \pgf@process{\pgfpointnormalised{}}%
  \advance\pgf@xb by\tikz@cc@mid@unit\pgf@x%
  \advance\pgf@yb by\tikz@cc@mid@unit\pgf@y%
  \tikz@cc@mid@checks%
}%

\def\tikz@cc@project#1{%
  \pgf@process{#1}%
  \pgf@xc=\pgf@x%
  \pgf@yc=\pgf@y%
  \begingroup
    \ifnum\the\catcode`\!=\active
      \def\tikz@next{%
        \endgroup
        \expandafter\tikz@cc@scan@rot\expandafter\tikz@cc@after@project
        \tikz@cc@scan@ex@active}%
    \else
      \def\tikz@next{%
        \endgroup
        \expandafter\tikz@cc@scan@rot\expandafter\tikz@cc@after@project
        \tikz@cc@scan@ex@nonactive}%
    \fi
    \tikz@next%
}%

\def\tikz@cc@scan@ex@nonactive!{}%

\begingroup
  \catcode`\!=\active
  \gdef\tikz@cc@scan@ex@active!{}%
\endgroup

\def\tikz@cc@after@project#1{%
  \pgf@process{#1}%
  \advance\pgf@x by-\pgf@xb%
  \advance\pgf@y by-\pgf@yb%
  \advance\pgf@xc by-\pgf@xb%
  \advance\pgf@yc by-\pgf@yb%
  \pgf@process{\pgfpointnormalised{}}%
  \pgf@xc=\pgf@sys@tonumber{\pgf@xc}\pgf@x%
  \advance\pgf@xc by\pgf@sys@tonumber{\pgf@yc}\pgf@y%
  \advance\pgf@xb by\pgf@sys@tonumber{\pgf@xc}\pgf@x%
  \advance\pgf@yb by\pgf@sys@tonumber{\pgf@xc}\pgf@y%
  \tikz@cc@mid@checks%
}%


\def\tikz@cc@scan@rot#1{%
  \pgfutil@ifnextchar({%
    \tikz@scan@one@point#1%
  }%
  {%
    \def\tikz@cc@scan@rot@cmd{#1}%
    \ifnum\the\catcode`\:=\active\relax
      \expandafter\tikz@cc@scan@one@rot@active%
    \else
      \expandafter\tikz@cc@scan@one@rot@nonactive%
    \fi
  }%
}%

\def\tikz@cc@scan@one@rot@nonactive#1:{%
  \def\tikz@cc@scan@rot@angle{#1}%
  \tikz@scan@one@point\tikz@cc@handle@rot%
}%

\begingroup
  \catcode`\:=\active
  \gdef\tikz@cc@scan@one@rot@active#1:{%
    \def\tikz@cc@scan@rot@angle{#1}%
    \tikz@scan@one@point\tikz@cc@handle@rot%
  }%
\endgroup

\def\tikz@cc@handle@rot#1{%
  \pgf@process{#1}%
  {%
    \pgftransformreset%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgftransformshift{\pgfqpoint{\pgf@xb}{\pgf@yb}}%
    \pgftransformrotate{\tikz@cc@scan@rot@angle}%
    \pgftransformshift{\pgfqpoint{-\pgf@xb}{-\pgf@yb}}%
    \pgfpointtransformed{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
    \expandafter
  }%
  \edef\tikz@marshal{\noexpand\tikz@cc@scan@rot@cmd{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
  \tikz@marshal%
}%






\tikzdeclarecoordinatesystem{tangent}
{%
  \tikzset{cs/.cd,#1}%
  \expandafter\ifx\csname tikz@tangent@\tikz@cs@type\endcsname\relax%
    \tikzerror{I do not know how to compute the tangent to
    a \tikz@cs@type}%
    \pgfpointorigin%
  \else%
    \expandafter\tikz@scan@one@point\expandafter\tikz@lib@do@tangent\tikz@cs@point%
  \fi%
}%

\tikzset{cs/node/.code=\tikz@cs@unpack{\tikz@cs@node}{\tikz@cs@type}{#1}}%
\tikzset{cs/point/.store in=\tikz@cs@point}%

\def\tikz@lib@do@tangent{\csname tikz@tangent@\tikz@cs@type\endcsname}%

\def\tikz@tangent@coordinate#1{%
  \pgfpointanchor{\tikz@cs@node}{center}%
}%

\def\tikz@tangent@circle#1{%
  {%
    \pgf@process{\pgfpointtransformed{#1}}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\pgfpointtransformed{\pgfpointanchor{\tikz@cs@node}{center}}}%
    \advance\pgf@xa by-\pgf@x%
    \advance\pgf@ya by-\pgf@y%
    \pgftransformreset%
    \pgftransformshift{\pgfpointanchor{\tikz@cs@node}{center}}%
    \pgf@process{\pgfpointanchor{\tikz@cs@node}{east}}%
    \pgf@xc=\pgf@x%
    \pgfmathparse{veclen(\the\pgf@xa,\the\pgf@ya)}
    \pgfmathparse{acos(\the\pgf@xc/\pgfmathresult)}
    \ifnum\pgfkeysvalueof{/tikz/cs/solution}>1\relax%
      \pgfmathparse{0-\pgfmathresult}%
    \fi%
    \let\tikz@lib@temp=\pgfmathresult%
    \pgf@process{\pgfpointnormalised{\pgfqpoint{\pgf@xa}{\pgf@ya}}}%
    \pgf@ya=-\pgf@y%
    \pgftransformcm{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{\pgfpointorigin}%
    \pgf@process{\pgfpointtransformed{\pgfpointpolar{\tikz@lib@temp}{\the\pgf@xc}}}%
  }%
  {%
    \pgftransforminvert%
    \pgf@process{\pgfpointtransformed{}}%
  }%
}%




\def\tikz@intersect@circle@and@circle{%
  {%
    \pgftransformreset%
    \pgf@process{\pgfpointanchor{\tikz@cs@node@a}{center}}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\pgfpointanchor{\tikz@cs@node@a}{east}}%
    \advance\pgf@x by-\pgf@xa%
    \pgf@xc=\pgf@x%
    \pgf@process{\pgfpointanchor{\tikz@cs@node@b}{center}}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgf@process{\pgfpointanchor{\tikz@cs@node@b}{east}}%
    \advance\pgf@x by-\pgf@xb%
    \pgf@yc=\pgf@x%
    \pgf@process{%
      \pgfpointintersectionofcircles{\pgfqpoint{\pgf@xa}{\pgf@ya}}{\pgfqpoint{\pgf@xb}{\pgf@yb}}{\pgf@xc}{\pgf@yc}{\pgfkeysvalueof{/tikz/cs/solution}}%
    }%
  }%
  {%
    \pgftransforminvert%
    \pgf@process{\pgfpointtransformed{}}%
  }%
}%


\def\tikz@intersect@line@and@circle{%
  {%
    \expandafter\tikz@scan@one@point\expandafter\tikz@parse@line\tikz@cs@line@a%
    \pgf@process{\pgfpointtransformed{}}%
    \pgf@xb=\pgf@x%
    \pgf@yb=\pgf@y%
    \pgf@process{\pgfpointtransformed{\pgfqpoint{\pgf@xc}{\pgf@yc}}}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\pgfpointtransformed{\pgfpointanchor{\tikz@cs@node@b}{center}}}%
    \advance\pgf@xa by-\pgf@x%
    \advance\pgf@ya by-\pgf@y%
    \advance\pgf@xb by-\pgf@x%
    \advance\pgf@yb by-\pgf@y%
    \pgftransformreset%
    \pgftransformshift{\pgfpointanchor{\tikz@cs@node@b}{center}}%
    \pgf@process{\pgfpointanchor{\tikz@cs@node@b}{east}}%
    \edef\tikz@lib@saved@radius{\pgf@sys@tonumber{\pgf@x}}%
    \pgf@x=\pgf@xb%
    \pgf@y=\pgf@yb%
    \advance\pgf@x by-\pgf@xa%
    \advance\pgf@y by-\pgf@ya%
    \pgf@process{\pgfpointnormalised{}}%
    \pgf@xc=\pgf@sys@tonumber{\pgf@xa}\pgf@x%
    \advance\pgf@xc by\pgf@sys@tonumber{\pgf@ya}\pgf@y%
    \pgf@xc=-\pgf@xc%
    \advance\pgf@xa by\pgf@sys@tonumber{\pgf@xc}\pgf@x%
    \advance\pgf@ya by\pgf@sys@tonumber{\pgf@xc}\pgf@y%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgf@xb=\tikz@lib@saved@radius pt%
    \c@pgf@counta=1\relax%
    \loop%
    \ifdim\pgf@xb>50pt%
      \multiply\c@pgf@counta by2\relax%
      \divide\pgf@xa by2\relax%
      \divide\pgf@ya by2\relax%
      \divide\pgf@xb by2\relax%
    \repeat%
    \pgf@xb=\pgf@sys@tonumber{\pgf@xb}\pgf@xb%
    \pgf@yb=\pgf@sys@tonumber{\pgf@xa}\pgf@xa%
    \advance\pgf@xb by-\pgf@yb%
    \pgf@yb=\pgf@sys@tonumber{\pgf@ya}\pgf@ya%
    \advance\pgf@xb by-\pgf@yb%
    \ifdim\pgf@xb<0pt%
      \pgf@xb=0pt%
    \fi%
    \pgfmathsqrt@{\pgf@sys@tonumber{\pgf@xb}}%
    \pgfmathmultiply@{\pgfmathresult}{\the\c@pgf@counta}%
    \multiply\pgf@xa by\c@pgf@counta\relax%
    \multiply\pgf@ya by\c@pgf@counta\relax%
    \ifnum\pgfkeysvalueof{/tikz/cs/solution}>1\relax%
      \pgfmathsubtract{0}{\pgfmathresult}%
    \fi%
    \advance\pgf@xa by \pgfmathresult\pgf@xc%
    \advance\pgf@ya by \pgfmathresult\pgf@yc%
    \pgf@process{\pgfpointtransformed{\pgfqpoint{\pgf@xa}{\pgf@ya}}}%
  }%
  {%
    \pgftransforminvert%
    \pgf@process{\pgfpointtransformed{}}%
  }%
}%

\def\tikz@intersect@circle@and@line{%
  {%
    \let\tikz@cs@node@b=\tikz@cs@node@a%
    \let\tikz@cs@line@a=\tikz@cs@line@b%
    \tikz@intersect@line@and@circle%
  }%
}%
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarycalc.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarydecorations.code.tex ====

\usepgfmodule{decorations}%


\tikzset{decorate/.is if=tikz@decoratepath,
  /pgf/decoration/name/.store in=\tikz@decoration@name,
  /pgf/decoration/.unknown/.code=%
    \pgfifdecoration{\pgfkeyscurrentname}{\edef\tikz@decoration@name{\pgfkeyscurrentname}}
    {\pgfifmetadecoration{\pgfkeyscurrentname}{\edef\tikz@decoration@name{\pgfkeyscurrentname}}
    {\pgfkeys{/errors/unknown
        key/.expanded={/pgf/decoration/\pgfkeyscurrentname}{\pgfutil@unexpanded{#1}}}}},%
  /pgf/decoration/raise/.code={\def\tikz@dec@shift{\pgftransformyshift{#1}}\tikz@dec@trans},
  /pgf/decoration/mirror/.code={%
    \csname if#1\endcsname
      \def\tikz@dec@mirror{\pgftransformyscale{-1}}%
    \else%
      \let\tikz@dec@mirror=\relax%
    \fi%
    \tikz@dec@trans%
  },
  /pgf/decoration/mirror/.default=true,
  /pgf/decoration/transform/.code={%
    {%
      \pgftransformreset%
      \def\tikz@transform{}%
      \pgfkeysalso{/tikz/.cd, #1}%
      \expandafter\gdef\expandafter\tikz@g@temptransform\expandafter{\tikz@transform}%
    }%
    \let\tikz@dec@user@transform=\tikz@g@temptransform%
    \tikz@dec@trans%
  },%
  /pgf/decoration/pre/.initial=lineto,
  /pgf/decoration/post/.initial=lineto,
  /pgf/decoration/pre length/.initial=0pt,
  /pgf/decoration/post length/.initial=0pt,
}%

\let\tikz@decoration@name=\tikz@nonetext

\def\tikz@dec@trans{\pgfsetdecorationsegmenttransformation{\tikz@dec@user@transform\tikz@dec@mirror\tikz@dec@shift}}%
\let\tikz@dec@user@transform=\relax
\let\tikz@dec@shift=\relax
\let\tikz@dec@mirror=\relax

\pgfdeclaremetadecoration{tikz@internal}{pre}{%
  \state{pre}[width=\pgfkeysvalueof{/pgf/decoration/pre length}, next state=main]
  {
    \tikz@dec@trans
    \decoration{\pgfkeysvalueof{/pgf/decoration/pre}}
  }%
  \state{main}[width=\pgfmetadecoratedremainingdistance-\pgfkeysvalueof{/pgf/decoration/post length}, next state=final]
  {
    \tikz@dec@trans
    \decoration{\tikz@decoration@name}
  }%
  \state{final}
  {
    \tikz@dec@trans
    \decoration{\pgfkeysvalueof{/pgf/decoration/post}}
  }%
}%


\newif\iftikz@metadecoration

\def\tikz@lib@dec@addtomacro#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}%

\def\tikz@lib@decoration[#1]{%
  \begingroup%
    \tikzset{#1}%
    \ifx\tikz@decoration@name\tikz@nonetext%
    \else
      \expandafter\tikz@lib@do@dec%
    \fi%
      \pgfutil@ifnextchar\bgroup{%
        \begingroup%
          \tikz@auto@end@pathfalse%
          \aftergroup\tikz@enddecoration%
          \afterassignment\tikz@scan@next@command%
          \let\tikz@lib@next%
      }%
      {%
        \tikzerror{A decoration must begin with a brace}%
        \tikz@enddecoration%
      }%
}%
\def\tikz@lib@do@dec{%
  \pgfifmetadecoration{\tikz@decoration@name}%
  {\expandafter\pgfmetadecoration\expandafter{\tikz@decoration@name}}%
  {%
    \pgfifdecoration{\tikz@decoration@name}%
    {\tikz@lib@dec@startdecoration}%
    {\tikzerror{Unknown (meta-)decoration '\tikz@decoration@name'. Perhaps you
        misspelled it?}}%
  }%
  \ifx\pgfdecorateexistingpath\pgfutil@empty%
    \pgfpathmoveto{\pgfqpoint{\the\tikz@lastxsaved}{\the\tikz@lastysaved}}%
  \fi%
}%
\newbox\tikz@lib@dec@box
\def\tikz@enddecoration{%
    \global\setbox\tikz@lib@dec@box=\box\tikz@tempbox%
    \ifx\tikz@decoration@name\tikz@nonetext%
    \else
      \iftikz@metadecoration%
        \endpgfmetadecoration%
      \else%
        \tikz@lib@dec@stopdecoration%
      \fi%
    \fi
  \endgroup%
  \setbox\tikz@tempbox=\box\tikz@lib@dec@box%
}%


\def\tikz@lib@dec@decorate@path{%
  \ifx\tikz@decoration@name\tikz@nonetext%
  \else%
    \pgfgetpath\tikz@lib@dec@currentpath%
    \pgfsetpath\pgfutil@empty%
    \pgfifmetadecoration{\tikz@decoration@name}
    {
      \expandafter\pgfmetadecoration\expandafter{\tikz@decoration@name}%
        \pgfsetpath\tikz@lib@dec@currentpath%
      \endpgfmetadecoration%
    }
    {
      \pgfifdecoration{\tikz@decoration@name}
      {
        \tikz@lib@dec@startdecoration%
          \pgfsetpath\tikz@lib@dec@currentpath%
        \tikz@lib@dec@stopdecoration%
      }
      {
        \tikzerror{Unknown (meta-)decoration '\tikz@decoration@name'. Perhaps
          you misspelled it?}
      }
    }
  \fi%
}%

\def\tikz@lib@dec@zpttext{0pt}%

\newif\iftikz@lib@dec@temp
\def\tikz@lib@dec@startdecoration{%
  \pgfkeysgetvalue{/pgf/decoration/pre length}{\tikz@lib@pre}%
  \pgfkeysgetvalue{/pgf/decoration/post length}{\tikz@lib@post}%
  \tikz@lib@dec@tempfalse%
  \ifx\tikz@lib@pre\tikz@lib@dec@zpttext%
    \ifx\tikz@lib@post\tikz@lib@dec@zpttext%
    \else%
      \tikz@lib@dec@temptrue%
    \fi%
  \else%
    \tikz@lib@dec@temptrue%
  \fi%
  \iftikz@lib@dec@temp%
    \pgfmetadecoration{tikz@internal}%
  \else%
    \expandafter\pgfdecoration\expandafter{\expandafter{\tikz@decoration@name}{\pgfdecoratedpathlength}{}{}}%
  \fi%
}%

\def\tikz@lib@dec@stopdecoration{%
  \iftikz@lib@dec@temp%
    \endpgfmetadecoration%
  \else%
    \endpgfdecoration%
  \fi%
}%


\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarydecorations.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarydecorations.pathreplacing.code.tex ====

\usetikzlibrary{decorations}%
\usepgflibrary{decorations.pathreplacing}%


\def\tikz@lib@dec@installinputsegmentpoints{%
    \pgf@process{\pgf@decorate@inputsegment@first}%
    \edef\tikzinputsegmentfirst{\the\pgf@x,\the\pgf@y}%
    \pgf@process{\pgf@decorate@inputsegment@last}%
    \edef\tikzinputsegmentlast{\the\pgf@x,\the\pgf@y}%
    \pgf@process{\pgf@decorate@inputsegment@supporta}%
    \edef\tikzinputsegmentsupporta{\the\pgf@x,\the\pgf@y}%
    \pgf@process{\pgf@decorate@inputsegment@supportb}%
    \edef\tikzinputsegmentsupportb{\the\pgf@x,\the\pgf@y}%
}%

\pgfkeys{
    /pgf/decoration/.cd,
        moveto code/.code=\def\pgfdecoratedinputsegmentmovetocode{\tikz@lib@dec@installinputsegmentpoints#1},
        lineto code/.code=\def\pgfdecoratedinputsegmentlinetocode{\tikz@lib@dec@installinputsegmentpoints#1},
        curveto code/.code=\def\pgfdecoratedinputsegmentcurvetocode{\tikz@lib@dec@installinputsegmentpoints#1},
        closepath code/.code=\def\pgfdecoratedinputsegmentclosepathcode{\tikz@lib@dec@installinputsegmentpoints#1}
}%

\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarydecorations.pathreplacing.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarypositioning.code.tex ====

\ProvidesFileRCS{tikzlibrarypositioning.code.tex}


\tikzset{above/.code=\tikz@lib@place@handle@{#1}{south}{0}{1}{north}{1}}%
\tikzset{above left/.code=\tikz@lib@place@handle@{#1}{south east}{-1}{1}{north west}{0.707106781}}%
\tikzset{above right/.code=\tikz@lib@place@handle@{#1}{south west}{1}{1}{north east}{0.707106781}}%
\tikzset{base left/.code =\tikz@lib@place@handle@{#1}{base east}{-1}{0}{base west}{1}}%
\tikzset{base right/.code=\tikz@lib@place@handle@{#1}{base west}{1}{0}{base east}{1}}%
\tikzset{below/.code=\tikz@lib@place@handle@{#1}{north}{0}{-1}{south}{1}}%
\tikzset{below left/.code=\tikz@lib@place@handle@{#1}{north east}{-1}{-1}{south west}{0.707106781}}%
\tikzset{below right/.code=\tikz@lib@place@handle@{#1}{north west}{1}{-1}{south east}{0.707106781}}%
\tikzset{left/.code =\tikz@lib@place@handle@{#1}{east}{-1}{0}{west}{1}}%
\tikzset{mid left/.code =\tikz@lib@place@handle@{#1}{mid east}{-1}{0}{mid west}{1}}%
\tikzset{mid right/.code=\tikz@lib@place@handle@{#1}{mid west}{1}{0}{mid east}{1}}%
\tikzset{right/.code=\tikz@lib@place@handle@{#1}{west}{1}{0}{east}{1}}%

\newif\iftikz@lib@ignore@size

\pgfutil@g@addto@macro\tikz@node@reset@hook{\tikz@addtransform{\tikz@lib@pos@call}\let\tikz@lib@pos@call=\relax}%

\tikzset{on grid/.is if=tikz@lib@ignore@size}%

\tikzset{node distance=1cm and 1cm}%

\def\tikz@lib@place@handle@#1#2#3#4#5#6{%
  \def\tikz@anchor{#2}%
  \let\tikz@do@auto@anchor=\relax%
  \edef\tikz@temp{#1}%
  \def\tikz@lib@place@single@factor{#6}%
  \expandafter\tikz@lib@place@handle@@\expandafter{\tikz@temp}{#3}{#4}{#5}%
}%
\def\tikz@lib@place@handle@@#1#2#3#4{%
  \pgfutil@in@{of }{#1}%
  \ifpgfutil@in@%
    \tikz@lib@place@of#1\tikz@stop{#4}%
  \else%
    \edef\tikz@lib@place@nums{#1}%
  \fi%
  \ifx\tikz@lib@place@nums\pgfutil@empty%
  \else%
    \expandafter\tikz@lib@place@parse@nums\expandafter{\tikz@lib@place@nums}%
    \pgf@x=#2\pgf@x%
    \pgf@y=#3\pgf@y%
    \edef\tikz@lib@pos@call{\noexpand\pgftransformshift{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
  \fi%
}%

\def\tikz@lib@place@parse@nums#1{%
  \pgfutil@in@{and}{#1}%
  \ifpgfutil@in@%
    \tikz@lib@place@parse@nums@#1\tikz@stop%
  \else%
    \tikz@lib@place@parse@nums@#1and#1\tikz@stop%
    \pgf@x=\tikz@lib@place@single@factor\pgf@x%
    \pgf@y=\tikz@lib@place@single@factor\pgf@y%
  \fi
}%
\def\tikz@lib@place@parse@nums@#1and#2\tikz@stop{%
  \pgfmathparse{#2}%
  \ifpgfmathunitsdeclared%
    \pgf@xa=\pgfmathresult pt%
    \pgf@ya=0pt%
  \else%
    \let\tikz@lib@temp=\pgfmathresult%
    \pgf@process{\pgfpointxy{\tikz@lib@temp}{0}}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
  \fi%
  \pgfmathparse{#1}%
  \ifpgfmathunitsdeclared%
    \advance\pgf@ya by\pgfmathresult pt%
  \else%
    \let\tikz@lib@temp=\pgfmathresult%
    \pgf@process{\pgfpointxy{0}{\tikz@lib@temp}}%
    \advance\pgf@xa by\pgf@x%
    \advance\pgf@ya by\pgf@y%
  \fi%
  \pgf@x=\pgf@xa%
  \pgf@y=\pgf@ya%
}%

\def\tikz@lib@place@of#1of #2\tikz@stop#3{%
  \def\tikz@temp{#1}%
  \ifx\tikz@temp\pgfutil@empty%
    \tikz@lib@place@of@{\tikz@node@distance}{#2}{#3}%
  \else%
    \tikz@lib@place@of@{#1}{#2}{#3}%
  \fi%
}%
\def\tikz@lib@place@of@#1#2#3{%
  \tikz@scan@one@point\tikz@lib@place@remember(#2)%
  \iftikz@shapeborder%
    \iftikz@lib@ignore@size%
      \edef\tikz@node@at{\noexpand\pgfpointanchor{\tikz@shapeborder@name}{center}}%
      \def\tikz@anchor{center}%
    \else%
      \edef\tikz@node@at{\noexpand\pgfpointanchor{\tikz@shapeborder@name}{#3}}%
    \fi%
  \fi%
  \edef\tikz@lib@place@nums{#1}%
}%
\def\tikz@lib@place@remember#1{\def\tikz@node@at{#1}}%



\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarypositioning.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarytopaths.code.tex ====

\ProvidesFileRCS{tikzlibrarytopaths.code.tex}



\tikzset{move to/.style=                 {to path={(\tikztotarget) \tikztonodes}}}



\tikzset{line to/.style=                 {to path={-- (\tikztotarget) \tikztonodes}}}



\tikzset{every curve to/.style=          {}}
\tikzset{curve to/.style=                {to path=\tikz@to@curve@path}}

\tikzoption{bend angle}{\pgfmathsetmacro\tikz@to@bend{#1}}

\tikzoption{bend left}[]{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \pgfmathsetmacro\tikz@to@bend{#1}%
  \fi%
  \let\tikz@to@out=\tikz@to@bend%
  \pgfmathsetmacro\tikz@to@in{180-(\tikz@to@out)}%
  \tikz@to@switch@on%
  \tikz@to@relativetrue%
}

\tikzoption{bend right}[]{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgfutil@empty%
  \else%
    \pgfmathsetmacro\tikz@to@bend{#1}%
  \fi%
  \pgfmathsetmacro\tikz@to@out{-(\tikz@to@bend)}
  \pgfmathsetmacro\tikz@to@in{180-(\tikz@to@out)}
  \tikz@to@switch@on%
  \tikz@to@relativetrue%
}

\tikzoption{relative}[true]{\csname tikz@to@relative#1\endcsname}
\newif\iftikz@to@relative
\tikz@to@relativefalse

\tikzoption{in}{\def\tikz@to@in{#1}\tikz@to@switch@on}
\tikzoption{out}{\def\tikz@to@out{#1}\tikz@to@switch@on}

\tikzoption{in looseness}{\tikz@to@set@in@looseness{#1}}
\tikzoption{out looseness}{\tikz@to@set@out@looseness{#1}}
\tikzoption{looseness}{\tikz@to@set@in@looseness{#1}\tikz@to@set@out@looseness{#1}}

\tikzoption{in control}{\tikz@to@set@in@control{#1}}
\tikzoption{out control}{\tikz@to@set@out@control{#1}}
\tikzoption{controls}{\tikz@to@parse@controls#1\pgf@stop}

\tikzoption{in min distance}{\tikz@to@set@distances{#1}{}{}{}}
\tikzoption{in max distance}{\tikz@to@set@distances{}{#1}{}{}}
\tikzoption{in distance}{\tikz@to@set@distances{#1}{#1}{}{}}
\tikzoption{out min distance}{\tikz@to@set@distances{}{}{#1}{}}
\tikzoption{out max distance}{\tikz@to@set@distances{}{}{}{#1}}
\tikzoption{out distance}{\tikz@to@set@distances{}{}{#1}{#1}}
\tikzoption{min distance}{\tikz@to@set@distances{#1}{}{#1}{}}
\tikzoption{max distance}{\tikz@to@set@distances{}{#1}{}{#1}}
\tikzoption{distance}{\tikz@to@set@distances{#1}{#1}{#1}{#1}}

\def\tikz@to@set@distances#1#2#3#4{%
  \tikz@to@setifnotempy{#1}{\tikz@to@in@min}{\let\tikz@to@end@compute=\tikz@to@end@compute@looseness}%
  \tikz@to@setifnotempy{#2}{\tikz@to@in@max}{\let\tikz@to@end@compute=\tikz@to@end@compute@looseness}%
  \tikz@to@setifnotempy{#3}{\tikz@to@out@min}{\let\tikz@to@start@compute=\tikz@to@start@compute@looseness}%
  \tikz@to@setifnotempy{#4}{\tikz@to@out@max}{\let\tikz@to@start@compute=\tikz@to@start@compute@looseness}%
  \tikz@to@switch@on%
}

\def\tikz@to@setifnotempy#1#2#3{%
  \def\pgf@temp{#1}%
  \ifx\pgf@temp\pgfutil@empty\else\def#2{#1}#3\fi%
}


\def\tikz@to@set@in@looseness#1{%
  \pgfmathsetmacro\tikz@to@in@looseness{#1}%
  \let\tikz@to@end@compute=\tikz@to@end@compute@looseness%
  \tikz@to@switch@on%
}
\def\tikz@to@set@out@looseness#1{%
  \pgfmathsetmacro\tikz@to@out@looseness{#1}%
  \let\tikz@to@start@compute=\tikz@to@start@compute@looseness%
  \tikz@to@switch@on%
}

\def\tikz@to@parse@controls#1and#2\pgf@stop{\tikz@to@set@in@control{#2}\tikz@to@set@out@control{#1}}

\def\tikz@to@set@in@control#1{%
  \def\tikz@to@in@control{#1}%
  \let\tikz@to@end@compute=\tikz@to@end@compute@control%
  \tikz@to@switch@on%
}
\def\tikz@to@set@out@control#1{%
  \def\tikz@to@out@control{#1}%
  \let\tikz@to@start@compute=\tikz@to@start@compute@control%
  \tikz@to@switch@on%
}


\def\tikz@to@bend{30}

\def\tikz@to@out{45}
\def\tikz@to@in{135}

\def\tikz@to@out@looseness{1}
\def\tikz@to@in@looseness{1}

\def\tikz@to@in@min{0pt}
\def\tikz@to@in@max{10000pt}
\def\tikz@to@out@min{0pt}
\def\tikz@to@out@max{10000pt}

\def\tikz@to@switch@on{\let\tikz@to@path=\tikz@to@curve@path}

\def\tikz@to@curve@path{%
  [every curve to]
  \pgfextra{\iftikz@to@relative\tikz@to@compute@relative\else\tikz@to@compute\fi}
  \tikz@computed@path
  \pgfextra{\tikz@updatenexttrue\tikz@updatecurrenttrue}%
  \tikztonodes%
}

\def\tikz@to@modify#1#2{%
  \pgfutil@ifundefined{pgf@sh@ns@#1}
  {}%
  {\edef#1{#1.#2}}
}%

\def\tikz@to@compute{%
  \let\tikz@tofrom=\tikztostart%
  \let\tikz@toto=\tikztotarget%
  \tikz@to@modify\tikz@tofrom\tikz@to@out%
  \tikz@to@modify\tikz@toto\tikz@to@in%
  \ifx\tikz@to@start@compute\tikz@to@start@compute@looseness%
    \tikz@to@compute@distance%
  \else%
    \ifx\tikz@from@start@compute\tikz@to@start@compute@looseness%
      \tikz@to@compute@distance%
    \fi%
  \fi%
  \tikz@to@start@compute%
  \tikz@to@end@compute%
  \edef\tikz@computed@path{.. controls \tikz@computed@start and \tikz@computed@end .. (\tikztotarget)}
}

\def\tikz@to@compute@distance{\tikz@scan@one@point\tikz@@to@compute@distance(\tikz@tofrom)}
\def\tikz@@to@compute@distance#1{%
  \def\tikz@first@point{#1}%
  \tikz@scan@one@point\tikz@@@to@compute@distance(\tikz@toto)}
\def\tikz@@@to@compute@distance#1{%
  \iftikz@updatecurrent\else
    \tikz@updatenextfalse
  \fi
  \def\tikz@second@point{#1}%
  \tikz@to@compute@distance@main%
}
\def\tikz@to@compute@distance@main{%
  \pgf@process{\pgfpointdiff{\tikz@first@point}{\tikz@second@point}}%
  \ifdim\pgf@x<0pt\pgf@xa=-\pgf@x\else\pgf@xa=\pgf@x\fi%
  \ifdim\pgf@y<0pt\pgf@ya=-\pgf@y\else\pgf@ya=\pgf@y\fi%
  \pgf@process{\pgfpointnormalised{\pgfqpoint{\pgf@xa}{\pgf@ya}}}%
  \ifdim\pgf@x>\pgf@y%
    \c@pgf@counta=\pgf@x%
    \ifnum\c@pgf@counta=0\relax%
    \else%
      \divide\c@pgf@counta by 255\relax%
      \pgf@xa=16\pgf@xa\relax%
      \divide\pgf@xa by\c@pgf@counta%
      \pgf@xa=16\pgf@xa\relax%
    \fi%
  \else%
    \c@pgf@counta=\pgf@y%
    \ifnum\c@pgf@counta=0\relax%
    \else%
      \divide\c@pgf@counta by 255\relax%
      \pgf@ya=16\pgf@ya\relax%
      \divide\pgf@ya by\c@pgf@counta%
      \pgf@xa=16\pgf@ya\relax%
    \fi%
  \fi%
  \pgf@x=0.3915\pgf@xa%
  \pgf@xa=\tikz@to@out@looseness\pgf@x%
  \pgf@xb=\tikz@to@in@looseness\pgf@x%
  \pgfmathsetlength{\pgf@ya}{\tikz@to@out@min}
  \ifdim\pgf@xa<\pgf@ya%
    \pgf@xa=\pgf@ya%
  \fi%
  \pgfmathsetlength{\pgf@ya}{\tikz@to@out@max}
  \ifdim\pgf@xa>\pgf@ya%
    \pgf@xa=\pgf@ya%
  \fi%
  \pgfmathsetlength{\pgf@ya}{\tikz@to@in@min}
  \ifdim\pgf@xb<\pgf@ya%
    \pgf@xb=\pgf@ya%
  \fi%
  \pgfmathsetlength{\pgf@ya}{\tikz@to@in@max}
  \ifdim\pgf@xb>\pgf@ya%
    \pgf@xb=\pgf@ya%
  \fi%
}

\def\tikz@to@start@compute@looseness{%
  \edef\tikz@computed@start{([shift=({\tikz@to@out}:\the\pgf@xa)]\tikz@tofrom)}%
}
\def\tikz@to@end@compute@looseness{%
  \edef\tikz@computed@end{([shift=({\tikz@to@in}:\the\pgf@xb)]\tikz@toto)}%
}
\def\tikz@to@start@compute@control{%
  \let\tikz@computed@start=\tikz@to@out@control%
}
\def\tikz@to@end@compute@control{%
  \let\tikz@computed@end=\tikz@to@in@control%
}

\let\tikz@to@start@compute=\tikz@to@start@compute@looseness%
\let\tikz@to@end@compute=\tikz@to@end@compute@looseness%





\def\tikz@to@compute@relative{%
  \tikz@scan@one@point\tikz@@to@compute@relative(\tikztostart)%
}
\def\tikz@@to@compute@relative#1{%
  \def\tikz@tofrom{#1}%
  \tikz@scan@one@point\tikz@@@to@compute@relative(\tikztotarget)%
}
\def\tikz@@@to@compute@relative#1{%
  \def\tikz@toto{#1}%
  \begingroup
    \pgfutil@ifundefined{pgf@sh@ns@\tikztostart}
    {%
      \let\tikz@first@point=\tikz@tofrom%
      \let\tikz@tostart@tikz=\pgfutil@empty
    }%
    {%
      {%
        \tikz@tofrom%
        \pgf@xc=\pgf@x%
        \pgf@yc=\pgf@y%
        {%
          \pgftransformreset%
          \pgftransformshift{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
          \pgftransformrotate{\tikz@to@out}%
          \pgftransformshift{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}%
          \pgf@process{\pgfpointtransformed{\tikz@toto}}%
        }%
        \pgf@xc=\pgf@x%
        \pgf@yc=\pgf@y%
        \pgfpointshapeborder{\tikztostart}{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
        \xdef\tikz@tofrom@smuggle{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
      }%
      \let\tikz@first@point=\tikz@tofrom@smuggle%
      \tikz@first@point%
      \edef\tikz@tostart@tikz{(\the\pgf@x,\the\pgf@y)}%
    }%
    \pgfutil@ifundefined{pgf@sh@ns@\tikztotarget}
    {%
      \let\tikz@second@point=\tikz@toto%
    }%
    {%
      {%
        \tikz@toto%
        \pgf@xc=\pgf@x%
        \pgf@yc=\pgf@y%
        {%
          \pgftransformreset%
          \pgftransformshift{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
          \pgftransformrotate{180}%
          \pgftransformrotate{\tikz@to@in}%
          \pgftransformshift{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}%
          \pgf@process{\pgfpointtransformed{\tikz@tofrom}}%
        }%
        \pgf@xc=\pgf@x%
        \pgf@yc=\pgf@y%
        \pgfpointshapeborder{\tikztotarget}{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
        \xdef\tikz@toto@smuggle{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
      }%
      \let\tikz@second@point=\tikz@toto@smuggle%
    }%
    \tikz@second@point%
    \edef\tikz@totarget@tikz{(\the\pgf@x,\the\pgf@y)}%
    \tikz@to@compute@distance@main%
    \edef\tikz@to@first@distance{\the\pgf@xa}%
    \edef\tikz@to@second@distance{\the\pgf@xb}%
    \pgftransformreset%
    \pgf@process{\tikz@first@point}%
    \pgf@xa=\pgf@x%
    \pgf@ya=\pgf@y%
    \pgf@process{\tikz@second@point}%
    \advance\pgf@x by-\pgf@xa%
    \advance\pgf@y by-\pgf@ya%
    \pgfpointnormalised{}%
    \pgf@xc=\pgf@x%
    \pgf@yc=\pgf@y%
    \pgf@xb=-\pgf@x%
    \pgf@yb=-\pgf@y%
    {%
      \pgftransformshift{\tikz@first@point}%
      \pgftransformcm{\pgf@sys@tonumber\pgf@xc}{\pgf@sys@tonumber\pgf@yc}{\pgf@sys@tonumber\pgf@yb}{\pgf@sys@tonumber\pgf@xc}%
                      {\pgfpointorigin}%
      \pgf@process{\pgfpointtransformed{\pgfpointpolar{\tikz@to@out}{\tikz@to@first@distance}}}%
      \xdef\tikz@computed@start{(\the\pgf@x,\the\pgf@y)}%
    }
    {%
      \pgftransformshift{\tikz@second@point}%
      \pgftransformcm{\pgf@sys@tonumber\pgf@xc}{\pgf@sys@tonumber\pgf@yc}{\pgf@sys@tonumber\pgf@yb}{\pgf@sys@tonumber\pgf@xc}%
                      {\pgfpointorigin}%
      \pgf@process{\pgfpointtransformed{\pgfpointpolar{\tikz@to@in}{\tikz@to@second@distance}}}%
      \xdef\tikz@computed@end{(\the\pgf@x,\the\pgf@y)}%
    }
    \xdef\tikz@computed@path{
      \tikz@tostart@tikz
      .. controls \tikz@computed@start and \tikz@computed@end ..
      \tikz@totarget@tikz}%
  \endgroup
}




\tikzset{loop/.style=                    {to path={
  \pgfextra{\let\tikztotarget=\tikztostart}
  [looseness=8,min distance=5mm,every loop]
  \tikz@to@curve@path
  }}}

\tikzset{every loop/.style=              {->,shorten >=1pt}}

\tikzset{loop right/.style=              {right,out=15,in=-15,loop}}
\tikzset{loop above/.style=              {above,out=105,in=75,loop}}
\tikzset{loop left/.style=               {left,out=195,in=165,loop}}
\tikzset{loop below/.style=              {below,out=285,in=255,loop}}





\endinput
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//tikzlibrarytopaths.code.tex ====

==== BEGIN A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//references.bib ====
@article{FujiiKasamiNinomiya1969,
  author = {Fujii, M. and Kasami, T. and Ninomiya, K.},
  title = {Optimal Sequencing of Two Equivalent Processors},
  journal = {SIAM Journal on Applied Mathematics},
  volume = {17}, number = {4}, pages = {784--789}, year = {1969},
  doi = {10.1137/0117070},
}

@article{FujiiKasamiNinomiya1971Erratum,
  author = {Fujii, M. and Kasami, T. and Ninomiya, K.},
  title = {Erratum: {Optimal Sequencing of Two Equivalent Processors}},
  journal = {SIAM Journal on Applied Mathematics},
  volume = {20}, number = {1}, pages = {141}, year = {1971},
  doi = {10.1137/0120018},
  url = {https://epubs.siam.org/doi/epdf/10.1137/0120018}
}

@article{CG1972,
  author  = {Coffman, Jr., Edward G. and Graham, Ronald L.},
  title   = {Optimal Scheduling for Two-Processor Systems},
  journal = {Acta Informatica},
  volume  = {1},
  number  = {3},
  pages   = {200--213},
  year    = {1972},
  doi     = {10.1007/BF00288685}
}

@article{Ullman1975,
  author  = {Ullman, Jeffrey D.},
  title   = {{NP}-Complete Scheduling Problems},
  journal = {Journal of Computer and System Sciences},
  volume  = {10},
  number  = {3},
  pages   = {384--393},
  year    = {1975},
  doi     = {10.1016/S0022-0000(75)80008-0}
}

@book{GJ1979,
  author    = {Garey, Michael R. and Johnson, David S.},
  title     = {Computers and Intractability: A Guide to the Theory of {NP}-Completeness},
  publisher = {W. H. Freeman},
  year      = {1979}
}

@article{GrahamLawlerLenstraRinnooyKan1979,
  author = {Graham, R. L. and Lawler, E. L. and Lenstra, J. K. and Rinnooy Kan, A. H. G.},
  title = {Optimization and Approximation in Deterministic Sequencing and Scheduling: a Survey},
  journal = {Annals of Discrete Mathematics}, volume = {5}, pages = {287--326}, year = {1979},
  doi = {10.1016/S0167-5060(08)70356-X},
  url = {https://ir.cwi.nl/pub/18052},
}

@article{GareyJohnsonTarjanYannakakis1983,
  author = {Garey, M. R. and Johnson, D. S. and Tarjan, R. E. and Yannakakis, M.},
  title = {Scheduling Opposing Forests},
  journal = {SIAM Journal on Algebraic and Discrete Methods},
  volume = {4}, number = {1}, pages = {72--93}, year = {1983},
  doi = {10.1137/0604011},
}

@article{DW1984,
  author = {Dolev, Danny and Warmuth, Manfred K.},
  title = {Scheduling Precedence Graphs of Bounded Height},
  journal = {Journal of Algorithms},
  volume = {5},
  number = {1},
  pages = {48--59},
  year = {1984},
  doi = {10.1016/0196-6774(84)90039-7}
}

@inproceedings{NSW2025,
  author    = {Nederlof, Jesper and Swennenhuis, C{\'e}line M. F. and W{\k{e}}grzycki, Karol},
  title     = {A Subexponential Time Algorithm for Makespan Scheduling of Unit Jobs with Precedence Constraints},
  booktitle = {Proceedings of the 2025 Annual ACM-SIAM Symposium on Discrete Algorithms (SODA)},
  year      = {2025},
  pages     = {535--552},
  publisher = {Society for Industrial and Applied Mathematics},
  doi       = {10.1137/1.9781611978322.16}
}


@inproceedings{LeveyRothvoss2016,
  author = {Levey, Elaine and Rothvo{\ss}, Thomas},
  title = {A {$(1+\epsilon)$}-Approximation for Makespan Scheduling with Precedence Constraints Using {LP} Hierarchies},
  booktitle = {Proceedings of the 48th Annual ACM SIGACT Symposium on Theory of Computing},
  series = {STOC '16},
  year = {2016},
  pages = {168--177},
  publisher = {Association for Computing Machinery},
  doi = {10.1145/2897518.2897532},
  url = {https://doi.org/10.1145/2897518.2897532}
}

@inproceedings{Garg2018,
  author = {Garg, Shashwat},
  title = {Quasi-{PTAS} for Scheduling with Precedences Using {LP} Hierarchies},
  booktitle = {45th International Colloquium on Automata, Languages, and Programming (ICALP 2018)},
  editor = {Chatzigiannakis, Ioannis and Kaklamanis, Christos and Marx, D{\'a}niel and Sannella, Donald},
  series = {Leibniz International Proceedings in Informatics (LIPIcs)},
  volume = {107},
  year = {2018},
  pages = {59:1--59:13},
  publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
  doi = {10.4230/LIPIcs.ICALP.2018.59},
  url = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ICALP.2018.59}
}

@inproceedings{Li2021,
  author = {Li, Shi},
  title = {Towards {PTAS} for Precedence Constrained Scheduling via Combinatorial Algorithms},
  booktitle = {Proceedings of the 2021 ACM-SIAM Symposium on Discrete Algorithms (SODA)},
  editor = {Marx, D{\'a}niel},
  year = {2021},
  pages = {2991--3010},
  publisher = {Society for Industrial and Applied Mathematics},
  doi = {10.1137/1.9781611976465.178},
  url = {https://doi.org/10.1137/1.9781611976465.178}
}

@inproceedings{DasWiese2022,
  author = {Das, Syamantak and Wiese, Andreas},
  title = {A Simpler {QPTAS} for Scheduling Jobs with Precedence Constraints},
  booktitle = {30th Annual European Symposium on Algorithms (ESA 2022)},
  editor = {Chechik, Shiri and Navarro, Gonzalo and Rotenberg, Eva and Herman, Grzegorz},
  series = {Leibniz International Proceedings in Informatics (LIPIcs)},
  volume = {244},
  year = {2022},
  pages = {40:1--40:11},
  publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
  doi = {10.4230/LIPIcs.ESA.2022.40},
  url = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ESA.2022.40}
}
==== END A-polynomial-time-algorithm-for-three-machine-unit-job-scheduling//references.bib ====