packages feed

dotparse 0.0.1 → 0.0.2

raw patch · 27 files changed

+765/−513 lines, 27 filesdep +string-interpolatedep −neat-interpolationdep −numhaskdep ~algebraic-graphsdep ~chart-svgdep ~flatparsePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: string-interpolate

Dependencies removed: neat-interpolation, numhask

Dependency ranges changed: algebraic-graphs, chart-svg, flatparse, template-haskell, text, these

API changes (from Hackage documentation)

- DotParse: (<|>) :: Parser e a -> Parser e a -> Parser e a
- DotParse: Err :: !e -> Result e a
- DotParse: Fail :: Result e a
- DotParse: OK :: a -> !ByteString -> Result e a
- DotParse: Parser :: (ForeignPtrContents -> Addr# -> Addr# -> Res# e a) -> Parser e a
- DotParse: Pos :: Int -> Pos
- DotParse: Span :: !Pos -> !Pos -> Span
- DotParse: [runParser#] :: Parser e a -> ForeignPtrContents -> Addr# -> Addr# -> Res# e a
- DotParse: anyChar :: Parser e Char
- DotParse: anyCharASCII :: Parser e Char
- DotParse: anyCharASCII_ :: Parser e ()
- DotParse: anyChar_ :: Parser e ()
- DotParse: anyInt :: Parser e Int
- DotParse: anyInt16 :: Parser e Int16
- DotParse: anyInt16be :: Parser e Int16
- DotParse: anyInt16le :: Parser e Int16
- DotParse: anyInt32 :: Parser e Int32
- DotParse: anyInt32be :: Parser e Int32
- DotParse: anyInt32le :: Parser e Int32
- DotParse: anyInt64 :: Parser e Int64
- DotParse: anyInt64be :: Parser e Int64
- DotParse: anyInt64le :: Parser e Int64
- DotParse: anyInt8 :: Parser e Int8
- DotParse: anyWord :: Parser e Word
- DotParse: anyWord16 :: Parser e Word16
- DotParse: anyWord16_ :: Parser e ()
- DotParse: anyWord16be :: Parser e Word16
- DotParse: anyWord16le :: Parser e Word16
- DotParse: anyWord32 :: Parser e Word32
- DotParse: anyWord32_ :: Parser e ()
- DotParse: anyWord32be :: Parser e Word32
- DotParse: anyWord32le :: Parser e Word32
- DotParse: anyWord64 :: Parser e Word64
- DotParse: anyWord64_ :: Parser e ()
- DotParse: anyWord64be :: Parser e Word64
- DotParse: anyWord64le :: Parser e Word64
- DotParse: anyWord8 :: Parser e Word8
- DotParse: anyWord8_ :: Parser e ()
- DotParse: anyWord_ :: Parser e ()
- DotParse: branch :: Parser e a -> Parser e b -> Parser e b -> Parser e b
- DotParse: byte :: Word8 -> Parser e ()
- DotParse: byteStringOf :: Parser e a -> Parser e ByteString
- DotParse: byteStringed :: Parser e a -> (a -> ByteString -> Parser e b) -> Parser e b
- DotParse: bytes :: [Word] -> Q Exp
- DotParse: chainl :: (b -> a -> b) -> Parser e b -> Parser e a -> Parser e b
- DotParse: chainr :: (a -> b -> b) -> Parser e a -> Parser e b -> Parser e b
- DotParse: char :: Char -> Q Exp
- DotParse: cutting :: Parser e a -> e -> (e -> e -> e) -> Parser e a
- DotParse: data Result e a
- DotParse: data Span
- DotParse: empty :: Parser e a
- DotParse: endPos :: Pos
- DotParse: ensureBytes# :: Int -> Parser e ()
- DotParse: eof :: Parser e ()
- DotParse: err :: e -> Parser e a
- DotParse: fails :: Parser e a -> Parser e ()
- DotParse: fusedSatisfy :: (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> Parser e Char
- DotParse: fusedSatisfy_ :: (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> Parser e ()
- DotParse: getPos :: Parser e Pos
- DotParse: inSpan :: Span -> Parser e a -> Parser e a
- DotParse: infixr 6 <|>
- DotParse: isDigit :: Char -> Bool
- DotParse: isGreekLetter :: Char -> Bool
- DotParse: isLatinLetter :: Char -> Bool
- DotParse: lookahead :: Parser e a -> Parser e a
- DotParse: many :: Parser e a -> Parser e [a]
- DotParse: many_ :: Parser e a -> Parser e ()
- DotParse: mkPos :: ByteString -> (Int, Int) -> Pos
- DotParse: newtype Parser e a
- DotParse: newtype Pos
- DotParse: notFollowedBy :: Parser e a -> Parser e b -> Parser e a
- DotParse: optional :: Parser e a -> Parser e (Maybe a)
- DotParse: optional_ :: Parser e a -> Parser e ()
- DotParse: optioned :: Parser e a -> (a -> Parser e b) -> Parser e b -> Parser e b
- DotParse: packUTF8 :: String -> ByteString
- DotParse: pattern Err# :: e -> Res# e a
- DotParse: pattern Fail# :: Res# e a
- DotParse: pattern OK# :: a -> Addr# -> Res# e a
- DotParse: posLineCols :: ByteString -> [Pos] -> [(Int, Int)]
- DotParse: rawSwitchWithPost :: Maybe (Q Exp) -> [(String, Q Exp)] -> Maybe (Q Exp) -> Q Exp
- DotParse: readInt :: Parser e Int
- DotParse: readInteger :: Parser e Integer
- DotParse: runParser :: Parser e a -> ByteString -> Result e a
- DotParse: runParserS :: Parser e a -> String -> Result e a
- DotParse: satisfy :: (Char -> Bool) -> Parser e Char
- DotParse: satisfyASCII :: (Char -> Bool) -> Parser e Char
- DotParse: satisfyASCII_ :: (Char -> Bool) -> Parser e ()
- DotParse: satisfy_ :: (Char -> Bool) -> Parser e ()
- DotParse: scan16# :: Word16 -> Parser e ()
- DotParse: scan32# :: Word32 -> Parser e ()
- DotParse: scan64# :: Word -> Parser e ()
- DotParse: scan8# :: Word8 -> Parser e ()
- DotParse: scanAny8# :: Parser e Word8
- DotParse: scanBytes# :: [Word] -> Q Exp
- DotParse: setBack# :: Int -> Parser e ()
- DotParse: setPos :: Pos -> Parser e ()
- DotParse: some :: Parser e a -> Parser e [a]
- DotParse: some_ :: Parser e a -> Parser e ()
- DotParse: spanOf :: Parser e a -> Parser e Span
- DotParse: spanned :: Parser e a -> (a -> Span -> Parser e b) -> Parser e b
- DotParse: string :: String -> Q Exp
- DotParse: switch :: Q Exp -> Q Exp
- DotParse: switchWithPost :: Maybe (Q Exp) -> Q Exp -> Q Exp
- DotParse: takeLine :: Parser e String
- DotParse: takeRest :: Parser e String
- DotParse: traceLine :: Parser e String
- DotParse: traceRest :: Parser e String
- DotParse: try :: Parser e a -> Parser e a
- DotParse: type Res# e a = (# (# a, Addr# #) | (# #) | (# e #) #)
- DotParse: unpackUTF8 :: ByteString -> String
- DotParse: unsafeSlice :: ByteString -> Span -> ByteString
- DotParse: unsafeSpanToByteString :: Span -> Parser e ByteString
- DotParse: validPos :: ByteString -> Pos -> Bool
- DotParse.Examples: exGInt :: Graph Int
- DotParse.Examples: exInt :: Graph
+ DotParse: AttributeStatement :: AttributeType -> Map ID ID -> AttributeStatement
+ DotParse: ChartConfig :: Double -> Double -> Double -> Colour -> Colour -> Double -> Double -> Double -> Double -> (ID -> Text) -> ChartConfig
+ DotParse: CompassC :: Compass
+ DotParse: CompassE :: Compass
+ DotParse: CompassN :: Compass
+ DotParse: CompassNE :: Compass
+ DotParse: CompassNW :: Compass
+ DotParse: CompassS :: Compass
+ DotParse: CompassSE :: Compass
+ DotParse: CompassSW :: Compass
+ DotParse: CompassW :: Compass
+ DotParse: Compass_ :: Compass
+ DotParse: Directed :: Directed
+ DotParse: DotConfig :: ByteString -> ByteString -> ByteString -> ByteString -> DotConfig
+ DotParse: EdgeDirected :: EdgeOp
+ DotParse: EdgeID :: ID -> Maybe Port -> EdgeID
+ DotParse: EdgeStatement :: EdgeOp -> EdgeID -> NonEmpty EdgeID -> Map ID ID -> EdgeStatement
+ DotParse: EdgeSubGraph :: SubGraphStatement -> EdgeID
+ DotParse: EdgeType :: AttributeType
+ DotParse: EdgeUndirected :: EdgeOp
+ DotParse: Graph :: Last Strict -> Last Directed -> Last ID -> Map ID ID -> Map ID ID -> Map ID ID -> Map ID ID -> [NodeStatement] -> [EdgeStatement] -> [SubGraphStatement] -> Graph
+ DotParse: GraphType :: AttributeType
+ DotParse: ID :: ByteString -> ID
+ DotParse: IDDouble :: Double -> ID
+ DotParse: IDHtml :: ByteString -> ID
+ DotParse: IDInt :: Int -> ID
+ DotParse: IDQuoted :: ByteString -> ID
+ DotParse: MergeEdges :: Strict
+ DotParse: NoMergeEdges :: Strict
+ DotParse: NodeStatement :: ID -> Maybe Port -> Map ID ID -> NodeStatement
+ DotParse: NodeType :: AttributeType
+ DotParse: Port :: These ID Compass -> Port
+ DotParse: StatementAttribute :: AttributeStatement -> Statement
+ DotParse: StatementEdge :: EdgeStatement -> Statement
+ DotParse: StatementGlobalAttribute :: GlobalAttributeStatement -> Statement
+ DotParse: StatementNode :: NodeStatement -> Statement
+ DotParse: StatementSubGraph :: SubGraphStatement -> Statement
+ DotParse: SubGraphStatement :: Maybe ID -> [Statement] -> SubGraphStatement
+ DotParse: UnDirected :: Directed
+ DotParse: [attSep] :: DotConfig -> ByteString
+ DotParse: [attributeType] :: AttributeStatement -> AttributeType
+ DotParse: [attributes] :: AttributeStatement -> Map ID ID
+ DotParse: [chartBackgroundColor] :: ChartConfig -> Colour
+ DotParse: [chartColor] :: ChartConfig -> Colour
+ DotParse: [chartHeight] :: ChartConfig -> Double
+ DotParse: [chartScale] :: ChartConfig -> Double
+ DotParse: [directed] :: Graph -> Last Directed
+ DotParse: [edgeAttributes] :: Graph -> Map ID ID
+ DotParse: [edgeAttrs] :: EdgeStatement -> Map ID ID
+ DotParse: [edgeOp] :: EdgeStatement -> EdgeOp
+ DotParse: [edgeSize] :: ChartConfig -> Double
+ DotParse: [edges] :: Graph -> [EdgeStatement]
+ DotParse: [globalAttributes] :: Graph -> Map ID ID
+ DotParse: [graphAttributes] :: Graph -> Map ID ID
+ DotParse: [graphid] :: Graph -> Last ID
+ DotParse: [labelf] :: ChartConfig -> ID -> Text
+ DotParse: [leftEdge] :: EdgeStatement -> EdgeID
+ DotParse: [nodeAttributes] :: Graph -> Map ID ID
+ DotParse: [nodeAttrs] :: NodeStatement -> Map ID ID
+ DotParse: [nodeHeight] :: ChartConfig -> Double
+ DotParse: [nodeID] :: NodeStatement -> ID
+ DotParse: [nodeSize] :: ChartConfig -> Double
+ DotParse: [nodes] :: Graph -> [NodeStatement]
+ DotParse: [portID] :: Port -> These ID Compass
+ DotParse: [port] :: NodeStatement -> Maybe Port
+ DotParse: [rightEdges] :: EdgeStatement -> NonEmpty EdgeID
+ DotParse: [statementSep] :: DotConfig -> ByteString
+ DotParse: [strict] :: Graph -> Last Strict
+ DotParse: [subGraphSep] :: DotConfig -> ByteString
+ DotParse: [subgraphID] :: SubGraphStatement -> Maybe ID
+ DotParse: [subgraphStatements] :: SubGraphStatement -> [Statement]
+ DotParse: [subgraphs] :: Graph -> [SubGraphStatement]
+ DotParse: [textSize] :: ChartConfig -> Double
+ DotParse: [topLevelSep] :: DotConfig -> ByteString
+ DotParse: [vshift] :: ChartConfig -> Double
+ DotParse: addStatement :: Statement -> Graph -> Graph
+ DotParse: addStatements :: [Statement] -> Graph -> Graph
+ DotParse: attL :: AttributeType -> ID -> Lens' Graph (Maybe ID)
+ DotParse: class DotParse a
+ DotParse: data AttributeStatement
+ DotParse: data AttributeType
+ DotParse: data ChartConfig
+ DotParse: data Compass
+ DotParse: data Directed
+ DotParse: data DotConfig
+ DotParse: data EdgeID
+ DotParse: data EdgeOp
+ DotParse: data EdgeStatement
+ DotParse: data Graph
+ DotParse: data ID
+ DotParse: data NodeStatement
+ DotParse: data Statement
+ DotParse: data Strict
+ DotParse: data SubGraphStatement
+ DotParse: defDirected :: Last Directed -> Directed
+ DotParse: defStrict :: Last Strict -> Strict
+ DotParse: defaultChartConfig :: ChartConfig
+ DotParse: defaultDotConfig :: DotConfig
+ DotParse: defaultGraph :: Graph
+ DotParse: dotParse :: DotParse a => Parser Error a
+ DotParse: dotPrint :: DotParse a => DotConfig -> a -> ByteString
+ DotParse: edgeID :: EdgeID -> Maybe ID
+ DotParse: edgeIDs :: EdgeStatement -> [(Maybe ID, Maybe ID)]
+ DotParse: edgeIDsNamed :: EdgeStatement -> [(ID, ID)]
+ DotParse: fromDirected :: Directed -> EdgeOp
+ DotParse: gattL :: ID -> Lens' Graph (Maybe ID)
+ DotParse: graphToChart :: Graph -> ChartOptions
+ DotParse: graphToChartWith :: ChartConfig -> Graph -> ChartOptions
+ DotParse: label :: ID -> String
+ DotParse: newtype Port
+ DotParse: processDot :: Directed -> ByteString -> IO ByteString
+ DotParse: processDotWith :: Directed -> [String] -> ByteString -> IO ByteString
+ DotParse: processGraph :: Graph -> IO Graph
+ DotParse: processGraphWith :: DotConfig -> Graph -> IO Graph
+ DotParse: runDotParser :: DotParse a => ByteString -> a
+ DotParse: testDotParser :: forall a. DotParse a => Proxy a -> DotConfig -> ByteString -> IO ()
+ DotParse: toDotGraph :: Graph ByteString -> Graph
+ DotParse: toDotGraphWith :: Directed -> Graph -> Graph ByteString -> Graph
+ DotParse: toStatements :: Directed -> Graph ByteString -> [Statement]
+ DotParse.Examples: exAGraph :: Graph Int
- DotParse.Types: graphToChart :: Graph -> ChartSvg
+ DotParse.Types: graphToChart :: Graph -> ChartOptions
- DotParse.Types: graphToChartWith :: ChartConfig -> Graph -> ChartSvg
+ DotParse.Types: graphToChartWith :: ChartConfig -> Graph -> ChartOptions

Files

dotparse.cabal view
@@ -1,6 +1,6 @@ cabal-version:   2.4 name:            dotparse-version:         0.0.1+version:         0.0.2 synopsis:        dot language parsing and printing. description:     This package provides parsing and printing of the dot language. @@ -13,7 +13,7 @@   >>> import Chart   >>> import DotParse.Examples (exInt)   >>> ex <- processGraph exInt-  >>> writeChartSvg "other/ex.svg" (graphToChartWith defaultChartConfig ex)+  >>> writeChartOptions "other/ex.svg" (graphToChartWith defaultChartConfig ex)   .   ![usage example](docs/other/ex.svg)   .@@ -37,24 +37,22 @@   default-extensions:   ghc-options:     -Wall -Wcompat -Wincomplete-record-updates-    -Wincomplete-uni-patterns -Wredundant-constraints -fwrite-ide-info-    -hiedir=.hie+    -Wincomplete-uni-patterns -Wredundant-constraints    build-depends:-    , algebraic-graphs    ^>=0.6+    , algebraic-graphs    >=0.6 && <0.8     , base                >=4.7    && <5     , bytestring          ^>=0.11.3-    , chart-svg           ^>=0.3+    , chart-svg           >=0.3 && < 0.5     , containers          ^>=0.6-    , flatparse           ^>=0.3.2-    , neat-interpolation  ^>=0.5.1-    , numhask             ^>=0.10+    , flatparse           >=0.3.2 && <0.5     , numhask-space       ^>=0.10     , optics-core         ^>=0.4     , process-extras      ^>=0.7.4-    , template-haskell    >=2.16 && < 2.20-    , text                ^>=1.2-    , these               ^>=1.1.1+    , string-interpolate ^>=0.3+    , template-haskell    >=2.16 && < 2.21+    , text                >=1.2 && <2.1+    , these               >=1.1.1 && < 1.3    exposed-modules:     DotParse
− other/ex.svg
@@ -1,25 +0,0 @@-<svg xmlns="http://www.w3.org/2000/svg" width="444.5569342690883" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-0.25 -489.73 435.64812 489.98012" height="500.0"><style>svg {-  color-scheme: light dark;-}-{-  .canvas g, .title g, .axisbar g, .ticktext g, .tickglyph g, .ticklines g, .legendContent g text {-    fill: #0d0d0d;-  }-  .ticklines g, .tickglyph g, .legendBorder g {-    stroke: #0d0d0d;-  }-  .legendBorder g {-    fill: #f0f0f0;-  }-}-@media (prefers-color-scheme:dark) {-  .canvas g, .title g, .axisbar g, .ticktext g, .tickglyph g, .ticklines g, .legendContent g text {-    fill: #f0f0f0;-  }-  .ticklines g, .tickglyph g, .legendBorder g {-    stroke: #f0f0f0;-  }-  .legendBorder g {-    fill: #0d0d0d;-  }-}</style><g class="chart"><g class="edges"><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 365.08,-231.92 C 369.74,-219.55 376.14,-202.55 380.83,-190.12 L 380.94,-189.83"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 345.88,-236.43 C 330.22,-222.58 304.18,-199.5500 288.4,-185.6 L 288.03,-185.27"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 352.92,-231.92 C 348.5200,-220.23 342.56,-204.4 337.96,-192.2100 L 337.85,-191.9200"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 373.16,-160.86 C 369.07,-157.94 364.48,-154.94 360.0,-152.59 C 314.22,-128.55 255.61,-110.4200 226.73,-102.2400 L 226.39,-102.15"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 380.92,-155.6200 C 376.26,-143.2600 369.86,-126.2600 365.17,-113.8300 L 365.06,-113.53"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 393.08,-155.6200 C 397.48,-143.9300 403.44,-128.11 408.04,-115.91 L 408.1500,-115.62"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 206.93,-114.5800 C 203.7400,-142.49 198.0,-199.54 198.0,-248.04 C 198.0,-326.33 198.0,-326.33 198.0,-326.33 C 198.0,-368.23 190.59,-379.02 174.0,-417.4800 C 168.08,-431.2 158.97,-445.51 151.82,-455.7900 L 151.48,-456.2800"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 219.82,-81.8180 C 230.38,-68.517 246.3700,-48.382 257.0,-35.004 L 257.25,-34.689"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 209.7,-78.213 C 210.15,-66.984 210.74,-52.3090 211.21,-40.653 L 211.22,-40.378"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 198.65,-81.47 C 189.33,-68.875 175.63,-50.3620 165.86,-37.1710 L 165.63,-36.861"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 194.12,-85.6940 C 177.33,-74.682 149.19,-56.222 125.0,-40.2960 C 121.09,-37.725 116.9000,-34.956 112.94,-32.344 L 112.56,-32.092"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 157.4200,-463.38 C 188.35,-450.0200 254.93,-421.2500 286.17,-407.76 L 286.53,-407.6"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 125.6700,-461.7600 C 102.19,-448.4 57.559,-423.0000 33.801,-409.4700 L 33.523,-409.32"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 136.37,-453.77 C 129.4000,-427.06 117.0000,-373.02 117.0000,-326.33 C 117.0000,-326.33 117.0000,-326.33 117.0000,-248.04 C 117.0000,-201.1400 114.55,-146.06 113.08,-117.2700 L 113.06,-116.9300"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 296.79,-382.47 C 292.18,-370.61 285.93,-354.5 281.31,-342.58 L 281.2,-342.3000"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 316.44,-387.21 C 331.91,-374.2300 357.26,-352.96 373.54,-339.3 L 373.92,-338.98"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 309.21,-382.47 C 313.56,-371.27 319.38,-356.2800 323.91,-344.61 L 324.02,-344.33"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 288.12,-312.73 C 303.78,-298.8800 329.82,-275.85 345.6,-261.89 L 345.97,-261.56"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 281.29,-308.21 C 285.95,-296.27 292.3,-280.01 297.1,-267.7100 L 297.21,-267.42"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 268.71,-308.21 C 264.11,-296.44 257.88,-280.47 253.1,-268.2400 L 252.99,-267.9500"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 121.5300,-78.586 C 128.3500,-66.5220 137.5,-50.339 144.3500,-38.226 L 144.51,-37.941"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 107.96,-76.697 C 105.56,-65.522 102.51,-51.375 100.09,-40.155 L 100.04,-39.89"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 155.27,-40.632 C 157.03,-69.326 160.0,-124.6400 160.0,-171.74 C 160.0,-326.33 160.0,-326.33 160.0,-326.33 C 160.0,-372.6000 150.26,-426.5 144.73,-453.4 L 144.6600,-453.7100"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 89.524,-39.429 C 80.174,-67.503 64.0,-123.1 64.0,-171.74 C 64.0,-326.33 64.0,-326.33 64.0,-326.33 C 64.0,-380.31 106.53,-433.6800 128.37,-457.52 L 128.63,-457.8000"/></g></g><g class="shapes"><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-249.04" cx="359.0" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-172.74" cx="387.0" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-96.445" cx="208.99999999999997" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-471.48" cx="141.0" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-399.48" cx="303.0" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-325.3299999999999" cx="275.0" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-172.74" cx="275.0" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-96.445" cx="359.0" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-20.148" cx="268.0" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-399.48" cx="18.0" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-325.3299999999999" cx="389.0" r="20.14812"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-249.04" cx="304.0" r="19.49832"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-172.74" cx="330.99999999999994" r="20.14812"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-96.445" cx="415.0" r="20.14812"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-20.148" cx="212.0" r="20.14812"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-96.445" cx="112.0" r="20.14812"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-325.3299999999999" cx="330.99999999999994" r="20.14812"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-249.04" cx="246.0" r="20.14812"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-20.148" cx="154.0" r="20.14812"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="0.5" fill-opacity="0.2" stroke-opacity="1.0"><circle cy="-20.148" cx="96.0" r="20.14812"/></g></g><g class="labels"><g fill="rgb(-51%, 30%, 37%)" stroke="none" stroke-width="0.0" font-size="14.0" fill-opacity="1.0" text-anchor="middle"><text x="359.0" y="-245.33999999999997">0</text><text x="387.0" y="-169.04000000000002">1</text><text x="208.99999999999997" y="-92.745">2</text><text x="141.0" y="-467.78000000000003">3</text><text x="303.0" y="-395.78">4</text><text x="275.0" y="-321.63">5</text><text x="275.0" y="-169.04000000000002">6</text><text x="359.0" y="-92.745">7</text><text x="268.0" y="-16.448">8</text><text x="18.0" y="-395.78">9</text><text x="389.0" y="-321.63">10</text><text x="304.0" y="-245.33999999999997">11</text><text x="330.99999999999994" y="-169.04000000000002">12</text><text x="415.0" y="-92.745">13</text><text x="212.0" y="-16.448">14</text><text x="112.0" y="-92.745">15</text><text x="330.99999999999994" y="-321.63">16</text><text x="246.0" y="-245.33999999999997">17</text><text x="154.0" y="-16.448">18</text><text x="96.0" y="-16.448">19</text></g></g></g><g class="hud"></g></svg>
other/ex0.svg view
@@ -1,12 +1,12 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Pages: 1 --> <svg width="8pt" height="8pt"  viewBox="0.00 0.00 8.00 8.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 4)">-<polygon fill="white" stroke="transparent" points="-4,4 -4,-4 4,-4 4,4 -4,4"/>+<polygon fill="white" stroke="none" points="-4,4 -4,-4 4,-4 4,4 -4,4"/> </g> </svg>
other/ex1.svg view
@@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Title: D Pages: 1 --> <svg width="188pt" height="116pt"  viewBox="0.00 0.00 188.00 116.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 112)"> <title>D</title>-<polygon fill="white" stroke="transparent" points="-4,4 -4,-112 184,-112 184,4 -4,4"/>+<polygon fill="white" stroke="none" points="-4,4 -4,-112 184,-112 184,4 -4,4"/> <!-- A --> <g id="node1" class="node"> <title>A</title>@@ -24,8 +24,8 @@ <!-- A&#45;&gt;B --> <g id="edge1" class="edge"> <title>A&#45;&gt;B</title>-<path fill="none" stroke="grey" stroke-dasharray="5,2" d="M80.43,-78.37C72.13,-69.14 59.79,-55.44 49.07,-43.52"/>-<polygon fill="grey" stroke="grey" points="51.6,-41.1 42.31,-36.01 46.4,-45.78 51.6,-41.1"/>+<path fill="none" stroke="grey" stroke-dasharray="5,2" d="M80.16,-78.06C72.16,-69.18 60.55,-56.28 50.22,-44.8"/>+<polygon fill="grey" stroke="grey" points="52.96,-42.61 43.67,-37.52 47.75,-47.29 52.96,-42.61"/> </g> <!-- C --> <g id="node3" class="node">@@ -36,10 +36,10 @@ <!-- A&#45;&gt;C --> <g id="edge2" class="edge"> <title>A&#45;&gt;C</title>-<path fill="none" stroke="black" d="M88,-71.7C88,-63.98 88,-54.71 88,-46.11"/>-<path fill="none" stroke="transparent" d="M90,-71.7C90,-63.98 90,-54.71 90,-46.11"/>-<path fill="none" stroke="black" d="M92,-71.7C92,-63.98 92,-54.71 92,-46.11"/>-<polygon fill="black" stroke="black" points="93.5,-46.1 90,-36.1 86.5,-46.1 93.5,-46.1"/>+<path fill="none" stroke="black" d="M88,-71.7C88,-64.41 88,-55.73 88,-47.54"/>+<path fill="none" stroke="none" d="M90,-71.7C90,-64.41 90,-55.73 90,-47.54"/>+<path fill="none" stroke="black" d="M92,-71.7C92,-64.41 92,-55.73 92,-47.54"/>+<polygon fill="black" stroke="black" points="93.5,-47.62 90,-37.62 86.5,-47.62 93.5,-47.62"/> </g> <!-- D --> <g id="node4" class="node">@@ -50,7 +50,7 @@ <!-- A&#45;&gt;D --> <g id="edge3" class="edge"> <title>A&#45;&gt;D</title>-<path fill="none" stroke="black" stroke-width="5" d="M99.57,-78.37C110.24,-66.51 127.58,-47.25 139.59,-33.89"/>+<path fill="none" stroke="black" stroke-width="5" d="M99.84,-78.06C110.5,-66.22 127.57,-47.25 139.48,-34.02"/> </g> </g> </svg>
other/ex10.svg view
@@ -1,22 +1,22 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Title: H Pages: 1 -->-<svg width="97pt" height="62pt"- viewBox="0.00 0.00 97.00 62.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">+<svg width="96pt" height="62pt"+ viewBox="0.00 0.00 96.00 62.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 58)"> <title>H</title>-<polygon fill="white" stroke="transparent" points="-4,4 -4,-58 93,-58 93,4 -4,4"/>+<polygon fill="white" stroke="none" points="-4,4 -4,-58 92,-58 92,4 -4,4"/> <!-- aHtmlTable --> <g id="node1" class="node"> <title>aHtmlTable</title>-<text text-anchor="start" x="18.5" y="-33.8" font-family="Times,serif" font-size="14.00">col 1</text>-<text text-anchor="start" x="57.5" y="-33.8" font-family="Times,serif" font-size="14.00">foo</text>-<text text-anchor="start" x="13.5" y="-12.8" font-family="Times,serif" font-size="14.00">COL 2</text>-<text text-anchor="start" x="58" y="-12.8" font-family="Times,serif" font-size="14.00">bar</text>-<polygon fill="none" stroke="blue" points="8,-4 8,-50 81,-50 81,-4 8,-4"/>+<text text-anchor="start" x="17.5" y="-33.8" font-family="Times,serif" font-size="14.00">col 1</text>+<text text-anchor="start" x="56" y="-33.8" font-family="Times,serif" font-size="14.00">foo</text>+<text text-anchor="start" x="13" y="-12.8" font-family="Times,serif" font-size="14.00">COL 2</text>+<text text-anchor="start" x="56.5" y="-12.8" font-family="Times,serif" font-size="14.00">bar</text>+<polygon fill="none" stroke="blue" points="8,-4 8,-50 80,-50 80,-4 8,-4"/> </g> </g> </svg>
other/ex11.svg view
@@ -1,55 +1,55 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Pages: 1 -->-<svg width="296pt" height="133pt"- viewBox="0.00 0.00 296.00 133.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">+<svg width="291pt" height="133pt"+ viewBox="0.00 0.00 291.00 133.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 129)">-<polygon fill="white" stroke="transparent" points="-4,4 -4,-129 292,-129 292,4 -4,4"/>+<polygon fill="white" stroke="none" points="-4,4 -4,-129 287,-129 287,4 -4,4"/> <!-- tbl --> <g id="node1" class="node"> <title>tbl</title>-<polygon fill="none" stroke="blue" points="8,-99.5 8,-120.5 127,-120.5 127,-99.5 8,-99.5"/>-<text text-anchor="start" x="58" y="-106.3" font-family="Times,serif" font-size="14.00">foo</text>-<polygon fill="none" stroke="blue" points="127,-99.5 127,-120.5 202,-120.5 202,-99.5 127,-99.5"/>-<text text-anchor="start" x="155.5" y="-106.3" font-family="Times,serif" font-size="14.00">bar</text>-<polygon fill="none" stroke="blue" points="202,-99.5 202,-120.5 280,-120.5 280,-99.5 202,-99.5"/>-<text text-anchor="start" x="231" y="-106.3" font-family="Times,serif" font-size="14.00">baz</text>-<polygon fill="none" stroke="blue" points="8,-24.5 8,-99.5 127,-99.5 127,-24.5 8,-24.5"/>-<polygon fill="none" stroke="orange" points="14,-72.5 14,-93.5 52,-93.5 52,-72.5 14,-72.5"/>+<polygon fill="none" stroke="blue" points="8.5,-99.5 8.5,-120.5 125.5,-120.5 125.5,-99.5 8.5,-99.5"/>+<text text-anchor="start" x="57.5" y="-106.3" font-family="Times,serif" font-size="14.00">foo</text>+<polygon fill="none" stroke="blue" points="125.5,-99.5 125.5,-120.5 199.5,-120.5 199.5,-99.5 125.5,-99.5"/>+<text text-anchor="start" x="153.5" y="-106.3" font-family="Times,serif" font-size="14.00">bar</text>+<polygon fill="none" stroke="blue" points="199.5,-99.5 199.5,-120.5 275.5,-120.5 275.5,-99.5 199.5,-99.5"/>+<text text-anchor="start" x="228" y="-106.3" font-family="Times,serif" font-size="14.00">baz</text>+<polygon fill="none" stroke="blue" points="8.5,-24.5 8.5,-99.5 125.5,-99.5 125.5,-24.5 8.5,-24.5"/>+<polygon fill="none" stroke="orange" points="14.5,-72.5 14.5,-93.5 51.5,-93.5 51.5,-72.5 14.5,-72.5"/> <text text-anchor="start" x="19" y="-79.3" font-family="Times,serif" font-size="14.00">one &#160;</text>-<polygon fill="none" stroke="orange" points="52,-72.5 52,-93.5 87,-93.5 87,-72.5 52,-72.5"/>-<text text-anchor="start" x="55" y="-79.3" font-family="Times,serif" font-size="14.00">two &#160;</text>-<polygon fill="none" stroke="orange" points="87,-72.5 87,-93.5 121,-93.5 121,-72.5 87,-72.5"/>-<text text-anchor="start" x="90" y="-79.3" font-family="Times,serif" font-size="14.00">three</text>-<polygon fill="none" stroke="orange" points="14,-51.5 14,-72.5 52,-72.5 52,-51.5 14,-51.5"/>+<polygon fill="none" stroke="orange" points="51.5,-72.5 51.5,-93.5 85.5,-93.5 85.5,-72.5 51.5,-72.5"/>+<text text-anchor="start" x="54.5" y="-79.3" font-family="Times,serif" font-size="14.00">two &#160;</text>+<polygon fill="none" stroke="orange" points="85.5,-72.5 85.5,-93.5 119.5,-93.5 119.5,-72.5 85.5,-72.5"/>+<text text-anchor="start" x="88.5" y="-79.3" font-family="Times,serif" font-size="14.00">three</text>+<polygon fill="none" stroke="orange" points="14.5,-51.5 14.5,-72.5 51.5,-72.5 51.5,-51.5 14.5,-51.5"/> <text text-anchor="start" x="19.5" y="-58.3" font-family="Times,serif" font-size="14.00">four </text>-<polygon fill="none" stroke="orange" points="52,-51.5 52,-72.5 87,-72.5 87,-51.5 52,-51.5"/>-<text text-anchor="start" x="57" y="-58.3" font-family="Times,serif" font-size="14.00">five </text>-<polygon fill="none" stroke="orange" points="87,-51.5 87,-72.5 121,-72.5 121,-51.5 87,-51.5"/>-<text text-anchor="start" x="92" y="-58.3" font-family="Times,serif" font-size="14.00">six &#160;</text>-<polygon fill="none" stroke="orange" points="14,-30.5 14,-51.5 52,-51.5 52,-30.5 14,-30.5"/>-<text text-anchor="start" x="17" y="-37.3" font-family="Times,serif" font-size="14.00">seven</text>-<polygon fill="none" stroke="orange" points="52,-30.5 52,-51.5 87,-51.5 87,-30.5 52,-30.5"/>-<text text-anchor="start" x="55.5" y="-37.3" font-family="Times,serif" font-size="14.00">eight</text>-<polygon fill="none" stroke="orange" points="87,-30.5 87,-51.5 121,-51.5 121,-30.5 87,-30.5"/>-<text text-anchor="start" x="90" y="-37.3" font-family="Times,serif" font-size="14.00">nine </text>-<polygon fill="none" stroke="orange" points="13,-29.5 13,-94.5 122,-94.5 122,-29.5 13,-29.5"/>-<polygon fill="none" stroke="blue" points="127,-3.5 127,-99.5 280,-99.5 280,-3.5 127,-3.5"/>-<polygon fill="none" stroke="pink" points="130,-51.5 130,-96.5 175,-96.5 175,-51.5 130,-51.5"/>-<text text-anchor="start" x="141" y="-70.3" font-family="Times,serif" font-size="14.00">eins</text>-<polygon fill="none" stroke="pink" points="175,-51.5 175,-96.5 224,-96.5 224,-51.5 175,-51.5"/>-<text text-anchor="start" x="186" y="-70.3" font-family="Times,serif" font-size="14.00">zwei</text>-<polygon fill="none" stroke="pink" points="224,-6.5 224,-96.5 277,-96.5 277,-6.5 224,-6.5"/>-<text text-anchor="start" x="239.5" y="-55.3" font-family="Times,serif" font-size="14.00">drei</text>-<text text-anchor="start" x="235" y="-40.3" font-family="Times,serif" font-size="14.00">sechs</text>-<polygon fill="none" stroke="pink" points="130,-6.5 130,-51.5 175,-51.5 175,-6.5 130,-6.5"/>-<text text-anchor="start" x="141.5" y="-25.3" font-family="Times,serif" font-size="14.00">vier</text>-<polygon fill="none" stroke="pink" points="175,-6.5 175,-51.5 224,-51.5 224,-6.5 175,-6.5"/>-<text text-anchor="start" x="187.5" y="-25.3" font-family="Times,serif" font-size="14.00">fünf</text>-<polygon fill="none" stroke="blue" points="8,-3.5 8,-24.5 127,-24.5 127,-3.5 8,-3.5"/>+<polygon fill="none" stroke="orange" points="51.5,-51.5 51.5,-72.5 85.5,-72.5 85.5,-51.5 51.5,-51.5"/>+<text text-anchor="start" x="56" y="-58.3" font-family="Times,serif" font-size="14.00">five </text>+<polygon fill="none" stroke="orange" points="85.5,-51.5 85.5,-72.5 119.5,-72.5 119.5,-51.5 85.5,-51.5"/>+<text text-anchor="start" x="90.5" y="-58.3" font-family="Times,serif" font-size="14.00">six &#160;</text>+<polygon fill="none" stroke="orange" points="14.5,-30.5 14.5,-51.5 51.5,-51.5 51.5,-30.5 14.5,-30.5"/>+<text text-anchor="start" x="17.5" y="-37.3" font-family="Times,serif" font-size="14.00">seven</text>+<polygon fill="none" stroke="orange" points="51.5,-30.5 51.5,-51.5 85.5,-51.5 85.5,-30.5 51.5,-30.5"/>+<text text-anchor="start" x="54.5" y="-37.3" font-family="Times,serif" font-size="14.00">eight</text>+<polygon fill="none" stroke="orange" points="85.5,-30.5 85.5,-51.5 119.5,-51.5 119.5,-30.5 85.5,-30.5"/>+<text text-anchor="start" x="88.5" y="-37.3" font-family="Times,serif" font-size="14.00">nine </text>+<polygon fill="none" stroke="orange" points="13.5,-29.5 13.5,-94.5 120.5,-94.5 120.5,-29.5 13.5,-29.5"/>+<polygon fill="none" stroke="blue" points="125.5,-3.5 125.5,-99.5 275.5,-99.5 275.5,-3.5 125.5,-3.5"/>+<polygon fill="none" stroke="pink" points="128.5,-51.5 128.5,-96.5 172.5,-96.5 172.5,-51.5 128.5,-51.5"/>+<text text-anchor="start" x="139.5" y="-70.3" font-family="Times,serif" font-size="14.00">eins</text>+<polygon fill="none" stroke="pink" points="172.5,-51.5 172.5,-96.5 220.5,-96.5 220.5,-51.5 172.5,-51.5"/>+<text text-anchor="start" x="183.5" y="-70.3" font-family="Times,serif" font-size="14.00">zwei</text>+<polygon fill="none" stroke="pink" points="220.5,-6.5 220.5,-96.5 272.5,-96.5 272.5,-6.5 220.5,-6.5"/>+<text text-anchor="start" x="235.5" y="-55.3" font-family="Times,serif" font-size="14.00">drei</text>+<text text-anchor="start" x="231.5" y="-40.3" font-family="Times,serif" font-size="14.00">sechs</text>+<polygon fill="none" stroke="pink" points="128.5,-6.5 128.5,-51.5 172.5,-51.5 172.5,-6.5 128.5,-6.5"/>+<text text-anchor="start" x="139.5" y="-25.3" font-family="Times,serif" font-size="14.00">vier</text>+<polygon fill="none" stroke="pink" points="172.5,-6.5 172.5,-51.5 220.5,-51.5 220.5,-6.5 172.5,-6.5"/>+<text text-anchor="start" x="185" y="-25.3" font-family="Times,serif" font-size="14.00">fünf</text>+<polygon fill="none" stroke="blue" points="8.5,-3.5 8.5,-24.5 125.5,-24.5 125.5,-3.5 8.5,-3.5"/> <text text-anchor="start" x="57.5" y="-10.3" font-family="Times,serif" font-size="14.00">abc</text> </g> </g>
other/ex12.svg view
@@ -1,24 +1,24 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Title: D Pages: 1 --> <svg width="62pt" height="79pt"  viewBox="0.00 0.00 62.00 79.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 75)"> <title>D</title>-<polygon fill="white" stroke="transparent" points="-4,4 -4,-75 58,-75 58,4 -4,4"/>+<polygon fill="white" stroke="none" points="-4,4 -4,-75 58,-75 58,4 -4,4"/> <!-- some_node --> <g id="node1" class="node"> <title>some_node</title>-<polygon fill="yellow" stroke="transparent" points="13,-45.5 13,-66.5 41,-66.5 41,-45.5 13,-45.5"/>+<polygon fill="yellow" stroke="none" points="13,-45.5 13,-66.5 41,-66.5 41,-45.5 13,-45.5"/> <polygon fill="none" stroke="black" points="13,-45.5 13,-66.5 41,-66.5 41,-45.5 13,-45.5"/> <text text-anchor="start" x="16" y="-52.3" font-family="Times,serif" font-size="14.00">Foo</text>-<polygon fill="lightblue" stroke="transparent" points="13,-24.5 13,-45.5 41,-45.5 41,-24.5 13,-24.5"/>+<polygon fill="lightblue" stroke="none" points="13,-24.5 13,-45.5 41,-45.5 41,-24.5 13,-24.5"/> <polygon fill="none" stroke="black" points="13,-24.5 13,-45.5 41,-45.5 41,-24.5 13,-24.5"/>-<text text-anchor="start" x="16.5" y="-31.3" font-family="Times,serif" font-size="14.00" fill="#0000ff">Bar</text>-<polygon fill="#f0e3ff" stroke="transparent" points="13,-3.5 13,-24.5 41,-24.5 41,-3.5 13,-3.5"/>+<text text-anchor="start" x="17" y="-31.3" font-family="Times,serif" font-size="14.00" fill="#0000ff">Bar</text>+<polygon fill="#f0e3ff" stroke="none" points="13,-3.5 13,-24.5 41,-24.5 41,-3.5 13,-3.5"/> <polygon fill="none" stroke="black" points="13,-3.5 13,-24.5 41,-24.5 41,-3.5 13,-3.5"/> <text text-anchor="start" x="16" y="-10.3" font-family="Times,serif" font-size="14.00" fill="#ff1020">Baz</text> </g>
other/ex13.svg view
@@ -1,22 +1,22 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Title: H Pages: 1 -->-<svg width="97pt" height="62pt"- viewBox="0.00 0.00 97.00 62.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">+<svg width="96pt" height="62pt"+ viewBox="0.00 0.00 96.00 62.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 58)"> <title>H</title>-<polygon fill="white" stroke="transparent" points="-4,4 -4,-58 93,-58 93,4 -4,4"/>+<polygon fill="white" stroke="none" points="-4,4 -4,-58 92,-58 92,4 -4,4"/> <!-- aHtmlTable --> <g id="node1" class="node"> <title>aHtmlTable</title>-<text text-anchor="start" x="18.5" y="-33.8" font-family="Times,serif" font-size="14.00">col 1</text>-<text text-anchor="start" x="57.5" y="-33.8" font-family="Times,serif" font-size="14.00">foo</text>-<text text-anchor="start" x="13.5" y="-12.8" font-family="Times,serif" font-size="14.00">COL 2</text>-<text text-anchor="start" x="58" y="-12.8" font-family="Times,serif" font-size="14.00">bar</text>-<path fill="none" stroke="black" d="M20,-4C20,-4 69,-4 69,-4 75,-4 81,-10 81,-16 81,-16 81,-38 81,-38 81,-44 75,-50 69,-50 69,-50 20,-50 20,-50 14,-50 8,-44 8,-38 8,-38 8,-16 8,-16 8,-10 14,-4 20,-4"/>+<text text-anchor="start" x="17.5" y="-33.8" font-family="Times,serif" font-size="14.00">col 1</text>+<text text-anchor="start" x="56" y="-33.8" font-family="Times,serif" font-size="14.00">foo</text>+<text text-anchor="start" x="13" y="-12.8" font-family="Times,serif" font-size="14.00">COL 2</text>+<text text-anchor="start" x="56.5" y="-12.8" font-family="Times,serif" font-size="14.00">bar</text>+<path fill="none" stroke="black" d="M20,-4C20,-4 68,-4 68,-4 74,-4 80,-10 80,-16 80,-16 80,-38 80,-38 80,-44 74,-50 68,-50 68,-50 20,-50 20,-50 14,-50 8,-44 8,-38 8,-38 8,-16 8,-16 8,-10 14,-4 20,-4"/> </g> </g> </svg>
other/ex14.svg view
@@ -1,62 +1,62 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Title: H Pages: 1 -->-<svg width="230pt" height="138pt"- viewBox="0.00 0.00 230.00 138.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">+<svg width="225pt" height="138pt"+ viewBox="0.00 0.00 225.00 138.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 134)"> <title>H</title>-<polygon fill="white" stroke="transparent" points="-4,4 -4,-134 226,-134 226,4 -4,4"/>+<polygon fill="white" stroke="none" points="-4,4 -4,-134 221,-134 221,4 -4,4"/> <!-- parent --> <g id="node1" class="node"> <title>parent</title>-<polygon fill="none" stroke="black" points="11,-102 11,-123 211,-123 211,-102 11,-102"/>-<text text-anchor="start" x="32.5" y="-108.8" font-family="Times,serif" font-size="14.00">The foo, the bar and the baz</text>-<polygon fill="none" stroke="black" points="11,-79 11,-100 69,-100 69,-79 11,-79"/>-<text text-anchor="start" x="14" y="-85.8" font-family="Times,serif" font-size="14.00">First port</text>-<polygon fill="none" stroke="black" points="71,-79 71,-100 145,-100 145,-79 71,-79"/>-<text text-anchor="start" x="74" y="-85.8" font-family="Times,serif" font-size="14.00">Second port</text>-<polygon fill="none" stroke="black" points="147,-79 147,-100 211,-100 211,-79 147,-79"/>-<text text-anchor="start" x="150" y="-85.8" font-family="Times,serif" font-size="14.00">Third port</text>-<polygon fill="none" stroke="black" points="8,-76 8,-126 214,-126 214,-76 8,-76"/>+<polygon fill="none" stroke="black" points="11.5,-102 11.5,-123 206.5,-123 206.5,-102 11.5,-102"/>+<text text-anchor="start" x="32" y="-108.8" font-family="Times,serif" font-size="14.00">The foo, the bar and the baz</text>+<polygon fill="none" stroke="black" points="11.5,-79 11.5,-100 68.5,-100 68.5,-79 11.5,-79"/>+<text text-anchor="start" x="14.5" y="-85.8" font-family="Times,serif" font-size="14.00">First port</text>+<polygon fill="none" stroke="black" points="70.5,-79 70.5,-100 142.5,-100 142.5,-79 70.5,-79"/>+<text text-anchor="start" x="73.5" y="-85.8" font-family="Times,serif" font-size="14.00">Second port</text>+<polygon fill="none" stroke="black" points="144.5,-79 144.5,-100 206.5,-100 206.5,-79 144.5,-79"/>+<text text-anchor="start" x="147.5" y="-85.8" font-family="Times,serif" font-size="14.00">Third port</text>+<polygon fill="none" stroke="black" points="8,-76 8,-126 209,-126 209,-76 8,-76"/> </g> <!-- child_one --> <g id="node2" class="node"> <title>child_one</title>-<text text-anchor="start" x="32" y="-13.8" font-family="Times,serif" font-size="14.00">1</text>-<polygon fill="none" stroke="black" points="27,-5.5 27,-30.5 45,-30.5 45,-5.5 27,-5.5"/>+<text text-anchor="start" x="31.5" y="-13.8" font-family="Times,serif" font-size="14.00">1</text>+<polygon fill="none" stroke="black" points="26,-5.5 26,-30.5 43,-30.5 43,-5.5 26,-5.5"/> </g> <!-- parent&#45;&gt;child_one --> <g id="edge1" class="edge"> <title>parent:port_one&#45;&gt;child_one</title>-<path fill="none" stroke="black" d="M40,-78C40,-67.6 39.37,-56.18 38.62,-46.19"/>-<polygon fill="black" stroke="black" points="42.09,-45.69 37.77,-36.02 35.11,-46.28 42.09,-45.69"/>+<path fill="none" stroke="black" d="M39.5,-78C39.5,-67.84 38.75,-56.73 37.84,-46.92"/>+<polygon fill="black" stroke="black" points="41.35,-46.84 36.84,-37.26 34.39,-47.57 41.35,-46.84"/> </g> <!-- child_two --> <g id="node3" class="node"> <title>child_two</title>-<text text-anchor="start" x="104" y="-13.8" font-family="Times,serif" font-size="14.00">2</text>-<polygon fill="none" stroke="black" points="99,-5.5 99,-30.5 117,-30.5 117,-5.5 99,-5.5"/>+<text text-anchor="start" x="103.5" y="-13.8" font-family="Times,serif" font-size="14.00">2</text>+<polygon fill="none" stroke="black" points="98,-5.5 98,-30.5 115,-30.5 115,-5.5 98,-5.5"/> </g> <!-- parent&#45;&gt;child_two --> <g id="edge2" class="edge"> <title>parent:port_two&#45;&gt;child_two</title>-<path fill="none" stroke="black" d="M108,-78C108,-67.62 108,-56.21 108,-46.22"/>-<polygon fill="black" stroke="black" points="111.5,-46.04 108,-36.04 104.5,-46.04 111.5,-46.04"/>+<path fill="none" stroke="black" d="M106.5,-78C106.5,-67.99 106.5,-57.02 106.5,-47.29"/>+<polygon fill="black" stroke="black" points="110,-47.3 106.5,-37.3 103,-47.3 110,-47.3"/> </g> <!-- child_three --> <g id="node4" class="node"> <title>child_three</title>-<text text-anchor="start" x="176" y="-13.8" font-family="Times,serif" font-size="14.00">3</text>-<polygon fill="none" stroke="black" points="171,-5.5 171,-30.5 189,-30.5 189,-5.5 171,-5.5"/>+<text text-anchor="start" x="175.5" y="-13.8" font-family="Times,serif" font-size="14.00">3</text>+<polygon fill="none" stroke="black" points="170,-5.5 170,-30.5 187,-30.5 187,-5.5 170,-5.5"/> </g> <!-- parent&#45;&gt;child_three --> <g id="edge3" class="edge"> <title>parent:port_three&#45;&gt;child_three</title>-<path fill="none" stroke="black" d="M179,-78C179,-67.62 179.16,-56.21 179.35,-46.21"/>-<polygon fill="black" stroke="black" points="182.85,-46.11 179.56,-36.04 175.85,-45.96 182.85,-46.11"/>+<path fill="none" stroke="black" d="M175.5,-78C175.5,-67.86 175.95,-56.76 176.5,-46.95"/>+<polygon fill="black" stroke="black" points="179.97,-47.48 177.1,-37.28 172.98,-47.05 179.97,-47.48"/> </g> </g> </svg>
other/ex15.svg view
@@ -1,91 +1,91 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Title: D Pages: 1 -->-<svg width="199pt" height="328pt"- viewBox="0.00 0.00 198.50 328.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">+<svg width="198pt" height="328pt"+ viewBox="0.00 0.00 198.00 328.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 324)"> <title>D</title>-<polygon fill="white" stroke="transparent" points="-4,4 -4,-324 194.5,-324 194.5,4 -4,4"/>+<polygon fill="white" stroke="none" points="-4,4 -4,-324 194,-324 194,4 -4,4"/> <!-- task_menu --> <g id="node1" class="node"> <title>task_menu</title>-<text text-anchor="start" x="15" y="-306.1" font-family="Sans serif" font-weight="bold" font-size="8.00">Task 1</text>-<text text-anchor="start" x="15" y="-291.1" font-family="Sans serif" font-size="8.00">Choose Menu</text>-<text text-anchor="start" x="15" y="-277.1" font-family="Sans serif" font-size="8.00" fill="darkgreen">done</text>-<polygon fill="none" stroke="black" points="11,-271 11,-316 69,-316 69,-271 11,-271"/>+<text text-anchor="start" x="14.5" y="-306.1" font-family="Sans serif" font-weight="bold" font-size="8.00">Task 1</text>+<text text-anchor="start" x="14.5" y="-291.1" font-family="Sans serif" font-size="8.00">Choose Menu</text>+<text text-anchor="start" x="14.5" y="-277.1" font-family="Sans serif" font-size="8.00" fill="darkgreen">done</text>+<polygon fill="none" stroke="black" points="10,-271 10,-316 69,-316 69,-271 10,-271"/> </g> <!-- task_ingredients --> <g id="node2" class="node"> <title>task_ingredients</title>-<text text-anchor="start" x="12" y="-217.1" font-family="Sans serif" font-weight="bold" font-size="8.00">Task 2</text>-<text text-anchor="start" x="12" y="-202.1" font-family="Sans serif" font-size="8.00">Buy ingredients</text>-<text text-anchor="start" x="12" y="-188.1" font-family="Sans serif" font-size="8.00" fill="darkgreen">done</text>-<polygon fill="none" stroke="black" points="8,-182 8,-227 72,-227 72,-182 8,-182"/>+<text text-anchor="start" x="12.5" y="-217.1" font-family="Sans serif" font-weight="bold" font-size="8.00">Task 2</text>+<text text-anchor="start" x="12.5" y="-202.1" font-family="Sans serif" font-size="8.00">Buy ingredients</text>+<text text-anchor="start" x="12.5" y="-188.1" font-family="Sans serif" font-size="8.00" fill="darkgreen">done</text>+<polygon fill="none" stroke="black" points="8,-182 8,-227 71,-227 71,-182 8,-182"/> </g> <!-- task_menu&#45;&gt;task_ingredients --> <g id="edge1" class="edge"> <title>task_menu&#45;&gt;task_ingredients</title>-<path fill="none" stroke="black" d="M40,-266.87C40,-258.89 40,-249.93 40,-241.38"/>-<polygon fill="black" stroke="black" points="43.5,-241.25 40,-231.25 36.5,-241.25 43.5,-241.25"/>+<path fill="none" stroke="black" d="M39.5,-267.34C39.5,-259.47 39.5,-250.62 39.5,-242.14"/>+<polygon fill="black" stroke="black" points="43,-242.42 39.5,-232.42 36,-242.42 43,-242.42"/> </g> <!-- task_cook --> <g id="node4" class="node"> <title>task_cook</title>-<text text-anchor="start" x="76" y="-128.1" font-family="Sans serif" font-weight="bold" font-size="8.00">Task 5</text>-<text text-anchor="start" x="76" y="-113.1" font-family="Sans serif" font-size="8.00">Cook</text>-<text text-anchor="start" x="76" y="-99.1" font-family="Sans serif" font-size="8.00" fill="red">todo</text>-<polygon fill="none" stroke="black" points="71.5,-93 71.5,-138 104.5,-138 104.5,-93 71.5,-93"/>+<text text-anchor="start" x="75.5" y="-128.1" font-family="Sans serif" font-weight="bold" font-size="8.00">Task 5</text>+<text text-anchor="start" x="75.5" y="-113.1" font-family="Sans serif" font-size="8.00">Cook</text>+<text text-anchor="start" x="75.5" y="-99.1" font-family="Sans serif" font-size="8.00" fill="red">todo</text>+<polygon fill="none" stroke="black" points="71,-93 71,-138 104,-138 104,-93 71,-93"/> </g> <!-- task_ingredients&#45;&gt;task_cook --> <g id="edge2" class="edge"> <title>task_ingredients&#45;&gt;task_cook</title>-<path fill="none" stroke="black" d="M54.14,-177.87C58.74,-169.53 63.92,-160.14 68.82,-151.26"/>-<polygon fill="black" stroke="black" points="72.03,-152.7 73.79,-142.25 65.9,-149.31 72.03,-152.7"/>+<path fill="none" stroke="black" d="M53.38,-178.34C57.92,-170.11 63.05,-160.82 67.92,-151.98"/>+<polygon fill="black" stroke="black" points="70.98,-153.68 72.75,-143.23 64.85,-150.3 70.98,-153.68"/> </g> <!-- task_invitation --> <g id="node3" class="node"> <title>task_invitation</title>-<text text-anchor="start" x="111" y="-217.1" font-family="Sans serif" font-weight="bold" font-size="8.00">Task 4</text>-<text text-anchor="start" x="111" y="-202.1" font-family="Sans serif" font-size="8.00">Send invitation</text>-<text text-anchor="start" x="111" y="-188.1" font-family="Sans serif" font-size="8.00" fill="darkgreen">done</text>-<polygon fill="none" stroke="black" points="106.5,-182 106.5,-227 167.5,-227 167.5,-182 106.5,-182"/>+<text text-anchor="start" x="109.5" y="-217.1" font-family="Sans serif" font-weight="bold" font-size="8.00">Task 4</text>+<text text-anchor="start" x="109.5" y="-202.1" font-family="Sans serif" font-size="8.00">Send invitation</text>+<text text-anchor="start" x="109.5" y="-188.1" font-family="Sans serif" font-size="8.00" fill="darkgreen">done</text>+<polygon fill="none" stroke="black" points="105.5,-182 105.5,-227 165.5,-227 165.5,-182 105.5,-182"/> </g> <!-- task_invitation&#45;&gt;task_cook --> <g id="edge3" class="edge"> <title>task_invitation&#45;&gt;task_cook</title>-<path fill="none" stroke="black" d="M122.56,-177.87C117.82,-169.45 112.47,-159.95 107.42,-150.98"/>-<polygon fill="black" stroke="black" points="110.46,-149.25 102.5,-142.25 104.36,-152.68 110.46,-149.25"/>+<path fill="none" stroke="black" d="M121.62,-178.34C117.08,-170.11 111.95,-160.82 107.08,-151.98"/>+<polygon fill="black" stroke="black" points="110.15,-150.3 102.25,-143.23 104.02,-153.68 110.15,-150.3"/> </g> <!-- task_eat --> <g id="node6" class="node"> <title>task_eat</title>-<text text-anchor="start" x="113" y="-39.1" font-family="Sans serif" font-weight="bold" font-size="8.00">Task 6</text>-<text text-anchor="start" x="113" y="-24.1" font-family="Sans serif" font-size="8.00">Eat</text>-<text text-anchor="start" x="113" y="-10.1" font-family="Sans serif" font-size="8.00" fill="red">todo</text>-<polygon fill="none" stroke="black" points="108.5,-4 108.5,-49 141.5,-49 141.5,-4 108.5,-4"/>+<text text-anchor="start" x="112.5" y="-39.1" font-family="Sans serif" font-weight="bold" font-size="8.00">Task 6</text>+<text text-anchor="start" x="112.5" y="-24.1" font-family="Sans serif" font-size="8.00">Eat</text>+<text text-anchor="start" x="112.5" y="-10.1" font-family="Sans serif" font-size="8.00" fill="red">todo</text>+<polygon fill="none" stroke="black" points="108,-4 108,-49 141,-49 141,-4 108,-4"/> </g> <!-- task_cook&#45;&gt;task_eat --> <g id="edge5" class="edge"> <title>task_cook&#45;&gt;task_eat</title>-<path fill="none" stroke="black" d="M98.9,-88.87C102.41,-80.62 106.36,-71.34 110.1,-62.54"/>-<polygon fill="black" stroke="black" points="113.36,-63.82 114.05,-53.25 106.91,-61.08 113.36,-63.82"/>+<path fill="none" stroke="black" d="M98.2,-89.34C101.66,-81.2 105.57,-72.02 109.29,-63.27"/>+<polygon fill="black" stroke="black" points="112.41,-64.87 113.1,-54.3 105.97,-62.13 112.41,-64.87"/> </g> <!-- task_table --> <g id="node5" class="node"> <title>task_table</title>-<text text-anchor="start" x="146" y="-128.1" font-family="Sans serif" font-weight="bold" font-size="8.00">Task 3</text>-<text text-anchor="start" x="146" y="-113.1" font-family="Sans serif" font-size="8.00">Lay table</text>-<text text-anchor="start" x="146" y="-99.1" font-family="Sans serif" font-size="8.00" fill="red">todo</text>-<polygon fill="none" stroke="black" points="141.5,-93 141.5,-138 182.5,-138 182.5,-93 141.5,-93"/>+<text text-anchor="start" x="145.5" y="-128.1" font-family="Sans serif" font-weight="bold" font-size="8.00">Task 3</text>+<text text-anchor="start" x="145.5" y="-113.1" font-family="Sans serif" font-size="8.00">Lay table</text>+<text text-anchor="start" x="145.5" y="-99.1" font-family="Sans serif" font-size="8.00" fill="red">todo</text>+<polygon fill="none" stroke="black" points="141,-93 141,-138 182,-138 182,-93 141,-93"/> </g> <!-- task_table&#45;&gt;task_eat --> <g id="edge4" class="edge"> <title>task_table&#45;&gt;task_eat</title>-<path fill="none" stroke="black" d="M151.1,-88.87C147.59,-80.62 143.64,-71.34 139.9,-62.54"/>-<polygon fill="black" stroke="black" points="143.09,-61.08 135.95,-53.25 136.64,-63.82 143.09,-61.08"/>+<path fill="none" stroke="black" d="M150.8,-89.34C147.34,-81.2 143.43,-72.02 139.71,-63.27"/>+<polygon fill="black" stroke="black" points="143.03,-62.13 135.9,-54.3 136.59,-64.87 143.03,-62.13"/> </g> </g> </svg>
other/ex2.svg view
@@ -1,32 +1,32 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Title: D Pages: 1 -->-<svg width="578pt" height="78pt"- viewBox="0.00 0.00 578.00 78.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">+<svg width="564pt" height="78pt"+ viewBox="0.00 0.00 563.50 78.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 74)"> <title>D</title>-<polygon fill="white" stroke="transparent" points="-4,4 -4,-74 574,-74 574,4 -4,4"/>+<polygon fill="white" stroke="none" points="-4,4 -4,-74 559.5,-74 559.5,4 -4,4"/> <!-- node_A --> <g id="node1" class="node"> <title>node_A</title>-<polygon fill="none" stroke="black" points="0,-0.5 0,-69.5 205,-69.5 205,-0.5 0,-0.5"/>-<text text-anchor="middle" x="51.5" y="-31.3" font-family="Arial" font-size="14.00">shape=record</text>-<polyline fill="none" stroke="black" points="103,-0.5 103,-69.5 "/>-<text text-anchor="middle" x="132" y="-54.3" font-family="Arial" font-size="14.00">above</text>-<polyline fill="none" stroke="black" points="103,-46.5 161,-46.5 "/>-<text text-anchor="middle" x="132" y="-31.3" font-family="Arial" font-size="14.00">middle</text>-<polyline fill="none" stroke="black" points="103,-23.5 161,-23.5 "/>-<text text-anchor="middle" x="132" y="-8.3" font-family="Arial" font-size="14.00">below</text>-<polyline fill="none" stroke="black" points="161,-0.5 161,-69.5 "/>-<text text-anchor="middle" x="183" y="-31.3" font-family="Arial" font-size="14.00">right</text>+<polygon fill="none" stroke="black" points="0,-0.5 0,-69.5 200,-69.5 200,-0.5 0,-0.5"/>+<text text-anchor="middle" x="50" y="-31.3" font-family="Arial" font-size="14.00">shape=record</text>+<polyline fill="none" stroke="black" points="100,-0.5 100,-69.5"/>+<text text-anchor="middle" x="128.5" y="-54.3" font-family="Arial" font-size="14.00">above</text>+<polyline fill="none" stroke="black" points="100,-46.5 157,-46.5"/>+<text text-anchor="middle" x="128.5" y="-31.3" font-family="Arial" font-size="14.00">middle</text>+<polyline fill="none" stroke="black" points="100,-23.5 157,-23.5"/>+<text text-anchor="middle" x="128.5" y="-8.3" font-family="Arial" font-size="14.00">below</text>+<polyline fill="none" stroke="black" points="157,-0.5 157,-69.5"/>+<text text-anchor="middle" x="178.5" y="-31.3" font-family="Arial" font-size="14.00">right</text> </g> <!-- node_B --> <g id="node2" class="node"> <title>node_B</title>-<text text-anchor="middle" x="396.5" y="-31.3" font-family="Arial" font-size="14.00">shape=plaintext|{curly|braces and|bars without}|effect</text>+<text text-anchor="middle" x="387" y="-31.3" font-family="Arial" font-size="14.00">shape=plaintext|{curly|braces and|bars without}|effect</text> </g> </g> </svg>
other/ex3.svg view
@@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Title: D Pages: 1 --> <svg width="206pt" height="188pt"  viewBox="0.00 0.00 206.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)"> <title>D</title>-<polygon fill="white" stroke="transparent" points="-4,4 -4,-184 202,-184 202,4 -4,4"/>+<polygon fill="white" stroke="none" points="-4,4 -4,-184 202,-184 202,4 -4,4"/> <!-- A --> <g id="node1" class="node"> <title>A</title>@@ -24,8 +24,8 @@ <!-- A&#45;&gt;B --> <g id="edge1" class="edge"> <title>A&#45;&gt;B</title>-<path fill="none" stroke="black" d="M84.43,-146.83C74.25,-136.94 60.48,-123.55 48.97,-112.36"/>-<polygon fill="black" stroke="black" points="51.41,-109.85 41.8,-105.38 46.53,-114.87 51.41,-109.85"/>+<path fill="none" stroke="black" d="M84.08,-146.5C74.23,-136.92 61.14,-124.19 49.97,-113.34"/>+<polygon fill="black" stroke="black" points="52.59,-111 42.98,-106.54 47.71,-116.02 52.59,-111"/> </g> <!-- C --> <g id="node3" class="node">@@ -36,8 +36,8 @@ <!-- A&#45;&gt;C --> <g id="edge2" class="edge"> <title>A&#45;&gt;C</title>-<path fill="none" stroke="black" d="M99,-143.7C99,-135.98 99,-126.71 99,-118.11"/>-<polygon fill="black" stroke="black" points="102.5,-118.1 99,-108.1 95.5,-118.1 102.5,-118.1"/>+<path fill="none" stroke="black" d="M99,-143.7C99,-136.41 99,-127.73 99,-119.54"/>+<polygon fill="black" stroke="black" points="102.5,-119.62 99,-109.62 95.5,-119.62 102.5,-119.62"/> </g> <!-- D --> <g id="node4" class="node">@@ -48,8 +48,8 @@ <!-- A&#45;&gt;D --> <g id="edge3" class="edge"> <title>A&#45;&gt;D</title>-<path fill="none" stroke="black" d="M113.57,-146.83C123.75,-136.94 137.52,-123.55 149.03,-112.36"/>-<polygon fill="black" stroke="black" points="151.47,-114.87 156.2,-105.38 146.59,-109.85 151.47,-114.87"/>+<path fill="none" stroke="black" d="M113.92,-146.5C123.77,-136.92 136.86,-124.19 148.03,-113.34"/>+<polygon fill="black" stroke="black" points="150.29,-116.02 155.02,-106.54 145.41,-111 150.29,-116.02"/> </g> <!-- F --> <g id="node5" class="node">@@ -60,20 +60,20 @@ <!-- B&#45;&gt;F --> <g id="edge4" class="edge"> <title>B&#45;&gt;F</title>-<path fill="none" stroke="black" d="M41.57,-74.83C51.75,-64.94 65.52,-51.55 77.03,-40.36"/>-<polygon fill="black" stroke="black" points="79.47,-42.87 84.2,-33.38 74.59,-37.85 79.47,-42.87"/>+<path fill="none" stroke="black" d="M41.92,-74.5C51.77,-64.92 64.86,-52.19 76.03,-41.34"/>+<polygon fill="black" stroke="black" points="78.29,-44.02 83.02,-34.54 73.41,-39 78.29,-44.02"/> </g> <!-- C&#45;&gt;F --> <g id="edge5" class="edge"> <title>C&#45;&gt;F</title>-<path fill="none" stroke="black" d="M99,-71.7C99,-63.98 99,-54.71 99,-46.11"/>-<polygon fill="black" stroke="black" points="102.5,-46.1 99,-36.1 95.5,-46.1 102.5,-46.1"/>+<path fill="none" stroke="black" d="M99,-71.7C99,-64.41 99,-55.73 99,-47.54"/>+<polygon fill="black" stroke="black" points="102.5,-47.62 99,-37.62 95.5,-47.62 102.5,-47.62"/> </g> <!-- D&#45;&gt;F --> <g id="edge6" class="edge"> <title>D&#45;&gt;F</title>-<path fill="none" stroke="black" d="M156.43,-74.83C146.25,-64.94 132.48,-51.55 120.97,-40.36"/>-<polygon fill="black" stroke="black" points="123.41,-37.85 113.8,-33.38 118.53,-42.87 123.41,-37.85"/>+<path fill="none" stroke="black" d="M156.08,-74.5C146.23,-64.92 133.14,-52.19 121.97,-41.34"/>+<polygon fill="black" stroke="black" points="124.59,-39 114.98,-34.54 119.71,-44.02 124.59,-39"/> </g> </g> </svg>
other/ex4.svg view
@@ -1,49 +1,43 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Title: L Pages: 1 -->-<svg width="137pt" height="242pt"- viewBox="0.00 0.00 137.00 242.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 238)">+<svg width="211pt" height="191pt"+ viewBox="0.00 0.00 211.00 191.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 187)"> <title>L</title>-<polygon fill="white" stroke="transparent" points="-4,4 -4,-238 133,-238 133,4 -4,4"/>+<polygon fill="white" stroke="none" points="-4,4 -4,-187 207,-187 207,4 -4,4"/> <!-- a --> <g id="node1" class="node"> <title>a</title>-<polygon fill="none" stroke="black" points="0,-180.5 0,-233.5 129,-233.5 129,-180.5 0,-180.5"/>-<text text-anchor="start" x="8" y="-218.3" font-family="Arial" font-size="14.00">one</text>-<text text-anchor="start" x="8" y="-203.3" font-family="Arial" font-size="14.00">two three</text>-<text text-anchor="start" x="8" y="-188.3" font-family="Arial" font-size="14.00">four five six seven</text>+<polygon fill="none" stroke="black" points="0,-146.5 0,-182.5 203,-182.5 203,-146.5 0,-146.5"/>+<text text-anchor="middle" x="101.5" y="-160.8" font-family="Arial" font-size="14.00">onetwo threefour five six seven</text> </g> <!-- b --> <g id="node2" class="node"> <title>b</title>-<polygon fill="none" stroke="black" points="0,-90.5 0,-143.5 129,-143.5 129,-90.5 0,-90.5"/>-<text text-anchor="middle" x="64.5" y="-128.3" font-family="Arial" font-size="14.00">one</text>-<text text-anchor="middle" x="64.5" y="-113.3" font-family="Arial" font-size="14.00">two three</text>-<text text-anchor="middle" x="64.5" y="-98.3" font-family="Arial" font-size="14.00">four five six seven</text>+<polygon fill="none" stroke="black" points="0,-73.5 0,-109.5 203,-109.5 203,-73.5 0,-73.5"/>+<text text-anchor="middle" x="101.5" y="-87.8" font-family="Arial" font-size="14.00">onetwo threefour five six seven</text> </g> <!-- a&#45;&gt;b --> <g id="edge1" class="edge"> <title>a&#45;&gt;b</title>-<path fill="none" stroke="black" d="M64.5,-180.07C64.5,-171.84 64.5,-162.58 64.5,-153.78"/>-<polygon fill="black" stroke="black" points="68,-153.74 64.5,-143.74 61,-153.74 68,-153.74"/>+<path fill="none" stroke="black" d="M101.5,-146.67C101.5,-138.89 101.5,-129.44 101.5,-120.62"/>+<polygon fill="black" stroke="black" points="105,-120.72 101.5,-110.72 98,-120.72 105,-120.72"/> </g> <!-- c --> <g id="node3" class="node"> <title>c</title>-<polygon fill="none" stroke="black" points="0,-0.5 0,-53.5 129,-53.5 129,-0.5 0,-0.5"/>-<text text-anchor="end" x="121" y="-38.3" font-family="Arial" font-size="14.00">one</text>-<text text-anchor="end" x="121" y="-23.3" font-family="Arial" font-size="14.00">two three</text>-<text text-anchor="end" x="121" y="-8.3" font-family="Arial" font-size="14.00">four five six seven</text>+<polygon fill="none" stroke="black" points="0,-0.5 0,-36.5 203,-36.5 203,-0.5 0,-0.5"/>+<text text-anchor="middle" x="101.5" y="-14.8" font-family="Arial" font-size="14.00">onetwo threefour five six seven</text> </g> <!-- b&#45;&gt;c --> <g id="edge2" class="edge"> <title>b&#45;&gt;c</title>-<path fill="none" stroke="black" d="M64.5,-90.07C64.5,-81.84 64.5,-72.58 64.5,-63.78"/>-<polygon fill="black" stroke="black" points="68,-63.74 64.5,-53.74 61,-63.74 68,-63.74"/>+<path fill="none" stroke="black" d="M101.5,-73.67C101.5,-65.89 101.5,-56.44 101.5,-47.62"/>+<polygon fill="black" stroke="black" points="105,-47.72 101.5,-37.72 98,-47.72 105,-47.72"/> </g> </g> </svg>
other/ex5.svg view
@@ -1,41 +1,41 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Title: D Pages: 1 -->-<svg width="181pt" height="139pt"- viewBox="0.00 0.00 181.00 139.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">+<svg width="178pt" height="139pt"+ viewBox="0.00 0.00 178.00 139.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 135)"> <title>D</title>-<polygon fill="white" stroke="transparent" points="-4,4 -4,-135 177,-135 177,4 -4,4"/>-<text text-anchor="middle" x="86.5" y="-115.8" font-family="Times,serif" font-size="14.00">The foo, the bar and the baz</text>+<polygon fill="white" stroke="none" points="-4,4 -4,-135 174,-135 174,4 -4,4"/>+<text text-anchor="middle" x="85" y="-115.8" font-family="Times,serif" font-size="14.00">The foo, the bar and the baz</text> <!-- FOO --> <g id="node1" class="node"> <title>FOO</title>-<text text-anchor="middle" x="86.5" y="-86.3" font-family="Times,serif" font-size="14.00">FOO</text>+<text text-anchor="middle" x="85" y="-86.3" font-family="Times,serif" font-size="14.00">FOO</text> </g> <!-- BAR --> <g id="node2" class="node"> <title>BAR</title>-<text text-anchor="middle" x="50.5" y="-14.3" font-family="Times,serif" font-size="14.00">BAR</text>+<text text-anchor="middle" x="49" y="-14.3" font-family="Times,serif" font-size="14.00">BAR</text> </g> <!-- FOO&#45;&gt;BAR --> <g id="edge1" class="edge"> <title>FOO&#45;&gt;BAR</title>-<path fill="none" stroke="black" d="M77.6,-71.7C73.5,-63.73 68.55,-54.1 64.01,-45.26"/>-<polygon fill="black" stroke="black" points="66.98,-43.4 59.3,-36.1 60.76,-46.6 66.98,-43.4"/>+<path fill="none" stroke="black" d="M76.29,-72.05C72.26,-64.23 67.38,-54.75 62.87,-45.98"/>+<polygon fill="black" stroke="black" points="66.01,-44.43 58.33,-37.13 59.79,-47.63 66.01,-44.43"/> </g> <!-- BAZ --> <g id="node3" class="node"> <title>BAZ</title>-<text text-anchor="middle" x="122.5" y="-14.3" font-family="Times,serif" font-size="14.00">BAZ</text>+<text text-anchor="middle" x="121" y="-14.3" font-family="Times,serif" font-size="14.00">BAZ</text> </g> <!-- FOO&#45;&gt;BAZ --> <g id="edge2" class="edge"> <title>FOO&#45;&gt;BAZ</title>-<path fill="none" stroke="black" d="M95.4,-71.7C99.5,-63.73 104.45,-54.1 108.99,-45.26"/>-<polygon fill="black" stroke="black" points="112.24,-46.6 113.7,-36.1 106.02,-43.4 112.24,-46.6"/>+<path fill="none" stroke="black" d="M93.71,-72.05C97.74,-64.23 102.62,-54.75 107.13,-45.98"/>+<polygon fill="black" stroke="black" points="110.21,-47.63 111.67,-37.13 103.99,-44.43 110.21,-47.63"/> </g> </g> </svg>
other/ex6.svg view
@@ -1,22 +1,22 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Title: D Pages: 1 --> <svg width="134pt" height="172pt"  viewBox="0.00 0.00 134.00 172.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 168)"> <title>D</title>-<polygon fill="white" stroke="transparent" points="-4,4 -4,-168 130,-168 130,4 -4,4"/>-<text text-anchor="start" x="38.5" y="-149.8" font-family="Times,serif" font-size="14.00">The </text>-<text text-anchor="start" x="64.5" y="-149.8" font-family="Times,serif" font-weight="bold" font-size="14.00" fill="red">foo</text>-<text text-anchor="start" x="83.5" y="-149.8" font-family="Times,serif" font-size="14.00">,</text>+<polygon fill="white" stroke="none" points="-4,4 -4,-168 130,-168 130,4 -4,4"/>+<text text-anchor="start" x="39" y="-149.8" font-family="Times,serif" font-size="14.00">The </text>+<text text-anchor="start" x="64" y="-149.8" font-family="Times,serif" font-weight="bold" font-size="14.00" fill="red">foo</text>+<text text-anchor="start" x="83" y="-149.8" font-family="Times,serif" font-size="14.00">,</text> <text text-anchor="start" x="25.5" y="-131" font-family="Times,serif" font-size="14.00"> the </text> <text text-anchor="start" x="50.5" y="-131" font-family="Times,serif" font-size="20.00">bar</text> <text text-anchor="start" x="76.5" y="-131" font-family="Times,serif" font-size="14.00"> and</text>-<text text-anchor="start" x="40.5" y="-115.8" font-family="Times,serif" font-size="14.00"> the </text>-<text text-anchor="start" x="65.5" y="-115.8" font-family="Times,serif" font-style="italic" font-size="14.00">baz</text>+<text text-anchor="start" x="41" y="-115.8" font-family="Times,serif" font-size="14.00"> the </text>+<text text-anchor="start" x="66" y="-115.8" font-family="Times,serif" font-style="italic" font-size="14.00">baz</text> <!-- FOO --> <g id="node1" class="node"> <title>FOO</title>@@ -30,8 +30,8 @@ <!-- FOO&#45;&gt;BAR --> <g id="edge1" class="edge"> <title>FOO&#45;&gt;BAR</title>-<path fill="none" stroke="black" d="M54.1,-71.7C50,-63.73 45.05,-54.1 40.51,-45.26"/>-<polygon fill="black" stroke="black" points="43.48,-43.4 35.8,-36.1 37.26,-46.6 43.48,-43.4"/>+<path fill="none" stroke="black" d="M54.29,-72.05C50.26,-64.23 45.38,-54.75 40.87,-45.98"/>+<polygon fill="black" stroke="black" points="44.01,-44.43 36.33,-37.13 37.79,-47.63 44.01,-44.43"/> </g> <!-- BAZ --> <g id="node3" class="node">@@ -41,8 +41,8 @@ <!-- FOO&#45;&gt;BAZ --> <g id="edge2" class="edge"> <title>FOO&#45;&gt;BAZ</title>-<path fill="none" stroke="black" d="M71.9,-71.7C76,-63.73 80.95,-54.1 85.49,-45.26"/>-<polygon fill="black" stroke="black" points="88.74,-46.6 90.2,-36.1 82.52,-43.4 88.74,-46.6"/>+<path fill="none" stroke="black" d="M71.71,-72.05C75.74,-64.23 80.62,-54.75 85.13,-45.98"/>+<polygon fill="black" stroke="black" points="88.21,-47.63 89.67,-37.13 81.99,-44.43 88.21,-47.63"/> </g> </g> </svg>
other/ex7.svg view
@@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Title: R Pages: 1 --> <svg width="206pt" height="260pt"  viewBox="0.00 0.00 206.00 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)"> <title>R</title>-<polygon fill="white" stroke="transparent" points="-4,4 -4,-256 202,-256 202,4 -4,4"/>+<polygon fill="white" stroke="none" points="-4,4 -4,-256 202,-256 202,4 -4,4"/> <!-- rA --> <g id="node1" class="node"> <title>rA</title>@@ -24,8 +24,8 @@ <!-- rA&#45;&gt;sA --> <g id="edge1" class="edge"> <title>rA&#45;&gt;sA</title>-<path fill="none" stroke="black" d="M54,-162C56.61,-162 59.23,-162 61.84,-162"/>-<polygon fill="black" stroke="black" points="61.93,-165.5 71.93,-162 61.93,-158.5 61.93,-165.5"/>+<path fill="none" stroke="black" d="M54.28,-162C56.28,-162 58.28,-162 60.29,-162"/>+<polygon fill="black" stroke="black" points="60.24,-165.5 70.24,-162 60.24,-158.5 60.24,-165.5"/> </g> <!-- vB --> <g id="node5" class="node">@@ -36,8 +36,8 @@ <!-- sA&#45;&gt;vB --> <g id="edge2" class="edge"> <title>sA&#45;&gt;vB</title>-<path fill="none" stroke="black" d="M99,-143.7C99,-135.98 99,-126.71 99,-118.11"/>-<polygon fill="black" stroke="black" points="102.5,-118.1 99,-108.1 95.5,-118.1 102.5,-118.1"/>+<path fill="none" stroke="black" d="M99,-143.7C99,-136.41 99,-127.73 99,-119.54"/>+<polygon fill="black" stroke="black" points="102.5,-119.62 99,-109.62 95.5,-119.62 102.5,-119.62"/> </g> <!-- tA --> <g id="node3" class="node">@@ -54,8 +54,8 @@ <!-- uB&#45;&gt;vB --> <g id="edge4" class="edge"> <title>uB&#45;&gt;vB</title>-<path fill="none" stroke="black" d="M54,-90C56.61,-90 59.23,-90 61.84,-90"/>-<polygon fill="black" stroke="black" points="61.93,-93.5 71.93,-90 61.93,-86.5 61.93,-93.5"/>+<path fill="none" stroke="black" d="M54.28,-90C56.28,-90 58.28,-90 60.29,-90"/>+<polygon fill="black" stroke="black" points="60.24,-93.5 70.24,-90 60.24,-86.5 60.24,-93.5"/> </g> <!-- wB --> <g id="node6" class="node">@@ -66,8 +66,8 @@ <!-- wB&#45;&gt;tA --> <g id="edge6" class="edge"> <title>wB&#45;&gt;tA</title>-<path fill="none" stroke="black" d="M171,-108.1C171,-115.79 171,-125.05 171,-133.67"/>-<polygon fill="black" stroke="black" points="167.5,-133.7 171,-143.7 174.5,-133.7 167.5,-133.7"/>+<path fill="none" stroke="black" d="M171,-108.1C171,-115.37 171,-124.04 171,-132.24"/>+<polygon fill="black" stroke="black" points="167.5,-132.18 171,-142.18 174.5,-132.18 167.5,-132.18"/> </g> <!-- u --> <g id="node8" class="node">@@ -78,8 +78,8 @@ <!-- wB&#45;&gt;u --> <g id="edge5" class="edge"> <title>wB&#45;&gt;u</title>-<path fill="none" stroke="black" d="M171,-71.7C171,-63.98 171,-54.71 171,-46.11"/>-<polygon fill="black" stroke="black" points="174.5,-46.1 171,-36.1 167.5,-46.1 174.5,-46.1"/>+<path fill="none" stroke="black" d="M171,-71.7C171,-64.41 171,-55.73 171,-47.54"/>+<polygon fill="black" stroke="black" points="174.5,-47.62 171,-37.62 167.5,-47.62 174.5,-47.62"/> </g> <!-- t --> <g id="node7" class="node">@@ -90,8 +90,8 @@ <!-- t&#45;&gt;rA --> <g id="edge3" class="edge"> <title>t&#45;&gt;rA</title>-<path fill="none" stroke="black" d="M27,-215.7C27,-207.98 27,-198.71 27,-190.11"/>-<polygon fill="black" stroke="black" points="30.5,-190.1 27,-180.1 23.5,-190.1 30.5,-190.1"/>+<path fill="none" stroke="black" d="M27,-215.7C27,-208.41 27,-199.73 27,-191.54"/>+<polygon fill="black" stroke="black" points="30.5,-191.62 27,-181.62 23.5,-191.62 30.5,-191.62"/> </g> </g> </svg>
other/ex8.svg view
@@ -1,93 +1,93 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Title: Q Pages: 1 -->-<svg width="426pt" height="260pt"- viewBox="0.00 0.00 426.44 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">+<svg width="421pt" height="260pt"+ viewBox="0.00 0.00 421.49 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)"> <title>Q</title>-<polygon fill="white" stroke="transparent" points="-4,4 -4,-256 422.44,-256 422.44,4 -4,4"/>+<polygon fill="white" stroke="none" points="-4,4 -4,-256 417.49,-256 417.49,4 -4,4"/> <g id="clust1" class="cluster"> <title>cluster_R</title>-<polygon fill="none" stroke="black" points="8,-64 8,-116 402,-116 402,-64 8,-64"/>+<polygon fill="none" stroke="black" points="8,-64 8,-116 397,-116 397,-64 8,-64"/> </g> <!-- nd_1 --> <g id="node1" class="node"> <title>nd_1</title>-<ellipse fill="none" stroke="black" cx="191" cy="-234" rx="37.09" ry="18"/>-<text text-anchor="middle" x="191" y="-230.3" font-family="Times,serif" font-size="14.00">Node 1</text>+<ellipse fill="none" stroke="black" cx="190" cy="-234" rx="36.29" ry="18"/>+<text text-anchor="middle" x="190" y="-230.3" font-family="Times,serif" font-size="14.00">Node 1</text> </g> <!-- nd_2 --> <g id="node2" class="node"> <title>nd_2</title>-<ellipse fill="none" stroke="black" cx="191" cy="-162" rx="37.09" ry="18"/>-<text text-anchor="middle" x="191" y="-158.3" font-family="Times,serif" font-size="14.00">Node 2</text>+<ellipse fill="none" stroke="black" cx="190" cy="-162" rx="36.29" ry="18"/>+<text text-anchor="middle" x="190" y="-158.3" font-family="Times,serif" font-size="14.00">Node 2</text> </g> <!-- nd_1&#45;&gt;nd_2 --> <g id="edge2" class="edge"> <title>nd_1&#45;&gt;nd_2</title>-<path fill="none" stroke="black" d="M191,-215.7C191,-207.98 191,-198.71 191,-190.11"/>-<polygon fill="black" stroke="black" points="194.5,-190.1 191,-180.1 187.5,-190.1 194.5,-190.1"/>+<path fill="none" stroke="black" d="M190,-215.7C190,-208.41 190,-199.73 190,-191.54"/>+<polygon fill="black" stroke="black" points="193.5,-191.62 190,-181.62 186.5,-191.62 193.5,-191.62"/> </g> <!-- nd_3 --> <g id="node5" class="node"> <title>nd_3</title>-<ellipse fill="none" stroke="black" cx="199" cy="-90" rx="37.09" ry="18"/>-<text text-anchor="middle" x="199" y="-86.3" font-family="Times,serif" font-size="14.00">Node 3</text>+<ellipse fill="none" stroke="black" cx="198" cy="-90" rx="36.29" ry="18"/>+<text text-anchor="middle" x="198" y="-86.3" font-family="Times,serif" font-size="14.00">Node 3</text> </g> <!-- nd_2&#45;&gt;nd_3 --> <g id="edge3" class="edge"> <title>nd_2&#45;&gt;nd_3</title>-<path fill="none" stroke="black" d="M192.98,-143.7C193.86,-135.98 194.92,-126.71 195.9,-118.11"/>-<polygon fill="black" stroke="black" points="199.39,-118.44 197.05,-108.1 192.43,-117.64 199.39,-118.44"/>+<path fill="none" stroke="black" d="M191.98,-143.7C192.81,-136.41 193.8,-127.73 194.74,-119.54"/>+<polygon fill="black" stroke="black" points="198.22,-119.94 195.87,-109.61 191.26,-119.15 198.22,-119.94"/> </g> <!-- nd_3_a --> <g id="node3" class="node"> <title>nd_3_a</title>-<ellipse fill="none" stroke="black" cx="332" cy="-162" rx="86.38" ry="18"/>-<text text-anchor="middle" x="332" y="-158.3" font-family="Times,serif" font-size="14.00">Above Right Node 3</text>+<ellipse fill="none" stroke="black" cx="329" cy="-162" rx="84.49" ry="18"/>+<text text-anchor="middle" x="329" y="-158.3" font-family="Times,serif" font-size="14.00">Above Right Node 3</text> </g> <!-- nd_3_r --> <g id="node6" class="node"> <title>nd_3_r</title>-<ellipse fill="none" stroke="black" cx="324" cy="-90" rx="69.59" ry="18"/>-<text text-anchor="middle" x="324" y="-86.3" font-family="Times,serif" font-size="14.00">Right of Node 3</text>+<ellipse fill="none" stroke="black" cx="321" cy="-90" rx="68.49" ry="18"/>+<text text-anchor="middle" x="321" y="-86.3" font-family="Times,serif" font-size="14.00">Right of Node 3</text> </g> <!-- nd_3_a&#45;&gt;nd_3_r --> <g id="edge1" class="edge"> <title>nd_3_a&#45;&gt;nd_3_r</title>-<path fill="none" stroke="black" d="M330.02,-143.7C329.14,-135.98 328.08,-126.71 327.1,-118.11"/>-<polygon fill="black" stroke="black" points="330.57,-117.64 325.95,-108.1 323.61,-118.44 330.57,-117.64"/>+<path fill="none" stroke="black" d="M327.02,-143.7C326.19,-136.41 325.2,-127.73 324.26,-119.54"/>+<polygon fill="black" stroke="black" points="327.74,-119.15 323.13,-109.61 320.78,-119.94 327.74,-119.15"/> </g> <!-- nd_3_l --> <g id="node4" class="node"> <title>nd_3_l</title>-<ellipse fill="none" stroke="black" cx="80" cy="-90" rx="64.19" ry="18"/>+<ellipse fill="none" stroke="black" cx="80" cy="-90" rx="63.89" ry="18"/> <text text-anchor="middle" x="80" y="-86.3" font-family="Times,serif" font-size="14.00">Left of Node 3</text> </g> <!-- nd_3_l&#45;&gt;nd_3 --> <g id="edge5" class="edge"> <title>nd_3_l&#45;&gt;nd_3</title>-<path fill="none" stroke="grey" d="M144.61,-90C150.28,-90 155.94,-90 161.61,-90"/>+<path fill="none" stroke="grey" d="M144.07,-90C149.83,-90 155.59,-90 161.34,-90"/> </g> <!-- nd_3&#45;&gt;nd_3_r --> <g id="edge6" class="edge"> <title>nd_3&#45;&gt;nd_3_r</title>-<path fill="none" stroke="grey" d="M236.11,-90C242.17,-90 248.24,-90 254.31,-90"/>+<path fill="none" stroke="grey" d="M234.52,-90C240.37,-90 246.23,-90 252.08,-90"/> </g> <!-- nd_4 --> <g id="node7" class="node"> <title>nd_4</title>-<ellipse fill="none" stroke="black" cx="199" cy="-18" rx="37.09" ry="18"/>-<text text-anchor="middle" x="199" y="-14.3" font-family="Times,serif" font-size="14.00">Node 4</text>+<ellipse fill="none" stroke="black" cx="198" cy="-18" rx="36.29" ry="18"/>+<text text-anchor="middle" x="198" y="-14.3" font-family="Times,serif" font-size="14.00">Node 4</text> </g> <!-- nd_3&#45;&gt;nd_4 --> <g id="edge4" class="edge"> <title>nd_3&#45;&gt;nd_4</title>-<path fill="none" stroke="black" d="M199,-71.7C199,-63.98 199,-54.71 199,-46.11"/>-<polygon fill="black" stroke="black" points="202.5,-46.1 199,-36.1 195.5,-46.1 202.5,-46.1"/>+<path fill="none" stroke="black" d="M198,-71.7C198,-64.41 198,-55.73 198,-47.54"/>+<polygon fill="black" stroke="black" points="201.5,-47.62 198,-37.62 194.5,-47.62 201.5,-47.62"/> </g> </g> </svg>
other/ex9.svg view
@@ -1,68 +1,68 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">-<!-- Generated by graphviz version 2.49.3 (20211023.0002)+<!-- Generated by graphviz version 7.1.0 (20230121.1956)  --> <!-- Title: D Pages: 1 -->-<svg width="461pt" height="177pt"- viewBox="0.00 0.00 461.00 177.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">+<svg width="457pt" height="177pt"+ viewBox="0.00 0.00 457.00 177.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 173)"> <title>D</title>-<polygon fill="white" stroke="transparent" points="-4,4 -4,-173 457,-173 457,4 -4,4"/>+<polygon fill="white" stroke="none" points="-4,4 -4,-173 453,-173 453,4 -4,4"/> <g id="clust1" class="cluster"> <title>cluster_p</title>-<polygon fill="none" stroke="black" points="8,-8 8,-161 445,-161 445,-8 8,-8"/>-<text text-anchor="middle" x="226.5" y="-145.8" font-family="Times,serif" font-size="14.00">Parent</text>+<polygon fill="none" stroke="black" points="8,-8 8,-161 441,-161 441,-8 8,-8"/>+<text text-anchor="middle" x="224.5" y="-145.8" font-family="Times,serif" font-size="14.00">Parent</text> </g> <g id="clust2" class="cluster"> <title>cluster_c1</title>-<polygon fill="none" stroke="black" points="96,-16 96,-130 437,-130 437,-16 96,-16"/>-<text text-anchor="middle" x="266.5" y="-114.8" font-family="Times,serif" font-size="14.00">Child one</text>+<polygon fill="none" stroke="black" points="95,-16 95,-130 433,-130 433,-16 95,-16"/>+<text text-anchor="middle" x="264" y="-114.8" font-family="Times,serif" font-size="14.00">Child one</text> </g> <g id="clust3" class="cluster"> <title>cluster_gc_1</title>-<polygon fill="none" stroke="black" points="318,-24 318,-99 429,-99 429,-24 318,-24"/>-<text text-anchor="middle" x="373.5" y="-83.8" font-family="Times,serif" font-size="14.00">Grand&#45;Child one</text>+<polygon fill="none" stroke="black" points="317,-24 317,-99 425,-99 425,-24 317,-24"/>+<text text-anchor="middle" x="371" y="-83.8" font-family="Times,serif" font-size="14.00">Grand&#45;Child one</text> </g> <g id="clust4" class="cluster"> <title>cluster_gc_2</title>-<polygon fill="none" stroke="black" points="168,-24 168,-99 310,-99 310,-24 168,-24"/>-<text text-anchor="middle" x="239" y="-83.8" font-family="Times,serif" font-size="14.00">Grand&#45;Child two</text>+<polygon fill="none" stroke="black" points="167,-24 167,-99 309,-99 309,-24 167,-24"/>+<text text-anchor="middle" x="238" y="-83.8" font-family="Times,serif" font-size="14.00">Grand&#45;Child two</text> </g> <g id="clust5" class="cluster"> <title>cluster_c2</title>-<polygon fill="none" stroke="black" points="16,-24 16,-99 88,-99 88,-24 16,-24"/>-<text text-anchor="middle" x="52" y="-83.8" font-family="Times,serif" font-size="14.00">Child two</text>+<polygon fill="none" stroke="black" points="16,-24 16,-99 87,-99 87,-24 16,-24"/>+<text text-anchor="middle" x="51.5" y="-83.8" font-family="Times,serif" font-size="14.00">Child two</text> </g> <!-- a --> <g id="node1" class="node"> <title>a</title>-<ellipse fill="none" stroke="black" cx="131" cy="-50" rx="27" ry="18"/>-<text text-anchor="middle" x="131" y="-46.3" font-family="Times,serif" font-size="14.00">a</text>+<ellipse fill="none" stroke="black" cx="130" cy="-50" rx="27" ry="18"/>+<text text-anchor="middle" x="130" y="-46.3" font-family="Times,serif" font-size="14.00">a</text> </g> <!-- b --> <g id="node2" class="node"> <title>b</title>-<ellipse fill="none" stroke="black" cx="373" cy="-50" rx="27" ry="18"/>-<text text-anchor="middle" x="373" y="-46.3" font-family="Times,serif" font-size="14.00">b</text>+<ellipse fill="none" stroke="black" cx="371" cy="-50" rx="27" ry="18"/>+<text text-anchor="middle" x="371" y="-46.3" font-family="Times,serif" font-size="14.00">b</text> </g> <!-- c --> <g id="node3" class="node"> <title>c</title>-<ellipse fill="none" stroke="black" cx="275" cy="-50" rx="27" ry="18"/>-<text text-anchor="middle" x="275" y="-46.3" font-family="Times,serif" font-size="14.00">c</text>+<ellipse fill="none" stroke="black" cx="274" cy="-50" rx="27" ry="18"/>+<text text-anchor="middle" x="274" y="-46.3" font-family="Times,serif" font-size="14.00">c</text> </g> <!-- d --> <g id="node4" class="node"> <title>d</title>-<ellipse fill="none" stroke="black" cx="203" cy="-50" rx="27" ry="18"/>-<text text-anchor="middle" x="203" y="-46.3" font-family="Times,serif" font-size="14.00">d</text>+<ellipse fill="none" stroke="black" cx="202" cy="-50" rx="27" ry="18"/>+<text text-anchor="middle" x="202" y="-46.3" font-family="Times,serif" font-size="14.00">d</text> </g> <!-- e --> <g id="node5" class="node"> <title>e</title>-<ellipse fill="none" stroke="black" cx="52" cy="-50" rx="27" ry="18"/>-<text text-anchor="middle" x="52" y="-46.3" font-family="Times,serif" font-size="14.00">e</text>+<ellipse fill="none" stroke="black" cx="51" cy="-50" rx="27" ry="18"/>+<text text-anchor="middle" x="51" y="-46.3" font-family="Times,serif" font-size="14.00">e</text> </g> </g> </svg>
+ other/exdirect.svg view
@@ -0,0 +1,276 @@+<?xml version="1.0" encoding="UTF-8" standalone="no"?>+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">+<!-- Generated by graphviz version 7.1.0 (20230121.1956)+ -->+<!-- Pages: 1 -->+<svg width="64pt" height="72pt"+ viewBox="0.00 0.00 64.01 72.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">+<g id="graph0" class="graph" transform="scale(0.146645 0.146645) rotate(0) translate(4 486.98)">+<polygon fill="white" stroke="none" points="-4,4 -4,-486.98 432.5,-486.98 432.5,4 -4,4"/>+<!-- 9 -->+<g id="node1" class="node">+<title>9</title>+<ellipse fill="none" stroke="black" cx="18" cy="-392.98" rx="18" ry="18"/>+<text text-anchor="middle" x="18" y="-389.28" font-family="Times,serif" font-size="14.00">9</text>+</g>+<!-- 8 -->+<g id="node2" class="node">+<title>8</title>+<ellipse fill="none" stroke="black" cx="265" cy="-19.5" rx="18" ry="18"/>+<text text-anchor="middle" x="265" y="-15.8" font-family="Times,serif" font-size="14.00">8</text>+</g>+<!-- 7 -->+<g id="node3" class="node">+<title>7</title>+<ellipse fill="none" stroke="black" cx="354" cy="-94.49" rx="18" ry="18"/>+<text text-anchor="middle" x="354" y="-90.79" font-family="Times,serif" font-size="14.00">7</text>+</g>+<!-- 6 -->+<g id="node4" class="node">+<title>6</title>+<ellipse fill="none" stroke="black" cx="272" cy="-169.49" rx="18" ry="18"/>+<text text-anchor="middle" x="272" y="-165.79" font-family="Times,serif" font-size="14.00">6</text>+</g>+<!-- 5 -->+<g id="node5" class="node">+<title>5</title>+<ellipse fill="none" stroke="black" cx="271" cy="-319.48" rx="18" ry="18"/>+<text text-anchor="middle" x="271" y="-315.78" font-family="Times,serif" font-size="14.00">5</text>+</g>+<!-- 17 -->+<g id="node11" class="node">+<title>17</title>+<ellipse fill="none" stroke="black" cx="243" cy="-244.49" rx="19.5" ry="19.5"/>+<text text-anchor="middle" x="243" y="-240.79" font-family="Times,serif" font-size="14.00">17</text>+</g>+<!-- 5&#45;&gt;17 -->+<g id="edge1" class="edge">+<title>5&#45;&gt;17</title>+<path fill="none" stroke="black" d="M264.79,-302.28C261.03,-292.5 256.19,-279.87 252.02,-269"/>+<polygon fill="black" stroke="black" points="253.75,-268.63 250.33,-264.59 250.48,-269.88 253.75,-268.63"/>+</g>+<!-- 11 -->+<g id="node17" class="node">+<title>11</title>+<ellipse fill="none" stroke="black" cx="300" cy="-244.49" rx="19.5" ry="19.5"/>+<text text-anchor="middle" x="300" y="-240.79" font-family="Times,serif" font-size="14.00">11</text>+</g>+<!-- 5&#45;&gt;11 -->+<g id="edge2" class="edge">+<title>5&#45;&gt;11</title>+<path fill="none" stroke="black" d="M277.44,-302.28C281.32,-292.5 286.34,-279.87 290.66,-269"/>+<polygon fill="black" stroke="black" points="292.19,-269.88 292.41,-264.58 288.94,-268.58 292.19,-269.88"/>+</g>+<!-- 0 -->+<g id="node20" class="node">+<title>0</title>+<ellipse fill="none" stroke="black" cx="355" cy="-244.49" rx="18" ry="18"/>+<text text-anchor="middle" x="355" y="-240.79" font-family="Times,serif" font-size="14.00">0</text>+</g>+<!-- 5&#45;&gt;0 -->+<g id="edge3" class="edge">+<title>5&#45;&gt;0</title>+<path fill="none" stroke="black" d="M284.12,-307.08C298.34,-294.72 321.12,-274.93 337,-261.13"/>+<polygon fill="black" stroke="black" points="337.92,-262.65 340.55,-258.05 335.63,-260.01 337.92,-262.65"/>+</g>+<!-- 4 -->+<g id="node6" class="node">+<title>4</title>+<ellipse fill="none" stroke="black" cx="298" cy="-392.98" rx="18" ry="18"/>+<text text-anchor="middle" x="298" y="-389.28" font-family="Times,serif" font-size="14.00">4</text>+</g>+<!-- 4&#45;&gt;5 -->+<g id="edge4" class="edge">+<title>4&#45;&gt;5</title>+<path fill="none" stroke="black" d="M291.87,-375.76C288.18,-365.98 283.42,-353.38 279.38,-342.69"/>+<polygon fill="black" stroke="black" points="281.04,-342.12 277.64,-338.06 277.77,-343.36 281.04,-342.12"/>+</g>+<!-- 16 -->+<g id="node12" class="node">+<title>16</title>+<ellipse fill="none" stroke="black" cx="326" cy="-319.48" rx="19.5" ry="19.5"/>+<text text-anchor="middle" x="326" y="-315.78" font-family="Times,serif" font-size="14.00">16</text>+</g>+<!-- 4&#45;&gt;16 -->+<g id="edge5" class="edge">+<title>4&#45;&gt;16</title>+<path fill="none" stroke="black" d="M304.35,-375.76C308.02,-366.39 312.7,-354.44 316.77,-344.05"/>+<polygon fill="black" stroke="black" points="318.34,-344.85 318.53,-339.56 315.08,-343.57 318.34,-344.85"/>+</g>+<!-- 10 -->+<g id="node18" class="node">+<title>10</title>+<ellipse fill="none" stroke="black" cx="383" cy="-319.48" rx="19.5" ry="19.5"/>+<text text-anchor="middle" x="383" y="-315.78" font-family="Times,serif" font-size="14.00">10</text>+</g>+<!-- 4&#45;&gt;10 -->+<g id="edge6" class="edge">+<title>4&#45;&gt;10</title>+<path fill="none" stroke="black" d="M311.28,-380.81C325.33,-368.99 347.63,-350.23 363.64,-336.77"/>+<polygon fill="black" stroke="black" points="364.53,-338.31 367.23,-333.75 362.28,-335.63 364.53,-338.31"/>+</g>+<!-- 3 -->+<g id="node7" class="node">+<title>3</title>+<ellipse fill="none" stroke="black" cx="138" cy="-464.98" rx="18" ry="18"/>+<text text-anchor="middle" x="138" y="-461.28" font-family="Times,serif" font-size="14.00">3</text>+</g>+<!-- 3&#45;&gt;9 -->+<g id="edge7" class="edge">+<title>3&#45;&gt;9</title>+<path fill="none" stroke="black" d="M122.8,-455.12C101.55,-442.72 62.87,-420.16 38.92,-406.18"/>+<polygon fill="black" stroke="black" points="39.96,-404.77 34.76,-403.76 38.2,-407.79 39.96,-404.77"/>+</g>+<!-- 3&#45;&gt;4 -->+<g id="edge8" class="edge">+<title>3&#45;&gt;4</title>+<path fill="none" stroke="black" d="M154.52,-456.76C183.53,-444.06 243.64,-417.77 276.08,-403.57"/>+<polygon fill="black" stroke="black" points="276.54,-405.28 280.42,-401.67 275.14,-402.07 276.54,-405.28"/>+</g>+<!-- 15 -->+<g id="node13" class="node">+<title>15</title>+<ellipse fill="none" stroke="black" cx="111" cy="-94.49" rx="19.5" ry="19.5"/>+<text text-anchor="middle" x="111" y="-90.79" font-family="Times,serif" font-size="14.00">15</text>+</g>+<!-- 3&#45;&gt;15 -->+<g id="edge9" class="edge">+<title>3&#45;&gt;15</title>+<path fill="none" stroke="black" d="M133.57,-447.33C126.88,-420.73 115,-366.91 115,-320.48 115,-320.48 115,-320.48 115,-243.49 115,-200.24 113.27,-149.9 112.09,-120.48"/>+<polygon fill="black" stroke="black" points="113.84,-120.62 111.89,-115.69 110.35,-120.76 113.84,-120.62"/>+</g>+<!-- 2 -->+<g id="node8" class="node">+<title>2</title>+<ellipse fill="none" stroke="black" cx="207" cy="-94.49" rx="18" ry="18"/>+<text text-anchor="middle" x="207" y="-90.79" font-family="Times,serif" font-size="14.00">2</text>+</g>+<!-- 2&#45;&gt;8 -->+<g id="edge10" class="edge">+<title>2&#45;&gt;8</title>+<path fill="none" stroke="black" d="M217.91,-79.76C227.06,-68.24 240.22,-51.68 250.3,-38.99"/>+<polygon fill="black" stroke="black" points="251.46,-40.36 253.2,-35.35 248.72,-38.18 251.46,-40.36"/>+</g>+<!-- 2&#45;&gt;3 -->+<g id="edge11" class="edge">+<title>2&#45;&gt;3</title>+<path fill="none" stroke="black" d="M204.88,-112.78C201.68,-140.37 196,-196.08 196,-243.49 196,-320.48 196,-320.48 196,-320.48 196,-362.1 188.77,-372.9 172,-410.98 166.72,-422.97 158.94,-435.35 152.15,-445.12"/>+<polygon fill="black" stroke="black" points="150.84,-443.94 149.38,-449.03 153.7,-445.96 150.84,-443.94"/>+</g>+<!-- 19 -->+<g id="node9" class="node">+<title>19</title>+<ellipse fill="none" stroke="black" cx="96" cy="-19.5" rx="19.5" ry="19.5"/>+<text text-anchor="middle" x="96" y="-15.8" font-family="Times,serif" font-size="14.00">19</text>+</g>+<!-- 2&#45;&gt;19 -->+<g id="edge12" class="edge">+<title>2&#45;&gt;19</title>+<path fill="none" stroke="black" d="M192.03,-83.65C172.83,-71.02 139.39,-49.03 117.48,-34.62"/>+<polygon fill="black" stroke="black" points="118.57,-33.25 113.43,-31.96 116.65,-36.17 118.57,-33.25"/>+</g>+<!-- 18 -->+<g id="node10" class="node">+<title>18</title>+<ellipse fill="none" stroke="black" cx="153" cy="-19.5" rx="19.5" ry="19.5"/>+<text text-anchor="middle" x="153" y="-15.8" font-family="Times,serif" font-size="14.00">18</text>+</g>+<!-- 2&#45;&gt;18 -->+<g id="edge13" class="edge">+<title>2&#45;&gt;18</title>+<path fill="none" stroke="black" d="M196.59,-79.42C188.49,-68.47 177.14,-53.13 168.05,-40.85"/>+<polygon fill="black" stroke="black" points="169.59,-39.99 165.21,-37.01 166.78,-42.07 169.59,-39.99"/>+</g>+<!-- 14 -->+<g id="node14" class="node">+<title>14</title>+<ellipse fill="none" stroke="black" cx="210" cy="-19.5" rx="19.5" ry="19.5"/>+<text text-anchor="middle" x="210" y="-15.8" font-family="Times,serif" font-size="14.00">14</text>+</g>+<!-- 2&#45;&gt;14 -->+<g id="edge14" class="edge">+<title>2&#45;&gt;14</title>+<path fill="none" stroke="black" d="M207.71,-76.2C208.08,-67.13 208.55,-55.87 208.96,-45.84"/>+<polygon fill="black" stroke="black" points="210.7,-46.05 209.16,-40.98 207.2,-45.9 210.7,-46.05"/>+</g>+<!-- 19&#45;&gt;3 -->+<g id="edge15" class="edge">+<title>19&#45;&gt;3</title>+<path fill="none" stroke="black" d="M89.68,-38C80.35,-65.43 64,-120.39 64,-168.49 64,-320.48 64,-320.48 64,-320.48 64,-370.68 100.2,-420.86 121.97,-446.49"/>+<polygon fill="black" stroke="black" points="120.53,-447.5 125.12,-450.14 123.17,-445.21 120.53,-447.5"/>+</g>+<!-- 18&#45;&gt;3 -->+<g id="edge16" class="edge">+<title>18&#45;&gt;3</title>+<path fill="none" stroke="black" d="M154.04,-39.18C155.5,-67.25 158,-121.96 158,-168.49 158,-320.48 158,-320.48 158,-320.48 158,-363.33 149.14,-412.69 143.22,-440.93"/>+<polygon fill="black" stroke="black" points="141.51,-440.56 142.17,-445.82 144.93,-441.29 141.51,-440.56"/>+</g>+<!-- 15&#45;&gt;19 -->+<g id="edge17" class="edge">+<title>15&#45;&gt;19</title>+<path fill="none" stroke="black" d="M107.21,-75.07C105.35,-66 103.07,-54.92 101.06,-45.13"/>+<polygon fill="black" stroke="black" points="102.81,-44.94 100.09,-40.4 99.38,-45.64 102.81,-44.94"/>+</g>+<!-- 15&#45;&gt;18 -->+<g id="edge18" class="edge">+<title>15&#45;&gt;18</title>+<path fill="none" stroke="black" d="M120.53,-76.93C126.38,-66.76 133.95,-53.6 140.31,-42.56"/>+<polygon fill="black" stroke="black" points="141.78,-43.52 142.75,-38.31 138.74,-41.77 141.78,-43.52"/>+</g>+<!-- 13 -->+<g id="node15" class="node">+<title>13</title>+<ellipse fill="none" stroke="black" cx="409" cy="-94.49" rx="19.5" ry="19.5"/>+<text text-anchor="middle" x="409" y="-90.79" font-family="Times,serif" font-size="14.00">13</text>+</g>+<!-- 12 -->+<g id="node16" class="node">+<title>12</title>+<ellipse fill="none" stroke="black" cx="327" cy="-169.49" rx="19.5" ry="19.5"/>+<text text-anchor="middle" x="327" y="-165.79" font-family="Times,serif" font-size="14.00">12</text>+</g>+<!-- 1 -->+<g id="node19" class="node">+<title>1</title>+<ellipse fill="none" stroke="black" cx="382" cy="-169.49" rx="18" ry="18"/>+<text text-anchor="middle" x="382" y="-165.79" font-family="Times,serif" font-size="14.00">1</text>+</g>+<!-- 1&#45;&gt;7 -->+<g id="edge19" class="edge">+<title>1&#45;&gt;7</title>+<path fill="none" stroke="black" d="M375.79,-152.29C371.87,-142.08 366.76,-128.77 362.48,-117.6"/>+<polygon fill="black" stroke="black" points="364.16,-117.1 360.74,-113.06 360.9,-118.36 364.16,-117.1"/>+</g>+<!-- 1&#45;&gt;2 -->+<g id="edge20" class="edge">+<title>1&#45;&gt;2</title>+<path fill="none" stroke="black" d="M367.84,-157.82C363.81,-155.06 359.34,-152.24 355,-149.99 312.98,-128.29 260.29,-111.07 230.46,-102.16"/>+<polygon fill="black" stroke="black" points="231.19,-100.55 225.9,-100.81 230.2,-103.9 231.19,-100.55"/>+</g>+<!-- 1&#45;&gt;13 -->+<g id="edge21" class="edge">+<title>1&#45;&gt;13</title>+<path fill="none" stroke="black" d="M387.99,-152.29C391.61,-142.51 396.28,-129.88 400.3,-119.01"/>+<polygon fill="black" stroke="black" points="401.84,-119.9 401.93,-114.6 398.56,-118.68 401.84,-119.9"/>+</g>+<!-- 0&#45;&gt;6 -->+<g id="edge22" class="edge">+<title>0&#45;&gt;6</title>+<path fill="none" stroke="black" d="M341.66,-231.76C327.63,-219.41 305.45,-199.91 289.9,-186.23"/>+<polygon fill="black" stroke="black" points="291.35,-185.18 286.44,-183.19 289.04,-187.81 291.35,-185.18"/>+</g>+<!-- 0&#45;&gt;12 -->+<g id="edge23" class="edge">+<title>0&#45;&gt;12</title>+<path fill="none" stroke="black" d="M348.79,-227.29C345.03,-217.51 340.19,-204.87 336.02,-194.01"/>+<polygon fill="black" stroke="black" points="337.75,-193.63 334.33,-189.59 334.48,-194.89 337.75,-193.63"/>+</g>+<!-- 0&#45;&gt;1 -->+<g id="edge24" class="edge">+<title>0&#45;&gt;1</title>+<path fill="none" stroke="black" d="M360.99,-227.29C364.74,-217.15 369.62,-203.95 373.74,-192.83"/>+<polygon fill="black" stroke="black" points="375.31,-193.61 375.41,-188.32 372.03,-192.4 375.31,-193.61"/>+</g>+</g>+</svg>
+ other/exga.svg view
@@ -0,0 +1,25 @@+<svg height="500" viewBox="-0.25 -483.23 428.9983 483.4803" width="443" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><style>svg {+  color-scheme: light dark;+}+{+  .canvas g, .title g, .axisbar g, .ticktext g, .tickglyph g, .ticklines g, .legendContent g text {+    fill: rgb(5%, 5%, 5%);+  }+  .ticklines g, .tickglyph g, .legendBorder g {+    stroke: rgb(5%, 5%, 5%);+  }+  .legendBorder g {+    fill: rgb(94%, 94%, 94%);+  }+}+@media (prefers-color-scheme:dark) {+  .canvas g, .title g, .axisbar g, .ticktext g, .tickglyph g, .ticklines g, .legendContent g text {+    fill: rgb(94%, 94%, 94%);+  }+  .ticklines g, .tickglyph g, .legendBorder g {+    stroke: rgb(94%, 94%, 94%);+  }+  .legendBorder g {+    fill: rgb(5%, 5%, 5%);+  }+}</style><g class="chart"><g class="edges"><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 360.9900,-227.29 C 364.7400,-217.15 369.6200,-203.9500 373.74,-192.83 L 375.9300,-186.9"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 341.66,-231.76 C 327.63,-219.4100 305.45,-199.91 289.9000,-186.23 L 285.3,-182.19"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 348.79,-227.29 C 345.0300,-217.51 340.19,-204.8700 336.02,-194.01 L 333.78,-188.18"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 367.8400,-157.82 C 363.81,-155.06 359.3400,-152.24 355.0,-149.99 C 312.9800,-128.2900 260.2900,-111.07 230.46,-102.16 L 224.4500,-100.38"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 375.7900,-152.29 C 371.87,-142.08 366.76,-128.77 362.4800,-117.6 L 360.2,-111.65"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 387.99,-152.29 C 391.61,-142.51 396.2800,-129.88 400.3000,-119.01 L 402.4600,-113.18"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 204.88,-112.78 C 201.68,-140.37 196.0000,-196.0800 196.0000,-243.49 C 196.0000,-320.48 196.0000,-320.48 196.0000,-320.48 C 196.0000,-362.1 188.7700,-372.9 172.0,-410.9800 C 166.72,-422.97 158.9400,-435.35 152.1500,-445.12 L 148.5,-450.26"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 217.9100,-79.7650 C 227.0600,-68.243 240.2200,-51.6830 250.3000,-38.994 L 254.1400,-34.167"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 207.7100,-76.196 C 208.08,-67.134 208.5500,-55.866 208.96,-45.841 L 209.2200,-39.467"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 196.59,-79.42 C 188.4900,-68.4730 177.1400,-53.13 168.0500,-40.846 L 164.31,-35.7900"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 192.0300,-83.65 C 172.8300,-71.022 139.39,-49.034 117.4800,-34.622 L 112.17,-31.1320"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 154.52,-456.76 C 183.53,-444.06 243.6400,-417.77 276.08,-403.57 L 281.8100,-401.0700"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 122.8,-455.1200 C 101.55,-442.72 62.8730,-420.16 38.9150,-406.18 L 33.454,-403.0"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 133.57,-447.3300 C 126.8800,-420.73 115.0000,-366.91 115.0000,-320.48 C 115.0000,-320.48 115.0000,-320.48 115.0000,-243.49 C 115.0000,-200.2400 113.2700,-149.9 112.0900,-120.4800 L 111.83,-114.18"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 291.8700,-375.76 C 288.1800,-365.98 283.4200,-353.38 279.38,-342.69 L 277.1,-336.64"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 311.28,-380.81 C 325.33,-368.99 347.6300,-350.2300 363.64,-336.77 L 368.39,-332.78"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 304.35,-375.76 C 308.02,-366.39 312.7,-354.44 316.7700,-344.05 L 319.08,-338.15"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 284.12,-307.08 C 298.3400,-294.72 321.1200,-274.93 337.0,-261.13 L 341.69,-257.0500"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 277.44,-302.28 C 281.32,-292.5 286.34,-279.87 290.66,-269.0 L 292.9700,-263.1800"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 264.7900,-302.28 C 261.03,-292.5 256.19,-279.87 252.02,-269.0 L 249.7800,-263.1800"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 120.53,-76.9310 C 126.38,-66.758 133.95,-53.604 140.31,-42.556 L 143.51,-36.997"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 107.2100,-75.0750 C 105.35,-65.9970 103.0700,-54.924 101.06,-45.13 L 99.7840,-38.912"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 154.0400,-39.181 C 155.5000,-67.246 158.0000,-121.96 158.0000,-168.49 C 158.0000,-320.48 158.0000,-320.48 158.0000,-320.48 C 158.0000,-363.33 149.1400,-412.69 143.2200,-440.93 L 141.86,-447.3000"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 89.6780,-38.0020 C 80.352,-65.432 64.0,-120.3900 64.0,-168.49 C 64.0,-320.48 64.0,-320.48 64.0,-320.48 C 64.0,-370.68 100.2,-420.86 121.9700,-446.49 L 126.11,-451.28"/></g></g><g class="shapes"><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="355.0" cy="-244.49" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="382.0" cy="-169.49" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="207.0000" cy="-94.495" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="138.0" cy="-464.98" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="298.0000" cy="-392.98" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="271.0" cy="-319.48" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="272.0" cy="-169.49" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="354.0" cy="-94.495" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="265.0" cy="-19.498" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="18.0" cy="-392.98" r="18.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="383.0000" cy="-319.48" r="19.4983"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="300.0000" cy="-244.49" r="19.4983"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="327.0" cy="-169.49" r="19.4983"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="409.0" cy="-94.495" r="19.4983"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="210.0" cy="-19.498" r="19.4983"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="111.0" cy="-94.495" r="19.4983"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="326.0" cy="-319.48" r="19.4983"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="243.0" cy="-244.49" r="19.4983"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="153.0" cy="-19.498" r="19.4983"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="0.5"><circle cx="96.0000" cy="-19.498" r="19.4983"/></g></g><g class="labels"><g fill="rgb(-51%, 30%, 37%)" fill-opacity="1.0" font-size="14.0" stroke="none" stroke-width="0.0" text-anchor="middle"><text x="355.0" y="-240.7900">0</text><text x="382.0" y="-165.7900">1</text><text x="207.0000" y="-90.795">2</text><text x="138.0" y="-461.28">3</text><text x="298.0000" y="-389.2800">4</text><text x="271.0" y="-315.7800">5</text><text x="272.0" y="-165.7900">6</text><text x="354.0" y="-90.795">7</text><text x="265.0" y="-15.7980">8</text><text x="18.0" y="-389.2800">9</text><text x="383.0000" y="-315.7800">10</text><text x="300.0000" y="-240.7900">11</text><text x="327.0" y="-165.7900">12</text><text x="409.0" y="-90.795">13</text><text x="210.0" y="-15.7980">14</text><text x="111.0" y="-90.795">15</text><text x="326.0" y="-315.7800">16</text><text x="243.0" y="-240.7900">17</text><text x="153.0" y="-15.7980">18</text><text x="96.0000" y="-15.7980">19</text></g></g></g><g class="hud"/></svg>
other/nh.svg view
@@ -1,25 +1,25 @@-<svg xmlns="http://www.w3.org/2000/svg" width="1044.6129846153847" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="-0.5000399999999985 -324.5 678.99844 325.0" height="500.0"><style>svg {+<svg height="500" viewBox="-314.7 -324.5 1317.75 325.0" width="2027" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><style>svg {   color-scheme: light dark; } {   .canvas g, .title g, .axisbar g, .ticktext g, .tickglyph g, .ticklines g, .legendContent g text {-    fill: #0d0d0d;+    fill: rgb(5%, 5%, 5%);   }   .ticklines g, .tickglyph g, .legendBorder g {-    stroke: #0d0d0d;+    stroke: rgb(5%, 5%, 5%);   }   .legendBorder g {-    fill: #f0f0f0;+    fill: rgb(94%, 94%, 94%);   } } @media (prefers-color-scheme:dark) {   .canvas g, .title g, .axisbar g, .ticktext g, .tickglyph g, .ticklines g, .legendContent g text {-    fill: #f0f0f0;+    fill: rgb(94%, 94%, 94%);   }   .ticklines g, .tickglyph g, .legendBorder g {-    stroke: #f0f0f0;+    stroke: rgb(94%, 94%, 94%);   }   .legendBorder g {-    fill: #0d0d0d;+    fill: rgb(5%, 5%, 5%);   }-}</style><g class="chart"><g class="edges"><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 261.71,-107.24 C 234.9900,-119.71 198.5900,-136.69 173.91,-148.21 L 173.62,-148.34"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 142.14,-252.3000 C 134.45,-263.07 124.6,-276.87 116.9000,-287.64 L 116.72,-287.9"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 185.57,-252.12 C 205.09,-262.8900 230.21,-276.73 249.85,-287.56 L 250.31,-287.81"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 376.48,-180.1600 C 375.6900,-199.21 372.0100,-230.15 357.5,-252.0000 C 347.61,-266.8900 331.99,-278.84 317.47,-287.6 L 317.13,-287.8000"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 465.63,-36.124 C 446.95,-47.208 422.75,-61.5610 404.29,-72.516 L 403.8500,-72.774"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 376.5,-108.3 C 376.5,-119.07 376.5,-132.87 376.5,-143.64 L 376.5,-143.9"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 349.23,-104.13 C 345.98,-105.5100 342.69,-106.8400 339.5,-108.0000 C 308.87,-119.16 219.46,-142.43 173.89,-154.07 L 173.62,-154.13"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 196.94,-108.3 C 186.63,-119.07 173.43,-132.87 163.11,-143.64 L 162.87,-143.9"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 376.5,-36.303 C 376.5,-47.069 376.5,-60.866 376.5,-71.642 L 376.5,-71.896"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 230.79,-180.12 C 215.26,-190.8900 195.29,-204.7300 179.67,-215.56 L 179.3000,-215.81"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 261.93,-180.3000 C 265.93,-191.07 271.05,-204.8700 275.05,-215.64 L 275.15,-215.9000"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 281.5,-252.3000 C 281.5,-263.07 281.5,-276.87 281.5,-287.64 L 281.5,-287.9"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 140.48,-108.3 C 141.71,-119.07 143.2800,-132.87 144.52,-143.64 L 144.55,-143.9"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 131.67,-33.503 C 134.99,-34.3890 138.29,-35.2310 141.5,-36.0 C 228.49,-56.813 254.19,-45.118 339.5,-72.0 C 342.64,-72.988 345.85,-74.178 349.02,-75.464 L 349.32,-75.589"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 85.48,-36.185 C 87.094,-54.712 91.3430,-84.678 102.5,-108.0000 C 108.8,-121.1700 119.1,-133.83 128.14,-143.4700 L 128.57,-143.93"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 292.65,-36.124 C 309.72,-46.887 331.67,-60.732 348.84,-71.555 L 349.24,-71.81"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 148.48,-180.3000 C 149.71,-191.07 151.28,-204.8700 152.52,-215.64 L 152.55,-215.9000"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 123.76,-180.3000 C 109.61,-191.07 91.476,-204.8700 77.314,-215.64 L 76.98,-215.9000"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 55.1,-107.24 C 74.311,-118.5400 99.821,-133.54 119.01,-144.83 L 119.46,-145.09"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 66.86,-252.3000 C 74.549,-263.07 84.404,-276.87 92.101,-287.64 L 92.283,-287.9"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 220.02,-32.535 C 223.22,-33.729 226.41,-34.9 229.5,-36.0 C 277.9500,-53.2750 291.61,-53.2310 339.5,-72.0 C 342.56,-73.199 345.73,-74.524 348.87,-75.889 L 349.17,-76.021"/></g><g fill="rgb(0%, 0%, 0%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.0" stroke-opacity="1.0"><path d="M 555.07,-36.0340 C 507.09,-50.2640 440.79,-69.93 403.97,-80.854 L 403.53,-80.982"/></g></g><g class="shapes"><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="71.99992" width="65.00016" y="-324.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="262.00012" width="68.99976000000004" y="-108.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="112.9992" width="83.0016" y="-252.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="344.49996" width="64.00008000000003" y="-180.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="460.50016000000005" width="67.99968000000001" y="-36.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="349.5" width="54.0" y="-108.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="183.50012" width="59.99975999999998" y="-108.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="310.5012" width="131.99760000000003" y="-36.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="225.50012" width="59.99976000000001" y="-180.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="233.5012" width="95.9976" y="-324.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="214.5004" width="133.99919999999997" y="-252.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="111.5" width="54.0" y="-108.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="37.4984" width="94.00319999999999" y="-36.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="238.5" width="54.0" y="-36.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="119.5" width="54.0" y="-180.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="-3.999999999848569e-5" width="55.00008" y="-108.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="14.500399999999999" width="79.9992" y="-252.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="151.00012" width="68.99975999999998" y="-36.0" height="36.0"/></g><g fill="rgb(2%, 73%, 80%)" stroke="rgb(-51%, 30%, 37%)" stroke-width="1.0" fill-opacity="0.2" stroke-opacity="1.0"><rect x="547.0016" width="130.9967999999999" y="-36.0" height="36.0"/></g></g><g class="labels"><g fill="rgb(-51%, 30%, 37%)" stroke="none" stroke-width="0.0" font-size="14.0" fill-opacity="1.0" text-anchor="middle"><text x="104.5" y="-302.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Additive.html#t:Additive">Additive</a></text><text x="296.5" y="-86.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Metric.html#t:Direction">Direction</a></text><text x="154.5" y="-230.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Distributive.html#t:Distributive">Distributive</a></text><text x="376.5" y="-158.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Multiplicative.html#t:Divisive">Divisive</a></text><text x="494.50000000000006" y="-14.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Field.html#t:ExpField">ExpField</a></text><text x="376.5" y="-86.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Field.html#t:Field">Field</a></text><text x="213.5" y="-86.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Data-Integral.html#t:Integral">Integral</a></text><text x="376.5" y="-14.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Field.html#t:LowerBoundedField">LowerBoundedField</a></text><text x="255.5" y="-158.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Module.html#t:Module">Module</a></text><text x="281.5" y="-302.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Multiplicative.html#t:Multiplicative">Multiplicative</a></text><text x="281.5" y="-230.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Module.html#t:MultiplicativeAction">MultiplicativeAction</a></text><text x="138.5" y="-86.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Metric.html#t:Norm">Norm</a></text><text x="84.5" y="-14.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Field.html#t:QuotientField">QuotientField</a></text><text x="265.5" y="-14.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Data-Rational.html#t:Ratio">Ratio</a></text><text x="146.5" y="-158.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Ring.html#t:Ring">Ring</a></text><text x="27.5" y="-86.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Metric.html#t:Signed">Signed</a></text><text x="54.5" y="-230.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Additive.html#t:Subtractive">Subtractive</a></text><text x="185.5" y="-14.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Field.html#t:TrigField">TrigField</a></text><text x="612.5" y="-14.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Field.html#t:UpperBoundedField">UpperBoundedField</a></text></g></g></g><g class="hud"></g></svg>+}</style><g class="chart"><g class="edges"><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 259.67,-107.24 C 235.33,-118.75 202.8400,-134.12 178.83,-145.47 L 173.23,-148.12"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 142.89,-252.3000 C 136.48,-261.46 128.5400,-272.81 121.66,-282.62 L 117.97,-287.9"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 185.97,-252.48 C 203.26,-262.25 224.89,-274.46 242.95,-284.65 L 248.42,-287.74"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 372.94,-180.49 C 372.1000,-199.56 368.35,-230.2400 354.0000,-252.0000 C 345.4,-265.0400 332.39,-275.87 319.61,-284.26 L 314.1600,-287.71"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 459.28,-36.4830 C 442.88,-46.465 422.27,-59.009 405.3100,-69.333 L 400.1700,-72.461"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 373.0,-108.3 C 373.0,-117.12 373.0,-127.9700 373.0,-137.53 L 373.0,-143.9"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 345.6900,-104.49 C 342.7800,-105.7400 339.85,-106.94 337.0,-108.0000 C 308.06,-118.7600 225.8500,-140.48 179.26,-152.5 L 173.2100,-154.06"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 195.69,-108.3 C 186.89,-117.63 175.96,-129.23 166.59,-139.17 L 162.13,-143.9"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 373.0,-36.303 C 373.0,-45.119 373.0,-55.968 373.0,-65.526 L 373.0,-71.896"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 229.2700,-180.48 C 215.7100,-190.0800 198.79,-202.04 184.53,-212.1200 L 179.41,-215.7400"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 260.18,-180.3000 C 263.36,-189.2000 267.28,-200.18 270.7100,-209.8 L 272.89,-215.9000"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 279.0,-252.3000 C 279.0,-261.1200 279.0,-271.97 279.0,-281.53 L 279.0,-287.9"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 139.2200,-108.3 C 140.36,-117.12 141.75,-127.9700 142.98,-137.53 L 143.8,-143.9"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 131.24,-33.243 C 134.87,-34.222 138.49,-35.1540 142.0,-36.0 C 227.68,-56.6240 253.1200,-44.958 337.0,-72.0 C 337.9000,-72.292 338.8200,-72.601 339.73,-72.925 L 345.78,-75.254"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 85.457,-36.2 C 86.536,-54.7390 90.012,-84.716 101.0,-108.0000 C 106.3000,-119.2400 114.6200,-130.01 122.66,-138.87 L 127.08,-143.58"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 291.22,-36.4830 C 306.29,-46.161 325.11,-58.2460 340.9,-68.383 L 346.12,-71.739"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 148.2200,-180.3000 C 149.36,-189.1200 150.75,-199.97 151.98,-209.5300 L 152.8,-215.9000"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 124.0000,-180.3000 C 111.9100,-189.81 96.818,-201.6800 84.019,-211.7500 L 79.055,-215.65"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 54.301,-107.06 C 71.837,-117.37 94.714,-130.83 113.23,-141.72 L 118.83,-145.0200"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 69.112,-252.3000 C 75.521,-261.46 83.464,-272.81 90.336,-282.62 L 94.027,-287.9"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 219.2,-32.726 C 222.1700,-33.855 225.13,-34.96 228.0,-36.0 C 275.96,-53.3860 289.62,-53.072 337.0,-72.0 C 337.88,-72.353 338.77,-72.716 339.6700,-73.089 L 345.64,-75.655"/></g><g fill="rgb(0%, 0%, 0%)" fill-opacity="0" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><path d="M 545.55,-36.4830 C 501.66,-49.843 442.69,-67.791 406.2900,-78.867 L 400.21,-80.718"/></g></g><g class="shapes"><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="64.0001" x="74.0000" y="-324.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="67.9997" x="260.0002" y="-108.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="81.0" x="114.5" y="-252.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="61.9999" x="342.0000" y="-180.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="66.0002" x="454.9999" y="-36.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="54.0" x="346.0" y="-108.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="58.9997" x="182.5002" y="-108.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="128.0016" x="308.9992" y="-36.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="58.9997" x="224.5002" y="-180.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="94.0032" x="231.9984" y="-324.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="130.9968" x="213.5016" y="-252.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="54.0" x="110.0" y="-108.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="92.0016" x="38.9992" y="-36.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="54.0" x="237.0" y="-36.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="54.0" x="119.0" y="-180.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="54.0" x="0" y="-108.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="77.9976" x="18.0012" y="-252.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="67.9997" x="151.0002" y="-36.0"/></g><g fill="rgb(2%, 73%, 80%)" fill-opacity="0.2" stroke="rgb(-51%, 30%, 37%)" stroke-opacity="1.0" stroke-width="1.0"><rect height="36.0" width="127.0008" x="539.4996" y="-36.0"/></g></g><g class="labels"><g fill="rgb(-51%, 30%, 37%)" fill-opacity="1.0" font-size="14.0" stroke="none" stroke-width="0.0" text-anchor="middle"><text x="106.0000" y="-302.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Additive.html#t:Additive">Additive</a></text><text x="294.0" y="-86.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Metric.html#t:Direction">Direction</a></text><text x="155.0" y="-230.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Distributive.html#t:Distributive">Distributive</a></text><text x="373.0" y="-158.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Multiplicative.html#t:Divisive">Divisive</a></text><text x="488.0" y="-14.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Field.html#t:ExpField">ExpField</a></text><text x="373.0" y="-86.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Field.html#t:Field">Field</a></text><text x="212.0000" y="-86.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Data-Integral.html#t:Integral">Integral</a></text><text x="373.0" y="-14.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Field.html#t:LowerBoundedField">LowerBoundedField</a></text><text x="254.0" y="-158.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Module.html#t:Module">Module</a></text><text x="279.0" y="-302.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Multiplicative.html#t:Multiplicative">Multiplicative</a></text><text x="279.0" y="-230.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Module.html#t:MultiplicativeAction">MultiplicativeAction</a></text><text x="137.0" y="-86.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Metric.html#t:Norm">Norm</a></text><text x="85.0" y="-14.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Field.html#t:QuotientField">QuotientField</a></text><text x="264.0" y="-14.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Data-Rational.html#t:Ratio">Ratio</a></text><text x="146.0" y="-158.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Ring.html#t:Ring">Ring</a></text><text x="27.0" y="-86.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Metric.html#t:Signed">Signed</a></text><text x="57.0" y="-230.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Additive.html#t:Subtractive">Subtractive</a></text><text x="185.0000" y="-14.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Field.html#t:TrigField">TrigField</a></text><text x="603.0" y="-14.3"><a href="https://hackage.haskell.org/package/numhask/docs/NumHask-Algebra-Field.html#t:UpperBoundedField">UpperBoundedField</a></text></g></g></g><g class="hud"/></svg>
src/DotParse.hs view
@@ -1,23 +1,62 @@-{-# OPTIONS_HADDOCK prune #-} {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE BlockArguments #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-}+{-# OPTIONS_HADDOCK prune #-}  -- | Parser & Printer for the dot language of <http://www.graphviz.org/doc/info/lang.html graphviz> -- -- See "DotParse.Examples" for usage.--- module DotParse-  ( module DotParse.Types,-    module DotParse.FlatParse,-    module FlatParse.Basic,-    module NeatInterpolation,+  (+    DotConfig(..),+    defaultDotConfig,+    DotParse (..),+    testDotParser,+    runDotParser,++    Graph (..),+    defaultGraph,+    attL,+    gattL,+    processDot,+    processDotWith,+    processGraph,+    processGraphWith,++    Strict(..),+    defStrict,+    Directed(..),+    defDirected,+    ID(..),+    label,+    Compass (..),+    Port (..),+    AttributeType (..),+    AttributeStatement (..),+    NodeStatement (..),+    EdgeID (..),+    EdgeOp (..),+    fromDirected,+    EdgeStatement (..),+    edgeID,+    edgeIDs,+    edgeIDsNamed,+    Statement (..),+    addStatement,+    addStatements,+    SubGraphStatement (..),++    -- * Conversion+    graphToChartWith,+    graphToChart,+    ChartConfig (..),+    defaultChartConfig,+    toStatements,+    toDotGraph,+    toDotGraphWith,+   ) where -import DotParse.FlatParse import DotParse.Types-import FlatParse.Basic hiding (cut, lines)-import NeatInterpolation-import Prelude hiding (replicate)
src/DotParse/Examples.hs view
@@ -14,21 +14,26 @@ {-# OPTIONS_GHC -Wno-unused-local-binds #-}  -- | Examples of conversion from dot ByteStrings+--+-- Most examples from https://renenyffenegger.ch/notes/tools/Graphviz/examples/index module DotParse.Examples where  import qualified Algebra.Graph as G-import Control.Monad-import Data.ByteString hiding (empty, head, length, map, zip, zipWith)-import Data.Proxy-import Data.Text.Encoding (encodeUtf8)+import Control.Monad ( zipWithM_ )+import Data.ByteString ( ByteString )+import Data.Proxy ( Proxy(..) ) import DotParse-import Optics.Core import Prelude hiding (replicate)+import Data.String.Interpolate  -- $setup -- >>> import DotParse -- >>> import Data.Proxy -- >>> :set -XOverloadedStrings+-- >>> import Data.String.Interpolate+-- >>> import qualified Data.ByteString.Char8 as Char8+-- >>> import Optics.Core+-- >>> import Chart  -- * examples @@ -40,20 +45,17 @@ -- >>> testDotParser (Proxy :: Proxy Graph) defaultDotConfig ex0 ex0 :: ByteString ex0 =-  encodeUtf8-    [trimming|++    [i| graph {} |] --- | Examples from https://renenyffenegger.ch/notes/tools/Graphviz/examples/index------ >>> testDotParser (Proxy :: Proxy Graph) defaultDotConfig ex1---+-- | -- ![Example](other/ex1.svg) ex1 :: ByteString ex1 =-  encodeUtf8-    [trimming|++    [i| digraph D {     A [shape=diamond]     B [shape=box]@@ -65,13 +67,11 @@ |]  -- |--- >>> testDotParser (Proxy :: Proxy Graph) defaultDotConfig ex2--- -- ![Example](other/ex2.svg) ex2 :: ByteString ex2 =-  encodeUtf8-    [trimming|++    [i| digraph D {      node [fontname="Arial"];@@ -83,13 +83,11 @@ |]  -- |--- >>> testDotParser (Proxy :: Proxy Graph) defaultDotConfig ex3--- -- ![Example](other/ex3.svg) ex3 :: ByteString ex3 =-  encodeUtf8-    [trimming|++    [i| digraph D {   A -> {B, C, D} -> {F} }@@ -100,13 +98,13 @@ -- ![Example](other/ex4.svg) ex4 :: ByteString ex4 =-  encodeUtf8-    [trimming|++    [i| digraph L {    node [shape=record fontname=Arial]; -  a  [label="one\ltwo three\lfour five six seven\l"]+  a  [label="one\ntwo three\nfour five six seven\n"]   b  [label="one\ntwo three\nfour five six seven"]   c  [label="one\rtwo three\rfour five six seven\r"] @@ -120,8 +118,8 @@ -- ![Example](other/ex5.svg) ex5 :: ByteString ex5 =-  encodeUtf8-    [trimming|++    [i| digraph D {    label = "The foo, the bar and the baz";@@ -140,8 +138,8 @@ -- ![Example](other/ex6.svg) ex6 :: ByteString ex6 =-  encodeUtf8-    [trimming|++    [i| digraph D {    label = <The <font color='red'><b>foo</b></font>,<br/> the <font point-size='20'>bar</font> and<br/> the <i>baz</i>>;@@ -159,8 +157,8 @@ -- ![Example](other/ex7.svg) ex7 :: ByteString ex7 =-  encodeUtf8-    [trimming|++    [i| digraph R {    { rank=same rA sA tA }@@ -182,8 +180,8 @@ -- ![Example](other/ex8.svg) ex8 :: ByteString ex8 =-  encodeUtf8-    [trimming|++    [i| digraph Q {    nd_1   [label = "Node 1"];@@ -214,8 +212,8 @@ -- ![Example](other/ex9.svg) ex9 :: ByteString ex9 =-  encodeUtf8-    [trimming|++    [i| digraph D {    subgraph cluster_p {@@ -250,8 +248,8 @@ -- ![Example](other/ex10.svg) ex10 :: ByteString ex10 =-  encodeUtf8-    [trimming|++    [i| digraph H {    aHtmlTable [@@ -273,8 +271,8 @@ -- ![Example](other/ex11.svg) ex11 :: ByteString ex11 =-  encodeUtf8-    [trimming|++    [i| digraph {    tbl [@@ -313,8 +311,7 @@ -- ![Example](other/ex12.svg) ex12 :: ByteString ex12 =-  encodeUtf8-    [trimming|+    [i| digraph D {    node [shape=plaintext]@@ -323,8 +320,8 @@    label=<      <table border="0" cellborder="1" cellspacing="0">        <tr><td bgcolor="yellow">Foo</td></tr>-       <tr><td bgcolor="lightblue"><font color="#0000ff">Bar</font></td></tr>-       <tr><td bgcolor="#f0e3ff"><font color="#ff1020">Baz</font></td></tr>+       <tr><td bgcolor="lightblue"><font color="\#0000ff">Bar</font></td></tr>+       <tr><td bgcolor="\#f0e3ff"><font color="\#ff1020">Baz</font></td></tr>      </table>>   ]; }@@ -335,8 +332,8 @@ -- ![Example](other/ex13.svg) ex13 :: ByteString ex13 =-  encodeUtf8-    [trimming|++    [i| digraph H {    aHtmlTable [@@ -358,8 +355,8 @@ -- ![Example](other/ex14.svg) ex14 :: ByteString ex14 =-  encodeUtf8-    [trimming|++    [i| digraph H {    parent [@@ -407,8 +404,8 @@ -- ![Example](other/ex15.svg) ex15 :: ByteString ex15 =-  encodeUtf8-    [trimming|++    [i| digraph D {    node [shape=plaintext fontname="Sans serif" fontsize="8"];@@ -540,71 +537,16 @@     )  -- | algebraic graph example-exGInt :: G.Graph Int-exGInt =+--+-- >>> exGraph = defaultGraph & addStatements (toStatements Directed (Char8.pack . show <$> exAGraph))+-- >>> exGraphAugmented <- processGraph exGraph+-- >>> writeChartOptions "other/exga.svg" (graphToChartWith defaultChartConfig exGraphAugmented)+--+-- ![augmentation example](other/exga.svg)+--+exAGraph :: G.Graph Int+exAGraph =   G.edges $     [(v, (v + 1) `mod` 6) | v <- [0 .. 5]]       ++ [(v, v + k) | v <- [0 .. 5], k <- [6, 12]]       ++ [(2, 18), (2, 19), (15, 18), (15, 19), (18, 3), (19, 3)]---- |------ > exInt = defaultGraph & addStatements (toStatements Directed (packUTF8 . show <$> exGInt))--- > import qualified Data.ByteString.Char8 as B--- > g <- processGraph exInt--- > B.putStrLn $ dotPrint g--- digraph {---     graph [bb="0,0,495.65,493.78";overlap=false;size="1!";splines=spline]---     node [height=0.5;label="\N";shape=circle]---     edge [arrowsize=0]---     0 [pos="384.5,475.78";width=0.5]---     1 [pos="357.5,401.63";width=0.5]---     0 -> 1 [pos="e,363.57,418.85 378.51,458.77 374.1,446.99 368.12,431.02 363.67,419.13"]---     6 [pos="411.5,401.63";width=0.5]---     0 -> 6 [pos="e,405.43,418.85 390.49,458.77 394.9,446.99 400.87,431.02 405.32,419.13"]---     12 [height=0.55967;pos="467.5,401.63";width=0.55967]---     0 -> 12 [pos="e,452.8,415.41 397.83,463.19 412.75,450.22 436.85,429.27 452.43,415.73"]---     2 [pos="330.5,325.33";width=0.5]---     1 -> 2 [pos="e,336.35,342.42 351.64,384.51 347.15,372.14 340.97,355.15 336.45,342.72"]---     7 [pos="384.5,325.33";width=0.5]---     1 -> 7 [pos="e,378.65,342.42 363.36,384.51 367.85,372.14 374.03,355.15 378.54,342.72"]---     13 [height=0.55967;pos="440.5,325.33";width=0.55967]---     1 -> 13 [pos="e,425.95,339.36 370.47,389.02 385.4,375.66 409.87,353.75 425.58,339.69"]---     3 [pos="263.5,249.04";width=0.5]---     2 -> 3 [pos="e,275.26,263.08 318.83,311.39 306.7,297.94 287.81,277 275.55,263.4"]---     8 [pos="419.5,249.04";width=0.5]---     2 -> 8 [pos="e,406.15,261.18 344.02,313.05 360.71,299.11 388.95,275.54 405.75,261.51"]---     14 [height=0.55967;pos="475.5,249.04";width=0.55967]---     2 -> 14 [pos="e,459.28,261.56 344.39,313.55 348.48,310.63 353.06,307.61 357.5,305.19 394.93,284.71 408.73,289.04 446.5,269.19 450.64,267.01 454.93,\--- 264.4 458.9,261.81"]---     18 [height=0.55967;pos="239.5,96.445";width=0.55967]---     2 -> 18 [pos="e,221.18,105.3 313.92,317.87 277.75,302.66 192.9,260.73 166.5,192.89 160,176.2 158.52,168.63 166.5,152.59 177.74,130.02 203.11,114.24 \--- 220.76,105.5"]---     19 [height=0.55967;pos="335.5,96.445";width=0.55967]---     2 -> 19 [pos="e,335.94,116.84 331.52,307.33 332.98,282.28 335.56,234 336.5,192.89 336.91,174.98 336.66,170.5 336.5,152.59 336.39,140.81 336.16,\--- 127.62 335.94,117.09"]---     4 [pos="101.5,172.74";width=0.5]---     3 -> 4 [pos="e,117.56,181.11 247.37,240.64 216.44,226.46 149.09,195.57 117.92,181.27"]---     9 [pos="193.5,172.74";width=0.5]---     3 -> 9 [pos="e,205.67,186.66 251.62,235.43 238.93,221.96 218.89,200.69 205.97,186.98"]---     15 [height=0.55967;pos="287.5,172.74";width=0.55967]---     3 -> 15 [pos="e,281.6,192.01 268.82,231.55 272.58,219.93 277.61,204.35 281.51,192.29"]---     5 [pos="48.498,96.445";width=0.5]---     4 -> 5 [pos="e,58.506,111.47 91.279,157.42 81.908,144.28 68.101,124.92 58.727,111.78"]---     10 [height=0.55967;pos="104.5,96.445";width=0.55967]---     4 -> 10 [pos="e,103.72,116.67 102.19,154.51 102.65,143.28 103.24,128.61 103.71,116.95"]---     16 [height=0.55967;pos="162.5,96.445";width=0.55967]---     4 -> 16 [pos="e,150.12,112.52 112.69,158.11 123.2,145.31 138.91,126.18 149.86,112.83"]---     5 -> 0 [pos="e,366.23,475.02 49.439,114.6 50.887,142.55 53.498,199.64 53.498,248.04 53.498,326.33 53.498,326.33 53.498,326.33 53.498,464.3 295.89,\--- 474.85 365.82,475.02"]---     11 [height=0.54162;pos="19.498,20.148";width=0.54162]---     5 -> 11 [pos="e,26.284,38.534 42.206,79.323 37.545,67.382 31.197,51.119 26.397,38.823"]---     17 [height=0.55967;pos="77.498,20.148";width=0.55967]---     5 -> 17 [pos="e,70.506,39.061 54.791,79.323 59.386,67.552 65.62,51.579 70.394,39.349"]---     15 -> 18 [pos="e,250.12,113.89 276.85,155.25 268.95,143.04 258.24,126.45 250.31,114.18"]---     15 -> 19 [pos="e,324.88,113.89 298.15,155.25 306.04,143.04 316.76,126.45 324.69,114.18"]---     18 -> 3 [pos="e,260.79,231.06 242.53,116.49 247.24,145.99 256.21,202.31 260.74,230.72"]---     19 -> 3 [pos="e,277.53,237.38 334.82,116.79 333.41,136.85 329.16,168.62 316.5,192.89 307.11,210.88 290.05,227.04 277.82,237.15"]---     }-exInt :: Graph-exInt = defaultGraph & addStatements (toStatements Directed (packUTF8 . show <$> exGInt))
src/DotParse/Examples/NumHask.hs view
@@ -22,6 +22,8 @@ import GHC.IO.Unsafe import Optics.Core import Prelude hiding (replicate)+import Data.String.Interpolate+import FlatParse.Basic  -- $setup -- >>> import DotParse@@ -219,7 +221,7 @@ dotGraphNH d =   defaultGraph     & #directed .~ Last (Just d)-    & addStatements (toStatements d (packUTF8 . show <$> graphNHG))+    & addStatements (toStatements d (strToUtf8 . show <$> graphNHG))     & attL NodeType (ID "shape") .~ Just (ID "box")     & gattL (ID "rankdir") .~ Just (IDQuoted "BT") @@ -229,18 +231,17 @@ {-# NOINLINE dotGraphNH' #-}  -- | Convert a node ID to a label for chart-svg charts--- -- Doing this directly in dot doesn't quite work because the engines get the width of the link wrong. toLink :: ID -> Text-toLink i = [trimming|<a href="https://hackage.haskell.org/package/numhask/docs/$m.html#t:$t">$t</a>|]+toLink id_ =[i|<a href="https://hackage.haskell.org/package/numhask/docs/#{m}.html\#t:#{t}">#{t}</a>|]   where-    t = pack (label i)+    t = pack (label id_)     m = Map.fromList (first (pack . show) <$> classesModule) Map.! t  -- | A chart-svg chart with label links ----- > writeChartSvg "other/nh.svg" (graphToChart toLink (dotGraphNH' Directed))+-- > writeChartOptions "other/nh.svg" (graphToChart toLink (dotGraphNH' Directed)) -- -- ![NumHask Example](other/nh.svg) writeNHChart :: IO ()-writeNHChart = writeChartSvg "other/nh.svg" (graphToChartWith (defaultChartConfig & #labelf .~ toLink) (dotGraphNH' Directed))+writeNHChart = writeChartOptions "other/nh.svg" (graphToChartWith (defaultChartConfig & #labelf .~ toLink) (dotGraphNH' Directed))
src/DotParse/FlatParse.hs view
@@ -56,7 +56,7 @@ import Data.Char hiding (isDigit) import Data.List.NonEmpty import DotParse.FlatParse.TH hiding (merge)-import FlatParse.Basic hiding (cut, lines)+import FlatParse.Basic hiding (cut) import GHC.Generics import NumHask.Space import Prelude hiding (replicate)@@ -66,7 +66,7 @@ -- >>> import FlatParse.Basic  -- | Run parser, print pretty error on failure.-testParser :: Show a => Parser Error a -> ByteString -> IO ()+testParser :: (Show a) => Parser Error a -> ByteString -> IO () testParser p b =   case runParser p b of     Err e -> B.putStrLn $ prettyError b e@@ -77,14 +77,14 @@ runParser_ :: Parser Error a -> ByteString -> a runParser_ p b = case runParser p b of   OK r "" -> r-  OK _ x -> error $ unpackUTF8 $ "leftovers: " <> x+  OK _ x -> error $ utf8ToStr $ "leftovers: " <> x   Fail -> error "Fail"-  Err e -> error $ unpackUTF8 $ prettyError b e+  Err e -> error $ utf8ToStr $ prettyError b e  -- * parsing  digit :: Parser Error Int-digit = (\c -> ord c - ord '0') <$> satisfyASCII isDigit+digit = (\c -> ord c - ord '0') <$> satisfyAscii isDigit  -- | (unsigned) Int parser int :: Parser Error Int@@ -115,7 +115,7 @@ double :: Parser Error Double double = token do   (placel, nl) <- digits-  optioned+  withOption     ($(char '.') *> digits)     ( \(placer, nr) ->         case (placel, placer) of@@ -130,14 +130,14 @@ -- | -- >>> runParser (signed double) "-1.234x" -- OK (-1.234) "x"-signed :: Num b => Parser e b -> Parser e b-signed p = optioned $(char '-') (const (((-1) *) <$> p)) p+signed :: (Num b) => Parser e b -> Parser e b+signed p = withOption ($(char '-')) (const (((-1) *) <$> p)) p  -- | Looks ahead for a "/"" that may be in the quoted string.--- >>> runParser quoted (packUTF8 "\"hello\"")+-- >>> runParser quoted (strToUtf8 "\"hello\"") -- OK "hello" "" ----- >>> runParser quoted (packUTF8 "\"hello/\"\"")+-- >>> runParser quoted (strToUtf8 "\"hello/\"\"") -- OK "hello\"" "" quoted :: Parser Error String quoted =
src/DotParse/FlatParse/TH.hs view
@@ -12,6 +12,7 @@  import Data.ByteString hiding (head, length, reverse) import qualified Data.ByteString.Char8 as B+import Data.Char hiding (isDigit) import Data.Functor import FlatParse.Basic import Language.Haskell.TH@@ -44,7 +45,7 @@ -- | Parse a line comment. lineComment :: Parser e () lineComment =-  optioned+  withOption     anyWord8     ( \case         10 -> ws@@ -80,8 +81,8 @@ -- | First character of a dot identifier. isValidStartChar :: Char -> Bool isValidStartChar c =-  ('A' <= c && c <= 'Z')-    || ('a' <= c && c <= 'z')+  isAsciiUpper c+    || isAsciiLower c     || ('\200' <= c && c <= '\377')     || (c == '_') @@ -107,18 +108,18 @@  -- | Parser a non-keyword string, throw precise error on failure. symbol' :: String -> Q Exp-symbol' str = [|$(symbol str) `cut'` packUTF8 str|]+symbol' str = [|$(symbol str) `cut'` strToUtf8 str|]  -- | Parse a keyword string, throw precise error on failure. keyword' :: String -> Q Exp-keyword' str = [|$(keyword str) `cut'` packUTF8 str|]+keyword' str = [|$(keyword str) `cut'` strToUtf8 str|]  -- | Parse an identifier. ident :: Parser e ByteString ident =   token $     byteStringOf $-      identStartChar *> many_ identChar+      identStartChar *> skipMany identChar  -- | Parse an identifier, throw a precise error on failure. ident' :: Parser Error ByteString@@ -165,7 +166,7 @@       ls = B.lines b       (l, c) = head $ posLineCols b [pos]       line = if l < length ls then ls !! l else ""-      linum = packUTF8 $ show l+      linum = strToUtf8 $ show l       lpad = B.replicate (B.length linum) ' '        err (Precise _ e) = e@@ -179,7 +180,10 @@           go [] = ""           go [e] = " or " <> e           go (e : es) = ", " <> e <> go es-   in packUTF8 (show l) <> ":" <> packUTF8 (show c) <> ":\n"+   in strToUtf8 (show l)+        <> ":"+        <> strToUtf8 (show c)+        <> ":\n"         <> lpad         <> "|\n"         <> linum
src/DotParse/Types.hs view
@@ -105,20 +105,21 @@ import Data.Proxy import Data.Text (Text) import qualified Data.Text as Text-import Data.Text.Encoding (encodeUtf8) import Data.These import DotParse.FlatParse-import FlatParse.Basic hiding (cut, lines)+import FlatParse.Basic hiding (cut) import GHC.Generics-import NeatInterpolation import Optics.Core import System.Exit import System.Process.ByteString import Prelude hiding (replicate)+import Data.String.Interpolate  -- $setup -- >>> import DotParse -- >>> import qualified Data.Map as Map+-- >>> import qualified FlatParse.Basic as FP+-- >>> import FlatParse.Basic (runParser, Result) -- >>> :set -XOverloadedStrings  -- | printing options, for separators.@@ -237,7 +238,7 @@   dotPrint _ MergeEdges = "strict"   dotPrint _ NoMergeEdges = "" -  dotParse = token $ optioned $(keyword "strict") (const $ pure MergeEdges) (pure NoMergeEdges)+  dotParse = token $ withOption ($(keyword "strict")) (const $ pure MergeEdges) (pure NoMergeEdges)  -- | Default Strict is NoMergeEdges defStrict :: Last Strict -> Strict@@ -301,8 +302,8 @@  instance DotParse ID where   dotPrint _ (ID s) = s-  dotPrint _ (IDInt i) = packUTF8 (show i)-  dotPrint _ (IDDouble x) = packUTF8 (show x)+  dotPrint _ (IDInt i) = strToUtf8 (show i)+  dotPrint _ (IDDouble x) = strToUtf8 (show x)   dotPrint _ (IDQuoted x) =     wrapQuotePrint x   dotPrint _ (IDHtml s) = s@@ -312,8 +313,8 @@     (ID <$> ident)       <|> (IDInt <$> (signed int `notFollowedBy` $(char '.')))       <|> (IDDouble <$> signed double)-      <|> (IDQuoted . packUTF8 <$> quoted)-      <|> (IDHtml . packUTF8 <$> htmlLike)+      <|> (IDQuoted . strToUtf8 <$> quoted)+      <|> (IDHtml . strToUtf8 <$> htmlLike)  -- | ID as the equivalent plain String --@@ -321,11 +322,11 @@ -- -- > x == y if label x == label y label :: ID -> String-label (ID s) = unpackUTF8 s+label (ID s) = utf8ToStr s label (IDInt i) = show i label (IDDouble d) = show d-label (IDQuoted q) = unpackUTF8 q-label (IDHtml h) = unpackUTF8 h+label (IDQuoted q) = utf8ToStr q+label (IDHtml h) = utf8ToStr h  -- | Attribute key-value pair of identifiers --@@ -440,9 +441,11 @@  instance DotParse AttributeStatement where   dotPrint cfg (AttributeStatement t as) =-    intercalate+    bool+    (intercalate       " "-      [dotPrint cfg t, dotPrint cfg as]+      [dotPrint cfg t, dotPrint cfg as])+    mempty (mempty == as)    dotParse = AttributeStatement <$> dotParse <*> dotParse @@ -577,15 +580,14 @@ -- | default dot graph as a ByteString defaultBS :: ByteString defaultBS =-  encodeUtf8-    [trimming|+    [i| digraph {     node [shape=circle          ,height=0.5];     graph [overlap=false           ,splines=spline           ,size="1!"];-    edge [arrowsize=0];+    edge [arrowsize=0.5];   } |] @@ -596,7 +598,7 @@ -- digraph { --     node [height=0.5;shape=circle] --     graph [overlap=false;size="1!";splines=spline]---     edge [arrowsize=0]+--     edge [arrowsize=0.5] --     } defaultGraph :: Graph defaultGraph = runDotParser defaultBS@@ -609,7 +611,7 @@         UnDirected -> "neato"   (r, input, e) <- readProcessWithExitCode cmd args i   bool-    (error $ unpackUTF8 e)+    (error $ utf8ToStr e)     (pure input)     (r == ExitSuccess) @@ -630,27 +632,27 @@ instance DotParse (Point Double) where   dotPrint _ (Point x y) =     intercalate "," $-      packUTF8 . show <$> [x, y]+      strToUtf8 . show <$> [x, y]    dotParse = token pointP  pointI :: Iso' ID (Point Double) pointI =   iso-    (runParser_ pointP . packUTF8 . label)+    (runParser_ pointP . strToUtf8 . label)     (IDQuoted . dotPrint defaultDotConfig)  instance DotParse (Rect Double) where   dotPrint _ (Rect x z y w) =     intercalate "," $-      packUTF8 . show <$> [x, y, z, w]+      strToUtf8 . show <$> [x, y, z, w]    dotParse = token rectP  rectI :: Iso' ID (Rect Double) rectI =   iso-    (runParser_ rectP . packUTF8 . label)+    (runParser_ rectP . strToUtf8 . label)     (IDQuoted . dotPrint defaultDotConfig)  -- | Bounding box ID lens@@ -666,7 +668,8 @@ nodesPortL =   lens     ( \g ->-        g & view #nodes+        g+          & view #nodes           & fmap (\x -> (view #nodeID x, (view #port x, view #nodeAttrs x)))           & Map.fromList     )@@ -677,7 +680,8 @@ nodesL =   lens     ( \g ->-        g & view #nodes+        g+          & view #nodes           & fmap (\x -> (view #nodeID x, view #nodeAttrs x))           & Map.fromList     )@@ -702,15 +706,15 @@ setEdges_ g m =   g     & #edges-    .~ ( ( \((x0, x1), as) ->-             EdgeStatement-               (fromDirected (defDirected $ view #directed g))-               (EdgeID x0 Nothing)-               (EdgeID x1 Nothing :| [])-               as+      .~ ( ( \((x0, x1), as) ->+               EdgeStatement+                 (fromDirected (defDirected $ view #directed g))+                 (EdgeID x0 Nothing)+                 (EdgeID x1 Nothing :| [])+                 as+           )+             <$> Map.toList m          )-           <$> Map.toList m-       )  -- | A specific attribute for all nodes in a graph nodesA :: ID -> Graph -> Map.Map ID (Maybe ID)@@ -834,19 +838,13 @@ defaultChartConfig :: ChartConfig defaultChartConfig = ChartConfig 500 72 0.5 (over lightness' (* 0.5) (palette1 0)) (set opac' 0.2 (palette1 0)) 0.5 0.5 (-3.7) 14 (Text.pack . label) --- | convert a 'Graph' processed via the graphviz commands to a 'ChartSvg'------ >>> import Chart--- >>> import DotParse.Examples (exInt)--- >>> ex <- processGraph exInt--- >>> writeChartSvg "other/ex.svg" (graphToChartWith defaultChartConfig ex)+-- | convert a 'Graph' processed via the graphviz commands to a 'ChartOptions' ----- ![Example](other/ex.svg)-graphToChartWith :: ChartConfig -> Graph -> ChartSvg+graphToChartWith :: ChartConfig -> Graph -> ChartOptions graphToChartWith cfg g =   mempty     & #charts .~ named "edges" ps <> named "shapes" c0 <> named "labels" [ts]-    & #svgOptions % #svgHeight .~ (cfg ^. #chartHeight)+    & #markupOptions % #markupHeight .~ (cfg ^. #chartHeight)     & #hudOptions .~ (mempty & #chartAspect .~ ChartAspect)   where     glyphs w = case view (attL NodeType (ID "shape")) g of@@ -854,7 +852,7 @@       Just (ID "box") -> defaultGlyphStyle & #shape .~ RectSharpGlyph (h / w) & #size .~ 72 * w & #borderSize .~ 1 & #borderColor .~ (cfg ^. #chartColor) & #color .~ (cfg ^. #chartBackgroundColor)       -- defaults to circle       _ -> defaultGlyphStyle & #shape .~ CircleGlyph & #size .~ 72 * w & #borderSize .~ 1 & #borderColor .~ (cfg ^. #chartColor) & #color .~ (cfg ^. #chartBackgroundColor)-    h = maybe (cfg ^. #nodeHeight) (runParser_ double . packUTF8 . label) (view (attL NodeType (ID "height")) g)+    h = maybe (cfg ^. #nodeHeight) (runParser_ double . strToUtf8 . label) (view (attL NodeType (ID "height")) g)     vshift' = cfg ^. #vshift     -- node information     ns = nodeInfo g (cfg ^. #nodeSize)@@ -868,8 +866,8 @@     ts =       TextChart (defaultTextStyle & #size .~ (cfg ^. #textSize) & #color .~ (cfg ^. #chartColor)) ((\(NodeInfo l _ (Point x y)) -> ((cfg ^. #labelf) l, Point x (vshift' + y))) <$> ns) --- | convert a 'Graph' processed via the graphviz commands to a 'ChartSvg' using the default ChartConfig.-graphToChart :: Graph -> ChartSvg+-- | convert a 'Graph' processed via the graphviz commands to a 'ChartOptions' using the default ChartConfig.+graphToChart :: Graph -> ChartOptions graphToChart = graphToChartWith defaultChartConfig  -- | Convert an algebraic graph to a dotparse graph.