% ------------------------------------------------------------------------------
% Copyright (c) 2010, 2024 Contributors to the Eclipse Foundation
%
% See the NOTICE file(s) distributed with this work for additional
% information regarding copyright ownership.
%
% This program and the accompanying materials are made available under the terms
% of the MIT License which is available at https://opensource.org/licenses/MIT
%
% SPDX-License-Identifier: MIT
% ------------------------------------------------------------------------------
\documentclass{article}
\usepackage{tikz}
\usepackage{verbatim}

\usepackage[paperwidth=40in, paperheight=20in]{geometry}

\usetikzlibrary{arrows, automata, positioning, shapes.geometric}
\begin{document}
\pagestyle{empty}

\definecolor{se-blue}{HTML}{D0D5FF}

\newcommand{\state}[2]{\begin{tabular}{@{}c@{}}#1\\#2\end{tabular}}

\begin{tikzpicture}[
  ->,>=stealth',auto,node distance=5cm,thick,
  every node/.style={font=\sffamily\small},
  every state/.style={draw=se-blue,thick,top color=white,ellipse,
                      bottom color=se-blue!75,initial text=},
  accepting/.style={accepting by arrow,accepting text=\ldots},
  every edge/.style={draw=black!50}]

  \node[state, initial]   (s1) [                               ] {i/i};
  \node[state]            (s2) [above =1.1cm of s1, right of=s1] {p/i};
  \node[state]            (s3) [below =1.1cm of s1, right of=s1] {i/p};
  \node[state]            (s4) [                    right of=s2] {c/i};
  \node[state]            (s5) [                    right of=s3] {i/c};
  \node[state]            (s6) [                    right of=s4] {c/p};
  \node[state]            (s7) [                    right of=s5] {p/c};
  \node[state]            (s8) [below =1.1cm of s6, right of=s6] {c/c};

  \path[every node/.style={font=\sffamily\normalsize,outer sep=0pt}]
    (s1) edge[             ] node[sloped,anchor=south] {start1} (s2)
    (s1) edge[             ] node[sloped,anchor=north] {start2} (s3)
    (s2) edge[             ] node[sloped,anchor=south] {done1 } (s4)
    (s3) edge[             ] node[sloped,anchor=north] {done2 } (s5)
    (s4) edge[             ] node[sloped,anchor=south] {start2} (s6)
    (s5) edge[             ] node[sloped,anchor=north] {start1} (s7)
    (s6) edge[             ] node[sloped,anchor=south] {done2 } (s8)
    (s7) edge[             ] node[sloped,anchor=north] {done1 } (s8)

    (s4) edge[bend right=22] node[sloped,anchor=south] {reset1} (s1)
    (s5) edge[bend left =22] node[sloped,anchor=north] {reset2} (s1)

    (s8) edge[bend right=22] node[sloped,anchor=south] {reset2} (s4)
    (s8) edge[bend left =22] node[sloped,anchor=north] {reset1} (s5)

    (s6) edge[bend right= 9] node[sloped,anchor=north] {reset1} (s3)
    (s7) edge[bend left = 9] node[sloped,anchor=south] {reset2} (s2)
  ;

\end{tikzpicture}
\end{document}
