packages feed

hgeometry 0.8.0.0 → 0.9.0.0

raw patch · 163 files changed

+4544/−105489 lines, 163 filesdep +MonadRandomdep +doctest-discoverdep +hgeometry-combinatorialdep −approximate-equalitydep −arraydep −cairodep ~QuickCheckdep ~basedep ~bytestringbinary-addedPVP ok

version bump matches the API change (PVP)

Dependencies added: MonadRandom, doctest-discover, hgeometry-combinatorial, vector-builder

Dependencies removed: approximate-equality, array, cairo, cairo-canvas, colour, contravariant, criterion, deepseq-generics, directory, filepath, gi-cairo, gi-gdk, gi-gtk, haskell-gi-base, hexpat, hgeometry, hspec, optparse-applicative, parsec, profunctors, random, reactive-banana, reactive-banana-gi-gtk, time, transformers

Dependency ranges changed: QuickCheck, base, bytestring, containers, data-clist, deepseq, fixed-vector, lens, linear, semigroups, singletons, text, vector, vinyl, yaml

API changes (from Hackage documentation)

- Algorithms.Geometry.ClosestPair.DivideAndConquer: getDist :: CP a r -> Top r
- Algorithms.Geometry.ClosestPair.DivideAndConquer: minBy :: Ord b => (a -> b) -> a -> a -> a
- Algorithms.Geometry.ClosestPair.DivideAndConquer: runWhile :: s -> [a] -> (s -> a -> Bool) -> (s -> a -> s) -> s
- Algorithms.Geometry.DelaunayTriangulation.Types: drawTriangulation :: IpeOut (Triangulation p r) Group r
- Algorithms.Geometry.EuclideanMST.EuclideanMST: drawTree' :: IpeOut (Tree (Point 2 r :+ p)) Group r
- Algorithms.Geometry.EuclideanMST.EuclideanMST: treeEdges :: Tree a -> [(a, a)]
- Algorithms.Geometry.Sweep: Tagged :: a -> Tagged a
- Algorithms.Geometry.Sweep: Timed :: (Tagged s t -> a) -> Timed s t a
- Algorithms.Geometry.Sweep: [atTime] :: Timed s t a -> Tagged s t -> a
- Algorithms.Geometry.Sweep: [unTag] :: Tagged a -> a
- Algorithms.Geometry.Sweep: coerceTo :: proxy s -> f (Timed s' t k) v -> f (Timed s t k) v
- Algorithms.Geometry.Sweep: compare_ :: forall s t k. (Ord k, Reifies s t) => Timed s t k -> Timed s t k -> Ordering
- Algorithms.Geometry.Sweep: constT :: proxy s -> Int -> Timed s Int Int
- Algorithms.Geometry.Sweep: getTime :: Timed s Int Int
- Algorithms.Geometry.Sweep: instance (Data.Reflection.Reifies s t, GHC.Classes.Ord k) => GHC.Classes.Eq (Algorithms.Geometry.Sweep.Timed s t k)
- Algorithms.Geometry.Sweep: instance (Data.Reflection.Reifies s t, GHC.Classes.Ord k) => GHC.Classes.Ord (Algorithms.Geometry.Sweep.Timed s t k)
- Algorithms.Geometry.Sweep: instance GHC.Classes.Eq a => GHC.Classes.Eq (Algorithms.Geometry.Sweep.Tagged s a)
- Algorithms.Geometry.Sweep: instance GHC.Classes.Ord a => GHC.Classes.Ord (Algorithms.Geometry.Sweep.Tagged s a)
- Algorithms.Geometry.Sweep: instance GHC.Show.Show a => GHC.Show.Show (Algorithms.Geometry.Sweep.Tagged s a)
- Algorithms.Geometry.Sweep: newtype Tagged (s :: *) a
- Algorithms.Geometry.Sweep: newtype Timed s t a
- Algorithms.Geometry.Sweep: query :: forall s v. Ord (Timed s Int Int) => Map (Timed s Int Int) v -> Maybe v
- Algorithms.Geometry.Sweep: runAt :: forall s0 t k r f v. Ord k => t -> f (Timed s0 t k) v -> (forall s. Reifies s t => f (Timed s t k) v -> r) -> r
- Algorithms.Geometry.Sweep: tag :: proxy s -> a -> Tagged s a
- Algorithms.Geometry.Sweep: test1 :: Int -> Bool
- Algorithms.Geometry.Sweep: test2 :: Int -> Maybe String
- Algorithms.Geometry.Sweep: test2M :: Reifies s Int => proxy s -> Map (Timed s Int Int) String
- Algorithms.Geometry.Sweep: unTagged :: f (Timed s t k) v -> f (Timed () t k) v
- Algorithms.Graph.DFS: adjacencyLists :: PlanarGraph s w v e f -> AdjacencyLists s w
- Algorithms.Graph.DFS: dfs :: forall s w v e f. PlanarGraph s w v e f -> VertexId s w -> Tree (VertexId s w)
- Algorithms.Graph.DFS: dfs' :: forall s w. AdjacencyLists s w -> VertexId s w -> Tree (VertexId s w)
- Algorithms.Graph.DFS: type AdjacencyLists s w = Vector [VertexId s w]
- Algorithms.Graph.MST: makeTree :: forall s w v e f. PlanarGraph s w v e f -> [Dart s] -> Tree (VertexId s w)
- Algorithms.Graph.MST: mst :: Ord e => PlanarGraph s w v e f -> Tree (VertexId s w)
- Algorithms.Graph.MST: mstEdges :: Ord e => PlanarGraph s w v e f -> [Dart s]
- Control.Monad.State.Persistent: data PersistentStateT s m a
- Control.Monad.State.Persistent: instance GHC.Base.Functor m => GHC.Base.Functor (Control.Monad.State.Persistent.PersistentStateT s m)
- Control.Monad.State.Persistent: instance GHC.Base.Monad m => Control.Monad.State.Class.MonadState s (Control.Monad.State.Persistent.PersistentStateT s m)
- Control.Monad.State.Persistent: instance GHC.Base.Monad m => GHC.Base.Applicative (Control.Monad.State.Persistent.PersistentStateT s m)
- Control.Monad.State.Persistent: instance GHC.Base.Monad m => GHC.Base.Monad (Control.Monad.State.Persistent.PersistentStateT s m)
- Control.Monad.State.Persistent: runPersistentState :: PersistentState s a -> s -> (a, s, [s])
- Control.Monad.State.Persistent: runPersistentStateT :: Functor m => PersistentStateT s m a -> s -> m (a, s, [s])
- Control.Monad.State.Persistent: store :: Monad m => PersistentStateT s m ()
- Control.Monad.State.Persistent: type PersistentState s = PersistentStateT s Identity
- Data.BalBST: BalBST :: !TreeNavigator k a -> !Tree k a -> BalBST k a
- Data.BalBST: Black :: Color
- Data.BalBST: Empty :: Tree k a
- Data.BalBST: Internal :: !Color -> !Height -> !k -> T k a
- Data.BalBST: Leaf :: !a -> Tree k a
- Data.BalBST: Nav :: (a -> k -> Bool) -> (a -> a -> k) -> TreeNavigator k a
- Data.BalBST: Node :: !Color -> !Height -> Tree k a -> !k -> Tree k a -> Tree k a
- Data.BalBST: Pair :: !a -> b -> Pair a b
- Data.BalBST: Red :: Color
- Data.BalBST: Split :: a -> !b -> a -> Split a b
- Data.BalBST: Val :: !a -> T k a
- Data.BalBST: [extractKey] :: TreeNavigator k a -> a -> a -> k
- Data.BalBST: [fst'] :: Pair a b -> !a
- Data.BalBST: [goLeft] :: TreeNavigator k a -> a -> k -> Bool
- Data.BalBST: [nav] :: BalBST k a -> !TreeNavigator k a
- Data.BalBST: [snd'] :: Pair a b -> b
- Data.BalBST: [toTree] :: BalBST k a -> !Tree k a
- Data.BalBST: balance :: Color -> Height -> Tree k a -> k -> Tree k a -> Tree k a
- Data.BalBST: black :: Height -> Tree k a -> k -> Tree k a -> Tree k a
- Data.BalBST: blacken :: Tree k a -> Tree k a
- Data.BalBST: collect :: b -> [Pair a b] -> Pair [a] b
- Data.BalBST: data BalBST k a
- Data.BalBST: data Color
- Data.BalBST: data Pair a b
- Data.BalBST: data Split a b
- Data.BalBST: data T k a
- Data.BalBST: data Tree k a
- Data.BalBST: data TreeNavigator k a
- Data.BalBST: delete :: Eq a => a -> BalBST k a -> BalBST k a
- Data.BalBST: empty :: TreeNavigator k a -> BalBST k a
- Data.BalBST: extractPrefix :: BalBST k a -> [Pair a (Tree k a)]
- Data.BalBST: extractSuffix :: BalBST k a -> [Pair a (Tree k a)]
- Data.BalBST: fromList :: TreeNavigator k a -> [a] -> BalBST k a
- Data.BalBST: fromList' :: Ord a => [a] -> BalBST a a
- Data.BalBST: height :: Tree k a -> Height
- Data.BalBST: insert :: a -> BalBST k a -> BalBST k a
- Data.BalBST: instance (GHC.Classes.Eq a, GHC.Classes.Eq b) => GHC.Classes.Eq (Data.BalBST.Pair a b)
- Data.BalBST: instance (GHC.Classes.Eq a, GHC.Classes.Eq b) => GHC.Classes.Eq (Data.BalBST.Split a b)
- Data.BalBST: instance (GHC.Classes.Eq a, GHC.Classes.Eq k) => GHC.Classes.Eq (Data.BalBST.Tree k a)
- Data.BalBST: instance (GHC.Classes.Eq k, GHC.Classes.Eq a) => GHC.Classes.Eq (Data.BalBST.T k a)
- Data.BalBST: instance (GHC.Classes.Ord k, GHC.Classes.Ord a) => GHC.Classes.Ord (Data.BalBST.T k a)
- Data.BalBST: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Data.BalBST.Pair a b)
- Data.BalBST: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Data.BalBST.Split a b)
- Data.BalBST: instance (GHC.Show.Show a, GHC.Show.Show k) => GHC.Show.Show (Data.BalBST.Tree k a)
- Data.BalBST: instance (GHC.Show.Show k, GHC.Show.Show a) => GHC.Show.Show (Data.BalBST.BalBST k a)
- Data.BalBST: instance (GHC.Show.Show k, GHC.Show.Show a) => GHC.Show.Show (Data.BalBST.T k a)
- Data.BalBST: instance Data.Foldable.Foldable (Data.BalBST.Pair a)
- Data.BalBST: instance Data.Functor.Contravariant.Contravariant (Data.BalBST.TreeNavigator k)
- Data.BalBST: instance Data.Traversable.Traversable (Data.BalBST.Pair a)
- Data.BalBST: instance GHC.Base.Functor (Data.BalBST.Pair a)
- Data.BalBST: instance GHC.Classes.Eq Data.BalBST.Color
- Data.BalBST: instance GHC.Classes.Ord Data.BalBST.Color
- Data.BalBST: instance GHC.Read.Read Data.BalBST.Color
- Data.BalBST: instance GHC.Show.Show Data.BalBST.Color
- Data.BalBST: join :: BalBST k a -> BalBST k a -> BalBST k a
- Data.BalBST: joinWith :: TreeNavigator k a -> Tree k a -> Tree k a -> Tree k a
- Data.BalBST: lookup :: Eq a => a -> BalBST k a -> Maybe a
- Data.BalBST: lookupLE :: Ord k => k -> BalBST k a -> Maybe a
- Data.BalBST: lookupMax :: BalBST k b -> Maybe b
- Data.BalBST: lookupMin :: BalBST k b -> Maybe b
- Data.BalBST: maxView :: BalBST k a -> Maybe (a, Tree k a)
- Data.BalBST: member :: Eq a => a -> BalBST k a -> Bool
- Data.BalBST: minView :: BalBST k a -> Maybe (a, Tree k a)
- Data.BalBST: mkNode :: Height -> Tree k a -> k -> Tree k a -> k -> Tree k a -> k -> Tree k a -> Tree k a
- Data.BalBST: null :: BalBST k a -> Bool
- Data.BalBST: ordNav :: Ord a => TreeNavigator a a
- Data.BalBST: ordNavBy :: Ord b => (a -> b) -> TreeNavigator b a
- Data.BalBST: red :: Height -> Tree k a -> k -> Tree k a -> Tree k a
- Data.BalBST: showTree :: (Show k, Show a) => BalBST k a -> String
- Data.BalBST: split :: Eq a => a -> BalBST k a -> Split (Tree k a) (Maybe a)
- Data.BalBST: splitExtract :: (a -> Bool) -> (a -> Bool) -> BalBST k a -> Split (BalBST k a) ([a], [a])
- Data.BalBST: splitMonotone :: (a -> Bool) -> BalBST k a -> (BalBST k a, BalBST k a)
- Data.BalBST: toList :: BalBST k a -> [a]
- Data.BalBST: toList' :: Tree k a -> [a]
- Data.BalBST: toRoseTree :: Tree k a -> Maybe (Tree (T k a))
- Data.BalBST: type Height = Int
- Data.BalBST: unsafeMax :: Tree k a -> a
- Data.BalBST: unsafeMin :: Tree k a -> a
- Data.BinaryTree: Elem :: a -> Elem a
- Data.BinaryTree: Internal :: BinaryTree a -> !a -> BinaryTree a -> BinaryTree a
- Data.BinaryTree: InternalNode :: v -> RoseElem v a
- Data.BinaryTree: Leaf :: !a -> BinLeafTree v a
- Data.BinaryTree: LeafNode :: a -> RoseElem v a
- Data.BinaryTree: Nil :: BinaryTree a
- Data.BinaryTree: Node :: BinLeafTree v a -> !v -> BinLeafTree v a -> BinLeafTree v a
- Data.BinaryTree: Size :: Int -> Size
- Data.BinaryTree: Sized :: !Size -> a -> Sized a
- Data.BinaryTree: [_unElem] :: Elem a -> a
- Data.BinaryTree: access :: BinaryTree a -> Maybe a
- Data.BinaryTree: asBalancedBinLeafTree :: NonEmpty a -> BinLeafTree Size (Elem a)
- Data.BinaryTree: asBalancedBinTree :: [a] -> BinaryTree a
- Data.BinaryTree: class Semigroup v => Measured v a | a -> v
- Data.BinaryTree: data BinLeafTree v a
- Data.BinaryTree: data BinaryTree a
- Data.BinaryTree: data RoseElem v a
- Data.BinaryTree: data Sized a
- Data.BinaryTree: drawTree :: (Show v, Show a) => BinLeafTree v a -> String
- Data.BinaryTree: drawTree' :: Show a => BinaryTree a -> String
- Data.BinaryTree: foldBinaryUp :: b -> (a -> b -> b -> b) -> BinaryTree a -> BinaryTree (a, b)
- Data.BinaryTree: foldUp :: (b -> v -> b -> b) -> (a -> b) -> BinLeafTree v a -> b
- Data.BinaryTree: foldUpData :: (w -> v -> w -> w) -> (a -> w) -> BinLeafTree v a -> BinLeafTree w a
- Data.BinaryTree: instance (Control.DeepSeq.NFData v, Control.DeepSeq.NFData a) => Control.DeepSeq.NFData (Data.BinaryTree.BinLeafTree v a)
- Data.BinaryTree: instance (GHC.Classes.Eq a, GHC.Classes.Eq v) => GHC.Classes.Eq (Data.BinaryTree.BinLeafTree v a)
- Data.BinaryTree: instance (GHC.Classes.Eq v, GHC.Classes.Eq a) => GHC.Classes.Eq (Data.BinaryTree.RoseElem v a)
- Data.BinaryTree: instance (GHC.Classes.Ord a, GHC.Classes.Ord v) => GHC.Classes.Ord (Data.BinaryTree.BinLeafTree v a)
- Data.BinaryTree: instance (GHC.Read.Read a, GHC.Read.Read v) => GHC.Read.Read (Data.BinaryTree.BinLeafTree v a)
- Data.BinaryTree: instance (GHC.Show.Show a, GHC.Show.Show v) => GHC.Show.Show (Data.BinaryTree.BinLeafTree v a)
- Data.BinaryTree: instance (GHC.Show.Show v, GHC.Show.Show a) => GHC.Show.Show (Data.BinaryTree.RoseElem v a)
- Data.BinaryTree: instance Control.DeepSeq.NFData Data.BinaryTree.Size
- Data.BinaryTree: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Data.BinaryTree.BinaryTree a)
- Data.BinaryTree: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Data.BinaryTree.Sized a)
- Data.BinaryTree: instance Data.BinaryTree.Measured Data.BinaryTree.Size (Data.BinaryTree.Elem a)
- Data.BinaryTree: instance Data.BinaryTree.Measured v a => Data.BinaryTree.Measured v (Data.BinaryTree.BinLeafTree v a)
- Data.BinaryTree: instance Data.BinaryTree.Measured v a => GHC.Base.Semigroup (Data.BinaryTree.BinLeafTree v a)
- Data.BinaryTree: instance Data.Foldable.Foldable (Data.BinaryTree.BinLeafTree v)
- Data.BinaryTree: instance Data.Foldable.Foldable Data.BinaryTree.BinaryTree
- Data.BinaryTree: instance Data.Foldable.Foldable Data.BinaryTree.Elem
- Data.BinaryTree: instance Data.Foldable.Foldable Data.BinaryTree.Sized
- Data.BinaryTree: instance Data.Semigroup.Foldable.Class.Foldable1 (Data.BinaryTree.BinLeafTree v)
- Data.BinaryTree: instance Data.Traversable.Traversable (Data.BinaryTree.BinLeafTree v)
- Data.BinaryTree: instance Data.Traversable.Traversable Data.BinaryTree.BinaryTree
- Data.BinaryTree: instance Data.Traversable.Traversable Data.BinaryTree.Elem
- Data.BinaryTree: instance Data.Traversable.Traversable Data.BinaryTree.Sized
- Data.BinaryTree: instance GHC.Base.Functor (Data.BinaryTree.BinLeafTree v)
- Data.BinaryTree: instance GHC.Base.Functor (Data.BinaryTree.RoseElem v)
- Data.BinaryTree: instance GHC.Base.Functor Data.BinaryTree.BinaryTree
- Data.BinaryTree: instance GHC.Base.Functor Data.BinaryTree.Elem
- Data.BinaryTree: instance GHC.Base.Functor Data.BinaryTree.Sized
- Data.BinaryTree: instance GHC.Base.Monoid Data.BinaryTree.Size
- Data.BinaryTree: instance GHC.Base.Monoid a => GHC.Base.Monoid (Data.BinaryTree.Sized a)
- Data.BinaryTree: instance GHC.Base.Semigroup Data.BinaryTree.Size
- Data.BinaryTree: instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Data.BinaryTree.Sized a)
- Data.BinaryTree: instance GHC.Classes.Eq Data.BinaryTree.Size
- Data.BinaryTree: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.BinaryTree.BinaryTree a)
- Data.BinaryTree: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.BinaryTree.Elem a)
- Data.BinaryTree: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.BinaryTree.Sized a)
- Data.BinaryTree: instance GHC.Classes.Ord Data.BinaryTree.Size
- Data.BinaryTree: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.BinaryTree.BinaryTree a)
- Data.BinaryTree: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.BinaryTree.Elem a)
- Data.BinaryTree: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.BinaryTree.Sized a)
- Data.BinaryTree: instance GHC.Enum.Enum Data.BinaryTree.Size
- Data.BinaryTree: instance GHC.Generics.Generic (Data.BinaryTree.BinLeafTree v a)
- Data.BinaryTree: instance GHC.Generics.Generic (Data.BinaryTree.BinaryTree a)
- Data.BinaryTree: instance GHC.Generics.Generic (Data.BinaryTree.Sized a)
- Data.BinaryTree: instance GHC.Generics.Generic Data.BinaryTree.Size
- Data.BinaryTree: instance GHC.Num.Num Data.BinaryTree.Size
- Data.BinaryTree: instance GHC.Read.Read Data.BinaryTree.Size
- Data.BinaryTree: instance GHC.Read.Read a => GHC.Read.Read (Data.BinaryTree.BinaryTree a)
- Data.BinaryTree: instance GHC.Read.Read a => GHC.Read.Read (Data.BinaryTree.Elem a)
- Data.BinaryTree: instance GHC.Real.Integral Data.BinaryTree.Size
- Data.BinaryTree: instance GHC.Real.Real Data.BinaryTree.Size
- Data.BinaryTree: instance GHC.Show.Show Data.BinaryTree.Size
- Data.BinaryTree: instance GHC.Show.Show a => GHC.Show.Show (Data.BinaryTree.BinaryTree a)
- Data.BinaryTree: instance GHC.Show.Show a => GHC.Show.Show (Data.BinaryTree.Elem a)
- Data.BinaryTree: instance GHC.Show.Show a => GHC.Show.Show (Data.BinaryTree.Sized a)
- Data.BinaryTree: measure :: Measured v a => a -> v
- Data.BinaryTree: newtype Elem a
- Data.BinaryTree: newtype Size
- Data.BinaryTree: node :: Measured v a => BinLeafTree v a -> BinLeafTree v a -> BinLeafTree v a
- Data.BinaryTree: toRoseTree :: BinLeafTree v a -> Tree (RoseElem v a)
- Data.BinaryTree: toRoseTree' :: BinaryTree a -> Maybe (Tree a)
- Data.BinaryTree: zipExactWith :: (u -> v -> w) -> (a -> b -> c) -> BinLeafTree u a -> BinLeafTree v b -> BinLeafTree w c
- Data.BinaryTree.Zipper: L :: Ctx a -> a -> BinaryTree a -> Ctx a
- Data.BinaryTree.Zipper: Loc :: BinaryTree a -> Ctx a -> BinaryTreeZipper a
- Data.BinaryTree.Zipper: R :: BinaryTree a -> a -> Ctx a -> Ctx a
- Data.BinaryTree.Zipper: Top :: Ctx a
- Data.BinaryTree.Zipper: accessZ :: BinaryTreeZipper a -> Maybe a
- Data.BinaryTree.Zipper: data BinaryTreeZipper a
- Data.BinaryTree.Zipper: data Ctx a
- Data.BinaryTree.Zipper: instance Data.Foldable.Foldable Data.BinaryTree.Zipper.BinaryTreeZipper
- Data.BinaryTree.Zipper: instance Data.Foldable.Foldable Data.BinaryTree.Zipper.Ctx
- Data.BinaryTree.Zipper: instance Data.Traversable.Traversable Data.BinaryTree.Zipper.BinaryTreeZipper
- Data.BinaryTree.Zipper: instance Data.Traversable.Traversable Data.BinaryTree.Zipper.Ctx
- Data.BinaryTree.Zipper: instance GHC.Base.Functor Data.BinaryTree.Zipper.BinaryTreeZipper
- Data.BinaryTree.Zipper: instance GHC.Base.Functor Data.BinaryTree.Zipper.Ctx
- Data.BinaryTree.Zipper: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.BinaryTree.Zipper.BinaryTreeZipper a)
- Data.BinaryTree.Zipper: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.BinaryTree.Zipper.Ctx a)
- Data.BinaryTree.Zipper: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.BinaryTree.Zipper.BinaryTreeZipper a)
- Data.BinaryTree.Zipper: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.BinaryTree.Zipper.Ctx a)
- Data.BinaryTree.Zipper: instance GHC.Read.Read a => GHC.Read.Read (Data.BinaryTree.Zipper.BinaryTreeZipper a)
- Data.BinaryTree.Zipper: instance GHC.Read.Read a => GHC.Read.Read (Data.BinaryTree.Zipper.Ctx a)
- Data.BinaryTree.Zipper: instance GHC.Show.Show a => GHC.Show.Show (Data.BinaryTree.Zipper.BinaryTreeZipper a)
- Data.BinaryTree.Zipper: instance GHC.Show.Show a => GHC.Show.Show (Data.BinaryTree.Zipper.Ctx a)
- Data.BinaryTree.Zipper: left :: BinaryTreeZipper a -> Maybe (BinaryTreeZipper a)
- Data.BinaryTree.Zipper: right :: BinaryTreeZipper a -> Maybe (BinaryTreeZipper a)
- Data.BinaryTree.Zipper: splitTree :: BinaryTreeZipper a -> (BinaryTree a, BinaryTree a)
- Data.BinaryTree.Zipper: subTrees :: BinaryTree a -> [BinaryTree a]
- Data.BinaryTree.Zipper: toRoot :: BinaryTreeZipper a -> BinaryTreeZipper a
- Data.BinaryTree.Zipper: top :: BinaryTree a -> BinaryTreeZipper a
- Data.BinaryTree.Zipper: up :: BinaryTreeZipper a -> Maybe (BinaryTreeZipper a)
- Data.BinaryTree.Zipper: visitAll :: BinaryTree a -> [BinaryTreeZipper a]
- Data.CircularList.Util: insertOrd :: Ord a => a -> CList a -> CList a
- Data.CircularList.Util: insertOrdBy :: (a -> a -> Ordering) -> a -> CList a -> CList a
- Data.CircularList.Util: insertOrdBy' :: (a -> a -> Ordering) -> a -> [a] -> [a]
- Data.CircularList.Util: isShiftOf :: Eq a => CList a -> CList a -> Bool
- Data.CircularList.Util: splitIncr :: (a -> a -> Ordering) -> [a] -> ([a], [a])
- Data.CircularSeq: adjust :: (a -> a) -> Int -> CSeq a -> CSeq a
- Data.CircularSeq: allRotations :: CSeq a -> CSeq (CSeq a)
- Data.CircularSeq: asSeq :: CSeq a -> Seq a
- Data.CircularSeq: cseq :: Seq a -> a -> Seq a -> CSeq a
- Data.CircularSeq: data CSeq a
- Data.CircularSeq: findRotateTo :: (a -> Bool) -> CSeq a -> Maybe (CSeq a)
- Data.CircularSeq: focus :: CSeq a -> a
- Data.CircularSeq: fromList :: [a] -> CSeq a
- Data.CircularSeq: fromNonEmpty :: NonEmpty a -> CSeq a
- Data.CircularSeq: index :: CSeq a -> Int -> a
- Data.CircularSeq: insertOrd :: Ord a => a -> CSeq a -> CSeq a
- Data.CircularSeq: insertOrdBy :: (a -> a -> Ordering) -> a -> CSeq a -> CSeq a
- Data.CircularSeq: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Data.CircularSeq.CSeq a)
- Data.CircularSeq: instance Data.Foldable.Foldable Data.CircularSeq.CSeq
- Data.CircularSeq: instance Data.Semigroup.Foldable.Class.Foldable1 Data.CircularSeq.CSeq
- Data.CircularSeq: instance Data.Traversable.Traversable Data.CircularSeq.CSeq
- Data.CircularSeq: instance GHC.Base.Functor Data.CircularSeq.CSeq
- Data.CircularSeq: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.CircularSeq.CSeq a)
- Data.CircularSeq: instance GHC.Generics.Generic (Data.CircularSeq.CSeq a)
- Data.CircularSeq: instance GHC.Show.Show a => GHC.Show.Show (Data.CircularSeq.CSeq a)
- Data.CircularSeq: isShiftOf :: Eq a => CSeq a -> CSeq a -> Bool
- Data.CircularSeq: item :: Int -> Lens' (CSeq a) a
- Data.CircularSeq: leftElements :: CSeq a -> Seq a
- Data.CircularSeq: reverseDirection :: CSeq a -> CSeq a
- Data.CircularSeq: rightElements :: CSeq a -> Seq a
- Data.CircularSeq: rotateL :: CSeq a -> CSeq a
- Data.CircularSeq: rotateNL :: Int -> CSeq a -> CSeq a
- Data.CircularSeq: rotateNR :: Int -> CSeq a -> CSeq a
- Data.CircularSeq: rotateR :: CSeq a -> CSeq a
- Data.CircularSeq: rotateTo :: Eq a => a -> CSeq a -> Maybe (CSeq a)
- Data.CircularSeq: singleton :: a -> CSeq a
- Data.CircularSeq: toNonEmpty :: CSeq a -> NonEmpty a
- Data.CircularSeq: zip3LWith :: (a -> b -> c -> d) -> CSeq a -> CSeq b -> CSeq c -> CSeq d
- Data.CircularSeq: zipL :: CSeq a -> CSeq b -> CSeq (a, b)
- Data.CircularSeq: zipLWith :: (a -> b -> c) -> CSeq a -> CSeq b -> CSeq c
- Data.Ext: (:+) :: core -> extra -> (:+) core extra
- Data.Ext: _core :: (core :+ extra) -> core
- Data.Ext: _extra :: (core :+ extra) -> extra
- Data.Ext: core :: Lens (core :+ extra) (core' :+ extra) core core'
- Data.Ext: data core :+ extra
- Data.Ext: ext :: a -> a :+ ()
- Data.Ext: extra :: Lens (core :+ extra) (core :+ extra') extra extra'
- Data.Ext: infixr 1 :+
- Data.Ext: instance (Control.DeepSeq.NFData core, Control.DeepSeq.NFData extra) => Control.DeepSeq.NFData (core Data.Ext.:+ extra)
- Data.Ext: instance (Data.Aeson.Types.FromJSON.FromJSON core, Data.Aeson.Types.FromJSON.FromJSON extra) => Data.Aeson.Types.FromJSON.FromJSON (core Data.Ext.:+ extra)
- Data.Ext: instance (Data.Aeson.Types.ToJSON.ToJSON core, Data.Aeson.Types.ToJSON.ToJSON extra) => Data.Aeson.Types.ToJSON.ToJSON (core Data.Ext.:+ extra)
- Data.Ext: instance (GHC.Base.Semigroup core, GHC.Base.Semigroup extra) => GHC.Base.Semigroup (core Data.Ext.:+ extra)
- Data.Ext: instance (GHC.Classes.Eq core, GHC.Classes.Eq extra) => GHC.Classes.Eq (core Data.Ext.:+ extra)
- Data.Ext: instance (GHC.Classes.Ord core, GHC.Classes.Ord extra) => GHC.Classes.Ord (core Data.Ext.:+ extra)
- Data.Ext: instance (GHC.Enum.Bounded core, GHC.Enum.Bounded extra) => GHC.Enum.Bounded (core Data.Ext.:+ extra)
- Data.Ext: instance (GHC.Read.Read core, GHC.Read.Read extra) => GHC.Read.Read (core Data.Ext.:+ extra)
- Data.Ext: instance (GHC.Show.Show core, GHC.Show.Show extra) => GHC.Show.Show (core Data.Ext.:+ extra)
- Data.Ext: instance Data.Biapplicative.Biapplicative (Data.Ext.:+)
- Data.Ext: instance Data.Bifoldable.Bifoldable (Data.Ext.:+)
- Data.Ext: instance Data.Bifunctor.Bifunctor (Data.Ext.:+)
- Data.Ext: instance Data.Bitraversable.Bitraversable (Data.Ext.:+)
- Data.Ext: instance Data.Functor.Bind.Class.Biapply (Data.Ext.:+)
- Data.Ext: instance Data.Semigroup.Foldable.Class.Bifoldable1 (Data.Ext.:+)
- Data.Ext: instance Data.Semigroup.Traversable.Class.Bitraversable1 (Data.Ext.:+)
- Data.Ext: instance GHC.Generics.Generic (core Data.Ext.:+ extra)
- Data.Geometry: infixl 6 ^-^
- Data.Geometry: infixl 7 *^
- Data.Geometry.Arrangement.Draw: drawArrangement :: IpeOut (Arrangement s l v e f r) Group r
- Data.Geometry.Arrangement.Draw: drawColoredArrangement :: IpeOut (Arrangement s l v e (Maybe (IpeColor r)) r) Group r
- Data.Geometry.Ball: instance (GHC.Classes.Ord r, GHC.Float.Floating r) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.Line.Internal.Line 2 r) (Data.Geometry.Ball.Circle p r)
- Data.Geometry.Ball: instance (GHC.Classes.Ord r, GHC.Float.Floating r) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.LineSegment.LineSegment 2 p r) (Data.Geometry.Ball.Circle q r)
- Data.Geometry.Box.Internal: instance (Data.Geometry.Vector.VectorFamily.Arity d, GHC.Classes.Ord r) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.Point.Point d r) (Data.Geometry.Box.Internal.Box d p r)
- Data.Geometry.Box.Internal: instance (GHC.Classes.Ord r, Data.Geometry.Vector.VectorFamily.Arity d) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.Box.Internal.Box d p r) (Data.Geometry.Box.Internal.Box d q r)
- Data.Geometry.HyperPlane: instance (GHC.Classes.Eq r, GHC.Real.Fractional r) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.Line.Internal.Line 3 r) (Data.Geometry.HyperPlane.Plane r)
- Data.Geometry.HyperPlane: onHyperPlane :: (Num r, Eq r, Arity d) => Point d r -> HyperPlane d r -> Bool
- Data.Geometry.Interval: instance GHC.Classes.Ord r => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.Interval.Interval a r) (Data.Geometry.Interval.Interval a r)
- Data.Geometry.IntervalTree: instance (Control.DeepSeq.NFData r, Control.DeepSeq.NFData i) => Control.DeepSeq.NFData (Data.Geometry.IntervalTree.IntervalTree i r)
- Data.Geometry.IntervalTree: instance (Control.DeepSeq.NFData r, Control.DeepSeq.NFData i) => Control.DeepSeq.NFData (Data.Geometry.IntervalTree.NodeData i r)
- Data.Geometry.Ipe: IpeColor :: IpeValue (RGB r) -> IpeColor r
- Data.Geometry.Ipe: newtype IpeColor r
- Data.Geometry.Ipe.Attributes: Affine :: TransformationTypes
- Data.Geometry.Ipe.Attributes: Arrow :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: Attrs :: Rec (Attr f) ats -> Attributes
- Data.Geometry.Ipe.Attributes: Clip :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: Dash :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: DashNamed :: Text -> IpeDash r
- Data.Geometry.Ipe.Attributes: DashPattern :: [r] -> r -> IpeDash r
- Data.Geometry.Ipe.Attributes: EOFill :: FillType
- Data.Geometry.Ipe.Attributes: Fill :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: FillRule :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: GAttr :: Maybe (Apply f label) -> Attr
- Data.Geometry.Ipe.Attributes: Gradient :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: Horizontal :: PinType
- Data.Geometry.Ipe.Attributes: IpeArrow :: Text -> IpeSize r -> IpeArrow r
- Data.Geometry.Ipe.Attributes: IpePen :: IpeValue r -> IpePen r
- Data.Geometry.Ipe.Attributes: IpeSize :: IpeValue r -> IpeSize r
- Data.Geometry.Ipe.Attributes: Layer :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: LineCap :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: LineJoin :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: Matrix :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: No :: PinType
- Data.Geometry.Ipe.Attributes: Opacity :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: Pen :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: Pin :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: RArrow :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: Rigid :: TransformationTypes
- Data.Geometry.Ipe.Attributes: Size :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: Stroke :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: Tiling :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: Transformations :: AttributeUniverse
- Data.Geometry.Ipe.Attributes: Translations :: TransformationTypes
- Data.Geometry.Ipe.Attributes: Vertical :: PinType
- Data.Geometry.Ipe.Attributes: Wind :: FillType
- Data.Geometry.Ipe.Attributes: Yes :: PinType
- Data.Geometry.Ipe.Attributes: [_arrowName] :: IpeArrow r -> Text
- Data.Geometry.Ipe.Attributes: [_arrowSize] :: IpeArrow r -> IpeSize r
- Data.Geometry.Ipe.Attributes: [_getAttr] :: Attr -> Maybe (Apply f label)
- Data.Geometry.Ipe.Attributes: arrowName :: forall r_aY5G. Lens' (IpeArrow r_aY5G) Text
- Data.Geometry.Ipe.Attributes: arrowSize :: forall r_aY5G r_aZfg. Lens (IpeArrow r_aY5G) (IpeArrow r_aZfg) (IpeSize r_aY5G) (IpeSize r_aZfg)
- Data.Geometry.Ipe.Attributes: attr :: (at ∈ ats, RecApplicative ats) => proxy at -> Apply f at -> Attributes f ats
- Data.Geometry.Ipe.Attributes: attrLens :: at ∈ ats => proxy at -> Lens' (Attributes f ats) (Maybe (Apply f at))
- Data.Geometry.Ipe.Attributes: attrName :: IpeAttrName a => Proxy a -> Text
- Data.Geometry.Ipe.Attributes: class IpeAttrName (a :: AttributeUniverse)
- Data.Geometry.Ipe.Attributes: data AttributeUniverse
- Data.Geometry.Ipe.Attributes: data FillType
- Data.Geometry.Ipe.Attributes: data IpeArrow r
- Data.Geometry.Ipe.Attributes: data IpeDash r
- Data.Geometry.Ipe.Attributes: data PinType
- Data.Geometry.Ipe.Attributes: data TransformationTypes
- Data.Geometry.Ipe.Attributes: getAttr :: forall f_aWEE label_aWEF f_aY50 label_aY51. Iso (Attr f_aWEE label_aWEF) (Attr f_aY50 label_aY51) (Maybe (Apply f_aWEE label_aWEF)) (Maybe (Apply f_aY50 label_aY51))
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.Arrow
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.Clip
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.Dash
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.Fill
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.FillRule
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.Gradient
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.Layer
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.LineCap
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.LineJoin
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.Matrix
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.Opacity
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.Pen
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.Pin
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.RArrow
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.Size
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.Stroke
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.Tiling
- Data.Geometry.Ipe.Attributes: instance Data.Geometry.Ipe.Attributes.IpeAttrName 'Data.Geometry.Ipe.Attributes.Transformations
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.Arrow
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.Clip
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.Dash
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.Fill
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.FillRule
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.Gradient
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.Layer
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.LineCap
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.LineJoin
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.Matrix
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.Opacity
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.Pen
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.Pin
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.RArrow
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.Size
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.Stroke
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.Tiling
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingI 'Data.Geometry.Ipe.Attributes.Transformations
- Data.Geometry.Ipe.Attributes: instance Data.Singletons.Internal.SingKind Data.Geometry.Ipe.Attributes.AttributeUniverse
- Data.Geometry.Ipe.Attributes: instance GHC.Classes.Eq Data.Geometry.Ipe.Attributes.AttributeUniverse
- Data.Geometry.Ipe.Attributes: instance GHC.Classes.Eq Data.Geometry.Ipe.Attributes.FillType
- Data.Geometry.Ipe.Attributes: instance GHC.Classes.Eq Data.Geometry.Ipe.Attributes.PinType
- Data.Geometry.Ipe.Attributes: instance GHC.Classes.Eq Data.Geometry.Ipe.Attributes.TransformationTypes
- Data.Geometry.Ipe.Attributes: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Attributes.IpeArrow r)
- Data.Geometry.Ipe.Attributes: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Attributes.IpeDash r)
- Data.Geometry.Ipe.Attributes: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Attributes.IpePen r)
- Data.Geometry.Ipe.Attributes: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Attributes.IpeSize r)
- Data.Geometry.Ipe.Attributes: instance GHC.Classes.Ord r => GHC.Classes.Ord (Data.Geometry.Ipe.Attributes.IpePen r)
- Data.Geometry.Ipe.Attributes: instance GHC.Classes.Ord r => GHC.Classes.Ord (Data.Geometry.Ipe.Attributes.IpeSize r)
- Data.Geometry.Ipe.Attributes: instance GHC.Read.Read Data.Geometry.Ipe.Attributes.AttributeUniverse
- Data.Geometry.Ipe.Attributes: instance GHC.Read.Read Data.Geometry.Ipe.Attributes.FillType
- Data.Geometry.Ipe.Attributes: instance GHC.Read.Read Data.Geometry.Ipe.Attributes.PinType
- Data.Geometry.Ipe.Attributes: instance GHC.Read.Read Data.Geometry.Ipe.Attributes.TransformationTypes
- Data.Geometry.Ipe.Attributes: instance GHC.Show.Show Data.Geometry.Ipe.Attributes.AttributeUniverse
- Data.Geometry.Ipe.Attributes: instance GHC.Show.Show Data.Geometry.Ipe.Attributes.FillType
- Data.Geometry.Ipe.Attributes: instance GHC.Show.Show Data.Geometry.Ipe.Attributes.PinType
- Data.Geometry.Ipe.Attributes: instance GHC.Show.Show Data.Geometry.Ipe.Attributes.TransformationTypes
- Data.Geometry.Ipe.Attributes: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Attributes.IpeArrow r)
- Data.Geometry.Ipe.Attributes: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Attributes.IpeDash r)
- Data.Geometry.Ipe.Attributes: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Attributes.IpePen r)
- Data.Geometry.Ipe.Attributes: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Attributes.IpeSize r)
- Data.Geometry.Ipe.Attributes: instance forall u (ats :: [u]) (f :: Data.Singletons.Internal.TyFun u * -> *). Data.Vinyl.Core.RecApplicative ats => GHC.Base.Monoid (Data.Geometry.Ipe.Attributes.Attributes f ats)
- Data.Geometry.Ipe.Attributes: instance forall u (f :: Data.Singletons.Internal.TyFun u * -> *) (ats :: [u]). Data.Vinyl.TypeLevel.RecAll (Data.Geometry.Ipe.Attributes.Attr f) ats GHC.Classes.Eq => GHC.Classes.Eq (Data.Geometry.Ipe.Attributes.Attributes f ats)
- Data.Geometry.Ipe.Attributes: instance forall u (f :: Data.Singletons.Internal.TyFun u * -> *) (ats :: [u]). Data.Vinyl.TypeLevel.RecAll (Data.Geometry.Ipe.Attributes.Attr f) ats GHC.Show.Show => GHC.Show.Show (Data.Geometry.Ipe.Attributes.Attributes f ats)
- Data.Geometry.Ipe.Attributes: instance forall u (f :: Data.Singletons.Internal.TyFun u * -> *) (ats :: [u]). GHC.Base.Semigroup (Data.Geometry.Ipe.Attributes.Attributes f ats)
- Data.Geometry.Ipe.Attributes: instance forall u (f :: Data.Singletons.Internal.TyFun u * -> *) (l :: u). GHC.Base.Monoid (Data.Geometry.Ipe.Attributes.Attr f l)
- Data.Geometry.Ipe.Attributes: instance forall u (f :: Data.Singletons.Internal.TyFun u * -> *) (l :: u). GHC.Base.Semigroup (Data.Geometry.Ipe.Attributes.Attr f l)
- Data.Geometry.Ipe.Attributes: instance forall u (f :: u Data.Singletons.Internal.~> *) (label :: u). GHC.Classes.Eq (Data.Singletons.Internal.Apply f label) => GHC.Classes.Eq (Data.Geometry.Ipe.Attributes.Attr f label)
- Data.Geometry.Ipe.Attributes: instance forall u (f :: u Data.Singletons.Internal.~> *) (label :: u). GHC.Classes.Ord (Data.Singletons.Internal.Apply f label) => GHC.Classes.Ord (Data.Geometry.Ipe.Attributes.Attr f label)
- Data.Geometry.Ipe.Attributes: instance forall u (f :: u Data.Singletons.Internal.~> *) (label :: u). GHC.Read.Read (Data.Singletons.Internal.Apply f label) => GHC.Read.Read (Data.Geometry.Ipe.Attributes.Attr f label)
- Data.Geometry.Ipe.Attributes: instance forall u (f :: u Data.Singletons.Internal.~> *) (label :: u). GHC.Show.Show (Data.Singletons.Internal.Apply f label) => GHC.Show.Show (Data.Geometry.Ipe.Attributes.Attr f label)
- Data.Geometry.Ipe.Attributes: lookupAttr :: at ∈ ats => proxy at -> Attributes f ats -> Maybe (Apply f at)
- Data.Geometry.Ipe.Attributes: newtype Attr (f :: TyFun u * -> *) (label :: u)
- Data.Geometry.Ipe.Attributes: newtype Attributes (f :: TyFun u * -> *) (ats :: [u])
- Data.Geometry.Ipe.Attributes: newtype IpePen r
- Data.Geometry.Ipe.Attributes: newtype IpeSize r
- Data.Geometry.Ipe.Attributes: normalArrow :: IpeArrow r
- Data.Geometry.Ipe.Attributes: setAttr :: forall proxy at ats f. at ∈ ats => proxy at -> Apply f at -> Attributes f ats -> Attributes f ats
- Data.Geometry.Ipe.Attributes: takeAttr :: forall proxy at ats f. at ∈ ats => proxy at -> Attributes f ats -> (Maybe (Apply f at), Attributes f ats)
- Data.Geometry.Ipe.Attributes: type ArrowSym0 = 'Arrow
- Data.Geometry.Ipe.Attributes: type ClipSym0 = 'Clip
- Data.Geometry.Ipe.Attributes: type CommonAttributes = [Layer, Matrix, Pin, Transformations]
- Data.Geometry.Ipe.Attributes: type DashSym0 = 'Dash
- Data.Geometry.Ipe.Attributes: type FillRuleSym0 = 'FillRule
- Data.Geometry.Ipe.Attributes: type FillSym0 = 'Fill
- Data.Geometry.Ipe.Attributes: type GradientSym0 = 'Gradient
- Data.Geometry.Ipe.Attributes: type GroupAttributes = CommonAttributes ++ '[ 'Clip]
- Data.Geometry.Ipe.Attributes: type ImageAttributes = CommonAttributes
- Data.Geometry.Ipe.Attributes: type IpeGradient = Text
- Data.Geometry.Ipe.Attributes: type IpeOpacity = Text
- Data.Geometry.Ipe.Attributes: type IpeTiling = Text
- Data.Geometry.Ipe.Attributes: type LayerSym0 = 'Layer
- Data.Geometry.Ipe.Attributes: type LineCapSym0 = 'LineCap
- Data.Geometry.Ipe.Attributes: type LineJoinSym0 = 'LineJoin
- Data.Geometry.Ipe.Attributes: type MatrixSym0 = 'Matrix
- Data.Geometry.Ipe.Attributes: type MiniPageAttributes = CommonAttributes
- Data.Geometry.Ipe.Attributes: type OpacitySym0 = 'Opacity
- Data.Geometry.Ipe.Attributes: type PathAttributes = CommonAttributes ++ [Stroke, Fill, Dash, Pen, LineCap, LineJoin, FillRule, Arrow, RArrow, Opacity, Tiling, Gradient]
- Data.Geometry.Ipe.Attributes: type PenSym0 = 'Pen
- Data.Geometry.Ipe.Attributes: type PinSym0 = 'Pin
- Data.Geometry.Ipe.Attributes: type RArrowSym0 = 'RArrow
- Data.Geometry.Ipe.Attributes: type SAttributeUniverse = (Sing :: AttributeUniverse -> Type)
- Data.Geometry.Ipe.Attributes: type SizeSym0 = 'Size
- Data.Geometry.Ipe.Attributes: type StrokeSym0 = 'Stroke
- Data.Geometry.Ipe.Attributes: type SymbolAttributes = CommonAttributes ++ [Stroke, Fill, Pen, Size]
- Data.Geometry.Ipe.Attributes: type TextLabelAttributes = CommonAttributes
- Data.Geometry.Ipe.Attributes: type TilingSym0 = 'Tiling
- Data.Geometry.Ipe.Attributes: type TransformationsSym0 = 'Transformations
- Data.Geometry.Ipe.Attributes: type family AllSatisfy (c :: k -> Constraint) (xs :: [k]) :: Constraint
- Data.Geometry.Ipe.Attributes: unAttrs :: Lens (Attributes f ats) (Attributes f' ats') (Rec (Attr f) ats) (Rec (Attr f') ats')
- Data.Geometry.Ipe.Attributes: unSetAttr :: forall proxy at ats f. at ∈ ats => proxy at -> Attributes f ats -> Attributes f ats
- Data.Geometry.Ipe.Attributes: writeAttrNames :: AllSatisfy IpeAttrName rs => Rec f rs -> Rec (Const Text) rs
- Data.Geometry.Ipe.Attributes: zipRecsWith :: (forall a. f a -> g a -> h a) -> Rec f as -> Rec g as -> Rec h as
- Data.Geometry.Ipe.Color: IpeColor :: IpeValue (RGB r) -> IpeColor r
- Data.Geometry.Ipe.Color: blue :: IpeColor r
- Data.Geometry.Ipe.Color: brown :: IpeColor r
- Data.Geometry.Ipe.Color: darkblue :: IpeColor r
- Data.Geometry.Ipe.Color: darkcyan :: IpeColor r
- Data.Geometry.Ipe.Color: darkgray :: IpeColor r
- Data.Geometry.Ipe.Color: darkgreen :: IpeColor r
- Data.Geometry.Ipe.Color: darkmagenta :: IpeColor r
- Data.Geometry.Ipe.Color: darkorange :: IpeColor r
- Data.Geometry.Ipe.Color: darkred :: IpeColor r
- Data.Geometry.Ipe.Color: gold :: IpeColor r
- Data.Geometry.Ipe.Color: gray :: IpeColor r
- Data.Geometry.Ipe.Color: green :: IpeColor r
- Data.Geometry.Ipe.Color: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Color.IpeColor r)
- Data.Geometry.Ipe.Color: instance GHC.Classes.Ord r => GHC.Classes.Ord (Data.Geometry.Ipe.Color.IpeColor r)
- Data.Geometry.Ipe.Color: instance GHC.Read.Read r => GHC.Read.Read (Data.Geometry.Ipe.Color.IpeColor r)
- Data.Geometry.Ipe.Color: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Color.IpeColor r)
- Data.Geometry.Ipe.Color: lightblue :: IpeColor r
- Data.Geometry.Ipe.Color: lightcyan :: IpeColor r
- Data.Geometry.Ipe.Color: lightgray :: IpeColor r
- Data.Geometry.Ipe.Color: lightgreen :: IpeColor r
- Data.Geometry.Ipe.Color: lightyellow :: IpeColor r
- Data.Geometry.Ipe.Color: named :: Text -> IpeColor r
- Data.Geometry.Ipe.Color: navy :: IpeColor r
- Data.Geometry.Ipe.Color: newtype IpeColor r
- Data.Geometry.Ipe.Color: orange :: IpeColor r
- Data.Geometry.Ipe.Color: pink :: IpeColor r
- Data.Geometry.Ipe.Color: purple :: IpeColor r
- Data.Geometry.Ipe.Color: red :: IpeColor r
- Data.Geometry.Ipe.Color: seagreen :: IpeColor r
- Data.Geometry.Ipe.Color: turquoise :: IpeColor r
- Data.Geometry.Ipe.Color: violet :: IpeColor r
- Data.Geometry.Ipe.Color: yellow :: IpeColor r
- Data.Geometry.Ipe.FromIpe: _asLineSegment :: Prism' (Path r) (LineSegment 2 () r)
- Data.Geometry.Ipe.FromIpe: _asMultiPolygon :: Prism' (Path r) (MultiPolygon () r)
- Data.Geometry.Ipe.FromIpe: _asPolyLine :: Prism' (Path r) (PolyLine 2 () r)
- Data.Geometry.Ipe.FromIpe: _asSimplePolygon :: Prism' (Path r) (Polygon Simple () r)
- Data.Geometry.Ipe.FromIpe: _asTriangle :: Prism' (Path r) (Triangle 2 () r)
- Data.Geometry.Ipe.FromIpe: _withAttrs :: Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g -> Prism' (IpeObject r) (g :+ IpeAttributes i r)
- Data.Geometry.Ipe.FromIpe: class HasDefaultFromIpe g where {
- Data.Geometry.Ipe.FromIpe: defaultFromIpe :: (HasDefaultFromIpe g, r ~ NumType g) => Prism' (IpeObject r) (g :+ IpeAttributes (DefaultFromIpe g) r)
- Data.Geometry.Ipe.FromIpe: fromSingleton :: a -> LSeq 1 a
- Data.Geometry.Ipe.FromIpe: instance Data.Geometry.Ipe.FromIpe.HasDefaultFromIpe (Data.Geometry.LineSegment.LineSegment 2 () r)
- Data.Geometry.Ipe.FromIpe: instance Data.Geometry.Ipe.FromIpe.HasDefaultFromIpe (Data.Geometry.PolyLine.PolyLine 2 () r)
- Data.Geometry.Ipe.FromIpe: instance Data.Geometry.Ipe.FromIpe.HasDefaultFromIpe (Data.Geometry.Polygon.MultiPolygon () r)
- Data.Geometry.Ipe.FromIpe: instance Data.Geometry.Ipe.FromIpe.HasDefaultFromIpe (Data.Geometry.Polygon.SimplePolygon () r)
- Data.Geometry.Ipe.FromIpe: pathToPolygon :: Path r -> Maybe (Either (SimplePolygon () r) (MultiPolygon () r))
- Data.Geometry.Ipe.FromIpe: polygonToPath :: Polygon t () r -> Path r
- Data.Geometry.Ipe.FromIpe: readAll :: (HasDefaultFromIpe g, r ~ NumType g, Foldable f) => f (IpePage r) -> [g :+ IpeAttributes (DefaultFromIpe g) r]
- Data.Geometry.Ipe.FromIpe: readAllFrom :: (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r) => FilePath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r]
- Data.Geometry.Ipe.FromIpe: type family DefaultFromIpe g :: * -> *;
- Data.Geometry.Ipe.FromIpe: }
- Data.Geometry.Ipe.IpeOut: (!) :: IpeObject' i r -> IpeAttributes i r -> IpeObject' i r
- Data.Geometry.Ipe.IpeOut: class ToObject (DefaultIpeOut g) => HasDefaultIpeOut g where {
- Data.Geometry.Ipe.IpeOut: defIO :: HasDefaultIpeOut g => IpeOut g (DefaultIpeOut g) (NumType g)
- Data.Geometry.Ipe.IpeOut: iO :: ToObject i => IpeObject' i r -> IpeObject r
- Data.Geometry.Ipe.IpeOut: iO' :: HasDefaultIpeOut g => g -> IpeObject (NumType g)
- Data.Geometry.Ipe.IpeOut: iO'' :: (HasDefaultIpeOut g, NumType g ~ r, DefaultIpeOut g ~ i, ToObject i) => g -> IpeAttributes i r -> IpeObject r
- Data.Geometry.Ipe.IpeOut: instance (Data.Geometry.Ipe.IpeOut.HasDefaultIpeOut g, a Data.Type.Equality.~ Data.Geometry.Ipe.Types.IpeAttributes (Data.Geometry.Ipe.IpeOut.DefaultIpeOut g) (Data.Geometry.Properties.NumType g)) => Data.Geometry.Ipe.IpeOut.HasDefaultIpeOut (g Data.Ext.:+ a)
- Data.Geometry.Ipe.IpeOut: instance (GHC.Real.Fractional r, GHC.Classes.Ord r) => Data.Geometry.Ipe.IpeOut.HasDefaultIpeOut (Data.Geometry.Line.Internal.Line 2 r)
- Data.Geometry.Ipe.IpeOut: instance Data.Geometry.Ipe.IpeOut.HasDefaultIpeOut (Data.Geometry.LineSegment.LineSegment 2 p r)
- Data.Geometry.Ipe.IpeOut: instance Data.Geometry.Ipe.IpeOut.HasDefaultIpeOut (Data.Geometry.Point.Point 2 r)
- Data.Geometry.Ipe.IpeOut: instance Data.Geometry.Ipe.IpeOut.HasDefaultIpeOut (Data.Geometry.PolyLine.PolyLine 2 p r)
- Data.Geometry.Ipe.IpeOut: instance Data.Geometry.Ipe.IpeOut.HasDefaultIpeOut (Data.Geometry.Polygon.Convex.ConvexPolygon p r)
- Data.Geometry.Ipe.IpeOut: instance Data.Geometry.Ipe.IpeOut.HasDefaultIpeOut (Data.Geometry.Polygon.Polygon t p r)
- Data.Geometry.Ipe.IpeOut: instance Data.Geometry.Ipe.IpeOut.HasDefaultIpeOut (Data.Geometry.Polygon.SomePolygon p r)
- Data.Geometry.Ipe.IpeOut: instance Data.Geometry.Ipe.IpeOut.HasDefaultIpeOut a => Data.Geometry.Ipe.IpeOut.HasDefaultIpeOut [a]
- Data.Geometry.Ipe.IpeOut: instance GHC.Float.Floating r => Data.Geometry.Ipe.IpeOut.HasDefaultIpeOut (Data.Geometry.Ball.Disk p r)
- Data.Geometry.Ipe.IpeOut: ipeCircle :: Floating r => IpeOut (Circle p r) Path r
- Data.Geometry.Ipe.IpeOut: ipeDisk :: Floating r => IpeOut (Disk p r) Path r
- Data.Geometry.Ipe.IpeOut: ipeDiskMark :: IpeOut (Point 2 r) IpeSymbol r
- Data.Geometry.Ipe.IpeOut: ipeGroup :: IpeOut [IpeObject r] Group r
- Data.Geometry.Ipe.IpeOut: ipeLineSegment :: IpeOut (LineSegment 2 p r) Path r
- Data.Geometry.Ipe.IpeOut: ipeMark :: Text -> IpeOut (Point 2 r) IpeSymbol r
- Data.Geometry.Ipe.IpeOut: ipePolyLine :: IpeOut (PolyLine 2 p r) Path r
- Data.Geometry.Ipe.IpeOut: ipePolygon :: IpeOut (Polygon t p r) Path r
- Data.Geometry.Ipe.IpeOut: path :: PathSegment r -> Path r
- Data.Geometry.Ipe.IpeOut: pathSegment :: LineSegment 2 p r -> PathSegment r
- Data.Geometry.Ipe.IpeOut: type IpeOut g i r = g -> IpeObject' i r
- Data.Geometry.Ipe.IpeOut: type family DefaultIpeOut g :: * -> *;
- Data.Geometry.Ipe.IpeOut: }
- Data.Geometry.Ipe.Literal: lit :: QuasiQuoter
- Data.Geometry.Ipe.Literal: litFile :: QuasiQuoter
- Data.Geometry.Ipe.Literal: literally :: String -> Q Exp
- Data.Geometry.Ipe.Literal: xmlLiteral :: String -> Node Text Text
- Data.Geometry.Ipe.PathParser: Left' :: l -> Either' l r
- Data.Geometry.Ipe.PathParser: Right' :: r -> Either' l r
- Data.Geometry.Ipe.PathParser: class Fractional r => Coordinate r
- Data.Geometry.Ipe.PathParser: combineErrors :: [ParseError] -> Text
- Data.Geometry.Ipe.PathParser: data Either' l r
- Data.Geometry.Ipe.PathParser: defaultFromSeq :: (Ord r, Fractional r) => Integer -> Maybe (Int, Integer) -> r
- Data.Geometry.Ipe.PathParser: either' :: (l -> a) -> (r -> a) -> Either' l r -> a
- Data.Geometry.Ipe.PathParser: errorText :: ParseError -> Text
- Data.Geometry.Ipe.PathParser: fromSeq :: (Coordinate r, Ord r, Fractional r) => Integer -> Maybe (Int, Integer) -> r
- Data.Geometry.Ipe.PathParser: instance (GHC.Base.Semigroup l, GHC.Base.Semigroup r) => GHC.Base.Semigroup (Data.Geometry.Ipe.PathParser.Either' l r)
- Data.Geometry.Ipe.PathParser: instance (GHC.Base.Semigroup l, GHC.Base.Semigroup r, GHC.Base.Monoid r) => GHC.Base.Monoid (Data.Geometry.Ipe.PathParser.Either' l r)
- Data.Geometry.Ipe.PathParser: instance (GHC.Classes.Eq l, GHC.Classes.Eq r) => GHC.Classes.Eq (Data.Geometry.Ipe.PathParser.Either' l r)
- Data.Geometry.Ipe.PathParser: instance (GHC.Show.Show l, GHC.Show.Show r) => GHC.Show.Show (Data.Geometry.Ipe.PathParser.Either' l r)
- Data.Geometry.Ipe.PathParser: instance Data.Geometry.Ipe.PathParser.Coordinate (GHC.Real.Ratio GHC.Integer.Type.Integer)
- Data.Geometry.Ipe.PathParser: instance Data.Geometry.Ipe.PathParser.Coordinate GHC.Types.Double
- Data.Geometry.Ipe.PathParser: mkMatrix :: Coordinate r => [r] -> Matrix 3 3 r
- Data.Geometry.Ipe.PathParser: pCoordinate :: Coordinate r => Parser r
- Data.Geometry.Ipe.PathParser: pMatrix :: Coordinate r => Parser (Matrix 3 3 r)
- Data.Geometry.Ipe.PathParser: pOperation :: Coordinate r => Parser (Operation r)
- Data.Geometry.Ipe.PathParser: pPoint :: Coordinate r => Parser (Point 2 r)
- Data.Geometry.Ipe.PathParser: pRectangle :: Coordinate r => Parser (Rectangle () r)
- Data.Geometry.Ipe.PathParser: readCoordinate :: Coordinate r => Text -> Either Text r
- Data.Geometry.Ipe.PathParser: readMatrix :: Coordinate r => Text -> Either Text (Matrix 3 3 r)
- Data.Geometry.Ipe.PathParser: readPathOperations :: Coordinate r => Text -> Either Text [Operation r]
- Data.Geometry.Ipe.PathParser: readPoint :: Coordinate r => Text -> Either Text (Point 2 r)
- Data.Geometry.Ipe.PathParser: readRectangle :: Coordinate r => Text -> Either Text (Rectangle () r)
- Data.Geometry.Ipe.PathParser: runParser :: Parser a -> Text -> Either Text a
- Data.Geometry.Ipe.PathParser: splitKeepDelims :: [Char] -> Text -> [Text]
- Data.Geometry.Ipe.Reader: class Fractional r => Coordinate r
- Data.Geometry.Ipe.Reader: class IpeRead t
- Data.Geometry.Ipe.Reader: class IpeReadAttr t
- Data.Geometry.Ipe.Reader: class IpeReadText t
- Data.Geometry.Ipe.Reader: fromIpeXML :: IpeRead (t r) => ByteString -> Either ConversionError (t r)
- Data.Geometry.Ipe.Reader: fromSeq :: (Coordinate r, Ord r, Fractional r) => Integer -> Maybe (Int, Integer) -> r
- Data.Geometry.Ipe.Reader: instance (Data.Geometry.Ipe.PathParser.Coordinate r, GHC.Classes.Eq r) => Data.Geometry.Ipe.Reader.IpeRead (Data.Geometry.Ipe.Types.Group r)
- Data.Geometry.Ipe.Reader: instance (Data.Geometry.Ipe.PathParser.Coordinate r, GHC.Classes.Eq r) => Data.Geometry.Ipe.Reader.IpeRead (Data.Geometry.Ipe.Types.IpeFile r)
- Data.Geometry.Ipe.Reader: instance (Data.Geometry.Ipe.PathParser.Coordinate r, GHC.Classes.Eq r) => Data.Geometry.Ipe.Reader.IpeRead (Data.Geometry.Ipe.Types.IpeObject r)
- Data.Geometry.Ipe.Reader: instance (Data.Geometry.Ipe.PathParser.Coordinate r, GHC.Classes.Eq r) => Data.Geometry.Ipe.Reader.IpeRead (Data.Geometry.Ipe.Types.IpePage r)
- Data.Geometry.Ipe.Reader: instance (Data.Geometry.Ipe.PathParser.Coordinate r, GHC.Classes.Eq r) => Data.Geometry.Ipe.Reader.IpeRead (Data.Geometry.Ipe.Types.Path r)
- Data.Geometry.Ipe.Reader: instance (Data.Geometry.Ipe.PathParser.Coordinate r, GHC.Classes.Eq r) => Data.Geometry.Ipe.Reader.IpeReadText (Data.Geometry.Ipe.Types.Path r)
- Data.Geometry.Ipe.Reader: instance (Data.Geometry.Ipe.PathParser.Coordinate r, GHC.Classes.Eq r) => Data.Geometry.Ipe.Reader.IpeReadText (GHC.Base.NonEmpty (Data.Geometry.Ipe.Types.PathSegment r))
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.PathParser.Coordinate r => Data.Geometry.Ipe.Reader.IpeRead (Data.Geometry.Ipe.Types.Image r)
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.PathParser.Coordinate r => Data.Geometry.Ipe.Reader.IpeRead (Data.Geometry.Ipe.Types.IpeSymbol r)
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.PathParser.Coordinate r => Data.Geometry.Ipe.Reader.IpeRead (Data.Geometry.Ipe.Types.MiniPage r)
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.PathParser.Coordinate r => Data.Geometry.Ipe.Reader.IpeRead (Data.Geometry.Ipe.Types.TextLabel r)
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.PathParser.Coordinate r => Data.Geometry.Ipe.Reader.IpeReadText (Data.Colour.RGB.RGB r)
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.PathParser.Coordinate r => Data.Geometry.Ipe.Reader.IpeReadText (Data.Geometry.Box.Internal.Rectangle () r)
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.PathParser.Coordinate r => Data.Geometry.Ipe.Reader.IpeReadText (Data.Geometry.Ipe.Attributes.IpeArrow r)
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.PathParser.Coordinate r => Data.Geometry.Ipe.Reader.IpeReadText (Data.Geometry.Ipe.Attributes.IpeDash r)
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.PathParser.Coordinate r => Data.Geometry.Ipe.Reader.IpeReadText (Data.Geometry.Ipe.Attributes.IpePen r)
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.PathParser.Coordinate r => Data.Geometry.Ipe.Reader.IpeReadText (Data.Geometry.Ipe.Attributes.IpeSize r)
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.PathParser.Coordinate r => Data.Geometry.Ipe.Reader.IpeReadText (Data.Geometry.Ipe.Color.IpeColor r)
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.PathParser.Coordinate r => Data.Geometry.Ipe.Reader.IpeReadText (Data.Geometry.Point.Point 2 r)
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.PathParser.Coordinate r => Data.Geometry.Ipe.Reader.IpeReadText (Data.Geometry.Transformation.Matrix 3 3 r)
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.PathParser.Coordinate r => Data.Geometry.Ipe.Reader.IpeReadText [Data.Geometry.Ipe.Types.Operation r]
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.Reader.IpeRead Data.Geometry.Ipe.Types.LayerName
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.Reader.IpeRead Data.Geometry.Ipe.Types.View
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.Reader.IpeReadText Data.Geometry.Ipe.Attributes.FillType
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.Reader.IpeReadText Data.Geometry.Ipe.Attributes.PinType
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.Reader.IpeReadText Data.Geometry.Ipe.Attributes.TransformationTypes
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.Reader.IpeReadText Data.Geometry.Ipe.Types.LayerName
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.Reader.IpeReadText Data.Text.Internal.Text
- Data.Geometry.Ipe.Reader: instance Data.Geometry.Ipe.Reader.IpeReadText GHC.Types.Int
- Data.Geometry.Ipe.Reader: instance forall u (f :: u Data.Singletons.Internal.~> *) (at :: u). Data.Geometry.Ipe.Reader.IpeReadText (Data.Singletons.Internal.Apply f at) => Data.Geometry.Ipe.Reader.IpeReadAttr (Data.Geometry.Ipe.Attributes.Attr f at)
- Data.Geometry.Ipe.Reader: ipeRead :: IpeRead t => Node Text Text -> Either ConversionError t
- Data.Geometry.Ipe.Reader: ipeReadAttr :: IpeReadAttr t => Text -> Node Text Text -> Either ConversionError t
- Data.Geometry.Ipe.Reader: ipeReadAttrs :: forall proxy proxy' i r f ats. (f ~ AttrMapSym1 r, ats ~ AttributesOf i, RecApplicative ats, RecAll (Attr f) ats IpeReadAttr, AllSatisfy IpeAttrName ats) => proxy i -> proxy' r -> Node Text Text -> Either ConversionError (IpeAttributes i r)
- Data.Geometry.Ipe.Reader: ipeReadObject :: (IpeRead (i r), f ~ AttrMapSym1 r, ats ~ AttributesOf i, RecApplicative ats, RecAll (Attr f) ats IpeReadAttr, AllSatisfy IpeAttrName ats) => Proxy i -> proxy r -> Node Text Text -> Either ConversionError (i r :+ IpeAttributes i r)
- Data.Geometry.Ipe.Reader: ipeReadRec :: forall f ats. (RecApplicative ats, RecAll (Attr f) ats IpeReadAttr, AllSatisfy IpeAttrName ats) => Proxy f -> Proxy ats -> Node Text Text -> Either ConversionError (Rec (Attr f) ats)
- Data.Geometry.Ipe.Reader: ipeReadText :: IpeReadText t => Text -> Either ConversionError t
- Data.Geometry.Ipe.Reader: ipeReadTextWith :: (Text -> Either t v) -> Text -> Either ConversionError (IpeValue v)
- Data.Geometry.Ipe.Reader: readIpeFile :: (Coordinate r, Eq r) => FilePath -> IO (Either ConversionError (IpeFile r))
- Data.Geometry.Ipe.Reader: readRawIpeFile :: (Coordinate r, Eq r) => FilePath -> IO (Either ConversionError (IpeFile r))
- Data.Geometry.Ipe.Reader: readSinglePageFile :: (Coordinate r, Eq r) => FilePath -> IO (Either ConversionError (IpePage r))
- Data.Geometry.Ipe.Reader: readXML :: ByteString -> Either ConversionError (Node Text Text)
- Data.Geometry.Ipe.Reader: type ConversionError = Text
- Data.Geometry.Ipe.Types: ArcSegment :: PathSegment r
- Data.Geometry.Ipe.Types: ArcTo :: Matrix 3 3 r -> Point 2 r -> Operation r
- Data.Geometry.Ipe.Types: ClosePath :: Operation r
- Data.Geometry.Ipe.Types: ClosedSpline :: [Point 2 r] -> Operation r
- Data.Geometry.Ipe.Types: ClosedSplineSegment :: PathSegment r
- Data.Geometry.Ipe.Types: CubicBezierSegment :: PathSegment r
- Data.Geometry.Ipe.Types: CurveTo :: Point 2 r -> Point 2 r -> Point 2 r -> Operation r
- Data.Geometry.Ipe.Types: Ellipse :: Matrix 3 3 r -> Operation r
- Data.Geometry.Ipe.Types: EllipseSegment :: Matrix 3 3 r -> PathSegment r
- Data.Geometry.Ipe.Types: Group :: [IpeObject r] -> Group r
- Data.Geometry.Ipe.Types: Image :: () -> Rectangle () r -> Image r
- Data.Geometry.Ipe.Types: IpeFile :: Maybe IpePreamble -> [IpeStyle] -> NonEmpty (IpePage r) -> IpeFile r
- Data.Geometry.Ipe.Types: IpeGroup :: IpeObject' Group r -> IpeObject r
- Data.Geometry.Ipe.Types: IpeImage :: IpeObject' Image r -> IpeObject r
- Data.Geometry.Ipe.Types: IpeMiniPage :: IpeObject' MiniPage r -> IpeObject r
- Data.Geometry.Ipe.Types: IpePage :: [LayerName] -> [View] -> [IpeObject r] -> IpePage r
- Data.Geometry.Ipe.Types: IpePath :: IpeObject' Path r -> IpeObject r
- Data.Geometry.Ipe.Types: IpePreamble :: Maybe Text -> Text -> IpePreamble
- Data.Geometry.Ipe.Types: IpeStyle :: Maybe Text -> Node Text Text -> IpeStyle
- Data.Geometry.Ipe.Types: IpeTextLabel :: IpeObject' TextLabel r -> IpeObject r
- Data.Geometry.Ipe.Types: IpeUse :: IpeObject' IpeSymbol r -> IpeObject r
- Data.Geometry.Ipe.Types: Label :: Text -> Point 2 r -> TextLabel r
- Data.Geometry.Ipe.Types: LayerName :: Text -> LayerName
- Data.Geometry.Ipe.Types: LineTo :: Point 2 r -> Operation r
- Data.Geometry.Ipe.Types: MiniPage :: Text -> Point 2 r -> r -> MiniPage r
- Data.Geometry.Ipe.Types: MoveTo :: Point 2 r -> Operation r
- Data.Geometry.Ipe.Types: Path :: LSeq 1 (PathSegment r) -> Path r
- Data.Geometry.Ipe.Types: PolyLineSegment :: PolyLine 2 () r -> PathSegment r
- Data.Geometry.Ipe.Types: PolygonPath :: SimplePolygon () r -> PathSegment r
- Data.Geometry.Ipe.Types: QCurveTo :: Point 2 r -> Point 2 r -> Operation r
- Data.Geometry.Ipe.Types: QuadraticBezierSegment :: PathSegment r
- Data.Geometry.Ipe.Types: Spline :: [Point 2 r] -> Operation r
- Data.Geometry.Ipe.Types: SplineSegment :: PathSegment r
- Data.Geometry.Ipe.Types: Symbol :: Point 2 r -> Text -> IpeSymbol r
- Data.Geometry.Ipe.Types: View :: [LayerName] -> LayerName -> View
- Data.Geometry.Ipe.Types: [AttrMapSym0KindInference] :: forall r6989586621679826752 arg_a3qGT. SameKind (Apply AttrMapSym0 arg_a3qGT) (AttrMapSym1 arg_a3qGT) => AttrMapSym0 r6989586621679826752
- Data.Geometry.Ipe.Types: [AttrMapSym1KindInference] :: forall r6989586621679826752 l6989586621679826753 arg_a3qGS. SameKind (Apply (AttrMapSym1 r6989586621679826752) arg_a3qGS) (AttrMapSym2 r6989586621679826752 arg_a3qGS) => AttrMapSym1 r6989586621679826752 l6989586621679826753
- Data.Geometry.Ipe.Types: [_activeLayer] :: View -> LayerName
- Data.Geometry.Ipe.Types: [_content] :: IpePage r -> [IpeObject r]
- Data.Geometry.Ipe.Types: [_encoding] :: IpePreamble -> Maybe Text
- Data.Geometry.Ipe.Types: [_imageData] :: Image r -> ()
- Data.Geometry.Ipe.Types: [_layerName] :: LayerName -> Text
- Data.Geometry.Ipe.Types: [_layerNames] :: View -> [LayerName]
- Data.Geometry.Ipe.Types: [_layers] :: IpePage r -> [LayerName]
- Data.Geometry.Ipe.Types: [_pages] :: IpeFile r -> NonEmpty (IpePage r)
- Data.Geometry.Ipe.Types: [_pathSegments] :: Path r -> LSeq 1 (PathSegment r)
- Data.Geometry.Ipe.Types: [_preambleData] :: IpePreamble -> Text
- Data.Geometry.Ipe.Types: [_preamble] :: IpeFile r -> Maybe IpePreamble
- Data.Geometry.Ipe.Types: [_rect] :: Image r -> Rectangle () r
- Data.Geometry.Ipe.Types: [_styleData] :: IpeStyle -> Node Text Text
- Data.Geometry.Ipe.Types: [_styleName] :: IpeStyle -> Maybe Text
- Data.Geometry.Ipe.Types: [_styles] :: IpeFile r -> [IpeStyle]
- Data.Geometry.Ipe.Types: [_symbolName] :: IpeSymbol r -> Text
- Data.Geometry.Ipe.Types: [_symbolPoint] :: IpeSymbol r -> Point 2 r
- Data.Geometry.Ipe.Types: [_views] :: IpePage r -> [View]
- Data.Geometry.Ipe.Types: _ArcSegment :: forall r_a3q2u. Prism' (PathSegment r_a3q2u) ()
- Data.Geometry.Ipe.Types: _ArcTo :: forall r_a3qlO. Prism' (Operation r_a3qlO) (Matrix 3 3 r_a3qlO, Point 2 r_a3qlO)
- Data.Geometry.Ipe.Types: _ClosePath :: forall r_a3qlO. Prism' (Operation r_a3qlO) ()
- Data.Geometry.Ipe.Types: _ClosedSpline :: forall r_a3qlO. Prism' (Operation r_a3qlO) [Point 2 r_a3qlO]
- Data.Geometry.Ipe.Types: _ClosedSplineSegment :: forall r_a3q2u. Prism' (PathSegment r_a3q2u) ()
- Data.Geometry.Ipe.Types: _CubicBezierSegment :: forall r_a3q2u. Prism' (PathSegment r_a3q2u) ()
- Data.Geometry.Ipe.Types: _CurveTo :: forall r_a3qlO. Prism' (Operation r_a3qlO) (Point 2 r_a3qlO, Point 2 r_a3qlO, Point 2 r_a3qlO)
- Data.Geometry.Ipe.Types: _Ellipse :: forall r_a3qlO. Prism' (Operation r_a3qlO) (Matrix 3 3 r_a3qlO)
- Data.Geometry.Ipe.Types: _EllipseSegment :: forall r_a3q2u. Prism' (PathSegment r_a3q2u) (Matrix 3 3 r_a3q2u)
- Data.Geometry.Ipe.Types: _IpeGroup :: forall r_a3qHd. Prism' (IpeObject r_a3qHd) (IpeObject' Group r_a3qHd)
- Data.Geometry.Ipe.Types: _IpeImage :: forall r_a3qHd. Prism' (IpeObject r_a3qHd) (IpeObject' Image r_a3qHd)
- Data.Geometry.Ipe.Types: _IpeMiniPage :: forall r_a3qHd. Prism' (IpeObject r_a3qHd) (IpeObject' MiniPage r_a3qHd)
- Data.Geometry.Ipe.Types: _IpePath :: forall r_a3qHd. Prism' (IpeObject r_a3qHd) (IpeObject' Path r_a3qHd)
- Data.Geometry.Ipe.Types: _IpeTextLabel :: forall r_a3qHd. Prism' (IpeObject r_a3qHd) (IpeObject' TextLabel r_a3qHd)
- Data.Geometry.Ipe.Types: _IpeUse :: forall r_a3qHd. Prism' (IpeObject r_a3qHd) (IpeObject' IpeSymbol r_a3qHd)
- Data.Geometry.Ipe.Types: _LineTo :: forall r_a3qlO. Prism' (Operation r_a3qlO) (Point 2 r_a3qlO)
- Data.Geometry.Ipe.Types: _MoveTo :: forall r_a3qlO. Prism' (Operation r_a3qlO) (Point 2 r_a3qlO)
- Data.Geometry.Ipe.Types: _PolyLineSegment :: forall r_a3q2u. Prism' (PathSegment r_a3q2u) (PolyLine 2 () r_a3q2u)
- Data.Geometry.Ipe.Types: _PolygonPath :: forall r_a3q2u. Prism' (PathSegment r_a3q2u) (SimplePolygon () r_a3q2u)
- Data.Geometry.Ipe.Types: _QCurveTo :: forall r_a3qlO. Prism' (Operation r_a3qlO) (Point 2 r_a3qlO, Point 2 r_a3qlO)
- Data.Geometry.Ipe.Types: _QuadraticBezierSegment :: forall r_a3q2u. Prism' (PathSegment r_a3q2u) ()
- Data.Geometry.Ipe.Types: _Spline :: forall r_a3qlO. Prism' (Operation r_a3qlO) [Point 2 r_a3qlO]
- Data.Geometry.Ipe.Types: _SplineSegment :: forall r_a3q2u. Prism' (PathSegment r_a3q2u) ()
- Data.Geometry.Ipe.Types: activeLayer :: Lens' View LayerName
- Data.Geometry.Ipe.Types: applyMatrices :: Fractional r => IpeFile r -> IpeFile r
- Data.Geometry.Ipe.Types: applyMatricesPage :: Fractional r => IpePage r -> IpePage r
- Data.Geometry.Ipe.Types: applyMatrix :: Fractional r => IpeObject r -> IpeObject r
- Data.Geometry.Ipe.Types: applyMatrix' :: (IsTransformable (i r), Matrix ∈ AttributesOf i, Dimension (i r) ~ 2, r ~ NumType (i r)) => IpeObject' i r -> IpeObject' i r
- Data.Geometry.Ipe.Types: attributes :: Lens' (IpeObject' g r) (IpeAttributes g r)
- Data.Geometry.Ipe.Types: basicIpeStyle :: IpeStyle
- Data.Geometry.Ipe.Types: class ToObject i
- Data.Geometry.Ipe.Types: commonAttributes :: Lens' (IpeObject r) (Attributes (AttrMapSym1 r) CommonAttributes)
- Data.Geometry.Ipe.Types: content :: forall r_a3rvE r_a3rzt. Lens (IpePage r_a3rvE) (IpePage r_a3rzt) [IpeObject r_a3rvE] [IpeObject r_a3rzt]
- Data.Geometry.Ipe.Types: data AttrMapSym0 :: (~>) Type ((~>) AttributeUniverse Type)
- Data.Geometry.Ipe.Types: data AttrMapSym1 (r6989586621679826752 :: Type) :: (~>) AttributeUniverse Type
- Data.Geometry.Ipe.Types: data Image r
- Data.Geometry.Ipe.Types: data IpeFile r
- Data.Geometry.Ipe.Types: data IpeObject r
- Data.Geometry.Ipe.Types: data IpePage r
- Data.Geometry.Ipe.Types: data IpePreamble
- Data.Geometry.Ipe.Types: data IpeStyle
- Data.Geometry.Ipe.Types: data IpeSymbol r
- Data.Geometry.Ipe.Types: data MiniPage r
- Data.Geometry.Ipe.Types: data Operation r
- Data.Geometry.Ipe.Types: data PathSegment r
- Data.Geometry.Ipe.Types: data TextLabel r
- Data.Geometry.Ipe.Types: data View
- Data.Geometry.Ipe.Types: encoding :: Lens' IpePreamble (Maybe Text)
- Data.Geometry.Ipe.Types: flattenGroups :: [IpeObject r] -> [IpeObject r]
- Data.Geometry.Ipe.Types: fromContent :: [IpeObject r] -> IpePage r
- Data.Geometry.Ipe.Types: groupItems :: Lens (Group r) (Group s) [IpeObject r] [IpeObject s]
- Data.Geometry.Ipe.Types: imageData :: forall r_a3ps2. Lens' (Image r_a3ps2) ()
- Data.Geometry.Ipe.Types: instance Data.Geometry.Ipe.Types.ToObject Data.Geometry.Ipe.Types.Group
- Data.Geometry.Ipe.Types: instance Data.Geometry.Ipe.Types.ToObject Data.Geometry.Ipe.Types.Image
- Data.Geometry.Ipe.Types: instance Data.Geometry.Ipe.Types.ToObject Data.Geometry.Ipe.Types.IpeSymbol
- Data.Geometry.Ipe.Types: instance Data.Geometry.Ipe.Types.ToObject Data.Geometry.Ipe.Types.MiniPage
- Data.Geometry.Ipe.Types: instance Data.Geometry.Ipe.Types.ToObject Data.Geometry.Ipe.Types.Path
- Data.Geometry.Ipe.Types: instance Data.Geometry.Ipe.Types.ToObject Data.Geometry.Ipe.Types.TextLabel
- Data.Geometry.Ipe.Types: instance Data.Singletons.SuppressUnusedWarnings.SuppressUnusedWarnings (Data.Geometry.Ipe.Types.AttrMapSym1 r6989586621679826752)
- Data.Geometry.Ipe.Types: instance Data.Singletons.SuppressUnusedWarnings.SuppressUnusedWarnings Data.Geometry.Ipe.Types.AttrMapSym0
- Data.Geometry.Ipe.Types: instance Data.String.IsString Data.Geometry.Ipe.Types.LayerName
- Data.Geometry.Ipe.Types: instance GHC.Classes.Eq Data.Geometry.Ipe.Types.IpePreamble
- Data.Geometry.Ipe.Types: instance GHC.Classes.Eq Data.Geometry.Ipe.Types.IpeStyle
- Data.Geometry.Ipe.Types: instance GHC.Classes.Eq Data.Geometry.Ipe.Types.LayerName
- Data.Geometry.Ipe.Types: instance GHC.Classes.Eq Data.Geometry.Ipe.Types.View
- Data.Geometry.Ipe.Types: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Types.Group r)
- Data.Geometry.Ipe.Types: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Types.Image r)
- Data.Geometry.Ipe.Types: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Types.IpeFile r)
- Data.Geometry.Ipe.Types: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Types.IpeObject r)
- Data.Geometry.Ipe.Types: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Types.IpePage r)
- Data.Geometry.Ipe.Types: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Types.IpeSymbol r)
- Data.Geometry.Ipe.Types: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Types.MiniPage r)
- Data.Geometry.Ipe.Types: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Types.Operation r)
- Data.Geometry.Ipe.Types: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Types.Path r)
- Data.Geometry.Ipe.Types: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Types.PathSegment r)
- Data.Geometry.Ipe.Types: instance GHC.Classes.Eq r => GHC.Classes.Eq (Data.Geometry.Ipe.Types.TextLabel r)
- Data.Geometry.Ipe.Types: instance GHC.Classes.Ord Data.Geometry.Ipe.Types.IpePreamble
- Data.Geometry.Ipe.Types: instance GHC.Classes.Ord Data.Geometry.Ipe.Types.LayerName
- Data.Geometry.Ipe.Types: instance GHC.Classes.Ord Data.Geometry.Ipe.Types.View
- Data.Geometry.Ipe.Types: instance GHC.Classes.Ord r => GHC.Classes.Ord (Data.Geometry.Ipe.Types.Image r)
- Data.Geometry.Ipe.Types: instance GHC.Classes.Ord r => GHC.Classes.Ord (Data.Geometry.Ipe.Types.IpeSymbol r)
- Data.Geometry.Ipe.Types: instance GHC.Classes.Ord r => GHC.Classes.Ord (Data.Geometry.Ipe.Types.MiniPage r)
- Data.Geometry.Ipe.Types: instance GHC.Classes.Ord r => GHC.Classes.Ord (Data.Geometry.Ipe.Types.TextLabel r)
- Data.Geometry.Ipe.Types: instance GHC.Read.Read Data.Geometry.Ipe.Types.IpePreamble
- Data.Geometry.Ipe.Types: instance GHC.Read.Read Data.Geometry.Ipe.Types.LayerName
- Data.Geometry.Ipe.Types: instance GHC.Real.Fractional r => Data.Geometry.Transformation.IsTransformable (Data.Geometry.Ipe.Types.Group r)
- Data.Geometry.Ipe.Types: instance GHC.Real.Fractional r => Data.Geometry.Transformation.IsTransformable (Data.Geometry.Ipe.Types.Image r)
- Data.Geometry.Ipe.Types: instance GHC.Real.Fractional r => Data.Geometry.Transformation.IsTransformable (Data.Geometry.Ipe.Types.IpeObject r)
- Data.Geometry.Ipe.Types: instance GHC.Real.Fractional r => Data.Geometry.Transformation.IsTransformable (Data.Geometry.Ipe.Types.IpeSymbol r)
- Data.Geometry.Ipe.Types: instance GHC.Real.Fractional r => Data.Geometry.Transformation.IsTransformable (Data.Geometry.Ipe.Types.MiniPage r)
- Data.Geometry.Ipe.Types: instance GHC.Real.Fractional r => Data.Geometry.Transformation.IsTransformable (Data.Geometry.Ipe.Types.Path r)
- Data.Geometry.Ipe.Types: instance GHC.Real.Fractional r => Data.Geometry.Transformation.IsTransformable (Data.Geometry.Ipe.Types.PathSegment r)
- Data.Geometry.Ipe.Types: instance GHC.Real.Fractional r => Data.Geometry.Transformation.IsTransformable (Data.Geometry.Ipe.Types.TextLabel r)
- Data.Geometry.Ipe.Types: instance GHC.Show.Show Data.Geometry.Ipe.Types.IpePreamble
- Data.Geometry.Ipe.Types: instance GHC.Show.Show Data.Geometry.Ipe.Types.IpeStyle
- Data.Geometry.Ipe.Types: instance GHC.Show.Show Data.Geometry.Ipe.Types.LayerName
- Data.Geometry.Ipe.Types: instance GHC.Show.Show Data.Geometry.Ipe.Types.View
- Data.Geometry.Ipe.Types: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Types.Group r)
- Data.Geometry.Ipe.Types: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Types.Image r)
- Data.Geometry.Ipe.Types: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Types.IpeFile r)
- Data.Geometry.Ipe.Types: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Types.IpeObject r)
- Data.Geometry.Ipe.Types: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Types.IpePage r)
- Data.Geometry.Ipe.Types: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Types.IpeSymbol r)
- Data.Geometry.Ipe.Types: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Types.MiniPage r)
- Data.Geometry.Ipe.Types: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Types.Operation r)
- Data.Geometry.Ipe.Types: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Types.Path r)
- Data.Geometry.Ipe.Types: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Types.PathSegment r)
- Data.Geometry.Ipe.Types: instance GHC.Show.Show r => GHC.Show.Show (Data.Geometry.Ipe.Types.TextLabel r)
- Data.Geometry.Ipe.Types: ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r
- Data.Geometry.Ipe.Types: layerNames :: Lens' View [LayerName]
- Data.Geometry.Ipe.Types: layers :: forall r_a3rvE. Lens' (IpePage r_a3rvE) [LayerName]
- Data.Geometry.Ipe.Types: mkIpeObject :: ToObject i => IpeObject' i r -> IpeObject r
- Data.Geometry.Ipe.Types: newtype Group r
- Data.Geometry.Ipe.Types: newtype LayerName
- Data.Geometry.Ipe.Types: newtype Path r
- Data.Geometry.Ipe.Types: pages :: forall r_a3rzS r_a3rF7. Lens (IpeFile r_a3rzS) (IpeFile r_a3rF7) (NonEmpty (IpePage r_a3rzS)) (NonEmpty (IpePage r_a3rF7))
- Data.Geometry.Ipe.Types: pathSegments :: forall r_a3qbg r_a3qlB. Iso (Path r_a3qbg) (Path r_a3qlB) (LSeq 1 (PathSegment r_a3qbg)) (LSeq 1 (PathSegment r_a3qlB))
- Data.Geometry.Ipe.Types: preamble :: forall r_a3rzS. Lens' (IpeFile r_a3rzS) (Maybe IpePreamble)
- Data.Geometry.Ipe.Types: preambleData :: Lens' IpePreamble Text
- Data.Geometry.Ipe.Types: rect :: forall r_a3ps2 r_a3pGH. Lens (Image r_a3ps2) (Image r_a3pGH) (Rectangle () r_a3ps2) (Rectangle () r_a3pGH)
- Data.Geometry.Ipe.Types: singlePageFile :: IpePage r -> IpeFile r
- Data.Geometry.Ipe.Types: singlePageFromContent :: [IpeObject r] -> IpeFile r
- Data.Geometry.Ipe.Types: styleData :: Lens' IpeStyle (Node Text Text)
- Data.Geometry.Ipe.Types: styleName :: Lens' IpeStyle (Maybe Text)
- Data.Geometry.Ipe.Types: styles :: forall r_a3rzS. Lens' (IpeFile r_a3rzS) [IpeStyle]
- Data.Geometry.Ipe.Types: symbolName :: forall r_a3pH1. Lens' (IpeSymbol r_a3pH1) Text
- Data.Geometry.Ipe.Types: symbolPoint :: forall r_a3pH1 r_a3q2a. Lens (IpeSymbol r_a3pH1) (IpeSymbol r_a3q2a) (Point 2 r_a3pH1) (Point 2 r_a3q2a)
- Data.Geometry.Ipe.Types: type AttrMapSym2 (r6989586621679826752 :: Type) (l6989586621679826753 :: AttributeUniverse) = AttrMap r6989586621679826752 l6989586621679826753
- Data.Geometry.Ipe.Types: type Attributes' r = Attributes (AttrMapSym1 r)
- Data.Geometry.Ipe.Types: type IpeAttributes g r = Attributes' r (AttributesOf g)
- Data.Geometry.Ipe.Types: type IpeBitmap = Text
- Data.Geometry.Ipe.Types: type IpeObject' g r = g r :+ IpeAttributes g r
- Data.Geometry.Ipe.Types: type family AttributesOf (t :: * -> *) :: [u]
- Data.Geometry.Ipe.Types: views :: forall r_a3rvE. Lens' (IpePage r_a3rvE) [View]
- Data.Geometry.Ipe.Types: width :: MiniPage t -> t
- Data.Geometry.Ipe.Value: Named :: Text -> IpeValue v
- Data.Geometry.Ipe.Value: Valued :: v -> IpeValue v
- Data.Geometry.Ipe.Value: data IpeValue v
- Data.Geometry.Ipe.Value: instance Data.Foldable.Foldable Data.Geometry.Ipe.Value.IpeValue
- Data.Geometry.Ipe.Value: instance Data.String.IsString (Data.Geometry.Ipe.Value.IpeValue v)
- Data.Geometry.Ipe.Value: instance Data.Traversable.Traversable Data.Geometry.Ipe.Value.IpeValue
- Data.Geometry.Ipe.Value: instance GHC.Base.Functor Data.Geometry.Ipe.Value.IpeValue
- Data.Geometry.Ipe.Value: instance GHC.Classes.Eq v => GHC.Classes.Eq (Data.Geometry.Ipe.Value.IpeValue v)
- Data.Geometry.Ipe.Value: instance GHC.Classes.Ord v => GHC.Classes.Ord (Data.Geometry.Ipe.Value.IpeValue v)
- Data.Geometry.Ipe.Value: instance GHC.Read.Read v => GHC.Read.Read (Data.Geometry.Ipe.Value.IpeValue v)
- Data.Geometry.Ipe.Value: instance GHC.Show.Show v => GHC.Show.Show (Data.Geometry.Ipe.Value.IpeValue v)
- Data.Geometry.Ipe.Writer: addAtts :: Node Text Text -> [(Text, Text)] -> Node Text Text
- Data.Geometry.Ipe.Writer: class IpeWrite t
- Data.Geometry.Ipe.Writer: class IpeWriteText t
- Data.Geometry.Ipe.Writer: combine :: [Node Text Text] -> Maybe (Node Text Text)
- Data.Geometry.Ipe.Writer: fromPolyLine :: PolyLine 2 () r -> Path r
- Data.Geometry.Ipe.Writer: instance (Data.Geometry.Ipe.Attributes.AllSatisfy Data.Geometry.Ipe.Attributes.IpeAttrName rs, Data.Vinyl.TypeLevel.RecAll (Data.Geometry.Ipe.Attributes.Attr f) rs Data.Geometry.Ipe.Writer.IpeWriteText, Data.Geometry.Ipe.Writer.IpeWrite g) => Data.Geometry.Ipe.Writer.IpeWrite (g Data.Ext.:+ Data.Geometry.Ipe.Attributes.Attributes f rs)
- Data.Geometry.Ipe.Writer: instance (Data.Geometry.Ipe.Writer.IpeWrite l, Data.Geometry.Ipe.Writer.IpeWrite r) => Data.Geometry.Ipe.Writer.IpeWrite (Data.Either.Either l r)
- Data.Geometry.Ipe.Writer: instance (Data.Geometry.Ipe.Writer.IpeWriteText l, Data.Geometry.Ipe.Writer.IpeWriteText r) => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Either.Either l r)
- Data.Geometry.Ipe.Writer: instance (Data.Geometry.Ipe.Writer.IpeWriteText r, Data.Geometry.Ipe.Writer.IpeWrite p) => Data.Geometry.Ipe.Writer.IpeWrite (Data.Geometry.PolyLine.PolyLine 2 p r)
- Data.Geometry.Ipe.Writer: instance Data.Fixed.HasResolution p => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Fixed.Fixed p)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWrite ()
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWrite Data.Geometry.Ipe.Types.IpePreamble
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWrite Data.Geometry.Ipe.Types.IpeStyle
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWrite Data.Geometry.Ipe.Types.LayerName
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWrite Data.Geometry.Ipe.Types.View
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWrite t => Data.Geometry.Ipe.Writer.IpeWrite [t]
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText ()
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText Data.Geometry.Ipe.Attributes.FillType
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText Data.Geometry.Ipe.Attributes.PinType
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText Data.Geometry.Ipe.Attributes.TransformationTypes
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText Data.Geometry.Ipe.Types.LayerName
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText Data.Text.Internal.Text
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText GHC.Integer.Type.Integer
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText GHC.Types.Double
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText GHC.Types.Int
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWrite (Data.Geometry.Ipe.Types.Group r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWrite (Data.Geometry.Ipe.Types.Image r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWrite (Data.Geometry.Ipe.Types.IpeFile r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWrite (Data.Geometry.Ipe.Types.IpeObject r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWrite (Data.Geometry.Ipe.Types.IpePage r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWrite (Data.Geometry.Ipe.Types.IpeSymbol r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWrite (Data.Geometry.Ipe.Types.MiniPage r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWrite (Data.Geometry.Ipe.Types.Path r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWrite (Data.Geometry.Ipe.Types.TextLabel r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWrite (Data.Geometry.LineSegment.LineSegment 2 p r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Colour.RGB.RGB r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Geometry.Ipe.Attributes.IpeArrow r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Geometry.Ipe.Attributes.IpeDash r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Geometry.Ipe.Attributes.IpePen r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Geometry.Ipe.Attributes.IpeSize r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Geometry.Ipe.Color.IpeColor r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Geometry.Ipe.Types.Operation r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Geometry.Ipe.Types.Path r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Geometry.Ipe.Types.PathSegment r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Geometry.Point.Point 2 r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Geometry.PolyLine.PolyLine 2 () r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Geometry.Polygon.Polygon t () r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText r => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Geometry.Transformation.Matrix 3 3 r)
- Data.Geometry.Ipe.Writer: instance Data.Geometry.Ipe.Writer.IpeWriteText v => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Geometry.Ipe.Value.IpeValue v)
- Data.Geometry.Ipe.Writer: instance GHC.Real.Integral a => Data.Geometry.Ipe.Writer.IpeWriteText (GHC.Real.Ratio a)
- Data.Geometry.Ipe.Writer: instance forall u (f :: u Data.Singletons.Internal.~> *) (at :: u). Data.Geometry.Ipe.Writer.IpeWriteText (Data.Singletons.Internal.Apply f at) => Data.Geometry.Ipe.Writer.IpeWriteText (Data.Geometry.Ipe.Attributes.Attr f at)
- Data.Geometry.Ipe.Writer: ipeWrite :: IpeWrite t => t -> Maybe (Node Text Text)
- Data.Geometry.Ipe.Writer: ipeWriteAttrs :: (AllSatisfy IpeAttrName rs, RecAll (Attr f) rs IpeWriteText) => Attributes f rs -> [(Text, Text)]
- Data.Geometry.Ipe.Writer: ipeWriteRec :: RecAll f rs IpeWrite => Rec f rs -> [Node Text Text]
- Data.Geometry.Ipe.Writer: ipeWriteText :: IpeWriteText t => t -> Maybe Text
- Data.Geometry.Ipe.Writer: mAddAtts :: Maybe (Node Text Text) -> [(Text, Text)] -> Maybe (Node Text Text)
- Data.Geometry.Ipe.Writer: printAsIpeSelection :: IpeWrite t => t -> IO ()
- Data.Geometry.Ipe.Writer: toIpeSelectionXML :: IpeWrite t => t -> Maybe ByteString
- Data.Geometry.Ipe.Writer: toIpeXML :: IpeWrite t => t -> Maybe ByteString
- Data.Geometry.Ipe.Writer: unlines' :: [Maybe Text] -> Maybe Text
- Data.Geometry.Ipe.Writer: unwords' :: [Maybe Text] -> Maybe Text
- Data.Geometry.Ipe.Writer: writeAttrValues :: RecAll f rs IpeWriteText => Rec f rs -> Rec (Const (Maybe Text)) rs
- Data.Geometry.Ipe.Writer: writeByShow :: Show t => t -> Maybe Text
- Data.Geometry.Ipe.Writer: writeIpeFile :: IpeWriteText r => FilePath -> IpeFile r -> IO ()
- Data.Geometry.Ipe.Writer: writeIpeFile' :: IpeWrite t => t -> FilePath -> IO ()
- Data.Geometry.Ipe.Writer: writeIpePage :: IpeWriteText r => FilePath -> IpePage r -> IO ()
- Data.Geometry.Line: instance (GHC.Classes.Ord r, GHC.Real.Fractional r) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.Line.Internal.Line 2 r) (Data.Geometry.Boundary.Boundary (Data.Geometry.Box.Internal.Rectangle p r))
- Data.Geometry.Line: instance (GHC.Classes.Ord r, GHC.Real.Fractional r) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.Line.Internal.Line 2 r) (Data.Geometry.Box.Internal.Rectangle p r)
- Data.Geometry.Line.Internal: instance (GHC.Classes.Eq r, GHC.Real.Fractional r) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.Line.Internal.Line 2 r) (Data.Geometry.Line.Internal.Line 2 r)
- Data.Geometry.LineSegment: instance (GHC.Classes.Ord r, GHC.Real.Fractional r) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.LineSegment.LineSegment 2 p r) (Data.Geometry.Line.Internal.Line 2 r)
- Data.Geometry.LineSegment: instance (GHC.Classes.Ord r, GHC.Real.Fractional r) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.LineSegment.LineSegment 2 p r) (Data.Geometry.LineSegment.LineSegment 2 p r)
- Data.Geometry.PlanarSubdivision.Basic: data Dart s
- Data.Geometry.PlanarSubdivision.Basic: data PlanarGraph s (w :: World) v e f
- Data.Geometry.PlanarSubdivision.Basic: instance (Data.Aeson.Types.FromJSON.FromJSON h, Data.Aeson.Types.FromJSON.FromJSON f) => Data.Aeson.Types.FromJSON.FromJSON (Data.Geometry.PlanarSubdivision.Basic.FaceData h f)
- Data.Geometry.PlanarSubdivision.Basic: instance (Data.Aeson.Types.ToJSON.ToJSON h, Data.Aeson.Types.ToJSON.ToJSON f) => Data.Aeson.Types.ToJSON.ToJSON (Data.Geometry.PlanarSubdivision.Basic.FaceData h f)
- Data.Geometry.PlanarSubdivision.Basic: instance (GHC.Classes.Eq h, GHC.Classes.Eq f) => GHC.Classes.Eq (Data.Geometry.PlanarSubdivision.Basic.FaceData h f)
- Data.Geometry.PlanarSubdivision.Basic: instance (GHC.Classes.Ord h, GHC.Classes.Ord f) => GHC.Classes.Ord (Data.Geometry.PlanarSubdivision.Basic.FaceData h f)
- Data.Geometry.PlanarSubdivision.Basic: instance (GHC.Show.Show h, GHC.Show.Show f) => GHC.Show.Show (Data.Geometry.PlanarSubdivision.Basic.FaceData h f)
- Data.Geometry.PlanarSubdivision.Basic: instance Data.Bifunctor.Bifunctor Data.Geometry.PlanarSubdivision.Basic.FaceData
- Data.Geometry.PlanarSubdivision.Basic: instance Data.Foldable.Foldable (Data.Geometry.PlanarSubdivision.Basic.FaceData h)
- Data.Geometry.PlanarSubdivision.Basic: instance Data.Traversable.Traversable (Data.Geometry.PlanarSubdivision.Basic.FaceData h)
- Data.Geometry.PlanarSubdivision.Basic: instance GHC.Base.Functor (Data.Geometry.PlanarSubdivision.Basic.FaceData h)
- Data.Geometry.PlanarSubdivision.Basic: instance GHC.Generics.Generic (Data.Geometry.PlanarSubdivision.Basic.FaceData h f)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k) ia a. (GHC.Classes.Eq ia, GHC.Classes.Eq a) => GHC.Classes.Eq (Data.Geometry.PlanarSubdivision.Basic.Raw s ia a)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k) ia a. (GHC.Show.Show ia, GHC.Show.Show a) => GHC.Show.Show (Data.Geometry.PlanarSubdivision.Basic.Raw s ia a)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k) ia a. GHC.Generics.Generic (Data.Geometry.PlanarSubdivision.Basic.Raw s ia a)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k) ia. Data.Foldable.Foldable (Data.Geometry.PlanarSubdivision.Basic.Raw s ia)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k) ia. Data.Traversable.Traversable (Data.Geometry.PlanarSubdivision.Basic.Raw s ia)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k) ia. GHC.Base.Functor (Data.Geometry.PlanarSubdivision.Basic.Raw s ia)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k) v e f r. Data.PlanarGraph.HasDataOf (Data.Geometry.PlanarSubdivision.Basic.PlanarSubdivision s v e f r) (Data.PlanarGraph.Dart s)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k) v e f r. Data.PlanarGraph.HasDataOf (Data.Geometry.PlanarSubdivision.Basic.PlanarSubdivision s v e f r) (Data.PlanarGraph.FaceId' s)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k) v e f r. Data.PlanarGraph.HasDataOf (Data.Geometry.PlanarSubdivision.Basic.PlanarSubdivision s v e f r) (Data.PlanarGraph.VertexId' s)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k). Data.Aeson.Types.FromJSON.FromJSON (Data.Geometry.PlanarSubdivision.Basic.ComponentId s)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k). Data.Aeson.Types.ToJSON.ToJSON (Data.Geometry.PlanarSubdivision.Basic.ComponentId s)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k). GHC.Classes.Eq (Data.Geometry.PlanarSubdivision.Basic.ComponentId s)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k). GHC.Classes.Ord (Data.Geometry.PlanarSubdivision.Basic.ComponentId s)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k). GHC.Enum.Bounded (Data.Geometry.PlanarSubdivision.Basic.ComponentId s)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k). GHC.Enum.Enum (Data.Geometry.PlanarSubdivision.Basic.ComponentId s)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k). GHC.Generics.Generic (Data.Geometry.PlanarSubdivision.Basic.ComponentId s)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k). GHC.Show.Show (Data.Geometry.PlanarSubdivision.Basic.ComponentId s)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k ia a (s :: k). (Data.Aeson.Types.FromJSON.FromJSON ia, Data.Aeson.Types.FromJSON.FromJSON a) => Data.Aeson.Types.FromJSON.FromJSON (Data.Geometry.PlanarSubdivision.Basic.Raw s ia a)
- Data.Geometry.PlanarSubdivision.Basic: instance forall k ia a (s :: k). (Data.Aeson.Types.ToJSON.ToJSON ia, Data.Aeson.Types.ToJSON.ToJSON a) => Data.Aeson.Types.ToJSON.ToJSON (Data.Geometry.PlanarSubdivision.Basic.Raw s ia a)
- Data.Geometry.PlanarSubdivision.Basic: newtype FaceId s w
- Data.Geometry.PlanarSubdivision.Basic: newtype VertexId s (w :: World)
- Data.Geometry.PlanarSubdivision.Draw: drawColoredPlanarSubdivision :: IpeOut (PlanarSubdivision s v e (Maybe (IpeColor r)) r) Group r
- Data.Geometry.PlanarSubdivision.Draw: drawPlanarSubdivision :: forall s r. IpeOut (PlanarSubdivision s (Maybe (IpeAttributes IpeSymbol r)) (Maybe (IpeAttributes Path r)) (Maybe (IpeAttributes Path r)) r) Group r
- Data.Geometry.PlanarSubdivision.Draw: drawPlanarSubdivision' :: forall s v e f r. IpeOut (PlanarSubdivision s v e f r) Group r
- Data.Geometry.PlanarSubdivision.Draw: drawPlanarSubdivisionWith :: (ToObject vi, ToObject ei, ToObject fi) => MIO (VertexId' s, VertexData r v) vi r -> MIO (Dart s, LineSegment 2 v r :+ e) ei r -> MIO (FaceId' s, SomePolygon v r :+ f) fi r -> IpeOut (PlanarSubdivision s v e f r) Group r
- Data.Geometry.PlanarSubdivision.Draw: type MIO g i r = g -> Maybe (IpeObject' i r)
- Data.Geometry.Properties: NoIntersection :: NoIntersection
- Data.Geometry.Properties: class IsIntersectableWith g h
- Data.Geometry.Properties: class IsUnionableWith g h
- Data.Geometry.Properties: coRec :: a ∈ as => a -> CoRec Identity as
- Data.Geometry.Properties: data NoIntersection
- Data.Geometry.Properties: defaultNonEmptyIntersection :: forall g h proxy. (NoIntersection ∈ IntersectionOf g h, RecApplicative (IntersectionOf g h)) => proxy g -> proxy h -> Intersection g h -> Bool
- Data.Geometry.Properties: instance GHC.Classes.Eq Data.Geometry.Properties.NoIntersection
- Data.Geometry.Properties: instance GHC.Classes.Ord Data.Geometry.Properties.NoIntersection
- Data.Geometry.Properties: instance GHC.Read.Read Data.Geometry.Properties.NoIntersection
- Data.Geometry.Properties: instance GHC.Show.Show Data.Geometry.Properties.NoIntersection
- Data.Geometry.Properties: intersect :: IsIntersectableWith g h => g -> h -> Intersection g h
- Data.Geometry.Properties: intersects :: IsIntersectableWith g h => g -> h -> Bool
- Data.Geometry.Properties: nonEmptyIntersection :: (IsIntersectableWith g h, NoIntersection ∈ IntersectionOf g h, RecApplicative (IntersectionOf g h)) => proxy g -> proxy h -> Intersection g h -> Bool
- Data.Geometry.Properties: type AlwaysTrueIntersection g h = RecApplicative (IntersectionOf g h)
- Data.Geometry.Properties: type Intersection g h = CoRec Identity (IntersectionOf g h)
- Data.Geometry.Properties: union :: IsUnionableWith g h => g -> h -> Union g h
- Data.Geometry.Slab: instance (GHC.Real.Fractional r, GHC.Classes.Ord r, Data.Geometry.Slab.HasBoundingLines o) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.Line.Internal.Line 2 r) (Data.Geometry.Slab.Slab o a r)
- Data.Geometry.Slab: instance (GHC.Real.Fractional r, GHC.Classes.Ord r, Data.Geometry.Slab.HasBoundingLines o) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.LineSegment.LineSegment 2 a r) (Data.Geometry.Slab.Slab o a r)
- Data.Geometry.Slab: instance (GHC.Real.Fractional r, GHC.Classes.Ord r, Data.Geometry.Slab.HasBoundingLines o) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.SubLine.SubLine 2 a r r) (Data.Geometry.Slab.Slab o a r)
- Data.Geometry.Slab: instance Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.Slab.Slab 'Data.Geometry.Slab.Horizontal a r) (Data.Geometry.Slab.Slab 'Data.Geometry.Slab.Vertical a r)
- Data.Geometry.Slab: instance GHC.Classes.Ord r => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.Slab.Slab o a r) (Data.Geometry.Slab.Slab o a r)
- Data.Geometry.SubLine: instance (GHC.Classes.Ord r, GHC.Real.Fractional r) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.SubLine.SubLine 2 p (Data.UnBounded.UnBounded r) r) (Data.Geometry.SubLine.SubLine 2 p (Data.UnBounded.UnBounded r) r)
- Data.Geometry.SubLine: instance (GHC.Classes.Ord r, GHC.Real.Fractional r) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.SubLine.SubLine 2 p r r) (Data.Geometry.SubLine.SubLine 2 p r r)
- Data.Geometry.Triangle: instance (GHC.Real.Fractional r, GHC.Classes.Ord r) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.Line.Internal.Line 2 r) (Data.Geometry.Triangle.Triangle 2 p r)
- Data.Geometry.Triangle: instance (GHC.Real.Fractional r, GHC.Classes.Ord r) => Data.Geometry.Properties.IsIntersectableWith (Data.Geometry.Line.Internal.Line 3 r) (Data.Geometry.Triangle.Triangle 3 p r)
- Data.Geometry.Vector: infixl 6 .-^
- Data.LSeq: (<|) :: a -> LSeq n a -> LSeq (1 + n) a
- Data.LSeq: (><) :: LSeq n a -> LSeq m a -> LSeq (n + m) a
- Data.LSeq: (|>) :: LSeq n a -> a -> LSeq (1 + n) a
- Data.LSeq: [:<] :: a -> LSeq n a -> ViewL (1 + n) a
- Data.LSeq: [:>] :: LSeq n a -> a -> ViewR (1 + n) a
- Data.LSeq: adjust :: (a -> a) -> Int -> LSeq n a -> LSeq n a
- Data.LSeq: append :: LSeq n a -> LSeq m a -> LSeq (n + m) a
- Data.LSeq: data LSeq (n :: Nat) a
- Data.LSeq: data ViewL n a
- Data.LSeq: data ViewR n a
- Data.LSeq: drop :: Int -> LSeq n a -> LSeq 0 a
- Data.LSeq: empty :: LSeq 0 a
- Data.LSeq: eval :: forall proxy n m a. KnownNat n => proxy n -> LSeq m a -> Maybe (LSeq n a)
- Data.LSeq: forceLSeq :: KnownNat n => proxy n -> LSeq m a -> LSeq n a
- Data.LSeq: fromList :: Foldable f => f a -> LSeq 0 a
- Data.LSeq: fromNonEmpty :: NonEmpty a -> LSeq 1 a
- Data.LSeq: fromSeq :: Seq a -> LSeq 0 a
- Data.LSeq: head :: LSeq (1 + n) a -> a
- Data.LSeq: index :: LSeq n a -> Int -> a
- Data.LSeq: infix 5 ><
- Data.LSeq: infixl 5 :|>
- Data.LSeq: infixr 5 :<<
- Data.LSeq: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Data.LSeq.LSeq n a)
- Data.LSeq: instance Control.Lens.At.Ixed (Data.LSeq.LSeq n a)
- Data.LSeq: instance Data.Foldable.Foldable (Data.LSeq.LSeq n)
- Data.LSeq: instance Data.Foldable.Foldable (Data.LSeq.ViewL n)
- Data.LSeq: instance Data.Foldable.Foldable (Data.LSeq.ViewR n)
- Data.LSeq: instance Data.Traversable.Traversable (Data.LSeq.LSeq n)
- Data.LSeq: instance Data.Traversable.Traversable (Data.LSeq.ViewL n)
- Data.LSeq: instance Data.Traversable.Traversable (Data.LSeq.ViewR n)
- Data.LSeq: instance GHC.Base.Functor (Data.LSeq.LSeq n)
- Data.LSeq: instance GHC.Base.Functor (Data.LSeq.ViewL n)
- Data.LSeq: instance GHC.Base.Functor (Data.LSeq.ViewR n)
- Data.LSeq: instance GHC.Base.Monoid (Data.LSeq.LSeq 0 a)
- Data.LSeq: instance GHC.Base.Semigroup (Data.LSeq.LSeq n a)
- Data.LSeq: instance GHC.Base.Semigroup (Data.LSeq.ViewL n a)
- Data.LSeq: instance GHC.Base.Semigroup (Data.LSeq.ViewR n a)
- Data.LSeq: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.LSeq.LSeq n a)
- Data.LSeq: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.LSeq.ViewL n a)
- Data.LSeq: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.LSeq.ViewR n a)
- Data.LSeq: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.LSeq.LSeq n a)
- Data.LSeq: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.LSeq.ViewL n a)
- Data.LSeq: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.LSeq.ViewR n a)
- Data.LSeq: instance GHC.Generics.Generic (Data.LSeq.LSeq n a)
- Data.LSeq: instance GHC.Read.Read a => GHC.Read.Read (Data.LSeq.LSeq n a)
- Data.LSeq: instance GHC.Show.Show a => GHC.Show.Show (Data.LSeq.LSeq n a)
- Data.LSeq: instance GHC.Show.Show a => GHC.Show.Show (Data.LSeq.ViewL n a)
- Data.LSeq: instance GHC.Show.Show a => GHC.Show.Show (Data.LSeq.ViewR n a)
- Data.LSeq: last :: LSeq (1 + n) a -> a
- Data.LSeq: mapWithIndex :: (Int -> a -> b) -> LSeq n a -> LSeq n b
- Data.LSeq: partition :: (a -> Bool) -> LSeq n a -> (LSeq 0 a, LSeq 0 a)
- Data.LSeq: promise :: LSeq m a -> LSeq n a
- Data.LSeq: take :: Int -> LSeq n a -> LSeq 0 a
- Data.LSeq: toNonEmpty :: LSeq (1 + n) a -> NonEmpty a
- Data.LSeq: toSeq :: LSeq n a -> Seq a
- Data.LSeq: unstableSort :: Ord a => LSeq n a -> LSeq n a
- Data.LSeq: unstableSortBy :: (a -> a -> Ordering) -> LSeq n a -> LSeq n a
- Data.LSeq: viewl :: LSeq (1 + n) a -> ViewL (1 + n) a
- Data.LSeq: viewr :: LSeq (1 + n) a -> ViewR (1 + n) a
- Data.OrdSeq: Elem :: a -> Elem a
- Data.OrdSeq: Key :: !a -> Key a
- Data.OrdSeq: NoKey :: Key a
- Data.OrdSeq: OrdSeq :: FingerTree (Key a) (Elem a) -> OrdSeq a
- Data.OrdSeq: [_asFingerTree] :: OrdSeq a -> FingerTree (Key a) (Elem a)
- Data.OrdSeq: [getElem] :: Elem a -> a
- Data.OrdSeq: [getKey] :: Key a -> !a
- Data.OrdSeq: data Key a
- Data.OrdSeq: deleteAll :: Ord a => a -> OrdSeq a -> OrdSeq a
- Data.OrdSeq: deleteAllBy :: Compare a -> a -> OrdSeq a -> OrdSeq a
- Data.OrdSeq: fromAscList' :: [a] -> OrdSeq a
- Data.OrdSeq: fromListBy :: Compare a -> [a] -> OrdSeq a
- Data.OrdSeq: fromListByOrd :: Ord a => [a] -> OrdSeq a
- Data.OrdSeq: insert :: Ord a => a -> OrdSeq a -> OrdSeq a
- Data.OrdSeq: insertBy :: Compare a -> a -> OrdSeq a -> OrdSeq a
- Data.OrdSeq: instance Data.FingerTree.Measured (Data.OrdSeq.Key a) (Data.OrdSeq.Elem a)
- Data.OrdSeq: instance Data.Foldable.Foldable Data.OrdSeq.Elem
- Data.OrdSeq: instance Data.Foldable.Foldable Data.OrdSeq.OrdSeq
- Data.OrdSeq: instance Data.Traversable.Traversable Data.OrdSeq.Elem
- Data.OrdSeq: instance GHC.Base.Functor Data.OrdSeq.Elem
- Data.OrdSeq: instance GHC.Base.Monoid (Data.OrdSeq.Key a)
- Data.OrdSeq: instance GHC.Base.Monoid (Data.OrdSeq.OrdSeq a)
- Data.OrdSeq: instance GHC.Base.Semigroup (Data.OrdSeq.Key a)
- Data.OrdSeq: instance GHC.Base.Semigroup (Data.OrdSeq.OrdSeq a)
- Data.OrdSeq: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.OrdSeq.Elem a)
- Data.OrdSeq: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.OrdSeq.Key a)
- Data.OrdSeq: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.OrdSeq.OrdSeq a)
- Data.OrdSeq: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.OrdSeq.Elem a)
- Data.OrdSeq: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.OrdSeq.Key a)
- Data.OrdSeq: instance GHC.Show.Show a => GHC.Show.Show (Data.OrdSeq.Elem a)
- Data.OrdSeq: instance GHC.Show.Show a => GHC.Show.Show (Data.OrdSeq.Key a)
- Data.OrdSeq: instance GHC.Show.Show a => GHC.Show.Show (Data.OrdSeq.OrdSeq a)
- Data.OrdSeq: liftCmp :: (a -> a -> Ordering) -> Key a -> Key a -> Ordering
- Data.OrdSeq: lookupBy :: Compare a -> a -> OrdSeq a -> Maybe a
- Data.OrdSeq: lookupMax :: OrdSeq a -> Maybe a
- Data.OrdSeq: lookupMin :: OrdSeq a -> Maybe a
- Data.OrdSeq: mapMonotonic :: (a -> b) -> OrdSeq a -> OrdSeq b
- Data.OrdSeq: maxView :: OrdSeq a -> Maybe (a, OrdSeq a)
- Data.OrdSeq: memberBy :: Compare a -> a -> OrdSeq a -> Bool
- Data.OrdSeq: minView :: OrdSeq a -> Maybe (a, OrdSeq a)
- Data.OrdSeq: newtype Elem a
- Data.OrdSeq: newtype OrdSeq a
- Data.OrdSeq: splitBy :: Compare a -> a -> OrdSeq a -> (OrdSeq a, OrdSeq a, OrdSeq a)
- Data.OrdSeq: splitMonotonic :: (a -> Bool) -> OrdSeq a -> (OrdSeq a, OrdSeq a)
- Data.OrdSeq: splitOn :: Ord b => (a -> b) -> b -> OrdSeq a -> (OrdSeq a, OrdSeq a, OrdSeq a)
- Data.OrdSeq: type Compare a = a -> a -> Ordering
- Data.OrdSeq: viewl :: OrdSeq a -> ViewL OrdSeq a
- Data.OrdSeq: viewr :: OrdSeq a -> ViewR OrdSeq a
- Data.Permutation: Permutation :: Vector (Orbit a) -> Vector (Int, Int) -> Permutation a
- Data.Permutation: [_indexes] :: Permutation a -> Vector (Int, Int)
- Data.Permutation: [_orbits] :: Permutation a -> Vector (Orbit a)
- Data.Permutation: apply :: Enum a => Permutation a -> a -> a
- Data.Permutation: cycleOf :: Enum a => Permutation a -> a -> Orbit a
- Data.Permutation: cycleRep :: (Vector v a, Enum a, Eq a) => v a -> (a -> a) -> Permutation a
- Data.Permutation: data Permutation a
- Data.Permutation: elems :: Permutation a -> Vector a
- Data.Permutation: genIndexes :: Enum a => Int -> [[a]] -> Vector (Int, Int)
- Data.Permutation: indexes :: forall a_a1SkN. Lens' (Permutation a_a1SkN) (Vector (Int, Int))
- Data.Permutation: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Data.Permutation.Permutation a)
- Data.Permutation: instance Data.Foldable.Foldable Data.Permutation.Permutation
- Data.Permutation: instance Data.Traversable.Traversable Data.Permutation.Permutation
- Data.Permutation: instance GHC.Base.Functor Data.Permutation.Permutation
- Data.Permutation: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Permutation.Permutation a)
- Data.Permutation: instance GHC.Generics.Generic (Data.Permutation.Permutation a)
- Data.Permutation: instance GHC.Show.Show a => GHC.Show.Show (Data.Permutation.Permutation a)
- Data.Permutation: lookupIdx :: Enum a => Permutation a -> a -> (Int, Int)
- Data.Permutation: next :: Vector v a => v a -> Int -> a
- Data.Permutation: orbitFrom :: Eq a => a -> (a -> a) -> [a]
- Data.Permutation: orbits :: forall a_a1SkN a_a1SpL. Lens (Permutation a_a1SkN) (Permutation a_a1SpL) (Vector (Orbit a_a1SkN)) (Vector (Orbit a_a1SpL))
- Data.Permutation: previous :: Vector v a => v a -> Int -> a
- Data.Permutation: size :: Permutation a -> Int
- Data.Permutation: toCycleRep :: Enum a => Int -> [[a]] -> Permutation a
- Data.Permutation: type Orbit a = Vector a
- Data.PlanarGraph: Arc :: Int -> Arc s
- Data.PlanarGraph: Dart :: !Arc s -> !Direction -> Dart s
- Data.PlanarGraph: Dual :: World
- Data.PlanarGraph: FaceId :: VertexId s (DualOf w) -> FaceId s w
- Data.PlanarGraph: Negative :: Direction
- Data.PlanarGraph: Positive :: Direction
- Data.PlanarGraph: Primal :: World
- Data.PlanarGraph: VertexId :: Int -> VertexId s
- Data.PlanarGraph: [_arc] :: Dart s -> !Arc s
- Data.PlanarGraph: [_direction] :: Dart s -> !Direction
- Data.PlanarGraph: [_unArc] :: Arc s -> Int
- Data.PlanarGraph: [_unFaceId] :: FaceId s w -> VertexId s (DualOf w)
- Data.PlanarGraph: [_unVertexId] :: VertexId s -> Int
- Data.PlanarGraph: allDarts :: [Dart s]
- Data.PlanarGraph: arc :: forall s_a1Vwo s_a1W0l. Lens (Dart s_a1Vwo) (Dart s_a1W0l) (Arc s_a1Vwo) (Arc s_a1W0l)
- Data.PlanarGraph: boundary :: FaceId s w -> PlanarGraph s w v e f -> Vector (Dart s)
- Data.PlanarGraph: boundary' :: Dart s -> PlanarGraph s w v e f -> Vector (Dart s)
- Data.PlanarGraph: boundaryDart :: FaceId s w -> PlanarGraph s w v e f -> Dart s
- Data.PlanarGraph: boundaryVertices :: FaceId s w -> PlanarGraph s w v e f -> Vector (VertexId s w)
- Data.PlanarGraph: buildEdgeOracle :: forall f s w e. Foldable f => [(VertexId s w, f (VertexId s w :+ e))] -> EdgeOracle s w e
- Data.PlanarGraph: buildFromJSON :: Vector (VertexId' s :+ v) -> Vector ((VertexId' s, VertexId' s) :+ e) -> Vector (FaceId' s :+ f) -> [(VertexId' s, Vector (VertexId' s))] -> PlanarGraph s Primal v e f
- Data.PlanarGraph: class HasDataOf g i where {
- Data.PlanarGraph: dartData :: Lens (PlanarGraph s w v e f) (PlanarGraph s w v e' f) (Vector (Dart s, e)) (Vector (Dart s, e'))
- Data.PlanarGraph: darts :: PlanarGraph s w v e f -> Vector (Dart s, e)
- Data.PlanarGraph: darts' :: PlanarGraph s w v e f -> Vector (Dart s)
- Data.PlanarGraph: data Dart s
- Data.PlanarGraph: data Direction
- Data.PlanarGraph: data EdgeOracle s w a
- Data.PlanarGraph: data PlanarGraph s (w :: World) v e f
- Data.PlanarGraph: data World
- Data.PlanarGraph: dataOf :: HasDataOf g i => i -> Lens' g (DataOf g i)
- Data.PlanarGraph: direction :: forall s_a1Vwo. Lens' (Dart s_a1Vwo) Direction
- Data.PlanarGraph: dual :: Getter (PlanarGraph s w v e f) (PlanarGraph s (DualOf w) f e v)
- Data.PlanarGraph: edgeData :: Lens (PlanarGraph s w v e f) (PlanarGraph s w v e' f) (Vector (Dart s, e)) (Vector (Dart s, e'))
- Data.PlanarGraph: edgeOracle :: PlanarGraph s w v e f -> EdgeOracle s w (Dart s)
- Data.PlanarGraph: edges :: PlanarGraph s w v e f -> Vector (Dart s, e)
- Data.PlanarGraph: edges' :: PlanarGraph s w v e f -> Vector (Dart s)
- Data.PlanarGraph: embedding :: Getter (PlanarGraph s w v e f) (Permutation (Dart s))
- Data.PlanarGraph: endPointData :: Dart s -> PlanarGraph s w v e f -> (v, v)
- Data.PlanarGraph: endPointDataOf :: Dart s -> Getter (PlanarGraph s w v e f) (v, v)
- Data.PlanarGraph: endPoints :: Dart s -> PlanarGraph s w v e f -> (VertexId s w, VertexId s w)
- Data.PlanarGraph: faceData :: Lens (PlanarGraph s w v e f) (PlanarGraph s w v e f') (Vector f) (Vector f')
- Data.PlanarGraph: faces :: PlanarGraph s w v e f -> Vector (FaceId s w, f)
- Data.PlanarGraph: faces' :: PlanarGraph s w v e f -> Vector (FaceId s w)
- Data.PlanarGraph: findDart :: VertexId s w -> VertexId s w -> EdgeOracle s w (Dart s) -> Maybe (Dart s)
- Data.PlanarGraph: findEdge :: VertexId s w -> VertexId s w -> EdgeOracle s w a -> Maybe a
- Data.PlanarGraph: fromAdjacencyLists :: forall s w h. (Foldable h, Functor h) => [(VertexId s w, h (VertexId s w))] -> PlanarGraph s w () () ()
- Data.PlanarGraph: hasEdge :: VertexId s w -> VertexId s w -> EdgeOracle s w a -> Bool
- Data.PlanarGraph: headOf :: Dart s -> PlanarGraph s w v e f -> VertexId s w
- Data.PlanarGraph: incidentEdges :: VertexId s w -> PlanarGraph s w v e f -> Vector (Dart s)
- Data.PlanarGraph: incomingEdges :: VertexId s w -> PlanarGraph s w v e f -> Vector (Dart s)
- Data.PlanarGraph: instance Control.DeepSeq.NFData Data.PlanarGraph.Direction
- Data.PlanarGraph: instance GHC.Classes.Eq Data.PlanarGraph.Direction
- Data.PlanarGraph: instance GHC.Classes.Eq Data.PlanarGraph.World
- Data.PlanarGraph: instance GHC.Classes.Ord Data.PlanarGraph.Direction
- Data.PlanarGraph: instance GHC.Enum.Bounded Data.PlanarGraph.Direction
- Data.PlanarGraph: instance GHC.Enum.Enum Data.PlanarGraph.Direction
- Data.PlanarGraph: instance GHC.Generics.Generic Data.PlanarGraph.Direction
- Data.PlanarGraph: instance GHC.Read.Read Data.PlanarGraph.Direction
- Data.PlanarGraph: instance GHC.Show.Show Data.PlanarGraph.Direction
- Data.PlanarGraph: instance GHC.Show.Show Data.PlanarGraph.World
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World) a. GHC.Classes.Eq a => GHC.Classes.Eq (Data.PlanarGraph.EdgeOracle s w a)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World) a. GHC.Show.Show a => GHC.Show.Show (Data.PlanarGraph.EdgeOracle s w a)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World) v e f. Data.PlanarGraph.HasDataOf (Data.PlanarGraph.PlanarGraph s w v e f) (Data.PlanarGraph.Dart s)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World) v e f. Data.PlanarGraph.HasDataOf (Data.PlanarGraph.PlanarGraph s w v e f) (Data.PlanarGraph.FaceId s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World) v e f. Data.PlanarGraph.HasDataOf (Data.PlanarGraph.PlanarGraph s w v e f) (Data.PlanarGraph.VertexId s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World) v e f. GHC.Generics.Generic (Data.PlanarGraph.PlanarGraph s w v e f)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). Control.DeepSeq.NFData (Data.PlanarGraph.VertexId s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). Data.Aeson.Types.FromJSON.FromJSON (Data.PlanarGraph.FaceId s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). Data.Aeson.Types.FromJSON.FromJSON (Data.PlanarGraph.VertexId s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). Data.Aeson.Types.ToJSON.ToJSON (Data.PlanarGraph.FaceId s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). Data.Aeson.Types.ToJSON.ToJSON (Data.PlanarGraph.VertexId s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). Data.Foldable.Foldable (Data.PlanarGraph.EdgeOracle s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). Data.Traversable.Traversable (Data.PlanarGraph.EdgeOracle s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). GHC.Base.Functor (Data.PlanarGraph.EdgeOracle s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). GHC.Classes.Eq (Data.PlanarGraph.FaceId s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). GHC.Classes.Eq (Data.PlanarGraph.VertexId s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). GHC.Classes.Ord (Data.PlanarGraph.FaceId s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). GHC.Classes.Ord (Data.PlanarGraph.VertexId s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). GHC.Enum.Enum (Data.PlanarGraph.FaceId s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). GHC.Enum.Enum (Data.PlanarGraph.VertexId s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). GHC.Generics.Generic (Data.PlanarGraph.VertexId s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). GHC.Show.Show (Data.PlanarGraph.FaceId s w)
- Data.PlanarGraph: instance forall k (s :: k) (w :: Data.PlanarGraph.World). GHC.Show.Show (Data.PlanarGraph.VertexId s w)
- Data.PlanarGraph: instance forall k (s :: k). Control.DeepSeq.NFData (Data.PlanarGraph.Arc s)
- Data.PlanarGraph: instance forall k (s :: k). Control.DeepSeq.NFData (Data.PlanarGraph.Dart s)
- Data.PlanarGraph: instance forall k (s :: k). GHC.Classes.Eq (Data.PlanarGraph.Arc s)
- Data.PlanarGraph: instance forall k (s :: k). GHC.Classes.Eq (Data.PlanarGraph.Dart s)
- Data.PlanarGraph: instance forall k (s :: k). GHC.Classes.Ord (Data.PlanarGraph.Arc s)
- Data.PlanarGraph: instance forall k (s :: k). GHC.Classes.Ord (Data.PlanarGraph.Dart s)
- Data.PlanarGraph: instance forall k (s :: k). GHC.Enum.Bounded (Data.PlanarGraph.Arc s)
- Data.PlanarGraph: instance forall k (s :: k). GHC.Enum.Enum (Data.PlanarGraph.Arc s)
- Data.PlanarGraph: instance forall k (s :: k). GHC.Enum.Enum (Data.PlanarGraph.Dart s)
- Data.PlanarGraph: instance forall k (s :: k). GHC.Generics.Generic (Data.PlanarGraph.Arc s)
- Data.PlanarGraph: instance forall k (s :: k). GHC.Generics.Generic (Data.PlanarGraph.Dart s)
- Data.PlanarGraph: instance forall k (s :: k). GHC.Show.Show (Data.PlanarGraph.Arc s)
- Data.PlanarGraph: instance forall k (s :: k). GHC.Show.Show (Data.PlanarGraph.Dart s)
- Data.PlanarGraph: instance forall k v e f (s :: k) (w :: Data.PlanarGraph.World). (Data.Aeson.Types.ToJSON.ToJSON v, Data.Aeson.Types.ToJSON.ToJSON e, Data.Aeson.Types.ToJSON.ToJSON f) => Data.Aeson.Types.ToJSON.ToJSON (Data.PlanarGraph.PlanarGraph s w v e f)
- Data.PlanarGraph: instance forall k v e f (s :: k) (w :: Data.PlanarGraph.World). (GHC.Classes.Eq v, GHC.Classes.Eq e, GHC.Classes.Eq f) => GHC.Classes.Eq (Data.PlanarGraph.PlanarGraph s w v e f)
- Data.PlanarGraph: instance forall k v e f (s :: k) (w :: Data.PlanarGraph.World). (GHC.Show.Show v, GHC.Show.Show e, GHC.Show.Show f) => GHC.Show.Show (Data.PlanarGraph.PlanarGraph s w v e f)
- Data.PlanarGraph: instance forall k v e f (s :: k). (Data.Aeson.Types.FromJSON.FromJSON v, Data.Aeson.Types.FromJSON.FromJSON e, Data.Aeson.Types.FromJSON.FromJSON f) => Data.Aeson.Types.FromJSON.FromJSON (Data.PlanarGraph.PlanarGraph s 'Data.PlanarGraph.Primal v e f)
- Data.PlanarGraph: isPositive :: Dart s -> Bool
- Data.PlanarGraph: leftFace :: Dart s -> PlanarGraph s w v e f -> FaceId s w
- Data.PlanarGraph: neighboursOf :: VertexId s w -> PlanarGraph s w v e f -> Vector (VertexId s w)
- Data.PlanarGraph: newtype Arc s
- Data.PlanarGraph: newtype FaceId s w
- Data.PlanarGraph: newtype VertexId s (w :: World)
- Data.PlanarGraph: nextEdge :: Dart s -> PlanarGraph s w v e f -> Dart s
- Data.PlanarGraph: nextIncidentEdge :: Dart s -> PlanarGraph s w v e f -> Dart s
- Data.PlanarGraph: numDarts :: PlanarGraph s w v e f -> Int
- Data.PlanarGraph: numEdges :: PlanarGraph s w v e f -> Int
- Data.PlanarGraph: numFaces :: PlanarGraph s w v e f -> Int
- Data.PlanarGraph: numVertices :: PlanarGraph s w v e f -> Int
- Data.PlanarGraph: outgoingEdges :: VertexId s w -> PlanarGraph s w v e f -> Vector (Dart s)
- Data.PlanarGraph: planarGraph :: [[(Dart s, e)]] -> PlanarGraph s Primal () e ()
- Data.PlanarGraph: planarGraph' :: Permutation (Dart s) -> PlanarGraph s w () () ()
- Data.PlanarGraph: prevEdge :: Dart s -> PlanarGraph s w v e f -> Dart s
- Data.PlanarGraph: prevIncidentEdge :: Dart s -> PlanarGraph s w v e f -> Dart s
- Data.PlanarGraph: rawDartData :: Lens (PlanarGraph s w v e f) (PlanarGraph s w v e' f) (Vector e) (Vector e')
- Data.PlanarGraph: rev :: Direction -> Direction
- Data.PlanarGraph: rightFace :: Dart s -> PlanarGraph s w v e f -> FaceId s w
- Data.PlanarGraph: tailOf :: Dart s -> PlanarGraph s w v e f -> VertexId s w
- Data.PlanarGraph: toAdjacencyLists :: PlanarGraph s w v e f -> [(VertexId s w, Vector (VertexId s w))]
- Data.PlanarGraph: traverseDarts :: Applicative m => (Dart s -> e -> m e') -> PlanarGraph s w v e f -> m (PlanarGraph s w v e' f)
- Data.PlanarGraph: traverseFaces :: Applicative m => (FaceId s w -> f -> m f') -> PlanarGraph s w v e f -> m (PlanarGraph s w v e f')
- Data.PlanarGraph: traverseVertices :: Applicative m => (VertexId s w -> v -> m v') -> PlanarGraph s w v e f -> m (PlanarGraph s w v' e f)
- Data.PlanarGraph: twin :: Dart s -> Dart s
- Data.PlanarGraph: type FaceId' s = FaceId s Primal
- Data.PlanarGraph: type VertexId' s = VertexId s Primal
- Data.PlanarGraph: type family DataOf g i;
- Data.PlanarGraph: vertexData :: Lens (PlanarGraph s w v e f) (PlanarGraph s w v' e f) (Vector v) (Vector v')
- Data.PlanarGraph: vertices :: PlanarGraph s w v e f -> Vector (VertexId s w, v)
- Data.PlanarGraph: vertices' :: PlanarGraph s w v e f -> Vector (VertexId s w)
- Data.PlanarGraph: }
- Data.PlaneGraph: data Dart s
- Data.PlaneGraph: data PlanarGraph s (w :: World) v e f
- Data.PlaneGraph: fromAdjacencyLists :: forall s w h. (Foldable h, Functor h) => [(VertexId s w, h (VertexId s w))] -> PlanarGraph s w () () ()
- Data.PlaneGraph: instance (Data.Aeson.Types.FromJSON.FromJSON r, Data.Aeson.Types.FromJSON.FromJSON v) => Data.Aeson.Types.FromJSON.FromJSON (Data.PlaneGraph.VertexData r v)
- Data.PlaneGraph: instance (Data.Aeson.Types.ToJSON.ToJSON r, Data.Aeson.Types.ToJSON.ToJSON v) => Data.Aeson.Types.ToJSON.ToJSON (Data.PlaneGraph.VertexData r v)
- Data.PlaneGraph: instance (GHC.Classes.Eq r, GHC.Classes.Eq v) => GHC.Classes.Eq (Data.PlaneGraph.VertexData r v)
- Data.PlaneGraph: instance (GHC.Classes.Ord r, GHC.Classes.Ord v) => GHC.Classes.Ord (Data.PlaneGraph.VertexData r v)
- Data.PlaneGraph: instance (GHC.Show.Show r, GHC.Show.Show v) => GHC.Show.Show (Data.PlaneGraph.VertexData r v)
- Data.PlaneGraph: instance Data.Bifunctor.Bifunctor Data.PlaneGraph.VertexData
- Data.PlaneGraph: instance Data.Foldable.Foldable (Data.PlaneGraph.VertexData r)
- Data.PlaneGraph: instance Data.Traversable.Traversable (Data.PlaneGraph.VertexData r)
- Data.PlaneGraph: instance GHC.Base.Functor (Data.PlaneGraph.VertexData r)
- Data.PlaneGraph: instance GHC.Generics.Generic (Data.PlaneGraph.VertexData r v)
- Data.PlaneGraph: instance forall k (s :: k) v e f r. (Data.Aeson.Types.FromJSON.FromJSON r, Data.Aeson.Types.FromJSON.FromJSON v, Data.Aeson.Types.FromJSON.FromJSON e, Data.Aeson.Types.FromJSON.FromJSON f) => Data.Aeson.Types.FromJSON.FromJSON (Data.PlaneGraph.PlaneGraph s v e f r)
- Data.PlaneGraph: instance forall k (s :: k) v e f r. (Data.Aeson.Types.ToJSON.ToJSON r, Data.Aeson.Types.ToJSON.ToJSON v, Data.Aeson.Types.ToJSON.ToJSON e, Data.Aeson.Types.ToJSON.ToJSON f) => Data.Aeson.Types.ToJSON.ToJSON (Data.PlaneGraph.PlaneGraph s v e f r)
- Data.PlaneGraph: instance forall k (s :: k) v e f r. (GHC.Classes.Eq r, GHC.Classes.Eq v, GHC.Classes.Eq e, GHC.Classes.Eq f) => GHC.Classes.Eq (Data.PlaneGraph.PlaneGraph s v e f r)
- Data.PlaneGraph: instance forall k (s :: k) v e f r. (GHC.Show.Show r, GHC.Show.Show v, GHC.Show.Show e, GHC.Show.Show f) => GHC.Show.Show (Data.PlaneGraph.PlaneGraph s v e f r)
- Data.PlaneGraph: instance forall k (s :: k) v e f r. Data.Geometry.Box.Internal.IsBoxable (Data.PlaneGraph.PlaneGraph s v e f r)
- Data.PlaneGraph: instance forall k (s :: k) v e f r. Data.PlanarGraph.HasDataOf (Data.PlaneGraph.PlaneGraph s v e f r) (Data.PlanarGraph.Dart s)
- Data.PlaneGraph: instance forall k (s :: k) v e f r. Data.PlanarGraph.HasDataOf (Data.PlaneGraph.PlaneGraph s v e f r) (Data.PlanarGraph.FaceId' s)
- Data.PlaneGraph: instance forall k (s :: k) v e f r. Data.PlanarGraph.HasDataOf (Data.PlaneGraph.PlaneGraph s v e f r) (Data.PlanarGraph.VertexId' s)
- Data.PlaneGraph: instance forall k (s :: k) v e f r. GHC.Generics.Generic (Data.PlaneGraph.PlaneGraph s v e f r)
- Data.PlaneGraph: instance forall k (s :: k) v e f. GHC.Base.Functor (Data.PlaneGraph.PlaneGraph s v e f)
- Data.PlaneGraph: newtype FaceId s w
- Data.PlaneGraph: newtype VertexId s (w :: World)
- Data.PlaneGraph.Draw: drawPlaneGraph :: IpeOut (PlaneGraph s v e f r) Group r
- Data.Range: Closed :: !a -> EndPoint a
- Data.Range: Open :: !a -> EndPoint a
- Data.Range: Range :: !EndPoint a -> !EndPoint a -> Range a
- Data.Range: [_lower] :: Range a -> !EndPoint a
- Data.Range: [_upper] :: Range a -> !EndPoint a
- Data.Range: clipLower :: Ord a => EndPoint a -> Range a -> Maybe (Range a)
- Data.Range: clipUpper :: Ord a => EndPoint a -> Range a -> Maybe (Range a)
- Data.Range: covers :: Ord a => Range a -> Range a -> Bool
- Data.Range: data EndPoint a
- Data.Range: data Range a
- Data.Range: inRange :: Ord a => a -> Range a -> Bool
- Data.Range: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Data.Range.EndPoint a)
- Data.Range: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Data.Range.Range a)
- Data.Range: instance Data.Foldable.Foldable Data.Range.EndPoint
- Data.Range: instance Data.Foldable.Foldable Data.Range.Range
- Data.Range: instance Data.Traversable.Traversable Data.Range.EndPoint
- Data.Range: instance Data.Traversable.Traversable Data.Range.Range
- Data.Range: instance GHC.Base.Functor Data.Range.EndPoint
- Data.Range: instance GHC.Base.Functor Data.Range.Range
- Data.Range: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Range.EndPoint a)
- Data.Range: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Range.Range a)
- Data.Range: instance GHC.Classes.Ord a => Data.Geometry.Properties.IsIntersectableWith (Data.Range.Range a) (Data.Range.Range a)
- Data.Range: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Range.EndPoint a)
- Data.Range: instance GHC.Generics.Generic (Data.Range.EndPoint a)
- Data.Range: instance GHC.Generics.Generic (Data.Range.Range a)
- Data.Range: instance GHC.Read.Read a => GHC.Read.Read (Data.Range.EndPoint a)
- Data.Range: instance GHC.Show.Show a => GHC.Show.Show (Data.Range.EndPoint a)
- Data.Range: instance GHC.Show.Show a => GHC.Show.Show (Data.Range.Range a)
- Data.Range: isClosed :: EndPoint a -> Bool
- Data.Range: isOpen :: EndPoint a -> Bool
- Data.Range: isValid :: Ord a => Range a -> Bool
- Data.Range: lower :: forall a_a27Ds. Lens' (Range a_a27Ds) (EndPoint a_a27Ds)
- Data.Range: midPoint :: Fractional r => Range r -> r
- Data.Range: prettyShow :: Show a => Range a -> String
- Data.Range: shiftLeft :: Num r => r -> Range r -> Range r
- Data.Range: shiftRight :: Num r => r -> Range r -> Range r
- Data.Range: unEndPoint :: Lens (EndPoint a) (EndPoint b) a b
- Data.Range: upper :: forall a_a27Ds. Lens' (Range a_a27Ds) (EndPoint a_a27Ds)
- Data.Range: width :: Num r => Range r -> r
- Data.Sequence.Util: binarySearch :: Integral a => (a -> Bool) -> a -> a -> a
- Data.Sequence.Util: binarySearchSeq :: (a -> Bool) -> Seq a -> Maybe Int
- Data.Sequence.Util: binarySearchVec :: Vector v a => (a -> Bool) -> v a -> Maybe Int
- Data.Sequence.Util: splitMonotone :: (a -> Bool) -> Seq a -> (Seq a, Seq a)
- Data.SlowSeq: Key :: a -> Key a
- Data.SlowSeq: NoKey :: Key a
- Data.SlowSeq: OrdSeq :: Seq a -> OrdSeq a
- Data.SlowSeq: [_asSeq] :: OrdSeq a -> Seq a
- Data.SlowSeq: [getKey] :: Key a -> a
- Data.SlowSeq: data Key a
- Data.SlowSeq: deleteAll :: Ord a => a -> OrdSeq a -> OrdSeq a
- Data.SlowSeq: deleteAllBy :: Compare a -> a -> OrdSeq a -> OrdSeq a
- Data.SlowSeq: fromAscList' :: [a] -> OrdSeq a
- Data.SlowSeq: fromListBy :: Compare a -> [a] -> OrdSeq a
- Data.SlowSeq: fromListByOrd :: Ord a => [a] -> OrdSeq a
- Data.SlowSeq: insert :: Ord a => a -> OrdSeq a -> OrdSeq a
- Data.SlowSeq: insertBy :: Compare a -> a -> OrdSeq a -> OrdSeq a
- Data.SlowSeq: instance Data.Foldable.Foldable Data.SlowSeq.OrdSeq
- Data.SlowSeq: instance GHC.Base.Monoid (Data.SlowSeq.Key a)
- Data.SlowSeq: instance GHC.Base.Monoid (Data.SlowSeq.OrdSeq a)
- Data.SlowSeq: instance GHC.Base.Semigroup (Data.SlowSeq.Key a)
- Data.SlowSeq: instance GHC.Base.Semigroup (Data.SlowSeq.OrdSeq a)
- Data.SlowSeq: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.SlowSeq.Key a)
- Data.SlowSeq: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.SlowSeq.OrdSeq a)
- Data.SlowSeq: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.SlowSeq.Key a)
- Data.SlowSeq: instance GHC.Show.Show a => GHC.Show.Show (Data.SlowSeq.Key a)
- Data.SlowSeq: instance GHC.Show.Show a => GHC.Show.Show (Data.SlowSeq.OrdSeq a)
- Data.SlowSeq: liftCmp :: (a -> a -> Ordering) -> Key a -> Key a -> Ordering
- Data.SlowSeq: lookupBy :: Compare a -> a -> OrdSeq a -> Maybe a
- Data.SlowSeq: lookupMax :: OrdSeq a -> Maybe a
- Data.SlowSeq: lookupMin :: OrdSeq a -> Maybe a
- Data.SlowSeq: mapMonotonic :: (a -> b) -> OrdSeq a -> OrdSeq b
- Data.SlowSeq: maxView :: OrdSeq a -> Maybe (a, OrdSeq a)
- Data.SlowSeq: memberBy :: Compare a -> a -> OrdSeq a -> Bool
- Data.SlowSeq: minView :: OrdSeq a -> Maybe (a, OrdSeq a)
- Data.SlowSeq: newtype OrdSeq a
- Data.SlowSeq: split :: (a -> Bool) -> Seq a -> (Seq a, Seq a)
- Data.SlowSeq: splitBy :: Compare a -> a -> OrdSeq a -> (OrdSeq a, OrdSeq a, OrdSeq a)
- Data.SlowSeq: splitMonotonic :: (a -> Bool) -> OrdSeq a -> (OrdSeq a, OrdSeq a)
- Data.SlowSeq: splitOn :: Ord b => (a -> b) -> b -> OrdSeq a -> (OrdSeq a, OrdSeq a, OrdSeq a)
- Data.SlowSeq: type Compare a = a -> a -> Ordering
- Data.SlowSeq: viewl :: OrdSeq a -> ViewL OrdSeq a
- Data.SlowSeq: viewr :: OrdSeq a -> ViewR OrdSeq a
- Data.Tree.Util: Zipper :: Tree a -> [([Tree a], a, [Tree a])] -> Zipper a
- Data.Tree.Util: [ancestors] :: Zipper a -> [([Tree a], a, [Tree a])]
- Data.Tree.Util: [focus] :: Zipper a -> Tree a
- Data.Tree.Util: allChildren :: Zipper a -> [Zipper a]
- Data.Tree.Util: allTrees :: Zipper a -> [Zipper a]
- Data.Tree.Util: constructTree :: [([Tree a], a, [Tree a])] -> Maybe (Tree a)
- Data.Tree.Util: data Zipper a
- Data.Tree.Util: findEvert :: (a -> Bool) -> Tree a -> Maybe (Tree a)
- Data.Tree.Util: findEvert' :: (Tree a -> Bool) -> Tree a -> Maybe (Tree a)
- Data.Tree.Util: findNode :: (a -> Bool) -> Tree a -> Maybe [a]
- Data.Tree.Util: findNodes :: (Tree a -> Bool) -> Tree a -> [[a]]
- Data.Tree.Util: findPath :: (a -> Bool) -> (a -> Bool) -> Tree a -> Maybe [a]
- Data.Tree.Util: firstChild :: Zipper a -> Maybe (Zipper a)
- Data.Tree.Util: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Tree.Util.Zipper a)
- Data.Tree.Util: instance GHC.Show.Show a => GHC.Show.Show (Data.Tree.Util.Zipper a)
- Data.Tree.Util: nextSibling :: Zipper a -> Maybe (Zipper a)
- Data.Tree.Util: prevSibling :: Zipper a -> Maybe (Zipper a)
- Data.Tree.Util: root :: Tree a -> Zipper a
- Data.Tree.Util: unZipperLocal :: Zipper a -> Tree a
- Data.Tree.Util: up :: Zipper a -> Maybe (Zipper a)
- Data.UnBounded: MaxInfinity :: UnBounded a
- Data.UnBounded: MinInfinity :: UnBounded a
- Data.UnBounded: Val :: a -> UnBounded a
- Data.UnBounded: [_unUnBounded] :: UnBounded a -> a
- Data.UnBounded: bottomToMaybe :: Bottom a -> Maybe a
- Data.UnBounded: data Bottom a
- Data.UnBounded: data Top a
- Data.UnBounded: data UnBounded a
- Data.UnBounded: instance Data.Foldable.Foldable Data.UnBounded.Bottom
- Data.UnBounded: instance Data.Foldable.Foldable Data.UnBounded.Top
- Data.UnBounded: instance Data.Foldable.Foldable Data.UnBounded.UnBounded
- Data.UnBounded: instance Data.Functor.Classes.Eq1 Data.UnBounded.Bottom
- Data.UnBounded: instance Data.Functor.Classes.Eq1 Data.UnBounded.Top
- Data.UnBounded: instance Data.Functor.Classes.Ord1 Data.UnBounded.Bottom
- Data.UnBounded: instance Data.Functor.Classes.Ord1 Data.UnBounded.Top
- Data.UnBounded: instance Data.Traversable.Traversable Data.UnBounded.Bottom
- Data.UnBounded: instance Data.Traversable.Traversable Data.UnBounded.Top
- Data.UnBounded: instance Data.Traversable.Traversable Data.UnBounded.UnBounded
- Data.UnBounded: instance GHC.Base.Applicative Data.UnBounded.Bottom
- Data.UnBounded: instance GHC.Base.Applicative Data.UnBounded.Top
- Data.UnBounded: instance GHC.Base.Functor Data.UnBounded.Bottom
- Data.UnBounded: instance GHC.Base.Functor Data.UnBounded.Top
- Data.UnBounded: instance GHC.Base.Functor Data.UnBounded.UnBounded
- Data.UnBounded: instance GHC.Base.Monad Data.UnBounded.Bottom
- Data.UnBounded: instance GHC.Base.Monad Data.UnBounded.Top
- Data.UnBounded: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.UnBounded.Bottom a)
- Data.UnBounded: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.UnBounded.Top a)
- Data.UnBounded: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.UnBounded.UnBounded a)
- Data.UnBounded: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.UnBounded.Bottom a)
- Data.UnBounded: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.UnBounded.Top a)
- Data.UnBounded: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.UnBounded.UnBounded a)
- Data.UnBounded: instance GHC.Num.Num a => GHC.Num.Num (Data.UnBounded.UnBounded a)
- Data.UnBounded: instance GHC.Real.Fractional a => GHC.Real.Fractional (Data.UnBounded.UnBounded a)
- Data.UnBounded: instance GHC.Show.Show a => GHC.Show.Show (Data.UnBounded.Bottom a)
- Data.UnBounded: instance GHC.Show.Show a => GHC.Show.Show (Data.UnBounded.Top a)
- Data.UnBounded: instance GHC.Show.Show a => GHC.Show.Show (Data.UnBounded.UnBounded a)
- Data.UnBounded: topToMaybe :: Top a -> Maybe a
- Data.UnBounded: unBoundedToMaybe :: UnBounded a -> Maybe a
- Data.UnBounded: unUnBounded :: forall a_a2wej a_a2xGA. Traversal (UnBounded a_a2wej) (UnBounded a_a2xGA) a_a2wej a_a2xGA
- Data.Util: SP :: !a -> !b -> SP a b
- Data.Util: STR :: !a -> !b -> !c -> STR a b c
- Data.Util: [fst'] :: STR a b c -> !a
- Data.Util: [snd'] :: STR a b c -> !b
- Data.Util: [trd'] :: STR a b c -> !c
- Data.Util: data SP a b
- Data.Util: data STR a b c
- Data.Util: instance (Control.DeepSeq.NFData a, Control.DeepSeq.NFData b) => Control.DeepSeq.NFData (Data.Util.SP a b)
- Data.Util: instance (Control.DeepSeq.NFData a, Control.DeepSeq.NFData b, Control.DeepSeq.NFData c) => Control.DeepSeq.NFData (Data.Util.STR a b c)
- Data.Util: instance (GHC.Base.Semigroup a, GHC.Base.Semigroup b) => GHC.Base.Semigroup (Data.Util.SP a b)
- Data.Util: instance (GHC.Base.Semigroup a, GHC.Base.Semigroup b, GHC.Base.Monoid a, GHC.Base.Monoid b) => GHC.Base.Monoid (Data.Util.SP a b)
- Data.Util: instance (GHC.Base.Semigroup a, GHC.Base.Semigroup b, GHC.Base.Semigroup c) => GHC.Base.Semigroup (Data.Util.STR a b c)
- Data.Util: instance (GHC.Base.Semigroup a, GHC.Base.Semigroup b, GHC.Base.Semigroup c, GHC.Base.Monoid a, GHC.Base.Monoid b, GHC.Base.Monoid c) => GHC.Base.Monoid (Data.Util.STR a b c)
- Data.Util: instance (GHC.Classes.Eq a, GHC.Classes.Eq b) => GHC.Classes.Eq (Data.Util.SP a b)
- Data.Util: instance (GHC.Classes.Eq a, GHC.Classes.Eq b, GHC.Classes.Eq c) => GHC.Classes.Eq (Data.Util.STR a b c)
- Data.Util: instance (GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Ord (Data.Util.SP a b)
- Data.Util: instance (GHC.Classes.Ord a, GHC.Classes.Ord b, GHC.Classes.Ord c) => GHC.Classes.Ord (Data.Util.STR a b c)
- Data.Util: instance (GHC.Show.Show a, GHC.Show.Show b) => GHC.Show.Show (Data.Util.SP a b)
- Data.Util: instance (GHC.Show.Show a, GHC.Show.Show b, GHC.Show.Show c) => GHC.Show.Show (Data.Util.STR a b c)
- Data.Util: instance Control.Lens.Tuple.Field1 (Data.Util.SP a b) (Data.Util.SP c b) a c
- Data.Util: instance Control.Lens.Tuple.Field1 (Data.Util.STR a b c) (Data.Util.STR d b c) a d
- Data.Util: instance Control.Lens.Tuple.Field2 (Data.Util.SP a b) (Data.Util.SP a c) b c
- Data.Util: instance Control.Lens.Tuple.Field2 (Data.Util.STR a b c) (Data.Util.STR a d c) b d
- Data.Util: instance Control.Lens.Tuple.Field3 (Data.Util.STR a b c) (Data.Util.STR a b d) c d
- Data.Util: instance Data.Bifunctor.Bifunctor Data.Util.SP
- Data.Util: instance GHC.Base.Functor (Data.Util.SP a)
- Data.Util: instance GHC.Base.Functor (Data.Util.STR a b)
- Data.Util: instance GHC.Generics.Generic (Data.Util.SP a b)
- Data.Util: instance GHC.Generics.Generic (Data.Util.STR a b c)
- Data.Util: nonEmptyTails :: [a] -> [[a]]
- Data.Util: type Two a = SP a a
- Data.Util: uniquePairs :: [a] -> [Two a]
- Data.Util: uniqueTriplets :: [a] -> [STR a a a]
- Data.Yaml.Util: Versioned :: Version -> a -> Versioned a
- Data.Yaml.Util: data Versioned a
- Data.Yaml.Util: decodeYaml :: FromJSON a => ByteString -> Either ParseException a
- Data.Yaml.Util: decodeYamlFile :: FromJSON a => FilePath -> IO (Either ParseException a)
- Data.Yaml.Util: encodeYaml :: ToJSON a => a -> ByteString
- Data.Yaml.Util: encodeYamlFile :: ToJSON a => FilePath -> a -> IO ()
- Data.Yaml.Util: instance Data.Aeson.Types.FromJSON.FromJSON Data.Yaml.Util.V
- Data.Yaml.Util: instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Data.Yaml.Util.Versioned a)
- Data.Yaml.Util: instance Data.Foldable.Foldable Data.Yaml.Util.Versioned
- Data.Yaml.Util: instance Data.Traversable.Traversable Data.Yaml.Util.Versioned
- Data.Yaml.Util: instance GHC.Base.Functor Data.Yaml.Util.Versioned
- Data.Yaml.Util: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Yaml.Util.Versioned a)
- Data.Yaml.Util: instance GHC.Generics.Generic (Data.Yaml.Util.Versioned a)
- Data.Yaml.Util: instance GHC.Read.Read a => GHC.Read.Read (Data.Yaml.Util.Versioned a)
- Data.Yaml.Util: instance GHC.Show.Show a => GHC.Show.Show (Data.Yaml.Util.Versioned a)
- Data.Yaml.Util: parseVersioned :: [(Version -> Bool, Value -> Parser a)] -> Value -> Parser (Versioned a)
- Data.Yaml.Util: printYaml :: ToJSON a => a -> IO ()
- Data.Yaml.Util: unversioned :: Versioned a -> a
- System.Random.Shuffle: shuffle :: (Foldable f, RandomGen g) => g -> f a -> [a]
- Test.QuickCheck.HGeometryInstances: instance (GHC.TypeNats.KnownNat n, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.LSeq.LSeq n a)
- Test.QuickCheck.HGeometryInstances: instance (Test.QuickCheck.Arbitrary.Arbitrary a, GHC.Classes.Ord a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.OrdSeq.OrdSeq a)
- Test.QuickCheck.HGeometryInstances: instance (Test.QuickCheck.Arbitrary.Arbitrary a, Test.QuickCheck.Arbitrary.Arbitrary v) => Test.QuickCheck.Arbitrary.Arbitrary (Data.BinaryTree.BinLeafTree v a)
- Test.QuickCheck.HGeometryInstances: instance (Test.QuickCheck.Arbitrary.Arbitrary c, Test.QuickCheck.Arbitrary.Arbitrary e) => Test.QuickCheck.Arbitrary.Arbitrary (c Data.Ext.:+ e)
- Test.QuickCheck.HGeometryInstances: instance (Test.QuickCheck.Arbitrary.Arbitrary r, Data.Geometry.Vector.VectorFamily.Arity d) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Geometry.Point.Point d r)
- Test.QuickCheck.HGeometryInstances: instance (Test.QuickCheck.Arbitrary.Arbitrary r, Data.Geometry.Vector.VectorFamily.Arity d) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Geometry.Vector.VectorFamily.Vector d r)
- Test.QuickCheck.HGeometryInstances: instance (Test.QuickCheck.Arbitrary.Arbitrary r, Data.Geometry.Vector.VectorFamily.Arity d, GHC.Classes.Ord r) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Geometry.Box.Internal.Box d () r)
- Test.QuickCheck.HGeometryInstances: instance (Test.QuickCheck.Arbitrary.Arbitrary r, Data.Geometry.Vector.VectorFamily.Arity d, GHC.Num.Num r, GHC.Classes.Eq r) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Geometry.Line.Internal.Line d r)
- Test.QuickCheck.HGeometryInstances: instance (Test.QuickCheck.Arbitrary.Arbitrary r, GHC.Classes.Ord r) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Range.Range r)
- Test.QuickCheck.HGeometryInstances: instance (Test.QuickCheck.Arbitrary.Arbitrary r, Test.QuickCheck.Arbitrary.Arbitrary p, Data.Geometry.Vector.VectorFamily.Arity d) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Geometry.LineSegment.LineSegment d p r)
- Test.QuickCheck.HGeometryInstances: instance (Test.QuickCheck.Arbitrary.Arbitrary r, Test.QuickCheck.Arbitrary.Arbitrary p, GHC.Classes.Ord r, GHC.Classes.Ord p) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Geometry.Interval.Interval p r)
- Test.QuickCheck.HGeometryInstances: instance (Test.QuickCheck.Arbitrary.Arbitrary r, Test.QuickCheck.Arbitrary.Arbitrary p, Test.QuickCheck.Arbitrary.Arbitrary s, Data.Geometry.Vector.VectorFamily.Arity d, GHC.Classes.Ord r, GHC.Classes.Ord s, GHC.Classes.Ord p, GHC.Num.Num r) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Geometry.SubLine.SubLine d p s r)
- Test.QuickCheck.HGeometryInstances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.PlanarGraph.Direction
- Test.QuickCheck.HGeometryInstances: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.BinaryTree.BinaryTree a)
- Test.QuickCheck.HGeometryInstances: instance Test.QuickCheck.Arbitrary.Arbitrary r => Test.QuickCheck.Arbitrary.Arbitrary (Data.Range.EndPoint r)
- Test.QuickCheck.HGeometryInstances: instance forall k (s :: k). Test.QuickCheck.Arbitrary.Arbitrary (Data.PlanarGraph.Arc s)
- Test.QuickCheck.HGeometryInstances: instance forall k (s :: k). Test.QuickCheck.Arbitrary.Arbitrary (Data.PlanarGraph.Dart s)
+ Algorithms.Geometry.ClosestPair.DivideAndConquer: mergeSortedListsBy :: (a -> a -> Ordering) -> [a] -> [a] -> [a]
+ Algorithms.Geometry.FrechetDistance.Discrete: discreteFrechetDistance :: (Foldable f, Foldable g, Functor f, Functor g, Ord r, Num r) => f (Point 2 r :+ p) -> g (Point 2 r :+ q) -> r
+ Algorithms.Geometry.FrechetDistance.Discrete: discreteFrechetDistanceWith :: (Foldable f, Functor f, Functor g, Foldable g, Ord r) => (Point 2 r -> Point 2 r -> r) -> f (Point 2 r :+ p) -> g (Point 2 r :+ q) -> r
+ Algorithms.Geometry.FrechetDistance.Discrete: instance GHC.Classes.Eq Algorithms.Geometry.FrechetDistance.Discrete.Loc
+ Algorithms.Geometry.FrechetDistance.Discrete: instance GHC.Show.Show Algorithms.Geometry.FrechetDistance.Discrete.Loc
+ Algorithms.Geometry.LineSegmentIntersection.Types: instance (Control.DeepSeq.NFData p, Control.DeepSeq.NFData r) => Control.DeepSeq.NFData (Algorithms.Geometry.LineSegmentIntersection.Types.Associated p r)
+ Algorithms.Geometry.LineSegmentIntersection.Types: instance GHC.Generics.Generic (Algorithms.Geometry.LineSegmentIntersection.Types.Associated p r)
+ Algorithms.Geometry.LinearProgramming.LP2DRIC: cmpHalfPlane :: (Ord r, Num r, Arity d) => Vector d r -> Point d r -> Point d r -> Ordering
+ Algorithms.Geometry.LinearProgramming.LP2DRIC: commonIntersection :: (Ord r, Num r, Arity d) => Line d r -> NonEmpty (HalfLine d r :+ a) -> Either (Two (HalfLine d r :+ a)) (OneOrTwo (Point d r :+ a))
+ Algorithms.Geometry.LinearProgramming.LP2DRIC: instance (Data.Geometry.Vector.VectorFamily.Arity d, GHC.Classes.Eq r) => GHC.Classes.Eq (Algorithms.Geometry.LinearProgramming.LP2DRIC.LPState d r)
+ Algorithms.Geometry.LinearProgramming.LP2DRIC: instance (Data.Geometry.Vector.VectorFamily.Arity d, GHC.Show.Show r) => GHC.Show.Show (Algorithms.Geometry.LinearProgramming.LP2DRIC.LPState d r)
+ Algorithms.Geometry.LinearProgramming.LP2DRIC: maximumOn :: (Ord r, Fractional r) => LPState 2 r -> Line 2 r -> Maybe (Point 2 r)
+ Algorithms.Geometry.LinearProgramming.LP2DRIC: oneDLinearProgramming :: (Ord r, Num r, Arity d) => Vector d r -> Line d r -> [HalfLine d r] -> Maybe (Point d r)
+ Algorithms.Geometry.LinearProgramming.LP2DRIC: solveBoundedLinearProgram :: (MonadRandom m, Ord r, Fractional r) => LinearProgram 2 r -> m (Maybe (Point 2 r))
+ Algorithms.Geometry.LinearProgramming.LP2DRIC: solveBoundedLinearProgram' :: (Ord r, Fractional r) => LinearProgram 2 r -> Maybe (Point 2 r)
+ Algorithms.Geometry.LinearProgramming.Types: LinearProgram :: !Vector d r -> [HalfSpace d r] -> LinearProgram d r
+ Algorithms.Geometry.LinearProgramming.Types: NoSolution :: LPSolution d r
+ Algorithms.Geometry.LinearProgramming.Types: Single :: !Point d r -> LPSolution d r
+ Algorithms.Geometry.LinearProgramming.Types: UnBounded :: HalfLine d r -> LPSolution d r
+ Algorithms.Geometry.LinearProgramming.Types: [_constraints] :: LinearProgram d r -> [HalfSpace d r]
+ Algorithms.Geometry.LinearProgramming.Types: [_objective] :: LinearProgram d r -> !Vector d r
+ Algorithms.Geometry.LinearProgramming.Types: _NoSolution :: forall d_a2jou r_a2jov. Prism' (LPSolution d_a2jou r_a2jov) ()
+ Algorithms.Geometry.LinearProgramming.Types: _Single :: forall d_a2jou r_a2jov. Prism' (LPSolution d_a2jou r_a2jov) (Point d_a2jou r_a2jov)
+ Algorithms.Geometry.LinearProgramming.Types: _UnBounded :: forall d_a2jou r_a2jov. Prism' (LPSolution d_a2jou r_a2jov) (HalfLine d_a2jou r_a2jov)
+ Algorithms.Geometry.LinearProgramming.Types: constraints :: forall d_a2jrS r_a2jrT. Lens' (LinearProgram d_a2jrS r_a2jrT) [HalfSpace d_a2jrS r_a2jrT]
+ Algorithms.Geometry.LinearProgramming.Types: data LPSolution d r
+ Algorithms.Geometry.LinearProgramming.Types: data LinearProgram d r
+ Algorithms.Geometry.LinearProgramming.Types: instance (Data.Geometry.Vector.VectorFamily.Arity d, GHC.Classes.Eq r) => GHC.Classes.Eq (Algorithms.Geometry.LinearProgramming.Types.LPSolution d r)
+ Algorithms.Geometry.LinearProgramming.Types: instance (Data.Geometry.Vector.VectorFamily.Arity d, GHC.Classes.Eq r) => GHC.Classes.Eq (Algorithms.Geometry.LinearProgramming.Types.LinearProgram d r)
+ Algorithms.Geometry.LinearProgramming.Types: instance (Data.Geometry.Vector.VectorFamily.Arity d, GHC.Show.Show r) => GHC.Show.Show (Algorithms.Geometry.LinearProgramming.Types.LPSolution d r)
+ Algorithms.Geometry.LinearProgramming.Types: instance (Data.Geometry.Vector.VectorFamily.Arity d, GHC.Show.Show r) => GHC.Show.Show (Algorithms.Geometry.LinearProgramming.Types.LinearProgram d r)
+ Algorithms.Geometry.LinearProgramming.Types: instance Data.Geometry.Vector.VectorFamily.Arity d => GHC.Base.Functor (Algorithms.Geometry.LinearProgramming.Types.LinearProgram d)
+ Algorithms.Geometry.LinearProgramming.Types: objective :: forall d_a2jrS r_a2jrT. Lens' (LinearProgram d_a2jrS r_a2jrT) (Vector d_a2jrS r_a2jrT)
+ Algorithms.Geometry.RedBlueSeparator.RIC: extremalPoints :: (Foldable1 f, Foldable1 g, Ord r) => f (Point 2 r :+ redData) -> g (Point 2 r :+ blueData) -> (Point 2 r :+ redData, Point 2 r :+ blueData)
+ Algorithms.Geometry.RedBlueSeparator.RIC: separatingLine :: (MonadRandom m, Foldable1 f, Foldable1 g, Fractional r, Ord r) => f (Point 2 r :+ redData) -> g (Point 2 r :+ blueData) -> m (Maybe (Line 2 r))
+ Algorithms.Geometry.RedBlueSeparator.RIC: separatingLine' :: (MonadRandom m, Foldable1 f, Foldable1 g, Fractional r, Ord r) => f (Point 2 r :+ redData) -> g (Point 2 r :+ blueData) -> m (Maybe (Line 2 r))
+ Algorithms.Geometry.RedBlueSeparator.RIC: separatingLine'' :: (MonadRandom m, Foldable1 f, Foldable1 g, Fractional r, Ord r) => Point 2 r -> Point 2 r -> f (Point 2 r :+ redData) -> g (Point 2 r :+ blueData) -> m (Maybe (Line 2 r))
+ Algorithms.Geometry.RedBlueSeparator.RIC: strictVerticalSeparatingLine :: (Foldable1 f, Foldable1 g, Fractional r, Ord r) => f (Point 2 r :+ redData) -> g (Point 2 r :+ blueData) -> Maybe (Line 2 r)
+ Algorithms.Geometry.RedBlueSeparator.RIC: verticalSeparatingLine :: (Foldable1 f, Foldable1 g, Num r, Ord r) => f (Point 2 r :+ redData) -> g (Point 2 r :+ blueData) -> SP (Maybe (Line 2 r)) (Point 2 r :+ redData, Point 2 r :+ blueData)
+ Data.Geometry: findDiagonal :: (Ord r, Fractional r) => Polygon t p r -> LineSegment 2 p r
+ Data.Geometry: head :: (Arity d, 1 <= d) => Vector d r -> r
+ Data.Geometry: isStarShaped :: (MonadRandom m, Ord r, Fractional r) => SimplePolygon p r -> m (Maybe (Point 2 r))
+ Data.Geometry: isTriangle :: Polygon p t r -> Bool
+ Data.Geometry: pattern Vector :: VectorFamilyF (Peano d) r -> Vector d r
+ Data.Geometry: pattern Vector1 :: r -> Vector 1 r
+ Data.Geometry: pattern Vector2 :: r -> r -> Vector 2 r
+ Data.Geometry: pattern Vector3 :: r -> r -> r -> Vector 3 r
+ Data.Geometry: pattern Vector4 :: r -> r -> r -> r -> Vector 4 r
+ Data.Geometry: pickPoint :: (Ord r, Fractional r) => Polygon p t r -> Point 2 r
+ Data.Geometry: safeMaximumOn :: Ord b => (a -> b) -> [a] -> Maybe a
+ Data.Geometry.Ball: instance (GHC.Classes.Ord r, GHC.Float.Floating r) => Data.Intersection.IsIntersectableWith (Data.Geometry.Line.Internal.Line 2 r) (Data.Geometry.Ball.Circle p r)
+ Data.Geometry.Ball: instance (GHC.Classes.Ord r, GHC.Float.Floating r) => Data.Intersection.IsIntersectableWith (Data.Geometry.LineSegment.LineSegment 2 p r) (Data.Geometry.Ball.Circle q r)
+ Data.Geometry.Ball: pattern Circle :: (Point 2 r :+ p) -> r -> Circle p r
+ Data.Geometry.Ball: pattern Disk :: (Point 2 r :+ p) -> r -> Disk p r
+ Data.Geometry.Ball: pattern Sphere :: (Point d r :+ p) -> r -> Sphere d p r
+ Data.Geometry.Box.Internal: instance (Data.Geometry.Vector.VectorFamily.Arity d, GHC.Classes.Ord r) => Data.Intersection.IsIntersectableWith (Data.Geometry.Point.Point d r) (Data.Geometry.Box.Internal.Box d p r)
+ Data.Geometry.Box.Internal: instance (GHC.Classes.Ord r, Data.Geometry.Vector.VectorFamily.Arity d) => Data.Intersection.IsIntersectableWith (Data.Geometry.Box.Internal.Box d p r) (Data.Geometry.Box.Internal.Box d q r)
+ Data.Geometry.Box.Internal: instance (Test.QuickCheck.Arbitrary.Arbitrary r, Data.Geometry.Vector.VectorFamily.Arity d, GHC.Classes.Ord r) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Geometry.Box.Internal.Box d () r)
+ Data.Geometry.HalfSpace: HalfSpace :: HyperPlane d r -> HalfSpace d r
+ Data.Geometry.HalfSpace: [_boundingPlane] :: HalfSpace d r -> HyperPlane d r
+ Data.Geometry.HalfSpace: above :: Num r => Line 2 r -> HalfPlane r
+ Data.Geometry.HalfSpace: below :: Num r => Line 2 r -> HalfPlane r
+ Data.Geometry.HalfSpace: boundingPlane :: forall d_a22Iq r_a22Ir d_a22Kn r_a22Ko. Iso (HalfSpace d_a22Iq r_a22Ir) (HalfSpace d_a22Kn r_a22Ko) (HyperPlane d_a22Iq r_a22Ir) (HyperPlane d_a22Kn r_a22Ko)
+ Data.Geometry.HalfSpace: inHalfSpace :: (Num r, Ord r, Arity d) => Point d r -> HalfSpace d r -> PointLocationResult
+ Data.Geometry.HalfSpace: instance (Data.Geometry.Vector.VectorFamily.Arity d, Data.Geometry.Vector.VectorFamily.Arity (d GHC.TypeNats.+ 1), GHC.Real.Fractional r) => Data.Geometry.Transformation.IsTransformable (Data.Geometry.HalfSpace.HalfSpace d r)
+ Data.Geometry.HalfSpace: instance (Data.Geometry.Vector.VectorFamily.Arity d, GHC.Classes.Eq r) => GHC.Classes.Eq (Data.Geometry.HalfSpace.HalfSpace d r)
+ Data.Geometry.HalfSpace: instance (Data.Geometry.Vector.VectorFamily.Arity d, GHC.Show.Show r) => GHC.Show.Show (Data.Geometry.HalfSpace.HalfSpace d r)
+ Data.Geometry.HalfSpace: instance (GHC.Num.Num r, GHC.Classes.Ord r, Data.Geometry.Vector.VectorFamily.Arity d) => Data.Intersection.IsIntersectableWith (Data.Geometry.Point.Point d r) (Data.Geometry.HalfSpace.HalfSpace d r)
+ Data.Geometry.HalfSpace: instance (GHC.Real.Fractional r, GHC.Classes.Ord r) => Data.Intersection.IsIntersectableWith (Data.Geometry.Line.Internal.Line 2 r) (Data.Geometry.HalfSpace.HalfSpace 2 r)
+ Data.Geometry.HalfSpace: instance Data.Geometry.Vector.VectorFamily.Arity d => Data.Foldable.Foldable (Data.Geometry.HalfSpace.HalfSpace d)
+ Data.Geometry.HalfSpace: instance Data.Geometry.Vector.VectorFamily.Arity d => Data.Traversable.Traversable (Data.Geometry.HalfSpace.HalfSpace d)
+ Data.Geometry.HalfSpace: instance Data.Geometry.Vector.VectorFamily.Arity d => GHC.Base.Functor (Data.Geometry.HalfSpace.HalfSpace d)
+ Data.Geometry.HalfSpace: instance GHC.Generics.Generic (Data.Geometry.HalfSpace.HalfSpace d r)
+ Data.Geometry.HalfSpace: leftOf :: Num r => Line 2 r -> HalfPlane r
+ Data.Geometry.HalfSpace: newtype HalfSpace d r
+ Data.Geometry.HalfSpace: rightOf :: Num r => Line 2 r -> HalfPlane r
+ Data.Geometry.HalfSpace: type HalfPlane = HalfSpace 2
+ Data.Geometry.HyperPlane: _asLine :: Num r => Iso' (HyperPlane 2 r) (Line 2 r)
+ Data.Geometry.HyperPlane: instance (GHC.Classes.Eq r, GHC.Real.Fractional r) => Data.Intersection.IsIntersectableWith (Data.Geometry.Line.Internal.Line 3 r) (Data.Geometry.HyperPlane.Plane r)
+ Data.Geometry.HyperPlane: instance (GHC.Num.Num r, GHC.Classes.Eq r, Data.Geometry.Vector.VectorFamily.Arity d) => Data.Intersection.IsIntersectableWith (Data.Geometry.Point.Point d r) (Data.Geometry.HyperPlane.HyperPlane d r)
+ Data.Geometry.HyperPlane: pattern Plane :: Point 3 r -> Vector 3 r -> Plane r
+ Data.Geometry.Interval: instance (Test.QuickCheck.Arbitrary.Arbitrary r, Test.QuickCheck.Arbitrary.Arbitrary a, GHC.Classes.Ord r, GHC.Classes.Ord a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Geometry.Interval.Interval a r)
+ Data.Geometry.Interval: instance GHC.Classes.Ord r => Data.Intersection.IsIntersectableWith (Data.Geometry.Interval.Interval a r) (Data.Geometry.Interval.Interval a r)
+ Data.Geometry.Interval: pattern ClosedInterval :: (r :+ a) -> (r :+ a) -> Interval a r
+ Data.Geometry.Interval: pattern Interval :: EndPoint (r :+ a) -> EndPoint (r :+ a) -> Interval a r
+ Data.Geometry.Interval: pattern OpenInterval :: (r :+ a) -> (r :+ a) -> Interval a r
+ Data.Geometry.IntervalTree: instance (Control.DeepSeq.NFData i, Control.DeepSeq.NFData r) => Control.DeepSeq.NFData (Data.Geometry.IntervalTree.IntervalTree i r)
+ Data.Geometry.IntervalTree: instance (Control.DeepSeq.NFData i, Control.DeepSeq.NFData r) => Control.DeepSeq.NFData (Data.Geometry.IntervalTree.NodeData i r)
+ Data.Geometry.Line: instance (GHC.Classes.Eq r, GHC.Real.Fractional r, Data.Geometry.Vector.VectorFamily.Arity d) => Data.Intersection.IsIntersectableWith (Data.Geometry.Point.Point d r) (Data.Geometry.Line.Internal.Line d r)
+ Data.Geometry.Line: instance (GHC.Classes.Ord r, GHC.Num.Num r) => Data.Intersection.IsIntersectableWith (Data.Geometry.Point.Point 2 r) (Data.Geometry.Line.Internal.Line 2 r)
+ Data.Geometry.Line: instance (GHC.Classes.Ord r, GHC.Real.Fractional r) => Data.Intersection.IsIntersectableWith (Data.Geometry.Line.Internal.Line 2 r) (Data.Geometry.Boundary.Boundary (Data.Geometry.Box.Internal.Rectangle p r))
+ Data.Geometry.Line: instance (GHC.Classes.Ord r, GHC.Real.Fractional r) => Data.Intersection.IsIntersectableWith (Data.Geometry.Line.Internal.Line 2 r) (Data.Geometry.Box.Internal.Rectangle p r)
+ Data.Geometry.Line.Internal: instance (GHC.Classes.Eq r, GHC.Real.Fractional r) => Data.Intersection.IsIntersectableWith (Data.Geometry.Line.Internal.Line 2 r) (Data.Geometry.Line.Internal.Line 2 r)
+ Data.Geometry.Line.Internal: instance (Test.QuickCheck.Arbitrary.Arbitrary r, Data.Geometry.Vector.VectorFamily.Arity d, GHC.Num.Num r, GHC.Classes.Eq r) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Geometry.Line.Internal.Line d r)
+ Data.Geometry.Line.Internal: isPerpendicularTo :: (Num r, Eq r) => Vector 2 r -> Line 2 r -> Bool
+ Data.Geometry.LineSegment: clampTo :: Ord r => Range r -> r -> r
+ Data.Geometry.LineSegment: endPoints :: Traversal (LineSegment d p r) (LineSegment d' q s) (Point d r :+ p) (Point d' s :+ q)
+ Data.Geometry.LineSegment: instance (Data.Geometry.Vector.VectorFamily.Arity d, Control.DeepSeq.NFData r, Control.DeepSeq.NFData p) => Control.DeepSeq.NFData (Data.Geometry.LineSegment.LineSegment d p r)
+ Data.Geometry.LineSegment: instance (GHC.Classes.Ord r, GHC.Real.Fractional r) => Data.Intersection.IsIntersectableWith (Data.Geometry.LineSegment.LineSegment 2 p r) (Data.Geometry.Line.Internal.Line 2 r)
+ Data.Geometry.LineSegment: instance (GHC.Classes.Ord r, GHC.Real.Fractional r) => Data.Intersection.IsIntersectableWith (Data.Geometry.LineSegment.LineSegment 2 p r) (Data.Geometry.LineSegment.LineSegment 2 p r)
+ Data.Geometry.LineSegment: instance (Test.QuickCheck.Arbitrary.Arbitrary r, Test.QuickCheck.Arbitrary.Arbitrary p, Data.Geometry.Vector.VectorFamily.Arity d) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Geometry.LineSegment.LineSegment d p r)
+ Data.Geometry.LineSegment: pattern ClosedInterval :: (r :+ a) -> (r :+ a) -> Interval a r
+ Data.Geometry.LineSegment: pattern ClosedLineSegment :: (Point d r :+ p) -> (Point d r :+ p) -> LineSegment d p r
+ Data.Geometry.LineSegment: pattern Interval :: EndPoint (r :+ a) -> EndPoint (r :+ a) -> Interval a r
+ Data.Geometry.LineSegment: pattern LineSegment :: EndPoint (Point d r :+ p) -> EndPoint (Point d r :+ p) -> LineSegment d p r
+ Data.Geometry.LineSegment: pattern LineSegment' :: (Point d r :+ p) -> (Point d r :+ p) -> LineSegment d p r
+ Data.Geometry.LineSegment: pattern OpenInterval :: (r :+ a) -> (r :+ a) -> Interval a r
+ Data.Geometry.LineSegment: pattern Range' :: forall a. () => () => a -> a -> Range a
+ Data.Geometry.PlanarSubdivision: fromPolygons :: (Foldable1 c, Ord r, Fractional r) => proxy s -> f -> c (Polygon t p r :+ f) -> PlanarSubdivision s p () f r
+ Data.Geometry.PlanarSubdivision: fromPolygons' :: forall proxy c s p r f. (Foldable1 c, Ord r, Fractional r) => proxy s -> f -> c (SomePolygon p r :+ f) -> PlanarSubdivision s p () f r
+ Data.Geometry.PlanarSubdivision.Basic: data Dart (s :: k) :: forall k. () => k -> Type
+ Data.Geometry.PlanarSubdivision.Basic: faceDataOf :: FaceId' s -> Lens' (PlanarSubdivision s v e f r) (FaceData (Dart s) f)
+ Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k) v e f r. Data.PlanarGraph.Core.HasDataOf (Data.Geometry.PlanarSubdivision.Basic.PlanarSubdivision s v e f r) (Data.PlanarGraph.Core.FaceId' s)
+ Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k) v e f r. Data.PlanarGraph.Core.HasDataOf (Data.Geometry.PlanarSubdivision.Basic.PlanarSubdivision s v e f r) (Data.PlanarGraph.Core.VertexId' s)
+ Data.Geometry.PlanarSubdivision.Basic: instance forall k (s :: k) v e f r. Data.PlanarGraph.Core.HasDataOf (Data.Geometry.PlanarSubdivision.Basic.PlanarSubdivision s v e f r) (Data.PlanarGraph.Dart.Dart s)
+ Data.Geometry.PlanarSubdivision.Basic: newtype FaceId (s :: k) (w :: World) :: forall k. () => k -> World -> Type
+ Data.Geometry.PlanarSubdivision.Basic: numComponents :: PlanarSubdivision s v e f r -> Int
+ Data.Geometry.PlanarSubdivision.Merge: embedAsHoleIn :: forall s h v e f r. PlanarSubdivision h v e f r -> (f -> f -> f) -> FaceId' s -> PlanarSubdivision s v e f r -> PlanarSubdivision s v e f r
+ Data.Geometry.PlanarSubdivision.Merge: embedAsHolesIn :: forall t s h v e f r. (Foldable1 t, Functor t) => t (PlanarSubdivision h v e f r) -> (t f -> f -> f) -> FaceId' s -> PlanarSubdivision s v e f r -> PlanarSubdivision s v e f r
+ Data.Geometry.PlanarSubdivision.Merge: merge :: PlanarSubdivision s v e f r -> PlanarSubdivision s v e f r -> PlanarSubdivision s v e f r
+ Data.Geometry.PlanarSubdivision.Merge: mergeAllWith :: Foldable1 t => (f -> f -> f) -> t (PlanarSubdivision s v e f r) -> PlanarSubdivision s v e f r
+ Data.Geometry.PlanarSubdivision.Merge: mergeWith :: (f -> f -> f) -> PlanarSubdivision s v e f r -> PlanarSubdivision s v e f r -> PlanarSubdivision s v e f r
+ Data.Geometry.PlanarSubdivision.Raw: ComponentId :: Int -> ComponentId s
+ Data.Geometry.PlanarSubdivision.Raw: FaceData :: Seq h -> !f -> FaceData h f
+ Data.Geometry.PlanarSubdivision.Raw: Raw :: !ComponentId s -> !ia -> !a -> Raw s ia a
+ Data.Geometry.PlanarSubdivision.Raw: RawFace :: !Maybe (ComponentId s, FaceId' (Wrap s)) -> !FaceData (Dart s) f -> RawFace s f
+ Data.Geometry.PlanarSubdivision.Raw: [_compId] :: Raw s ia a -> !ComponentId s
+ Data.Geometry.PlanarSubdivision.Raw: [_dataVal] :: Raw s ia a -> !a
+ Data.Geometry.PlanarSubdivision.Raw: [_fData] :: FaceData h f -> !f
+ Data.Geometry.PlanarSubdivision.Raw: [_faceDataVal] :: RawFace s f -> !FaceData (Dart s) f
+ Data.Geometry.PlanarSubdivision.Raw: [_faceIdx] :: RawFace s f -> !Maybe (ComponentId s, FaceId' (Wrap s))
+ Data.Geometry.PlanarSubdivision.Raw: [_holes] :: FaceData h f -> Seq h
+ Data.Geometry.PlanarSubdivision.Raw: [_idxVal] :: Raw s ia a -> !ia
+ Data.Geometry.PlanarSubdivision.Raw: [unCI] :: ComponentId s -> Int
+ Data.Geometry.PlanarSubdivision.Raw: data FaceData h f
+ Data.Geometry.PlanarSubdivision.Raw: data Raw s ia a
+ Data.Geometry.PlanarSubdivision.Raw: data RawFace s f
+ Data.Geometry.PlanarSubdivision.Raw: data Wrap' s
+ Data.Geometry.PlanarSubdivision.Raw: dataVal :: Lens (Raw s ia a) (Raw s ia b) a b
+ Data.Geometry.PlanarSubdivision.Raw: fData :: forall h_a2MEM f_a2MEN f_a2Nvc. Lens (FaceData h_a2MEM f_a2MEN) (FaceData h_a2MEM f_a2Nvc) f_a2MEN f_a2Nvc
+ Data.Geometry.PlanarSubdivision.Raw: faceDataVal :: forall s_a2Nvs f_a2Nvt f_a2NL9. Lens (RawFace s_a2Nvs f_a2Nvt) (RawFace s_a2Nvs f_a2NL9) (FaceData (Dart s_a2Nvs) f_a2Nvt) (FaceData (Dart s_a2Nvs) f_a2NL9)
+ Data.Geometry.PlanarSubdivision.Raw: faceIdx :: forall s_a2Nvs f_a2Nvt. Lens' (RawFace s_a2Nvs f_a2Nvt) (Maybe (ComponentId s_a2Nvs, FaceId' (Wrap s_a2Nvs)))
+ Data.Geometry.PlanarSubdivision.Raw: holes :: forall h_a2MEM f_a2MEN h_a2Nvd. Lens (FaceData h_a2MEM f_a2MEN) (FaceData h_a2Nvd f_a2MEN) (Seq h_a2MEM) (Seq h_a2Nvd)
+ Data.Geometry.PlanarSubdivision.Raw: instance (Data.Aeson.Types.FromJSON.FromJSON h, Data.Aeson.Types.FromJSON.FromJSON f) => Data.Aeson.Types.FromJSON.FromJSON (Data.Geometry.PlanarSubdivision.Raw.FaceData h f)
+ Data.Geometry.PlanarSubdivision.Raw: instance (Data.Aeson.Types.ToJSON.ToJSON h, Data.Aeson.Types.ToJSON.ToJSON f) => Data.Aeson.Types.ToJSON.ToJSON (Data.Geometry.PlanarSubdivision.Raw.FaceData h f)
+ Data.Geometry.PlanarSubdivision.Raw: instance (GHC.Classes.Eq h, GHC.Classes.Eq f) => GHC.Classes.Eq (Data.Geometry.PlanarSubdivision.Raw.FaceData h f)
+ Data.Geometry.PlanarSubdivision.Raw: instance (GHC.Classes.Ord h, GHC.Classes.Ord f) => GHC.Classes.Ord (Data.Geometry.PlanarSubdivision.Raw.FaceData h f)
+ Data.Geometry.PlanarSubdivision.Raw: instance (GHC.Show.Show h, GHC.Show.Show f) => GHC.Show.Show (Data.Geometry.PlanarSubdivision.Raw.FaceData h f)
+ Data.Geometry.PlanarSubdivision.Raw: instance Data.Bifunctor.Bifunctor Data.Geometry.PlanarSubdivision.Raw.FaceData
+ Data.Geometry.PlanarSubdivision.Raw: instance Data.Foldable.Foldable (Data.Geometry.PlanarSubdivision.Raw.FaceData h)
+ Data.Geometry.PlanarSubdivision.Raw: instance Data.Traversable.Traversable (Data.Geometry.PlanarSubdivision.Raw.FaceData h)
+ Data.Geometry.PlanarSubdivision.Raw: instance GHC.Base.Functor (Data.Geometry.PlanarSubdivision.Raw.FaceData h)
+ Data.Geometry.PlanarSubdivision.Raw: instance GHC.Generics.Generic (Data.Geometry.PlanarSubdivision.Raw.FaceData h f)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k) f. GHC.Classes.Eq f => GHC.Classes.Eq (Data.Geometry.PlanarSubdivision.Raw.RawFace s f)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k) f. GHC.Generics.Generic (Data.Geometry.PlanarSubdivision.Raw.RawFace s f)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k) f. GHC.Show.Show f => GHC.Show.Show (Data.Geometry.PlanarSubdivision.Raw.RawFace s f)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k) ia a. (GHC.Classes.Eq ia, GHC.Classes.Eq a) => GHC.Classes.Eq (Data.Geometry.PlanarSubdivision.Raw.Raw s ia a)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k) ia a. (GHC.Show.Show ia, GHC.Show.Show a) => GHC.Show.Show (Data.Geometry.PlanarSubdivision.Raw.Raw s ia a)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k) ia a. GHC.Generics.Generic (Data.Geometry.PlanarSubdivision.Raw.Raw s ia a)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k) ia. Data.Foldable.Foldable (Data.Geometry.PlanarSubdivision.Raw.Raw s ia)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k) ia. Data.Traversable.Traversable (Data.Geometry.PlanarSubdivision.Raw.Raw s ia)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k) ia. GHC.Base.Functor (Data.Geometry.PlanarSubdivision.Raw.Raw s ia)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k). Data.Aeson.Types.FromJSON.FromJSON (Data.Geometry.PlanarSubdivision.Raw.ComponentId s)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k). Data.Aeson.Types.ToJSON.ToJSON (Data.Geometry.PlanarSubdivision.Raw.ComponentId s)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k). Data.Foldable.Foldable (Data.Geometry.PlanarSubdivision.Raw.RawFace s)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k). Data.Traversable.Traversable (Data.Geometry.PlanarSubdivision.Raw.RawFace s)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k). GHC.Base.Functor (Data.Geometry.PlanarSubdivision.Raw.RawFace s)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k). GHC.Classes.Eq (Data.Geometry.PlanarSubdivision.Raw.ComponentId s)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k). GHC.Classes.Ord (Data.Geometry.PlanarSubdivision.Raw.ComponentId s)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k). GHC.Enum.Bounded (Data.Geometry.PlanarSubdivision.Raw.ComponentId s)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k). GHC.Enum.Enum (Data.Geometry.PlanarSubdivision.Raw.ComponentId s)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k). GHC.Generics.Generic (Data.Geometry.PlanarSubdivision.Raw.ComponentId s)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k (s :: k). GHC.Show.Show (Data.Geometry.PlanarSubdivision.Raw.ComponentId s)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k ia a (s :: k). (Data.Aeson.Types.FromJSON.FromJSON ia, Data.Aeson.Types.FromJSON.FromJSON a) => Data.Aeson.Types.FromJSON.FromJSON (Data.Geometry.PlanarSubdivision.Raw.Raw s ia a)
+ Data.Geometry.PlanarSubdivision.Raw: instance forall k ia a (s :: k). (Data.Aeson.Types.ToJSON.ToJSON ia, Data.Aeson.Types.ToJSON.ToJSON a) => Data.Aeson.Types.ToJSON.ToJSON (Data.Geometry.PlanarSubdivision.Raw.Raw s ia a)
+ Data.Geometry.PlanarSubdivision.Raw: newtype ComponentId s
+ Data.Geometry.PlanarSubdivision.Raw: type family Wrap (s :: k) :: k
+ Data.Geometry.Point: instance (Data.Geometry.Vector.VectorFamily.Arity d, Test.QuickCheck.Arbitrary.Arbitrary r) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Geometry.Point.Point d r)
+ Data.Geometry.Point: pattern Point2 :: r -> r -> Point 2 r
+ Data.Geometry.Point: pattern Point3 :: r -> r -> r -> Point 3 r
+ Data.Geometry.Polygon: findDiagonal :: (Ord r, Fractional r) => Polygon t p r -> LineSegment 2 p r
+ Data.Geometry.Polygon: instance (GHC.Real.Fractional r, GHC.Classes.Ord r) => Data.Intersection.IsIntersectableWith (Data.Geometry.Point.Point 2 r) (Data.Geometry.Polygon.Polygon t p r)
+ Data.Geometry.Polygon: isStarShaped :: (MonadRandom m, Ord r, Fractional r) => SimplePolygon p r -> m (Maybe (Point 2 r))
+ Data.Geometry.Polygon: isTriangle :: Polygon p t r -> Bool
+ Data.Geometry.Polygon: pickPoint :: (Ord r, Fractional r) => Polygon p t r -> Point 2 r
+ Data.Geometry.Polygon: safeMaximumOn :: Ord b => (a -> b) -> [a] -> Maybe a
+ Data.Geometry.PrioritySearchTree: PrioritySearchTree :: BinLeafTree (NodeData p r) (LeafData p r) -> PrioritySearchTree p r
+ Data.Geometry.PrioritySearchTree: [_unPrioritySearchTree] :: PrioritySearchTree p r -> BinLeafTree (NodeData p r) (LeafData p r)
+ Data.Geometry.PrioritySearchTree: createTree :: Ord r => NonEmpty (Point 2 r :+ p) -> PrioritySearchTree p r
+ Data.Geometry.PrioritySearchTree: instance (GHC.Classes.Eq r, GHC.Classes.Eq p) => GHC.Classes.Eq (Data.Geometry.PrioritySearchTree.NodeData p r)
+ Data.Geometry.PrioritySearchTree: instance (GHC.Classes.Eq r, GHC.Classes.Eq p) => GHC.Classes.Eq (Data.Geometry.PrioritySearchTree.PrioritySearchTree p r)
+ Data.Geometry.PrioritySearchTree: instance (GHC.Show.Show r, GHC.Show.Show p) => GHC.Show.Show (Data.Geometry.PrioritySearchTree.NodeData p r)
+ Data.Geometry.PrioritySearchTree: instance (GHC.Show.Show r, GHC.Show.Show p) => GHC.Show.Show (Data.Geometry.PrioritySearchTree.PrioritySearchTree p r)
+ Data.Geometry.PrioritySearchTree: instance Data.Bifunctor.Bifunctor Data.Geometry.PrioritySearchTree.NodeData
+ Data.Geometry.PrioritySearchTree: instance Data.Bifunctor.Bifunctor Data.Geometry.PrioritySearchTree.PrioritySearchTree
+ Data.Geometry.PrioritySearchTree: newtype PrioritySearchTree p r
+ Data.Geometry.PrioritySearchTree: queryRange :: Ord r => (Range r, r) -> PrioritySearchTree p r -> [Point 2 r :+ p]
+ Data.Geometry.RangeTree: Assoc :: AssocT i d v p r -> Assoc i d v p r
+ Data.Geometry.RangeTree: Leaf :: [Point d r :+ p] -> Leaf i d v p r
+ Data.Geometry.RangeTree: RangeTree :: RangeTree (Assoc i d v p r) (Leaf i d v p r) r -> RT i d v p r
+ Data.Geometry.RangeTree: [_getPts] :: Leaf i d v p r -> [Point d r :+ p]
+ Data.Geometry.RangeTree: [_unRangeTree] :: RT i d v p r -> RangeTree (Assoc i d v p r) (Leaf i d v p r) r
+ Data.Geometry.RangeTree: [unAssoc] :: Assoc i d v p r -> AssocT i d v p r
+ Data.Geometry.RangeTree: class (i <= d, Arity d) => Query i d
+ Data.Geometry.RangeTree: createRangeTree :: (Ord r, RTMeasure v d p r) => NonEmpty (Point d r :+ p) -> RT i d v p r
+ Data.Geometry.RangeTree: createRangeTree' :: (Ord r, RTMeasure v d p r) => [Point d r :+ p] -> Maybe (RT i d v p r)
+ Data.Geometry.RangeTree: createRangeTree1 :: (Ord r, RTMeasure v d p r, 1 <= d, Arity d) => NonEmpty (Point d r :+ p) -> RT 1 d v p r
+ Data.Geometry.RangeTree: createRangeTree2 :: forall v d r p. (Ord r, RTMeasure v d p r, Arity d, 2 <= d, 1 <= d) => NonEmpty (Point d r :+ p) -> RT 2 d v p r
+ Data.Geometry.RangeTree: instance (1 GHC.TypeNats.<= d, Data.Geometry.Vector.VectorFamily.Arity d) => Data.Geometry.RangeTree.Query 1 d
+ Data.Geometry.RangeTree: instance (1 GHC.TypeNats.<= d, i GHC.TypeNats.<= d, Data.Geometry.RangeTree.Query (i GHC.TypeNats.- 1) d, Data.Geometry.Vector.VectorFamily.Arity d, i Data.Type.Equality.~ 2) => Data.Geometry.RangeTree.Query 2 d
+ Data.Geometry.RangeTree: instance (Data.Geometry.RangeTree.RTMeasure v d p r, GHC.Classes.Ord r, 1 GHC.TypeNats.<= d, Data.Geometry.Vector.VectorFamily.Arity d) => Data.BinaryTree.Measured (Data.Geometry.RangeTree.Assoc 2 d v p r) (Data.Geometry.RangeTree.Leaf 2 d v p r)
+ Data.Geometry.RangeTree: instance (Data.Geometry.RangeTree.RTMeasure v d p r, GHC.Classes.Ord r, 1 GHC.TypeNats.<= d, Data.Geometry.Vector.VectorFamily.Arity d) => GHC.Base.Monoid (Data.Geometry.RangeTree.Assoc 2 d v p r)
+ Data.Geometry.RangeTree: instance (Data.Geometry.RangeTree.RTMeasure v d p r, GHC.Classes.Ord r, 1 GHC.TypeNats.<= d, Data.Geometry.Vector.VectorFamily.Arity d) => GHC.Base.Semigroup (Data.Geometry.RangeTree.Assoc 2 d v p r)
+ Data.Geometry.RangeTree: instance (GHC.Classes.Eq r, GHC.Classes.Eq (Data.Geometry.RangeTree.Assoc i d v p r), GHC.Classes.Eq (Data.Geometry.RangeTree.Leaf i d v p r)) => GHC.Classes.Eq (Data.Geometry.RangeTree.RT i d v p r)
+ Data.Geometry.RangeTree: instance (GHC.Show.Show r, GHC.Show.Show (Data.Geometry.RangeTree.Assoc i d v p r), GHC.Show.Show (Data.Geometry.RangeTree.Leaf i d v p r)) => GHC.Show.Show (Data.Geometry.RangeTree.RT i d v p r)
+ Data.Geometry.RangeTree: instance Data.Geometry.RangeTree.RTMeasure v d p r => Data.BinaryTree.Measured (Data.Geometry.RangeTree.Assoc 1 d v p r) (Data.Geometry.RangeTree.Leaf 1 d v p r)
+ Data.Geometry.RangeTree: instance Data.Geometry.RangeTree.RTMeasure v d p r => GHC.Base.Semigroup (Data.Geometry.RangeTree.Assoc 1 d v p r)
+ Data.Geometry.RangeTree: instance GHC.Classes.Eq (Data.Geometry.RangeTree.AssocT i d v p r) => GHC.Classes.Eq (Data.Geometry.RangeTree.Assoc i d v p r)
+ Data.Geometry.RangeTree: instance GHC.Show.Show (Data.Geometry.RangeTree.AssocT i d v p r) => GHC.Show.Show (Data.Geometry.RangeTree.Assoc i d v p r)
+ Data.Geometry.RangeTree: instance forall k1 (i :: k1) (d :: GHC.Types.Nat) k2 (v :: k2) p r. GHC.Base.Monoid (Data.Geometry.RangeTree.Leaf i d v p r)
+ Data.Geometry.RangeTree: instance forall k1 (i :: k1) (d :: GHC.Types.Nat) k2 (v :: k2) p r. GHC.Base.Semigroup (Data.Geometry.RangeTree.Leaf i d v p r)
+ Data.Geometry.RangeTree: instance forall k1 k2 r p (d :: GHC.Types.Nat) (i :: k2) (v :: k1). (GHC.Classes.Eq r, GHC.Classes.Eq p, Data.Geometry.Vector.VectorFamily.Arity d) => GHC.Classes.Eq (Data.Geometry.RangeTree.Leaf i d v p r)
+ Data.Geometry.RangeTree: instance forall k1 k2 r p (d :: GHC.Types.Nat) (i :: k2) (v :: k1). (GHC.Show.Show r, GHC.Show.Show p, Data.Geometry.Vector.VectorFamily.Arity d) => GHC.Show.Show (Data.Geometry.RangeTree.Leaf i d v p r)
+ Data.Geometry.RangeTree: newtype Assoc i d v p r
+ Data.Geometry.RangeTree: newtype Leaf i d v p r
+ Data.Geometry.RangeTree: newtype RT i d v p r
+ Data.Geometry.RangeTree: search :: (Ord r, Monoid (v (Point d r :+ p)), Query i d) => Vector d (Range r) -> RT i d v p r -> v (Point d r :+ p)
+ Data.Geometry.RangeTree: search' :: (Query i d, Ord r) => Vector d (Range r) -> RT i d v p r -> [v (Point d r :+ p)]
+ Data.Geometry.RangeTree: toAscList :: RT i d v p r -> [Point d r :+ p]
+ Data.Geometry.RangeTree: type RTMeasure v d p r = (LabeledMeasure v, Semigroup (v (Point d r :+ p)))
+ Data.Geometry.RangeTree: type RangeTree d = RT d d
+ Data.Geometry.RangeTree: type family AssocT i d v p r
+ Data.Geometry.RangeTree.Generic: CountOf :: [p] -> CountOf p
+ Data.Geometry.RangeTree.Generic: NodeData :: !Min r -> !Max r -> !v -> NodeData v r
+ Data.Geometry.RangeTree.Generic: RangeTree :: BinLeafTree (NodeData v r) (NodeData (v, q) r) -> RangeTree v q r
+ Data.Geometry.RangeTree.Generic: [_assoc] :: NodeData v r -> !v
+ Data.Geometry.RangeTree.Generic: [_maxVal] :: NodeData v r -> !Max r
+ Data.Geometry.RangeTree.Generic: [_minVal] :: NodeData v r -> !Min r
+ Data.Geometry.RangeTree.Generic: [_unRangeTree] :: RangeTree v q r -> BinLeafTree (NodeData v r) (NodeData (v, q) r)
+ Data.Geometry.RangeTree.Generic: count :: Ord r => Range r -> RangeTree (Count p) q r -> Int
+ Data.Geometry.RangeTree.Generic: createCountingTree :: Ord r => NonEmpty (r :+ [p]) -> RangeTree (Count p) (CountOf p) r
+ Data.Geometry.RangeTree.Generic: createReportingTree :: Ord r => NonEmpty (r :+ [p]) -> RangeTree (Report p) (Report p) r
+ Data.Geometry.RangeTree.Generic: createTree :: (Ord r, Measured v p, Semigroup p) => NonEmpty (r :+ p) -> RangeTree v p r
+ Data.Geometry.RangeTree.Generic: createTree' :: (Ord r, Measured v p) => NonEmpty (r :+ p) -> RangeTree v p r
+ Data.Geometry.RangeTree.Generic: data NodeData v r
+ Data.Geometry.RangeTree.Generic: instance (GHC.Base.Semigroup v, GHC.Classes.Ord r) => GHC.Base.Semigroup (Data.Geometry.RangeTree.Generic.NodeData v r)
+ Data.Geometry.RangeTree.Generic: instance (GHC.Classes.Eq r, GHC.Classes.Eq v) => GHC.Classes.Eq (Data.Geometry.RangeTree.Generic.NodeData v r)
+ Data.Geometry.RangeTree.Generic: instance (GHC.Classes.Eq r, GHC.Classes.Eq v, GHC.Classes.Eq q) => GHC.Classes.Eq (Data.Geometry.RangeTree.Generic.RangeTree v q r)
+ Data.Geometry.RangeTree.Generic: instance (GHC.Show.Show r, GHC.Show.Show v) => GHC.Show.Show (Data.Geometry.RangeTree.Generic.NodeData v r)
+ Data.Geometry.RangeTree.Generic: instance (GHC.Show.Show r, GHC.Show.Show v, GHC.Show.Show q) => GHC.Show.Show (Data.Geometry.RangeTree.Generic.RangeTree v q r)
+ Data.Geometry.RangeTree.Generic: instance Data.BinaryTree.Measured (Data.Geometry.RangeTree.Measure.Count p) (Data.Geometry.RangeTree.Generic.CountOf p)
+ Data.Geometry.RangeTree.Generic: instance Data.Foldable.Foldable Data.Geometry.RangeTree.Generic.CountOf
+ Data.Geometry.RangeTree.Generic: instance GHC.Base.Functor (Data.Geometry.RangeTree.Generic.NodeData v)
+ Data.Geometry.RangeTree.Generic: instance GHC.Base.Functor Data.Geometry.RangeTree.Generic.CountOf
+ Data.Geometry.RangeTree.Generic: instance GHC.Base.Monoid (Data.Geometry.RangeTree.Generic.CountOf p)
+ Data.Geometry.RangeTree.Generic: instance GHC.Base.Semigroup (Data.Geometry.RangeTree.Generic.CountOf p)
+ Data.Geometry.RangeTree.Generic: instance GHC.Classes.Eq p => GHC.Classes.Eq (Data.Geometry.RangeTree.Generic.CountOf p)
+ Data.Geometry.RangeTree.Generic: instance GHC.Classes.Ord p => GHC.Classes.Ord (Data.Geometry.RangeTree.Generic.CountOf p)
+ Data.Geometry.RangeTree.Generic: instance GHC.Show.Show p => GHC.Show.Show (Data.Geometry.RangeTree.Generic.CountOf p)
+ Data.Geometry.RangeTree.Generic: newtype CountOf p
+ Data.Geometry.RangeTree.Generic: newtype RangeTree v q r
+ Data.Geometry.RangeTree.Generic: rangeOf :: BinLeafTree (NodeData v r) (NodeData v' r) -> Range r
+ Data.Geometry.RangeTree.Generic: rangeOf' :: NodeData v r -> Range r
+ Data.Geometry.RangeTree.Generic: report :: Ord r => Range r -> RangeTree (Report p) q r -> [p]
+ Data.Geometry.RangeTree.Generic: search :: (Ord r, Monoid v) => Range r -> RangeTree v p r -> v
+ Data.Geometry.RangeTree.Generic: search' :: Ord r => Range r -> RangeTree v p r -> [v]
+ Data.Geometry.RangeTree.Generic: search'' :: Ord r => Range r -> BinLeafTree (NodeData v r) (NodeData (v, q) r) -> [v]
+ Data.Geometry.RangeTree.Generic: toAscList :: RangeTree v p r -> NonEmpty (r :+ p)
+ Data.Geometry.RangeTree.Measure: Count :: Int -> Count a
+ Data.Geometry.RangeTree.Measure: Report :: [p] -> Report p
+ Data.Geometry.RangeTree.Measure: [getCount] :: Count a -> Int
+ Data.Geometry.RangeTree.Measure: [reportList] :: Report p -> [p]
+ Data.Geometry.RangeTree.Measure: class LabeledMeasure v
+ Data.Geometry.RangeTree.Measure: instance (Data.Geometry.RangeTree.Measure.LabeledMeasure l, Data.Geometry.RangeTree.Measure.LabeledMeasure r) => Data.Geometry.RangeTree.Measure.LabeledMeasure (l Data.Geometry.RangeTree.Measure.:*: r)
+ Data.Geometry.RangeTree.Measure: instance Data.BinaryTree.Measured (Data.Geometry.RangeTree.Measure.Report p) (Data.Geometry.RangeTree.Measure.Report p)
+ Data.Geometry.RangeTree.Measure: instance Data.Foldable.Foldable Data.Geometry.RangeTree.Measure.Report
+ Data.Geometry.RangeTree.Measure: instance Data.Functor.Classes.Eq1 Data.Geometry.RangeTree.Measure.Count
+ Data.Geometry.RangeTree.Measure: instance Data.Functor.Classes.Eq1 Data.Geometry.RangeTree.Measure.Report
+ Data.Geometry.RangeTree.Measure: instance Data.Functor.Classes.Show1 Data.Geometry.RangeTree.Measure.Count
+ Data.Geometry.RangeTree.Measure: instance Data.Functor.Classes.Show1 Data.Geometry.RangeTree.Measure.Report
+ Data.Geometry.RangeTree.Measure: instance Data.Geometry.RangeTree.Measure.LabeledMeasure Data.Geometry.RangeTree.Measure.Count
+ Data.Geometry.RangeTree.Measure: instance Data.Geometry.RangeTree.Measure.LabeledMeasure Data.Geometry.RangeTree.Measure.Report
+ Data.Geometry.RangeTree.Measure: instance GHC.Base.Functor Data.Geometry.RangeTree.Measure.Report
+ Data.Geometry.RangeTree.Measure: instance GHC.Base.Monoid (Data.Geometry.RangeTree.Measure.Report p)
+ Data.Geometry.RangeTree.Measure: instance GHC.Base.Semigroup (Data.Geometry.RangeTree.Measure.Report p)
+ Data.Geometry.RangeTree.Measure: instance GHC.Classes.Eq p => GHC.Classes.Eq (Data.Geometry.RangeTree.Measure.Report p)
+ Data.Geometry.RangeTree.Measure: instance GHC.Classes.Ord p => GHC.Classes.Ord (Data.Geometry.RangeTree.Measure.Report p)
+ Data.Geometry.RangeTree.Measure: instance GHC.Show.Show p => GHC.Show.Show (Data.Geometry.RangeTree.Measure.Report p)
+ Data.Geometry.RangeTree.Measure: instance forall k (a :: k). GHC.Base.Monoid (Data.Geometry.RangeTree.Measure.Count a)
+ Data.Geometry.RangeTree.Measure: instance forall k (a :: k). GHC.Base.Semigroup (Data.Geometry.RangeTree.Measure.Count a)
+ Data.Geometry.RangeTree.Measure: instance forall k (a :: k). GHC.Classes.Eq (Data.Geometry.RangeTree.Measure.Count a)
+ Data.Geometry.RangeTree.Measure: instance forall k (a :: k). GHC.Classes.Ord (Data.Geometry.RangeTree.Measure.Count a)
+ Data.Geometry.RangeTree.Measure: instance forall k (a :: k). GHC.Read.Read (Data.Geometry.RangeTree.Measure.Count a)
+ Data.Geometry.RangeTree.Measure: instance forall k (a :: k). GHC.Show.Show (Data.Geometry.RangeTree.Measure.Count a)
+ Data.Geometry.RangeTree.Measure: instance forall k (l :: k -> *) (a :: k) (r :: k -> *). (GHC.Base.Monoid (l a), GHC.Base.Monoid (r a)) => GHC.Base.Monoid ((Data.Geometry.RangeTree.Measure.:*:) l r a)
+ Data.Geometry.RangeTree.Measure: instance forall k (l :: k -> *) (a :: k) (r :: k -> *). (GHC.Base.Semigroup (l a), GHC.Base.Semigroup (r a)) => GHC.Base.Semigroup ((Data.Geometry.RangeTree.Measure.:*:) l r a)
+ Data.Geometry.RangeTree.Measure: labeledMeasure :: LabeledMeasure v => [a] -> v a
+ Data.Geometry.RangeTree.Measure: newtype Count a
+ Data.Geometry.RangeTree.Measure: newtype Report p
+ Data.Geometry.RangeTree.Measure: type (:*:) l r = Product l r
+ Data.Geometry.Slab: instance (GHC.Real.Fractional r, GHC.Classes.Ord r, Data.Geometry.Slab.HasBoundingLines o) => Data.Intersection.IsIntersectableWith (Data.Geometry.Line.Internal.Line 2 r) (Data.Geometry.Slab.Slab o a r)
+ Data.Geometry.Slab: instance (GHC.Real.Fractional r, GHC.Classes.Ord r, Data.Geometry.Slab.HasBoundingLines o) => Data.Intersection.IsIntersectableWith (Data.Geometry.LineSegment.LineSegment 2 a r) (Data.Geometry.Slab.Slab o a r)
+ Data.Geometry.Slab: instance (GHC.Real.Fractional r, GHC.Classes.Ord r, Data.Geometry.Slab.HasBoundingLines o) => Data.Intersection.IsIntersectableWith (Data.Geometry.SubLine.SubLine 2 a r r) (Data.Geometry.Slab.Slab o a r)
+ Data.Geometry.Slab: instance Data.Intersection.IsIntersectableWith (Data.Geometry.Slab.Slab 'Data.Geometry.Slab.Horizontal a r) (Data.Geometry.Slab.Slab 'Data.Geometry.Slab.Vertical a r)
+ Data.Geometry.Slab: instance GHC.Classes.Ord r => Data.Intersection.IsIntersectableWith (Data.Geometry.Slab.Slab o a r) (Data.Geometry.Slab.Slab o a r)
+ Data.Geometry.SubLine: instance (GHC.Classes.Ord r, GHC.Real.Fractional r) => Data.Intersection.IsIntersectableWith (Data.Geometry.SubLine.SubLine 2 p (Data.UnBounded.UnBounded r) r) (Data.Geometry.SubLine.SubLine 2 p (Data.UnBounded.UnBounded r) r)
+ Data.Geometry.SubLine: instance (GHC.Classes.Ord r, GHC.Real.Fractional r) => Data.Intersection.IsIntersectableWith (Data.Geometry.SubLine.SubLine 2 p r r) (Data.Geometry.SubLine.SubLine 2 p r r)
+ Data.Geometry.SubLine: instance (Test.QuickCheck.Arbitrary.Arbitrary r, Test.QuickCheck.Arbitrary.Arbitrary p, Test.QuickCheck.Arbitrary.Arbitrary s, Data.Geometry.Vector.VectorFamily.Arity d, GHC.Classes.Ord r, GHC.Classes.Ord s, GHC.Classes.Ord p, GHC.Num.Num r) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Geometry.SubLine.SubLine d p s r)
+ Data.Geometry.Triangle: instance (GHC.Real.Fractional r, GHC.Classes.Ord r) => Data.Intersection.IsIntersectableWith (Data.Geometry.Line.Internal.Line 2 r) (Data.Geometry.Triangle.Triangle 2 p r)
+ Data.Geometry.Triangle: instance (GHC.Real.Fractional r, GHC.Classes.Ord r) => Data.Intersection.IsIntersectableWith (Data.Geometry.Line.Internal.Line 3 r) (Data.Geometry.Triangle.Triangle 3 p r)
+ Data.Geometry.Vector: instance (Test.QuickCheck.Arbitrary.Arbitrary r, Data.Geometry.Vector.VectorFamily.Arity d) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Geometry.Vector.VectorFamily.Vector d r)
+ Data.Geometry.Vector.VectorFamily: head :: (Arity d, 1 <= d) => Vector d r -> r
+ Data.Geometry.Vector.VectorFamily: pattern Vector :: VectorFamilyF (Peano d) r -> Vector d r
+ Data.Geometry.Vector.VectorFamily: pattern Vector1 :: r -> Vector 1 r
+ Data.Geometry.Vector.VectorFamily: pattern Vector2 :: r -> r -> Vector 2 r
+ Data.Geometry.Vector.VectorFamily: pattern Vector3 :: r -> r -> r -> Vector 3 r
+ Data.Geometry.Vector.VectorFamily: pattern Vector4 :: r -> r -> r -> r -> Vector 4 r
+ Data.Geometry.Vector.VectorFixed: pattern Vector2 :: r -> r -> Vector 2 r
+ Data.Geometry.Vector.VectorFixed: pattern Vector3 :: r -> r -> r -> Vector 3 r
+ Data.Geometry.Vector.VectorFixed: pattern Vector4 :: r -> r -> r -> r -> Vector 4 r
+ Data.PlaneGraph: boundaryDart :: FaceId' s -> PlaneGraph s v e f r -> Dart s
+ Data.PlaneGraph: darts :: PlaneGraph s v e f r -> Vector (Dart s, e)
+ Data.PlaneGraph: data Dart (s :: k) :: forall k. () => k -> Type
+ Data.PlaneGraph: fromAdjRep :: proxy s -> Gr (Vtx v e r) (Face f) -> PlaneGraph s v e f r
+ Data.PlaneGraph: newtype FaceId (s :: k) (w :: World) :: forall k. () => k -> World -> Type
+ Data.PlaneGraph: toAdjRep :: PlaneGraph s v e f r -> Gr (Vtx v e r) (Face f)
+ Data.PlaneGraph.AdjRep: Face :: (Int, Int) -> f -> Face f
+ Data.PlaneGraph.AdjRep: Gr :: [v] -> [f] -> Gr v f
+ Data.PlaneGraph.AdjRep: Vtx :: Int -> Point 2 r -> [(Int, e)] -> v -> Vtx v e r
+ Data.PlaneGraph.AdjRep: [adj] :: Vtx v e r -> [(Int, e)]
+ Data.PlaneGraph.AdjRep: [ajacencies] :: Gr v f -> [v]
+ Data.PlaneGraph.AdjRep: [fData] :: Face f -> f
+ Data.PlaneGraph.AdjRep: [faces] :: Gr v f -> [f]
+ Data.PlaneGraph.AdjRep: [id] :: Vtx v e r -> Int
+ Data.PlaneGraph.AdjRep: [incidentEdge] :: Face f -> (Int, Int)
+ Data.PlaneGraph.AdjRep: [loc] :: Vtx v e r -> Point 2 r
+ Data.PlaneGraph.AdjRep: [vData] :: Vtx v e r -> v
+ Data.PlaneGraph.AdjRep: data Face f
+ Data.PlaneGraph.AdjRep: data Gr v f
+ Data.PlaneGraph.AdjRep: data Vtx v e r
+ Data.PlaneGraph.AdjRep: instance (Data.Aeson.Types.FromJSON.FromJSON r, Data.Aeson.Types.FromJSON.FromJSON v, Data.Aeson.Types.FromJSON.FromJSON e) => Data.Aeson.Types.FromJSON.FromJSON (Data.PlaneGraph.AdjRep.Vtx v e r)
+ Data.PlaneGraph.AdjRep: instance (Data.Aeson.Types.ToJSON.ToJSON r, Data.Aeson.Types.ToJSON.ToJSON v, Data.Aeson.Types.ToJSON.ToJSON e) => Data.Aeson.Types.ToJSON.ToJSON (Data.PlaneGraph.AdjRep.Vtx v e r)
+ Data.PlaneGraph.AdjRep: instance GHC.Base.Functor (Data.PlaneGraph.AdjRep.Vtx v e)
+ Data.PlaneGraph.AdjRep: instance GHC.Generics.Generic (Data.PlaneGraph.AdjRep.Vtx v e r)
+ Data.PlaneGraph.Core: Dual :: World
+ Data.PlaneGraph.Core: FaceId :: VertexId s (DualOf w) -> FaceId
+ Data.PlaneGraph.Core: PlaneGraph :: PlanarGraph s Primal (VertexData r v) e f -> PlaneGraph s v e f r
+ Data.PlaneGraph.Core: Primal :: World
+ Data.PlaneGraph.Core: VertexData :: !Point 2 r -> !v -> VertexData r v
+ Data.PlaneGraph.Core: VertexId :: Int -> VertexId
+ Data.PlaneGraph.Core: [_unFaceId] :: FaceId -> VertexId s (DualOf w)
+ Data.PlaneGraph.Core: [_unVertexId] :: VertexId -> Int
+ Data.PlaneGraph.Core: boundary :: FaceId' s -> PlaneGraph s v e f r -> Vector (Dart s)
+ Data.PlaneGraph.Core: boundary' :: Dart s -> PlaneGraph s v e f r -> Vector (Dart s)
+ Data.PlaneGraph.Core: boundaryDart :: FaceId' s -> PlaneGraph s v e f r -> Dart s
+ Data.PlaneGraph.Core: boundaryVertices :: FaceId' s -> PlaneGraph s v e f r -> Vector (VertexId' s)
+ Data.PlaneGraph.Core: class HasDataOf g i where {
+ Data.PlaneGraph.Core: dartData :: Lens (PlaneGraph s v e f r) (PlaneGraph s v e' f r) (Vector (Dart s, e)) (Vector (Dart s, e'))
+ Data.PlaneGraph.Core: darts :: PlaneGraph s v e f r -> Vector (Dart s, e)
+ Data.PlaneGraph.Core: darts' :: PlaneGraph s v e f r -> Vector (Dart s)
+ Data.PlaneGraph.Core: data VertexData r v
+ Data.PlaneGraph.Core: data World
+ Data.PlaneGraph.Core: data Dart (s :: k) :: forall k. () => k -> Type
+ Data.PlaneGraph.Core: dataOf :: HasDataOf g i => i -> Lens' g (DataOf g i)
+ Data.PlaneGraph.Core: dual :: () => Getter (PlanarGraph s w v e f) (PlanarGraph s (DualOf w) f e v)
+ Data.PlaneGraph.Core: edgeSegment :: Dart s -> PlaneGraph s v e f r -> LineSegment 2 v r :+ e
+ Data.PlaneGraph.Core: edgeSegments :: PlaneGraph s v e f r -> Vector (Dart s, LineSegment 2 v r :+ e)
+ Data.PlaneGraph.Core: edges :: PlaneGraph s v e f r -> Vector (Dart s, e)
+ Data.PlaneGraph.Core: edges' :: PlaneGraph s v e f r -> Vector (Dart s)
+ Data.PlaneGraph.Core: endPointData :: Dart s -> PlaneGraph s v e f r -> (VertexData r v, VertexData r v)
+ Data.PlaneGraph.Core: endPoints :: Dart s -> PlaneGraph s v e f r -> (VertexId' s, VertexId' s)
+ Data.PlaneGraph.Core: endPointsOf :: Dart s -> Getter (PlaneGraph s v e f r) (VertexData r v, VertexData r v)
+ Data.PlaneGraph.Core: faceData :: Lens (PlaneGraph s v e f r) (PlaneGraph s v e f' r) (Vector f) (Vector f')
+ Data.PlaneGraph.Core: faces :: PlaneGraph s v e f r -> Vector (FaceId' s, f)
+ Data.PlaneGraph.Core: faces' :: PlaneGraph s v e f r -> Vector (FaceId' s)
+ Data.PlaneGraph.Core: faces'' :: (Ord r, Fractional r) => PlaneGraph s v e f r -> ((FaceId' s, f), Vector (FaceId' s, f))
+ Data.PlaneGraph.Core: fromAdjacencyLists :: (Foldable h, Functor h) => [(VertexId s w, h (VertexId s w))] -> PlanarGraph s w () () ()
+ Data.PlaneGraph.Core: fromConnectedSegments :: (Foldable f, Ord r, Num r) => proxy s -> f (LineSegment 2 p r :+ e) -> PlaneGraph s (NonEmpty p) e () r
+ Data.PlaneGraph.Core: fromSimplePolygon :: proxy s -> SimplePolygon p r -> f -> f -> PlaneGraph s p () f r
+ Data.PlaneGraph.Core: graph :: forall s_a2Ejh v_a2Eji e_a2Ejj f_a2Ejk r_a2Ejl s_a2Ev3 v_a2Ev4 e_a2Ev5 f_a2Ev6 r_a2Ev7. Iso (PlaneGraph s_a2Ejh v_a2Eji e_a2Ejj f_a2Ejk r_a2Ejl) (PlaneGraph s_a2Ev3 v_a2Ev4 e_a2Ev5 f_a2Ev6 r_a2Ev7) (PlanarGraph s_a2Ejh 'Primal (VertexData r_a2Ejl v_a2Eji) e_a2Ejj f_a2Ejk) (PlanarGraph s_a2Ev3 'Primal (VertexData r_a2Ev7 v_a2Ev4) e_a2Ev5 f_a2Ev6)
+ Data.PlaneGraph.Core: headOf :: Dart s -> PlaneGraph s v e f r -> VertexId' s
+ Data.PlaneGraph.Core: incidentEdges :: VertexId' s -> PlaneGraph s v e f r -> Vector (Dart s)
+ Data.PlaneGraph.Core: incomingEdges :: VertexId' s -> PlaneGraph s v e f r -> Vector (Dart s)
+ Data.PlaneGraph.Core: instance (Data.Aeson.Types.FromJSON.FromJSON r, Data.Aeson.Types.FromJSON.FromJSON v) => Data.Aeson.Types.FromJSON.FromJSON (Data.PlaneGraph.Core.VertexData r v)
+ Data.PlaneGraph.Core: instance (Data.Aeson.Types.ToJSON.ToJSON r, Data.Aeson.Types.ToJSON.ToJSON v) => Data.Aeson.Types.ToJSON.ToJSON (Data.PlaneGraph.Core.VertexData r v)
+ Data.PlaneGraph.Core: instance (GHC.Classes.Eq r, GHC.Classes.Eq v) => GHC.Classes.Eq (Data.PlaneGraph.Core.VertexData r v)
+ Data.PlaneGraph.Core: instance (GHC.Classes.Ord r, GHC.Classes.Ord v) => GHC.Classes.Ord (Data.PlaneGraph.Core.VertexData r v)
+ Data.PlaneGraph.Core: instance (GHC.Show.Show r, GHC.Show.Show v) => GHC.Show.Show (Data.PlaneGraph.Core.VertexData r v)
+ Data.PlaneGraph.Core: instance Data.Bifunctor.Bifunctor Data.PlaneGraph.Core.VertexData
+ Data.PlaneGraph.Core: instance Data.Foldable.Foldable (Data.PlaneGraph.Core.VertexData r)
+ Data.PlaneGraph.Core: instance Data.Traversable.Traversable (Data.PlaneGraph.Core.VertexData r)
+ Data.PlaneGraph.Core: instance GHC.Base.Functor (Data.PlaneGraph.Core.VertexData r)
+ Data.PlaneGraph.Core: instance GHC.Generics.Generic (Data.PlaneGraph.Core.VertexData r v)
+ Data.PlaneGraph.Core: instance forall k (s :: k) v e f r. (GHC.Classes.Eq r, GHC.Classes.Eq v, GHC.Classes.Eq e, GHC.Classes.Eq f) => GHC.Classes.Eq (Data.PlaneGraph.Core.PlaneGraph s v e f r)
+ Data.PlaneGraph.Core: instance forall k (s :: k) v e f r. (GHC.Show.Show r, GHC.Show.Show v, GHC.Show.Show e, GHC.Show.Show f) => GHC.Show.Show (Data.PlaneGraph.Core.PlaneGraph s v e f r)
+ Data.PlaneGraph.Core: instance forall k (s :: k) v e f r. Data.Geometry.Box.Internal.IsBoxable (Data.PlaneGraph.Core.PlaneGraph s v e f r)
+ Data.PlaneGraph.Core: instance forall k (s :: k) v e f r. Data.PlanarGraph.Core.HasDataOf (Data.PlaneGraph.Core.PlaneGraph s v e f r) (Data.PlanarGraph.Core.FaceId' s)
+ Data.PlaneGraph.Core: instance forall k (s :: k) v e f r. Data.PlanarGraph.Core.HasDataOf (Data.PlaneGraph.Core.PlaneGraph s v e f r) (Data.PlanarGraph.Core.VertexId' s)
+ Data.PlaneGraph.Core: instance forall k (s :: k) v e f r. Data.PlanarGraph.Core.HasDataOf (Data.PlaneGraph.Core.PlaneGraph s v e f r) (Data.PlanarGraph.Dart.Dart s)
+ Data.PlaneGraph.Core: instance forall k (s :: k) v e f r. GHC.Generics.Generic (Data.PlaneGraph.Core.PlaneGraph s v e f r)
+ Data.PlaneGraph.Core: instance forall k (s :: k) v e f. GHC.Base.Functor (Data.PlaneGraph.Core.PlaneGraph s v e f)
+ Data.PlaneGraph.Core: internalFaces :: (Ord r, Fractional r) => PlaneGraph s v e f r -> Vector (FaceId' s, f)
+ Data.PlaneGraph.Core: leftFace :: Dart s -> PlaneGraph s v e f r -> FaceId' s
+ Data.PlaneGraph.Core: location :: forall r_a2E4k v_a2E4l r_a2Ej1. Lens (VertexData r_a2E4k v_a2E4l) (VertexData r_a2Ej1 v_a2E4l) (Point 2 r_a2E4k) (Point 2 r_a2Ej1)
+ Data.PlaneGraph.Core: locationOf :: VertexId' s -> Lens' (PlaneGraph s v e f r) (Point 2 r)
+ Data.PlaneGraph.Core: neighboursOf :: VertexId' s -> PlaneGraph s v e f r -> Vector (VertexId' s)
+ Data.PlaneGraph.Core: newtype PlaneGraph s v e f r
+ Data.PlaneGraph.Core: newtype FaceId (s :: k) (w :: World) :: forall k. () => k -> World -> Type
+ Data.PlaneGraph.Core: nextEdge :: Dart s -> PlaneGraph s v e f r -> Dart s
+ Data.PlaneGraph.Core: nextIncidentEdge :: Dart s -> PlaneGraph s v e f r -> Dart s
+ Data.PlaneGraph.Core: numDarts :: PlaneGraph s v e f r -> Int
+ Data.PlaneGraph.Core: numEdges :: PlaneGraph s v e f r -> Int
+ Data.PlaneGraph.Core: numFaces :: PlaneGraph s v e f r -> Int
+ Data.PlaneGraph.Core: numVertices :: PlaneGraph s v e f r -> Int
+ Data.PlaneGraph.Core: outerFaceDart :: (Ord r, Fractional r) => PlaneGraph s v e f r -> Dart s
+ Data.PlaneGraph.Core: outerFaceId :: (Ord r, Fractional r) => PlaneGraph s v e f r -> FaceId' s
+ Data.PlaneGraph.Core: outgoingEdges :: VertexId' s -> PlaneGraph s v e f r -> Vector (Dart s)
+ Data.PlaneGraph.Core: prevEdge :: Dart s -> PlaneGraph s v e f r -> Dart s
+ Data.PlaneGraph.Core: prevIncidentEdge :: Dart s -> PlaneGraph s v e f r -> Dart s
+ Data.PlaneGraph.Core: rawDartData :: Lens (PlaneGraph s v e f r) (PlaneGraph s v e' f r) (Vector e) (Vector e')
+ Data.PlaneGraph.Core: rawFaceBoundary :: FaceId' s -> PlaneGraph s v e f r -> SimplePolygon v r :+ f
+ Data.PlaneGraph.Core: rawFacePolygon :: FaceId' s -> PlaneGraph s v e f r -> SimplePolygon v r :+ f
+ Data.PlaneGraph.Core: rawFacePolygons :: PlaneGraph s v e f r -> Vector (FaceId' s, SimplePolygon v r :+ f)
+ Data.PlaneGraph.Core: rightFace :: Dart s -> PlaneGraph s v e f r -> FaceId' s
+ Data.PlaneGraph.Core: tailOf :: Dart s -> PlaneGraph s v e f r -> VertexId' s
+ Data.PlaneGraph.Core: traverseDarts :: Applicative m => (Dart s -> e -> m e') -> PlaneGraph s v e f r -> m (PlaneGraph s v e' f r)
+ Data.PlaneGraph.Core: traverseFaces :: Applicative m => (FaceId' s -> f -> m f') -> PlaneGraph s v e f r -> m (PlaneGraph s v e f' r)
+ Data.PlaneGraph.Core: traverseVertices :: Applicative m => (VertexId' s -> v -> m v') -> PlaneGraph s v e f r -> m (PlaneGraph s v' e f r)
+ Data.PlaneGraph.Core: twin :: () => Dart s -> Dart s
+ Data.PlaneGraph.Core: type FaceId' (s :: k) = FaceId s Primal
+ Data.PlaneGraph.Core: type VertexId' (s :: k) = VertexId s Primal
+ Data.PlaneGraph.Core: type family DataOf g i :: Type;
+ Data.PlaneGraph.Core: vData :: forall r_a2E4k v_a2E4l v_a2Ej2. Lens (VertexData r_a2E4k v_a2E4l) (VertexData r_a2E4k v_a2Ej2) v_a2E4l v_a2Ej2
+ Data.PlaneGraph.Core: vertexData :: Lens (PlaneGraph s v e f r) (PlaneGraph s v' e f r) (Vector v) (Vector v')
+ Data.PlaneGraph.Core: vertexDataOf :: VertexId' s -> Lens' (PlaneGraph s v e f r) (VertexData r v)
+ Data.PlaneGraph.Core: vertices :: PlaneGraph s v e f r -> Vector (VertexId' s, VertexData r v)
+ Data.PlaneGraph.Core: vertices' :: PlaneGraph s v e f r -> Vector (VertexId' s)
+ Data.PlaneGraph.Core: vtxDataToExt :: VertexData r v -> Point 2 r :+ v
+ Data.PlaneGraph.Core: withEdgeDistances :: (Point 2 r -> Point 2 r -> a) -> PlaneGraph s p e f r -> PlaneGraph s p (a :+ e) f r
+ Data.PlaneGraph.Core: }
+ Data.PlaneGraph.IO: fromAdjRep :: proxy s -> Gr (Vtx v e r) (Face f) -> PlaneGraph s v e f r
+ Data.PlaneGraph.IO: instance forall k v e f r (s :: k). (Data.Aeson.Types.FromJSON.FromJSON v, Data.Aeson.Types.FromJSON.FromJSON e, Data.Aeson.Types.FromJSON.FromJSON f, Data.Aeson.Types.FromJSON.FromJSON r) => Data.Aeson.Types.FromJSON.FromJSON (Data.PlaneGraph.Core.PlaneGraph s v e f r)
+ Data.PlaneGraph.IO: instance forall k v e f r (s :: k). (Data.Aeson.Types.ToJSON.ToJSON v, Data.Aeson.Types.ToJSON.ToJSON e, Data.Aeson.Types.ToJSON.ToJSON f, Data.Aeson.Types.ToJSON.ToJSON r) => Data.Aeson.Types.ToJSON.ToJSON (Data.PlaneGraph.Core.PlaneGraph s v e f r)
+ Data.PlaneGraph.IO: makeCCW :: (Num r, Ord r) => Gr (Vtx v e r) f -> Gr (Vtx v e r) f
+ Data.PlaneGraph.IO: readPlaneGraph :: (FromJSON v, FromJSON e, FromJSON f, FromJSON r) => proxy s -> ByteString -> Either ParseException (PlaneGraph s v e f r)
+ Data.PlaneGraph.IO: toAdjRep :: PlaneGraph s v e f r -> Gr (Vtx v e r) (Face f)
+ Data.PlaneGraph.IO: writePlaneGraph :: (ToJSON v, ToJSON e, ToJSON f, ToJSON r) => PlaneGraph s v e f r -> ByteString
+ Graphics.Render: renderLineSegment :: Fractional r => Transformation 3 r -> LineSegment 3 p r -> LineSegment 2 p r
+ Graphics.Render: renderPoint :: Fractional r => Transformation 3 r -> Point 3 r -> Point 2 r
+ Graphics.Render: renderTriangle :: Fractional r => Transformation 3 r -> Triangle 3 p r -> Triangle 2 p r
+ Graphics.Render: renderWithTransform :: (Fractional r, IsTransformable g, Dimension g ~ 3, NumType g ~ r) => (g -> g') -> Transformation 3 r -> g -> g'
- Algorithms.Geometry.DelaunayTriangulation.Types: neighbours :: forall p_a4x0H r_a4x0I. Lens' (Triangulation p_a4x0H r_a4x0I) (Vector (CList VertexID))
+ Algorithms.Geometry.DelaunayTriangulation.Types: neighbours :: forall p_a3cjZ r_a3ck0. Lens' (Triangulation p_a3cjZ r_a3ck0) (Vector (CList VertexID))
- Algorithms.Geometry.DelaunayTriangulation.Types: positions :: forall p_a4x0H r_a4x0I p_a4x5y. Lens (Triangulation p_a4x0H r_a4x0I) (Triangulation p_a4x5y r_a4x0I) (Vector ((:+) (Point 2 r_a4x0I) p_a4x0H)) (Vector ((:+) (Point 2 r_a4x0I) p_a4x5y))
+ Algorithms.Geometry.DelaunayTriangulation.Types: positions :: forall p_a3cjZ r_a3ck0 p_a3coQ. Lens (Triangulation p_a3cjZ r_a3ck0) (Triangulation p_a3coQ r_a3ck0) (Vector ((:+) (Point 2 r_a3ck0) p_a3cjZ)) (Vector ((:+) (Point 2 r_a3ck0) p_a3coQ))
- Algorithms.Geometry.DelaunayTriangulation.Types: vertexIds :: forall p_a4x0H r_a4x0I. Lens' (Triangulation p_a4x0H r_a4x0I) (Map (Point 2 r_a4x0I) VertexID)
+ Algorithms.Geometry.DelaunayTriangulation.Types: vertexIds :: forall p_a3cjZ r_a3ck0. Lens' (Triangulation p_a3cjZ r_a3ck0) (Map (Point 2 r_a3ck0) VertexID)
- Algorithms.Geometry.LineSegmentIntersection.BentleyOttmann: type StatusStructure p r = OrdSeq (LineSegment 2 p r)
+ Algorithms.Geometry.LineSegmentIntersection.BentleyOttmann: type StatusStructure p r = Set (LineSegment 2 p r)
- Algorithms.Geometry.LineSegmentIntersection.Types: associatedSegs :: forall p_a2PdN r_a2PdO p_a2Ptg. Lens (IntersectionPoint p_a2PdN r_a2PdO) (IntersectionPoint p_a2Ptg r_a2PdO) (Associated p_a2PdN r_a2PdO) (Associated p_a2Ptg r_a2PdO)
+ Algorithms.Geometry.LineSegmentIntersection.Types: associatedSegs :: forall p_a1Ik2 r_a1Ik3 p_a1IGH. Lens (IntersectionPoint p_a1Ik2 r_a1Ik3) (IntersectionPoint p_a1IGH r_a1Ik3) (Associated p_a1Ik2 r_a1Ik3) (Associated p_a1IGH r_a1Ik3)
- Algorithms.Geometry.LineSegmentIntersection.Types: intersectionPoint :: forall p_a2PdN r_a2PdO. Lens' (IntersectionPoint p_a2PdN r_a2PdO) (Point 2 r_a2PdO)
+ Algorithms.Geometry.LineSegmentIntersection.Types: intersectionPoint :: forall p_a1Ik2 r_a1Ik3. Lens' (IntersectionPoint p_a1Ik2 r_a1Ik3) (Point 2 r_a1Ik3)
- Algorithms.Geometry.PolygonTriangulation.MakeMonotone: SS :: !OrdSeq (LineSegment 2 Int r) -> !IntMap Int -> StatusStruct r
+ Algorithms.Geometry.PolygonTriangulation.MakeMonotone: SS :: !Set (LineSegment 2 Int r) -> !IntMap Int -> StatusStruct r
- Algorithms.Geometry.PolygonTriangulation.MakeMonotone: [_statusStruct] :: StatusStruct r -> !OrdSeq (LineSegment 2 Int r)
+ Algorithms.Geometry.PolygonTriangulation.MakeMonotone: [_statusStruct] :: StatusStruct r -> !Set (LineSegment 2 Int r)
- Algorithms.Geometry.PolygonTriangulation.MakeMonotone: deleteAt :: (Fractional r, Ord r) => Point 2 r -> LineSegment 2 p r -> OrdSeq (LineSegment 2 p r) -> OrdSeq (LineSegment 2 p r)
+ Algorithms.Geometry.PolygonTriangulation.MakeMonotone: deleteAt :: (Fractional r, Ord r) => Point 2 r -> LineSegment 2 p r -> Set (LineSegment 2 p r) -> Set (LineSegment 2 p r)
- Algorithms.Geometry.PolygonTriangulation.MakeMonotone: helper :: forall r_a4rEx. Lens' (StatusStruct r_a4rEx) (IntMap Int)
+ Algorithms.Geometry.PolygonTriangulation.MakeMonotone: helper :: forall r_a36US. Lens' (StatusStruct r_a36US) (IntMap Int)
- Algorithms.Geometry.PolygonTriangulation.MakeMonotone: insertAt :: (Ord r, Fractional r) => Point 2 r -> LineSegment 2 q r -> OrdSeq (LineSegment 2 q r) -> OrdSeq (LineSegment 2 q r)
+ Algorithms.Geometry.PolygonTriangulation.MakeMonotone: insertAt :: (Ord r, Fractional r) => Point 2 r -> LineSegment 2 q r -> Set (LineSegment 2 q r) -> Set (LineSegment 2 q r)
- Algorithms.Geometry.PolygonTriangulation.MakeMonotone: lookupLE :: (Ord r, Fractional r) => Point 2 r -> OrdSeq (LineSegment 2 Int r) -> Maybe (LineSegment 2 Int r)
+ Algorithms.Geometry.PolygonTriangulation.MakeMonotone: lookupLE :: (Ord r, Fractional r) => Point 2 r -> Set (LineSegment 2 Int r) -> Maybe (LineSegment 2 Int r)
- Algorithms.Geometry.PolygonTriangulation.MakeMonotone: statusStruct :: forall r_a4rEx r_a4rPD. Lens (StatusStruct r_a4rEx) (StatusStruct r_a4rPD) (OrdSeq (LineSegment 2 Int r_a4rEx)) (OrdSeq (LineSegment 2 Int r_a4rPD))
+ Algorithms.Geometry.PolygonTriangulation.MakeMonotone: statusStruct :: forall r_a36US r_a375Y. Lens (StatusStruct r_a36US) (StatusStruct r_a375Y) (Set (LineSegment 2 Int r_a36US)) (Set (LineSegment 2 Int r_a375Y))
- Algorithms.Geometry.SmallestEnclosingBall.RandomizedIncrementalConstruction: smallestEnclosingDisk :: (Ord r, Fractional r, RandomGen g) => g -> [Point 2 r :+ p] -> DiskResult p r
+ Algorithms.Geometry.SmallestEnclosingBall.RandomizedIncrementalConstruction: smallestEnclosingDisk :: (Ord r, Fractional r, MonadRandom m) => [Point 2 r :+ p] -> m (DiskResult p r)
- Algorithms.Geometry.SmallestEnclosingBall.Types: definingPoints :: forall p_a3W34 r_a3W35 p_a3Wgr. Lens (DiskResult p_a3W34 r_a3W35) (DiskResult p_a3Wgr r_a3W35) (TwoOrThree ((:+) (Point 2 r_a3W35) p_a3W34)) (TwoOrThree ((:+) (Point 2 r_a3W35) p_a3Wgr))
+ Algorithms.Geometry.SmallestEnclosingBall.Types: definingPoints :: forall p_a2xLD r_a2xLE p_a2xZs. Lens (DiskResult p_a2xLD r_a2xLE) (DiskResult p_a2xZs r_a2xLE) (TwoOrThree ((:+) (Point 2 r_a2xLE) p_a2xLD)) (TwoOrThree ((:+) (Point 2 r_a2xLE) p_a2xZs))
- Algorithms.Geometry.SmallestEnclosingBall.Types: enclosingDisk :: forall p_a3W34 r_a3W35. Lens' (DiskResult p_a3W34 r_a3W35) (Disk () r_a3W35)
+ Algorithms.Geometry.SmallestEnclosingBall.Types: enclosingDisk :: forall p_a2xLD r_a2xLE. Lens' (DiskResult p_a2xLD r_a2xLE) (Disk () r_a2xLE)
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: bBox :: forall d_a2KXt r_a2KXu a_a2KXv d_a2L2n r_a2L2o. Lens (NodeData d_a2KXt r_a2KXu a_a2KXv) (NodeData d_a2L2n r_a2L2o a_a2KXv) (Box d_a2KXt () r_a2KXu) (Box d_a2L2n () r_a2L2o)
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: bBox :: forall d_a2f7m r_a2f7n a_a2f7o d_a2fcg r_a2fch. Lens (NodeData d_a2f7m r_a2f7n a_a2f7o) (NodeData d_a2fcg r_a2fch a_a2f7o) (Box d_a2f7m () r_a2f7n) (Box d_a2fcg () r_a2fch)
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: leftPart :: forall d_a2Ley r_a2Lez p_a2LeA. Lens' (FindAndCompact d_a2Ley r_a2Lez p_a2LeA) (Seq ((:+) (Point d_a2Ley r_a2Lez) p_a2LeA))
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: leftPart :: forall d_a2for r_a2fos p_a2fot. Lens' (FindAndCompact d_a2for r_a2fos p_a2fot) (Seq ((:+) (Point d_a2for r_a2fos) p_a2fot))
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: nodeData :: forall d_a2KXt r_a2KXu a_a2KXv a_a2L2p. Lens (NodeData d_a2KXt r_a2KXu a_a2KXv) (NodeData d_a2KXt r_a2KXu a_a2L2p) a_a2KXv a_a2L2p
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: nodeData :: forall d_a2f7m r_a2f7n a_a2f7o a_a2fci. Lens (NodeData d_a2f7m r_a2f7n a_a2f7o) (NodeData d_a2f7m r_a2f7n a_a2fci) a_a2f7o a_a2fci
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: rightPart :: forall d_a2Ley r_a2Lez p_a2LeA. Lens' (FindAndCompact d_a2Ley r_a2Lez p_a2LeA) (Seq ((:+) (Point d_a2Ley r_a2Lez) p_a2LeA))
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: rightPart :: forall d_a2for r_a2fos p_a2fot. Lens' (FindAndCompact d_a2for r_a2fos p_a2fot) (Seq ((:+) (Point d_a2for r_a2fos) p_a2fot))
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: shortSide :: forall d_a2Ley r_a2Lez p_a2LeA. Lens' (FindAndCompact d_a2Ley r_a2Lez p_a2LeA) ShortSide
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: shortSide :: forall d_a2for r_a2fos p_a2fot. Lens' (FindAndCompact d_a2for r_a2fos p_a2fot) ShortSide
- Algorithms.Geometry.WellSeparatedPairDecomposition.Types: splitDim :: forall d_a2KXt r_a2KXu a_a2KXv. Lens' (NodeData d_a2KXt r_a2KXu a_a2KXv) Int
+ Algorithms.Geometry.WellSeparatedPairDecomposition.Types: splitDim :: forall d_a2f7m r_a2f7n a_a2f7o. Lens' (NodeData d_a2f7m r_a2f7n a_a2f7o) Int
- Data.Geometry: points :: forall d_a2J4J p_a2J4K r_a2J4L d_a2J5r p_a2J5s r_a2J5t. Iso (PolyLine d_a2J4J p_a2J4K r_a2J4L) (PolyLine d_a2J5r p_a2J5s r_a2J5t) (LSeq 2 ((:+) (Point d_a2J4J r_a2J4L) p_a2J4K)) (LSeq 2 ((:+) (Point d_a2J5r r_a2J5t) p_a2J5s))
+ Data.Geometry: points :: forall d_a1Q1B p_a1Q1C r_a1Q1D d_a1Q2j p_a1Q2k r_a1Q2l. Iso (PolyLine d_a1Q1B p_a1Q1C r_a1Q1D) (PolyLine d_a1Q2j p_a1Q2k r_a1Q2l) (LSeq 2 ((:+) (Point d_a1Q1B r_a1Q1D) p_a1Q1C)) (LSeq 2 ((:+) (Point d_a1Q2j r_a1Q2l) p_a1Q2k))
- Data.Geometry.Arrangement: boundedArea :: forall s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb. Lens' (Arrangement s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb) (Rectangle () r_a4mhb)
+ Data.Geometry.Arrangement: boundedArea :: forall s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5. Lens' (Arrangement s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5) (Rectangle () r_a31I5)
- Data.Geometry.Arrangement: findStart :: (Ord r, Fractional r) => Line 2 r -> Arrangement s l v (Maybe e) f r -> Maybe (Dart s)
+ Data.Geometry.Arrangement: findStart :: forall s l v e f r. (Ord r, Fractional r) => Line 2 r -> Arrangement s l v (Maybe e) f r -> Maybe (Dart s)
- Data.Geometry.Arrangement: inputLines :: forall s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb. Lens' (Arrangement s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb) (Vector ((:+) (Line 2 r_a4mhb) l_a4mh7))
+ Data.Geometry.Arrangement: inputLines :: forall s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5. Lens' (Arrangement s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5) (Vector ((:+) (Line 2 r_a31I5) l_a31I1))
- Data.Geometry.Arrangement: subdivision :: forall s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb v_a4moY e_a4moZ f_a4mp0. Lens (Arrangement s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb) (Arrangement s_a4mh6 l_a4mh7 v_a4moY e_a4moZ f_a4mp0 r_a4mhb) (PlanarSubdivision s_a4mh6 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb) (PlanarSubdivision s_a4mh6 v_a4moY e_a4moZ f_a4mp0 r_a4mhb)
+ Data.Geometry.Arrangement: subdivision :: forall s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5 v_a31PS e_a31PT f_a31PU. Lens (Arrangement s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5) (Arrangement s_a31I0 l_a31I1 v_a31PS e_a31PT f_a31PU r_a31I5) (PlanarSubdivision s_a31I0 v_a31I2 e_a31I3 f_a31I4 r_a31I5) (PlanarSubdivision s_a31I0 v_a31PS e_a31PT f_a31PU r_a31I5)
- Data.Geometry.Arrangement: unboundedIntersections :: forall s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb. Lens' (Arrangement s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb) (ArrangementBoundary s_a4mh6 l_a4mh7 r_a4mhb)
+ Data.Geometry.Arrangement: unboundedIntersections :: forall s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5. Lens' (Arrangement s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5) (ArrangementBoundary s_a31I0 l_a31I1 r_a31I5)
- Data.Geometry.Arrangement.Internal: boundedArea :: forall s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb. Lens' (Arrangement s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb) (Rectangle () r_a4mhb)
+ Data.Geometry.Arrangement.Internal: boundedArea :: forall s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5. Lens' (Arrangement s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5) (Rectangle () r_a31I5)
- Data.Geometry.Arrangement.Internal: computeSegsAndParts :: (Ord r, Fractional r) => Rectangle () r -> [Line 2 r :+ l] -> ([LineSegment 2 () r :+ Maybe l], [(Point 2 r, Maybe (Line 2 r :+ l))])
+ Data.Geometry.Arrangement.Internal: computeSegsAndParts :: forall r l. (Ord r, Fractional r) => Rectangle () r -> [Line 2 r :+ l] -> ([LineSegment 2 () r :+ Maybe l], [(Point 2 r, Maybe (Line 2 r :+ l))])
- Data.Geometry.Arrangement.Internal: findStart :: (Ord r, Fractional r) => Line 2 r -> Arrangement s l v (Maybe e) f r -> Maybe (Dart s)
+ Data.Geometry.Arrangement.Internal: findStart :: forall s l v e f r. (Ord r, Fractional r) => Line 2 r -> Arrangement s l v (Maybe e) f r -> Maybe (Dart s)
- Data.Geometry.Arrangement.Internal: inputLines :: forall s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb. Lens' (Arrangement s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb) (Vector ((:+) (Line 2 r_a4mhb) l_a4mh7))
+ Data.Geometry.Arrangement.Internal: inputLines :: forall s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5. Lens' (Arrangement s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5) (Vector ((:+) (Line 2 r_a31I5) l_a31I1))
- Data.Geometry.Arrangement.Internal: intersectionPoint :: (Ord r, Fractional r) => (Line 2 r :+ l) -> (Line 2 r :+ l) -> Maybe (Point 2 r)
+ Data.Geometry.Arrangement.Internal: intersectionPoint :: forall r l. (Ord r, Fractional r) => (Line 2 r :+ l) -> (Line 2 r :+ l) -> Maybe (Point 2 r)
- Data.Geometry.Arrangement.Internal: subdivision :: forall s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb v_a4moY e_a4moZ f_a4mp0. Lens (Arrangement s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb) (Arrangement s_a4mh6 l_a4mh7 v_a4moY e_a4moZ f_a4mp0 r_a4mhb) (PlanarSubdivision s_a4mh6 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb) (PlanarSubdivision s_a4mh6 v_a4moY e_a4moZ f_a4mp0 r_a4mhb)
+ Data.Geometry.Arrangement.Internal: subdivision :: forall s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5 v_a31PS e_a31PT f_a31PU. Lens (Arrangement s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5) (Arrangement s_a31I0 l_a31I1 v_a31PS e_a31PT f_a31PU r_a31I5) (PlanarSubdivision s_a31I0 v_a31I2 e_a31I3 f_a31I4 r_a31I5) (PlanarSubdivision s_a31I0 v_a31PS e_a31PT f_a31PU r_a31I5)
- Data.Geometry.Arrangement.Internal: unboundedIntersections :: forall s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb. Lens' (Arrangement s_a4mh6 l_a4mh7 v_a4mh8 e_a4mh9 f_a4mha r_a4mhb) (ArrangementBoundary s_a4mh6 l_a4mh7 r_a4mhb)
+ Data.Geometry.Arrangement.Internal: unboundedIntersections :: forall s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5. Lens' (Arrangement s_a31I0 l_a31I1 v_a31I2 e_a31I3 f_a31I4 r_a31I5) (ArrangementBoundary s_a31I0 l_a31I1 r_a31I5)
- Data.Geometry.Ball: center :: forall d_a333Z p_a3340 r_a3341 d_a336H p_a336I. Lens (Ball d_a333Z p_a3340 r_a3341) (Ball d_a336H p_a336I r_a3341) ((:+) (Point d_a333Z r_a3341) p_a3340) ((:+) (Point d_a336H r_a3341) p_a336I)
+ Data.Geometry.Ball: center :: forall d_a26mW p_a26mX r_a26mY d_a26pE p_a26pF. Lens (Ball d_a26mW p_a26mX r_a26mY) (Ball d_a26pE p_a26pF r_a26mY) ((:+) (Point d_a26mW r_a26mY) p_a26mX) ((:+) (Point d_a26pE r_a26mY) p_a26pF)
- Data.Geometry.Ball: squaredRadius :: forall d_a333Z p_a3340 r_a3341. Lens' (Ball d_a333Z p_a3340 r_a3341) r_a3341
+ Data.Geometry.Ball: squaredRadius :: forall d_a26mW p_a26mX r_a26mY. Lens' (Ball d_a26mW p_a26mX r_a26mY) r_a26mY
- Data.Geometry.Box.Internal: cwMax :: forall a_a2oCa a_a2oTa. Iso (CWMax a_a2oCa) (CWMax a_a2oTa) a_a2oCa a_a2oTa
+ Data.Geometry.Box.Internal: cwMax :: forall a_a1xkL a_a1xBL. Iso (CWMax a_a1xkL) (CWMax a_a1xBL) a_a1xkL a_a1xBL
- Data.Geometry.Box.Internal: cwMin :: forall a_a2ony a_a2oC4. Iso (CWMin a_a2ony) (CWMin a_a2oC4) a_a2ony a_a2oC4
+ Data.Geometry.Box.Internal: cwMin :: forall a_a1x5N a_a1xkF. Iso (CWMin a_a1x5N) (CWMin a_a1xkF) a_a1x5N a_a1xkF
- Data.Geometry.Box.Internal: maxP :: forall d_a2oTh p_a2oTi r_a2oTj. Lens' (Box d_a2oTh p_a2oTi r_a2oTj) ((:+) (CWMax (Point d_a2oTh r_a2oTj)) p_a2oTi)
+ Data.Geometry.Box.Internal: maxP :: forall d_a1xBS p_a1xBT r_a1xBU. Lens' (Box d_a1xBS p_a1xBT r_a1xBU) ((:+) (CWMax (Point d_a1xBS r_a1xBU)) p_a1xBT)
- Data.Geometry.Box.Internal: minP :: forall d_a2oTh p_a2oTi r_a2oTj. Lens' (Box d_a2oTh p_a2oTi r_a2oTj) ((:+) (CWMin (Point d_a2oTh r_a2oTj)) p_a2oTi)
+ Data.Geometry.Box.Internal: minP :: forall d_a1xBS p_a1xBT r_a1xBU. Lens' (Box d_a1xBS p_a1xBT r_a1xBU) ((:+) (CWMin (Point d_a1xBS r_a1xBU)) p_a1xBT)
- Data.Geometry.HalfLine: halfLineDirection :: forall d_a3bNu r_a3bNv. Lens' (HalfLine d_a3bNu r_a3bNv) (Vector d_a3bNu r_a3bNv)
+ Data.Geometry.HalfLine: halfLineDirection :: forall d_a1ZP2 r_a1ZP3. Lens' (HalfLine d_a1ZP2 r_a1ZP3) (Vector d_a1ZP2 r_a1ZP3)
- Data.Geometry.HalfLine: startPoint :: forall d_a3bNu r_a3bNv. Lens' (HalfLine d_a3bNu r_a3bNv) (Point d_a3bNu r_a3bNv)
+ Data.Geometry.HalfLine: startPoint :: forall d_a1ZP2 r_a1ZP3. Lens' (HalfLine d_a1ZP2 r_a1ZP3) (Point d_a1ZP2 r_a1ZP3)
- Data.Geometry.HyperPlane: inPlane :: forall d_a30lp r_a30lq. Lens' (HyperPlane d_a30lp r_a30lq) (Point d_a30lp r_a30lq)
+ Data.Geometry.HyperPlane: inPlane :: forall d_a1WQc r_a1WQd. Lens' (HyperPlane d_a1WQc r_a1WQd) (Point d_a1WQc r_a1WQd)
- Data.Geometry.HyperPlane: normalVec :: forall d_a30lp r_a30lq. Lens' (HyperPlane d_a30lp r_a30lq) (Vector d_a30lp r_a30lq)
+ Data.Geometry.HyperPlane: normalVec :: forall d_a1WQc r_a1WQd. Lens' (HyperPlane d_a1WQc r_a1WQd) (Vector d_a1WQc r_a1WQd)
- Data.Geometry.Interval.Util: unL :: forall r_a2bL1 r_a2bQf. Iso (L r_a2bL1) (L r_a2bQf) (EndPoint r_a2bL1) (EndPoint r_a2bQf)
+ Data.Geometry.Interval.Util: unL :: forall r_a7GU r_aoPH. Iso (L r_a7GU) (L r_aoPH) (EndPoint r_a7GU) (EndPoint r_aoPH)
- Data.Geometry.Interval.Util: unR :: forall r_a2bQl r_a2c2y. Iso (R r_a2bQl) (R r_a2c2y) (EndPoint r_a2bQl) (EndPoint r_a2c2y)
+ Data.Geometry.Interval.Util: unR :: forall r_aoPN r_apfg. Iso (R r_aoPN) (R r_apfg) (EndPoint r_aoPN) (EndPoint r_apfg)
- Data.Geometry.IntervalTree: intervalsLeft :: forall i_a2etc r_a2etd. Lens' (NodeData i_a2etc r_a2etd) (Map (L r_a2etd) [i_a2etc])
+ Data.Geometry.IntervalTree: intervalsLeft :: forall i_auNm r_auNn. Lens' (NodeData i_auNm r_auNn) (Map (L r_auNn) [i_auNm])
- Data.Geometry.IntervalTree: intervalsRight :: forall i_a2etc r_a2etd. Lens' (NodeData i_a2etc r_a2etd) (Map (R r_a2etd) [i_a2etc])
+ Data.Geometry.IntervalTree: intervalsRight :: forall i_auNm r_auNn. Lens' (NodeData i_auNm r_auNn) (Map (R r_auNn) [i_auNm])
- Data.Geometry.IntervalTree: splitPoint :: forall i_a2etc r_a2etd. Lens' (NodeData i_a2etc r_a2etd) r_a2etd
+ Data.Geometry.IntervalTree: splitPoint :: forall i_auNm r_auNn. Lens' (NodeData i_auNm r_auNn) r_auNn
- Data.Geometry.IntervalTree: unIntervalTree :: forall i_a2eD8 r_a2eD9 i_a2eKL r_a2eKM. Iso (IntervalTree i_a2eD8 r_a2eD9) (IntervalTree i_a2eKL r_a2eKM) (BinaryTree (NodeData i_a2eD8 r_a2eD9)) (BinaryTree (NodeData i_a2eKL r_a2eKM))
+ Data.Geometry.IntervalTree: unIntervalTree :: forall i_auYD r_auYE i_av5M r_av5N. Iso (IntervalTree i_auYD r_auYE) (IntervalTree i_av5M r_av5N) (BinaryTree (NodeData i_auYD r_auYE)) (BinaryTree (NodeData i_av5M r_av5N))
- Data.Geometry.Line.Internal: anchorPoint :: forall d_a1FRC r_a1FRD. Lens' (Line d_a1FRC r_a1FRD) (Point d_a1FRC r_a1FRD)
+ Data.Geometry.Line.Internal: anchorPoint :: forall d_a1nuL r_a1nuM. Lens' (Line d_a1nuL r_a1nuM) (Point d_a1nuL r_a1nuM)
- Data.Geometry.Line.Internal: direction :: forall d_a1FRC r_a1FRD. Lens' (Line d_a1FRC r_a1FRD) (Vector d_a1FRC r_a1FRD)
+ Data.Geometry.Line.Internal: direction :: forall d_a1nuL r_a1nuM. Lens' (Line d_a1nuL r_a1nuM) (Vector d_a1nuL r_a1nuM)
- Data.Geometry.LineSegment: isClosed :: EndPoint a -> Bool
+ Data.Geometry.LineSegment: isClosed :: () => EndPoint a -> Bool
- Data.Geometry.LineSegment: isOpen :: EndPoint a -> Bool
+ Data.Geometry.LineSegment: isOpen :: () => EndPoint a -> Bool
- Data.Geometry.LineSegment: lower :: forall a_a27Ds. Lens' (Range a_a27Ds) (EndPoint a_a27Ds)
+ Data.Geometry.LineSegment: lower :: () => Lens' (Range a) (EndPoint a)
- Data.Geometry.LineSegment: unEndPoint :: Lens (EndPoint a) (EndPoint b) a b
+ Data.Geometry.LineSegment: unEndPoint :: () => Lens (EndPoint a) (EndPoint b) a b
- Data.Geometry.LineSegment: upper :: forall a_a27Ds. Lens' (Range a_a27Ds) (EndPoint a_a27Ds)
+ Data.Geometry.LineSegment: upper :: () => Lens' (Range a) (EndPoint a)
- Data.Geometry.PlanarSubdivision.Basic: FaceId :: VertexId s (DualOf w) -> FaceId s w
+ Data.Geometry.PlanarSubdivision.Basic: FaceId :: VertexId s (DualOf w) -> FaceId
- Data.Geometry.PlanarSubdivision.Basic: PlanarSubdivision :: Vector (Component s r) -> Vector (Raw s (VertexId' (Wrap s)) v) -> Vector (Raw s (Dart (Wrap s)) e) -> Vector (Raw s (FaceId' (Wrap s)) f) -> PlanarSubdivision s v e f r
+ Data.Geometry.PlanarSubdivision.Basic: PlanarSubdivision :: Vector (Component s r) -> Vector (Raw s (VertexId' (Wrap s)) v) -> Vector (Raw s (Dart (Wrap s)) e) -> Vector (RawFace s f) -> PlanarSubdivision s v e f r
- Data.Geometry.PlanarSubdivision.Basic: VertexId :: Int -> VertexId s
+ Data.Geometry.PlanarSubdivision.Basic: VertexId :: Int -> VertexId
- Data.Geometry.PlanarSubdivision.Basic: [_unFaceId] :: FaceId s w -> VertexId s (DualOf w)
+ Data.Geometry.PlanarSubdivision.Basic: [_unFaceId] :: FaceId -> VertexId s (DualOf w)
- Data.Geometry.PlanarSubdivision.Basic: [_unVertexId] :: VertexId s -> Int
+ Data.Geometry.PlanarSubdivision.Basic: [_unVertexId] :: VertexId -> Int
- Data.Geometry.PlanarSubdivision.Basic: components :: forall s_a49bH v_a49bI e_a49bJ f_a49bK r_a49bL r_a4aeo. Lens (PlanarSubdivision s_a49bH v_a49bI e_a49bJ f_a49bK r_a49bL) (PlanarSubdivision s_a49bH v_a49bI e_a49bJ f_a49bK r_a4aeo) (Vector (Component s_a49bH r_a49bL)) (Vector (Component s_a49bH r_a4aeo))
+ Data.Geometry.PlanarSubdivision.Basic: components :: forall s_a2SRX v_a2SRY e_a2SRZ f_a2SS0 r_a2SS1 r_a2T5d. Lens (PlanarSubdivision s_a2SRX v_a2SRY e_a2SRZ f_a2SS0 r_a2SS1) (PlanarSubdivision s_a2SRX v_a2SRY e_a2SRZ f_a2SS0 r_a2T5d) (Vector (Component s_a2SRX r_a2SS1)) (Vector (Component s_a2SRX r_a2T5d))
- Data.Geometry.PlanarSubdivision.Basic: dual :: Getter (PlanarGraph s w v e f) (PlanarGraph s (DualOf w) f e v)
+ Data.Geometry.PlanarSubdivision.Basic: dual :: () => Getter (PlanarGraph s w v e f) (PlanarGraph s (DualOf w) f e v)
- Data.Geometry.PlanarSubdivision.Basic: fData :: forall h_a48YT f_a48YU f_a49bd. Lens (FaceData h_a48YT f_a48YU) (FaceData h_a48YT f_a49bd) f_a48YU f_a49bd
+ Data.Geometry.PlanarSubdivision.Basic: fData :: forall h_a2MEM f_a2MEN f_a2Nvc. Lens (FaceData h_a2MEM f_a2MEN) (FaceData h_a2MEM f_a2Nvc) f_a2MEN f_a2Nvc
- Data.Geometry.PlanarSubdivision.Basic: holes :: forall h_a48YT f_a48YU h_a49be. Lens (FaceData h_a48YT f_a48YU) (FaceData h_a49be f_a48YU) (Seq h_a48YT) (Seq h_a49be)
+ Data.Geometry.PlanarSubdivision.Basic: holes :: forall h_a2MEM f_a2MEN h_a2Nvd. Lens (FaceData h_a2MEM f_a2MEN) (FaceData h_a2Nvd f_a2MEN) (Seq h_a2MEM) (Seq h_a2Nvd)
- Data.Geometry.PlanarSubdivision.Basic: internalFaces :: (Ord r, Fractional r) => PlanarSubdivision s v e f r -> Vector (FaceId' s, FaceData (Dart s) f)
+ Data.Geometry.PlanarSubdivision.Basic: internalFaces :: PlanarSubdivision s v e f r -> Vector (FaceId' s, FaceData (Dart s) f)
- Data.Geometry.PlanarSubdivision.Basic: location :: forall r_a41DU v_a41DV r_a41RH. Lens (VertexData r_a41DU v_a41DV) (VertexData r_a41RH v_a41DV) (Point 2 r_a41DU) (Point 2 r_a41RH)
+ Data.Geometry.PlanarSubdivision.Basic: location :: forall r_a2E4k v_a2E4l r_a2Ej1. Lens (VertexData r_a2E4k v_a2E4l) (VertexData r_a2Ej1 v_a2E4l) (Point 2 r_a2E4k) (Point 2 r_a2Ej1)
- Data.Geometry.PlanarSubdivision.Basic: rawDartData :: forall s_a49bH v_a49bI e_a49bJ f_a49bK r_a49bL e_a4aep. Lens (PlanarSubdivision s_a49bH v_a49bI e_a49bJ f_a49bK r_a49bL) (PlanarSubdivision s_a49bH v_a49bI e_a4aep f_a49bK r_a49bL) (Vector (Raw s_a49bH (Dart (Wrap s_a49bH)) e_a49bJ)) (Vector (Raw s_a49bH (Dart (Wrap s_a49bH)) e_a4aep))
+ Data.Geometry.PlanarSubdivision.Basic: rawDartData :: forall s_a2SRX v_a2SRY e_a2SRZ f_a2SS0 r_a2SS1 e_a2T5e. Lens (PlanarSubdivision s_a2SRX v_a2SRY e_a2SRZ f_a2SS0 r_a2SS1) (PlanarSubdivision s_a2SRX v_a2SRY e_a2T5e f_a2SS0 r_a2SS1) (Vector (Raw s_a2SRX (Dart (Wrap s_a2SRX)) e_a2SRZ)) (Vector (Raw s_a2SRX (Dart (Wrap s_a2SRX)) e_a2T5e))
- Data.Geometry.PlanarSubdivision.Basic: rawFaceData :: forall s_a49bH v_a49bI e_a49bJ f_a49bK r_a49bL f_a4aeq. Lens (PlanarSubdivision s_a49bH v_a49bI e_a49bJ f_a49bK r_a49bL) (PlanarSubdivision s_a49bH v_a49bI e_a49bJ f_a4aeq r_a49bL) (Vector (Raw s_a49bH (FaceId' (Wrap s_a49bH)) f_a49bK)) (Vector (Raw s_a49bH (FaceId' (Wrap s_a49bH)) f_a4aeq))
+ Data.Geometry.PlanarSubdivision.Basic: rawFaceData :: forall s_a2SRX v_a2SRY e_a2SRZ f_a2SS0 r_a2SS1 f_a2T5f. Lens (PlanarSubdivision s_a2SRX v_a2SRY e_a2SRZ f_a2SS0 r_a2SS1) (PlanarSubdivision s_a2SRX v_a2SRY e_a2SRZ f_a2T5f r_a2SS1) (Vector (RawFace s_a2SRX f_a2SS0)) (Vector (RawFace s_a2SRX f_a2T5f))
- Data.Geometry.PlanarSubdivision.Basic: rawVertexData :: forall s_a49bH v_a49bI e_a49bJ f_a49bK r_a49bL v_a4aer. Lens (PlanarSubdivision s_a49bH v_a49bI e_a49bJ f_a49bK r_a49bL) (PlanarSubdivision s_a49bH v_a4aer e_a49bJ f_a49bK r_a49bL) (Vector (Raw s_a49bH (VertexId' (Wrap s_a49bH)) v_a49bI)) (Vector (Raw s_a49bH (VertexId' (Wrap s_a49bH)) v_a4aer))
+ Data.Geometry.PlanarSubdivision.Basic: rawVertexData :: forall s_a2SRX v_a2SRY e_a2SRZ f_a2SS0 r_a2SS1 v_a2T5g. Lens (PlanarSubdivision s_a2SRX v_a2SRY e_a2SRZ f_a2SS0 r_a2SS1) (PlanarSubdivision s_a2SRX v_a2T5g e_a2SRZ f_a2SS0 r_a2SS1) (Vector (Raw s_a2SRX (VertexId' (Wrap s_a2SRX)) v_a2SRY)) (Vector (Raw s_a2SRX (VertexId' (Wrap s_a2SRX)) v_a2T5g))
- Data.Geometry.PlanarSubdivision.Basic: twin :: Dart s -> Dart s
+ Data.Geometry.PlanarSubdivision.Basic: twin :: () => Dart s -> Dart s
- Data.Geometry.PlanarSubdivision.Basic: type Component s r = PlaneGraph (Wrap s) (VertexId' s) (Dart s) (FaceData (Dart s) (FaceId' s)) r
+ Data.Geometry.PlanarSubdivision.Basic: type Component s r = PlaneGraph (Wrap s) (VertexId' s) (Dart s) (FaceId' s) r
- Data.Geometry.PlanarSubdivision.Basic: type FaceId' s = FaceId s Primal
+ Data.Geometry.PlanarSubdivision.Basic: type FaceId' (s :: k) = FaceId s Primal
- Data.Geometry.PlanarSubdivision.Basic: type VertexId' s = VertexId s Primal
+ Data.Geometry.PlanarSubdivision.Basic: type VertexId' (s :: k) = VertexId s Primal
- Data.Geometry.PlanarSubdivision.Basic: type family DataOf g i;
+ Data.Geometry.PlanarSubdivision.Basic: type family DataOf g i :: Type;
- Data.Geometry.PlanarSubdivision.Basic: vData :: forall r_a41DU v_a41DV v_a41RI. Lens (VertexData r_a41DU v_a41DV) (VertexData r_a41DU v_a41RI) v_a41DV v_a41RI
+ Data.Geometry.PlanarSubdivision.Basic: vData :: forall r_a2E4k v_a2E4l v_a2Ej2. Lens (VertexData r_a2E4k v_a2E4l) (VertexData r_a2E4k v_a2Ej2) v_a2E4l v_a2Ej2
- Data.Geometry.PolyLine: points :: forall d_a2J4J p_a2J4K r_a2J4L d_a2J5r p_a2J5s r_a2J5t. Iso (PolyLine d_a2J4J p_a2J4K r_a2J4L) (PolyLine d_a2J5r p_a2J5s r_a2J5t) (LSeq 2 ((:+) (Point d_a2J4J r_a2J4L) p_a2J4K)) (LSeq 2 ((:+) (Point d_a2J5r r_a2J5t) p_a2J5s))
+ Data.Geometry.PolyLine: points :: forall d_a1Q1B p_a1Q1C r_a1Q1D d_a1Q2j p_a1Q2k r_a1Q2l. Iso (PolyLine d_a1Q1B p_a1Q1C r_a1Q1D) (PolyLine d_a1Q2j p_a1Q2k r_a1Q2l) (LSeq 2 ((:+) (Point d_a1Q1B r_a1Q1D) p_a1Q1C)) (LSeq 2 ((:+) (Point d_a1Q2j r_a1Q2l) p_a1Q2k))
- Data.Geometry.Polygon.Convex: simplePolygon :: forall p_a3ltd r_a3lte p_a3lxK r_a3lxL. Iso (ConvexPolygon p_a3ltd r_a3lte) (ConvexPolygon p_a3lxK r_a3lxL) (SimplePolygon p_a3ltd r_a3lte) (SimplePolygon p_a3lxK r_a3lxL)
+ Data.Geometry.Polygon.Convex: simplePolygon :: forall p_a2tLW r_a2tLX p_a2tQz r_a2tQA. Iso (ConvexPolygon p_a2tLW r_a2tLX) (ConvexPolygon p_a2tQz r_a2tQA) (SimplePolygon p_a2tLW r_a2tLX) (SimplePolygon p_a2tQz r_a2tQA)
- Data.Geometry.Properties: type family Union g h :: *
+ Data.Geometry.Properties: type family NumType t :: *
- Data.Geometry.SegmentTree.Generic: assoc :: forall v_a2hnV r_a2hnW v_a2hv1. Lens (NodeData v_a2hnV r_a2hnW) (NodeData v_a2hv1 r_a2hnW) v_a2hnV v_a2hv1
+ Data.Geometry.SegmentTree.Generic: assoc :: forall v_azov r_azow v_azvH. Lens (NodeData v_azov r_azow) (NodeData v_azvH r_azow) v_azov v_azvH
- Data.Geometry.SegmentTree.Generic: atomicRange :: forall v_a2hvr r_a2hvs r_a2hJj. Lens (LeafData v_a2hvr r_a2hvs) (LeafData v_a2hvr r_a2hJj) (AtomicRange r_a2hvs) (AtomicRange r_a2hJj)
+ Data.Geometry.SegmentTree.Generic: atomicRange :: forall v_azw7 r_azw8 r_azK2. Lens (LeafData v_azw7 r_azw8) (LeafData v_azw7 r_azK2) (AtomicRange r_azw8) (AtomicRange r_azK2)
- Data.Geometry.SegmentTree.Generic: leafAssoc :: forall v_a2hvr r_a2hvs v_a2hJk. Lens (LeafData v_a2hvr r_a2hvs) (LeafData v_a2hJk r_a2hvs) v_a2hvr v_a2hJk
+ Data.Geometry.SegmentTree.Generic: leafAssoc :: forall v_azw7 r_azw8 v_azK3. Lens (LeafData v_azw7 r_azw8) (LeafData v_azK3 r_azw8) v_azw7 v_azK3
- Data.Geometry.SegmentTree.Generic: range :: forall v_a2hnV r_a2hnW. Lens' (NodeData v_a2hnV r_a2hnW) (Range r_a2hnW)
+ Data.Geometry.SegmentTree.Generic: range :: forall v_azov r_azow. Lens' (NodeData v_azov r_azow) (Range r_azow)
- Data.Geometry.SegmentTree.Generic: splitPoint :: forall v_a2hnV r_a2hnW. Lens' (NodeData v_a2hnV r_a2hnW) (EndPoint r_a2hnW)
+ Data.Geometry.SegmentTree.Generic: splitPoint :: forall v_azov r_azow. Lens' (NodeData v_azov r_azow) (EndPoint r_azow)
- Data.Geometry.SegmentTree.Generic: unSegmentTree :: forall v_a2hJy r_a2hJz v_a2hRl r_a2hRm. Iso (SegmentTree v_a2hJy r_a2hJz) (SegmentTree v_a2hRl r_a2hRm) (BinLeafTree (NodeData v_a2hJy r_a2hJz) (LeafData v_a2hJy r_a2hJz)) (BinLeafTree (NodeData v_a2hRl r_a2hRm) (LeafData v_a2hRl r_a2hRm))
+ Data.Geometry.SegmentTree.Generic: unSegmentTree :: forall v_azKh r_azKi v_azSg r_azSh. Iso (SegmentTree v_azKh r_azKi) (SegmentTree v_azSg r_azSh) (BinLeafTree (NodeData v_azKh r_azKi) (LeafData v_azKh r_azKi)) (BinLeafTree (NodeData v_azSg r_azSh) (LeafData v_azSg r_azSh))
- Data.Geometry.Slab: unSlab :: forall o_a2WZU a_a2WZV r_a2WZW o_a2X5N a_a2X5O r_a2X5P. Iso (Slab o_a2WZU a_a2WZV r_a2WZW) (Slab o_a2X5N a_a2X5O r_a2X5P) (Interval a_a2WZV r_a2WZW) (Interval a_a2X5O r_a2X5P)
+ Data.Geometry.Slab: unSlab :: forall o_a1TtI a_a1TtJ r_a1TtK o_a1TzB a_a1TzC r_a1TzD. Iso (Slab o_a1TtI a_a1TtJ r_a1TtK) (Slab o_a1TzB a_a1TzC r_a1TzD) (Interval a_a1TtJ r_a1TtK) (Interval a_a1TzC r_a1TzD)
- Data.Geometry.SubLine: line :: forall d_a2AnC p_a2AnD s_a2AnE r_a2AnF d_a2Aow r_a2Aox. Lens (SubLine d_a2AnC p_a2AnD s_a2AnE r_a2AnF) (SubLine d_a2Aow p_a2AnD s_a2AnE r_a2Aox) (Line d_a2AnC r_a2AnF) (Line d_a2Aow r_a2Aox)
+ Data.Geometry.SubLine: line :: forall d_a1sNA p_a1sNB s_a1sNC r_a1sND d_a1sOu r_a1sOv. Lens (SubLine d_a1sNA p_a1sNB s_a1sNC r_a1sND) (SubLine d_a1sOu p_a1sNB s_a1sNC r_a1sOv) (Line d_a1sNA r_a1sND) (Line d_a1sOu r_a1sOv)
- Data.Geometry.SubLine: subRange :: forall d_a2AnC p_a2AnD s_a2AnE r_a2AnF p_a2Aoy s_a2Aoz. Lens (SubLine d_a2AnC p_a2AnD s_a2AnE r_a2AnF) (SubLine d_a2AnC p_a2Aoy s_a2Aoz r_a2AnF) (Interval p_a2AnD s_a2AnE) (Interval p_a2Aoy s_a2Aoz)
+ Data.Geometry.SubLine: subRange :: forall d_a1sNA p_a1sNB s_a1sNC r_a1sND p_a1sOw s_a1sOx. Lens (SubLine d_a1sNA p_a1sNB s_a1sNC r_a1sND) (SubLine d_a1sNA p_a1sOw s_a1sOx r_a1sND) (Interval p_a1sNB s_a1sNC) (Interval p_a1sOw s_a1sOx)
- Data.PlaneGraph: FaceId :: VertexId s (DualOf w) -> FaceId s w
+ Data.PlaneGraph: FaceId :: VertexId s (DualOf w) -> FaceId
- Data.PlaneGraph: VertexId :: Int -> VertexId s
+ Data.PlaneGraph: VertexId :: Int -> VertexId
- Data.PlaneGraph: [_unFaceId] :: FaceId s w -> VertexId s (DualOf w)
+ Data.PlaneGraph: [_unFaceId] :: FaceId -> VertexId s (DualOf w)
- Data.PlaneGraph: [_unVertexId] :: VertexId s -> Int
+ Data.PlaneGraph: [_unVertexId] :: VertexId -> Int
- Data.PlaneGraph: dual :: Getter (PlanarGraph s w v e f) (PlanarGraph s (DualOf w) f e v)
+ Data.PlaneGraph: dual :: () => Getter (PlanarGraph s w v e f) (PlanarGraph s (DualOf w) f e v)
- Data.PlaneGraph: graph :: forall s_a41RX v_a41RY e_a41RZ f_a41S0 r_a41S1 s_a42lj v_a42lk e_a42ll f_a42lm r_a42ln. Iso (PlaneGraph s_a41RX v_a41RY e_a41RZ f_a41S0 r_a41S1) (PlaneGraph s_a42lj v_a42lk e_a42ll f_a42lm r_a42ln) (PlanarGraph s_a41RX 'Primal (VertexData r_a41S1 v_a41RY) e_a41RZ f_a41S0) (PlanarGraph s_a42lj 'Primal (VertexData r_a42ln v_a42lk) e_a42ll f_a42lm)
+ Data.PlaneGraph: graph :: forall s_a2Ejh v_a2Eji e_a2Ejj f_a2Ejk r_a2Ejl s_a2Ev3 v_a2Ev4 e_a2Ev5 f_a2Ev6 r_a2Ev7. Iso (PlaneGraph s_a2Ejh v_a2Eji e_a2Ejj f_a2Ejk r_a2Ejl) (PlaneGraph s_a2Ev3 v_a2Ev4 e_a2Ev5 f_a2Ev6 r_a2Ev7) (PlanarGraph s_a2Ejh 'Primal (VertexData r_a2Ejl v_a2Eji) e_a2Ejj f_a2Ejk) (PlanarGraph s_a2Ev3 'Primal (VertexData r_a2Ev7 v_a2Ev4) e_a2Ev5 f_a2Ev6)
- Data.PlaneGraph: location :: forall r_a41DU v_a41DV r_a41RH. Lens (VertexData r_a41DU v_a41DV) (VertexData r_a41RH v_a41DV) (Point 2 r_a41DU) (Point 2 r_a41RH)
+ Data.PlaneGraph: location :: forall r_a2E4k v_a2E4l r_a2Ej1. Lens (VertexData r_a2E4k v_a2E4l) (VertexData r_a2Ej1 v_a2E4l) (Point 2 r_a2E4k) (Point 2 r_a2Ej1)
- Data.PlaneGraph: twin :: Dart s -> Dart s
+ Data.PlaneGraph: twin :: () => Dart s -> Dart s
- Data.PlaneGraph: type FaceId' s = FaceId s Primal
+ Data.PlaneGraph: type FaceId' (s :: k) = FaceId s Primal
- Data.PlaneGraph: type VertexId' s = VertexId s Primal
+ Data.PlaneGraph: type VertexId' (s :: k) = VertexId s Primal
- Data.PlaneGraph: type family DataOf g i;
+ Data.PlaneGraph: type family DataOf g i :: Type;
- Data.PlaneGraph: vData :: forall r_a41DU v_a41DV v_a41RI. Lens (VertexData r_a41DU v_a41DV) (VertexData r_a41DU v_a41RI) v_a41DV v_a41RI
+ Data.PlaneGraph: vData :: forall r_a2E4k v_a2E4l v_a2Ej2. Lens (VertexData r_a2E4k v_a2E4l) (VertexData r_a2E4k v_a2Ej2) v_a2E4l v_a2Ej2
- Graphics.Camera: cameraPosition :: forall r_a4zsw. Lens' (Camera r_a4zsw) (Point 3 r_a4zsw)
+ Graphics.Camera: cameraPosition :: forall r_a3eHo. Lens' (Camera r_a3eHo) (Point 3 r_a3eHo)
- Graphics.Camera: farDist :: forall r_a4zsw. Lens' (Camera r_a4zsw) r_a4zsw
+ Graphics.Camera: farDist :: forall r_a3eHo. Lens' (Camera r_a3eHo) r_a3eHo
- Graphics.Camera: nearDist :: forall r_a4zsw. Lens' (Camera r_a4zsw) r_a4zsw
+ Graphics.Camera: nearDist :: forall r_a3eHo. Lens' (Camera r_a3eHo) r_a3eHo
- Graphics.Camera: rawCameraNormal :: forall r_a4zsw. Lens' (Camera r_a4zsw) (Vector 3 r_a4zsw)
+ Graphics.Camera: rawCameraNormal :: forall r_a3eHo. Lens' (Camera r_a3eHo) (Vector 3 r_a3eHo)
- Graphics.Camera: rawViewUp :: forall r_a4zsw. Lens' (Camera r_a4zsw) (Vector 3 r_a4zsw)
+ Graphics.Camera: rawViewUp :: forall r_a3eHo. Lens' (Camera r_a3eHo) (Vector 3 r_a3eHo)
- Graphics.Camera: screenDimensions :: forall r_a4zsw. Lens' (Camera r_a4zsw) (Vector 2 r_a4zsw)
+ Graphics.Camera: screenDimensions :: forall r_a3eHo. Lens' (Camera r_a3eHo) (Vector 2 r_a3eHo)
- Graphics.Camera: viewPlaneDepth :: forall r_a4zsw. Lens' (Camera r_a4zsw) r_a4zsw
+ Graphics.Camera: viewPlaneDepth :: forall r_a3eHo. Lens' (Camera r_a3eHo) r_a3eHo

Files

README.md view
@@ -4,12 +4,17 @@ [![Build Status](https://travis-ci.org/noinia/hgeometry.svg?branch=master)](https://travis-ci.org/noinia/hgeometry) [![Hackage](https://img.shields.io/hackage/v/hgeometry.svg)](https://hackage.haskell.org/package/hgeometry) -HGeometry provides some basic geometry types, and geometric algorithms and data-structures for them. The main two focusses are: (1) Strong type safety, and (2)-implementations of geometric algorithms and data structures with good-asymptotic running time guarantees. Design choices showing these aspects are-for example:+HGeometry is a library for computing with geometric objects in+Haskell. It defines basic geometric types and primitives, and it+implements some geometric data structures and algorithms. The main two+focusses are: +- 1. Strong type safety, and+- 2. implementations of geometric algorithms and data structures that+have good asymptotic running time guarantees.++Design choices showing these aspects are for example:+ - we provide a data type `Point d r` parameterized by a type-level natural number `d`, representing d-dimensional points (in all cases our type parameter `r` represents the (numeric) type for the (real)-numbers):@@ -20,10 +25,37 @@ - the vertices of a `PolyLine d p r` are stored in a `Data.LSeq` which enforces that a polyline is a proper polyline, and thus has at least two vertices. -Please note that aspect (2), implementing good algorithms, is much work in+Please note that aspect two, implementing good algorithms, is much work in progress. Only a few algorithms have been implemented, some of which could use-some improvements. Currently, HGeometry provides the following algorithms:+some improvements. +HGeometry Packages+------------------++HGeometry is split into a few smaller packages. In particular:++- hgeometry-combinatorial : defines some non-geometric+  (i.e. combinatorial) data types, data structures, and algorithms.+- hgeometry-ipe : defines functions for working with [ipe](http://ipe.otfried.org) files.+- hgeometry-svg : defines functions for working with svg files.+- hgeometry-interactive : defines functions for building an+  interactive viewer using [miso](https://haskell-miso.org).+- hgeometry : defines the actual geometric data types, data+  structures, and algorithms.++In addition there is a [hgeometry-examples](hgeometry-examples)+package that defines some example applications, and a hgometry-test+package that contains all testcases. The latter is to work around a+bug in cabal.++Available Geometric Algorithms+------------------------------++Apart from some basic geometric primitives such as intersecting+line segments, testing if a point lies in a polygon etc, HGeometry+implements some more advanced geometric algorithms. In particuar, the+following algorithms are currently available:+ * two \(O(n \log n)\) time algorithms for convex hull in   $\mathbb{R}^2$: the typical Graham scan, and a divide and conquer algorithm, * an \(O(n)\) expected time algorithm for smallest enclosing disk in $\mathbb{R}^$2,@@ -40,21 +72,30 @@   decomposition. * The classic (optimal) \(O(n\log n)\) time divide and conquer algorithm to   compute the closest pair among a set of \(n\) points in \(\mathbb{R}^2\).+* An \(O(nm)\) time algorithm to compute the discrete Fr\'echet+  distance of two sequences of points (curves) of length \(n\) and+  \(m\), respectively. -It also has some geometric data structures. In particular, HGeometry contans an-implementation of+Available Geometric Data Structures+----------------------------------- +HGeometry also contains an implementation of some geometric data+structures. In particular,+ * A one dimensional Segment Tree. The base tree is static. * A one dimensional Interval Tree. The base tree is static. * A KD-Tree. The base tree is static. -HGeometry also includes a datastructure/data type for planar graphs. In-particular, it has a `EdgeOracle` data structure, that can be built in \(O(n)\)-time that can test if the graph contains an edge in constant time.+There is also support for working with planar subdivisions. As a+result, [hgeometry-combinatorial] also includes a data structure for+working with planar graphs. In particular, it has an `EdgeOracle` data+structure, that can be built in \(O(n)\) time that can test if the+planar graph contains an edge in constant time. -Numeric Types-------------- +Avoiding Floating-point issues+-------------------------------+ All geometry types are parameterized by a numerical type `r`. It is well known that Floating-point arithmetic and Geometric algorithms don't go well together; i.e. because of floating point errors one may get completely wrong@@ -62,9 +103,10 @@ types. In several algorithms it is sufficient if the type `r` is `Fractional`. Hence, you can use an exact number type such as `Rational`. -A Note on the Ext (:+) data type---------------------------------- +Working with additional data+----------------------------+ In many applications we do not just have geometric data, e.g. `Point d r`s or `Polygon r`s, but instead, these types have some additional properties, like a color, size, thickness, elevation, or whatever. Hence, we would like that our@@ -75,43 +117,16 @@ themselves, and thus we would like all the help that the type-system/compiler can give us. Hence, we choose to work with concrete types. -To still allow for some extensibility our types will use the Ext (:+) type. For-example, our `Polygon` data type, has an extra type parameter `p` that allows-the vertices of the polygon to cary some extra information of type `p` (for-example a color, a size, or whatever).+To still allow for some extensibility our types will use the Ext (:+)+type, as defined in the hgeometry-combinatorial package. For example,+our `Polygon` data type, has an extra type parameter `p` that allows+the vertices of the polygon to cary some extra information of type `p`+(for example a color, a size, or whatever).  ```haskell data Polygon (t :: PolygonType) p r where   SimplePolygon :: C.CSeq (Point 2 r :+ p)                         -> Polygon Simple p r   MultiPolygon  :: C.CSeq (Point 2 r :+ p) -> [Polygon Simple p r] -> Polygon Multi  p r ```- In all places this extra data is accessable by the (:+) type in Data.Ext, which is essentially just a pair.--Reading and Writing Ipe files--------------------------------Apart from geometric types, HGeometry provides some interface for reading and-writing Ipe (http://ipe.otfried.org). However, this is all very work in-progress. Hence, the API is experimental and may change at any time! Here is an-example showing reading a set of points from an Ipe file, computing the-DelaunayTriangulation, and writing the result again to an output file--```haskell-mainWith                          :: Options -> IO ()-mainWith (Options inFile outFile) = do-    ePage <- readSinglePageFile inFile-    case ePage of-      Left err                         -> print err-      Right (page :: IpePage Rational) -> case page^..content.traverse._IpeUse of-        []         -> putStrLn "No points found"-        syms@(_:_) -> do-           let pts  = syms&traverse.core %~ (^.symbolPoint)-               pts' = NonEmpty.fromList pts-               dt   = delaunayTriangulation $ pts'-               out  = [iO $ drawTriangulation dt]-           writeIpeFile outFile . singlePageFromContent $ out-```--See the examples directory for more examples.
− benchmark/Algorithms/Geometry/ClosestPair/Bench.hs
@@ -1,48 +0,0 @@-module Algorithms.Geometry.ClosestPair.Bench where--import qualified Algorithms.Geometry.ClosestPair.DivideAndConquer as DivideAndConquer-import qualified Algorithms.Geometry.ClosestPair.Naive as Naive-import           Benchmark.Util-import           Control.DeepSeq-import           Criterion.Main-import           Criterion.Types-import           Data.Ext-import           Data.Geometry.Point-import           Data.Proxy-import           Test.QuickCheck-import           Test.QuickCheck.HGeometryInstances ()-import           Data.LSeq (LSeq)-import qualified Data.LSeq as LSeq------------------------------------------------------------------------------------main :: IO ()-main = defaultMainWith cfg [ benchmark ]-  where-    cfg = defaultConfig { reportFile = Just "bench.html" }--benchmark :: Benchmark-benchmark = bgroup "convexHullBench"-    [ env (genPts (Proxy :: Proxy Int) 10000) benchBuild-    ]------------------------------------------------------------------------------------genPts                 :: (Ord r, Arbitrary r)-                       => proxy r -> Int -> IO (LSeq 2 (Point 2 r :+ ()))-genPts _ n | n >= 2    = generate (LSeq.promise . LSeq.fromList <$> vectorOf n arbitrary)-           | otherwise = error "genPts: Need at least 2 points"---- | Benchmark computing the closest pair-benchBuild    :: (Ord r, Num r, NFData r) => LSeq 2 (Point 2 r :+ ()) -> Benchmark-benchBuild ps = bgroup "closestPair" [ bgroup (show n) (build $ take' n ps)-                                     | n <- sizes' ps-                                     ]-  where-    take' n = LSeq.promise . LSeq.take n-    sizes' pts = let n = length pts in [ n*i `div` 100 | i <- [10,20,25,50,75,100]]--    build pts = [ bench "sort"     $ nf LSeq.unstableSort pts-                , bench "Div&Conq" $ nf DivideAndConquer.closestPair pts-                , bench "Naive"    $ nf Naive.closestPair pts-                ]
− benchmark/Algorithms/Geometry/ConvexHull/Bench.hs
@@ -1,72 +0,0 @@-module Algorithms.Geometry.ConvexHull.Bench where--import qualified Algorithms.Geometry.ConvexHull.DivideAndConquer as DivideAndConquer-import qualified Algorithms.Geometry.ConvexHull.GrahamScan as GrahamScan---- | copies of the convex hull algo with different point types-import qualified Algorithms.Geometry.ConvexHull.GrahamV2   as GV-import qualified Algorithms.Geometry.ConvexHull.GrahamFam  as GFam-import qualified Algorithms.Geometry.ConvexHull.GrahamFamPeano  as GPeano-import qualified Algorithms.Geometry.ConvexHull.GrahamFam6  as GFam6-import qualified Algorithms.Geometry.ConvexHull.GrahamFixed as GFix---import           Benchmark.Util-import           Control.DeepSeq-import           Criterion.Main-import           Criterion.Types-import           Data.Ext-import           Data.Geometry.Point-import           Data.List.NonEmpty (NonEmpty(..))-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Proxy-import           Test.QuickCheck-import           Test.QuickCheck.HGeometryInstances ()------------------------------------------------------------------------------------main :: IO ()-main = defaultMainWith cfg [ benchmark ]-  where-    cfg = defaultConfig { reportFile = Just "bench.html" }--benchmark :: Benchmark-benchmark = bgroup "convexHullBench"-    [ env (genPts (Proxy :: Proxy Int) 10000) benchBuild-    ]------------------------------------------------------------------------------------genPts     :: (Ord r, Arbitrary r) => proxy r -> Int -> IO (NonEmpty (Point 2 r :+ ()))-genPts _ n = generate (NonEmpty.fromList <$> vectorOf n arbitrary)---- | Benchmark building the convexHull-benchBuild    :: (Ord r, Num r, NFData r) => NonEmpty (Point 2 r :+ ()) -> Benchmark-benchBuild ps = bgroup "build" [ bgroup (show n) (build $ take' n ps)-                               | n <- sizes' ps-                               ]-  where-    take' n = NonEmpty.fromList . NonEmpty.take n-    sizes' _ = [2000]--    build pts = [ bench "sort"                 $ nf NonEmpty.sort pts-                , bench "sort_Linear.V2"       $ nf NonEmpty.sort ptsV2-                , bench "sort_FamPeano"        $ nf NonEmpty.sort ptsFamPeano-                , bench "sort_Family"          $ nf NonEmpty.sort ptsFam-                , bench "sort_Family6"         $ nf NonEmpty.sort ptsFam6-                , bench "sort_Fixed"           $ nf NonEmpty.sort ptsFix--                , bench "grahamScan"           $ nf GrahamScan.convexHull pts-                , bench "grahamScan_Linear.V2" $ nf GV.convexHull         ptsV2-                , bench "grahamScan_FamPeano"  $ nf GPeano.convexHull     ptsFamPeano-                , bench "grahamScan_Family"    $ nf GFam.convexHull       ptsFam-                , bench "grahamScan_Fixed"     $ nf GFix.convexHull       ptsFix--                , bench "Div&Conq"             $ nf DivideAndConquer.convexHull pts-                ]-      where-        ptsV2       = fmap (GV.fromP) pts-        ptsFamPeano = fmap (GPeano.fromP) pts-        ptsFam      = fmap (GFam.fromP) pts-        ptsFam6     = fmap (GFam6.fromP) pts-        ptsFix      = fmap (GFix.fromP) pts
− benchmark/Algorithms/Geometry/ConvexHull/GrahamFam.hs
@@ -1,103 +0,0 @@-{-# LANGUAGE UndecidableInstances #-}-module Algorithms.Geometry.ConvexHull.GrahamFam( convexHull-                                               , upperHull-                                               , lowerHull, fromP-                                               ) where--import           Control.DeepSeq-import           Control.Lens ((^.))-import           Data.Ext-import           Data.Geometry.Point-import qualified Data.Geometry.Vector.VectorFamily as VF-import           Data.List.NonEmpty (NonEmpty(..))-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Monoid-import           GHC.TypeLits---newtype MyPoint d r = MyPoint (VF.Vector d r)--deriving instance (VF.Arity d, Eq r)  => Eq (MyPoint d r)-deriving instance (VF.Arity d, Ord r) => Ord (MyPoint d r)-deriving instance (VF.Arity d, Show r) => Show (MyPoint d r)-deriving instance (NFData (VF.Vector d r)) => NFData (MyPoint d r)--pattern MyPoint2 x y = MyPoint (VF.Vector2 x y)----- instance (NFData r, Arity d) => NFData (MyPoint d r)  where---   rnf (MyPoint x y) = rnf (x,y)---   rnf (MyP p)       = rnf p--toP                    :: MyPoint 2 r :+ e -> Point 2 r :+ e-toP (MyPoint2 x y :+ e) = Point2 x y :+ e--fromP                   :: Point 2 r :+ e -> MyPoint 2 r :+ e-fromP (Point2 x y :+ e) = MyPoint2 x y :+ e---subt :: Num r => MyPoint 2 r -> MyPoint 2 r -> MyPoint 2 r-(MyPoint2 x y) `subt` (MyPoint2 a b) = MyPoint2 (x-a) (y-b)--newtype ConvexPolygon p r = ConvexPolygon [Point 2 r :+ p] deriving (Show,Eq,NFData)---- | \(O(n \log n)\) time ConvexHull using Graham-Scan. The resulting polygon is--- given in clockwise order.-convexHull            :: (Ord r, Num r)-                      => NonEmpty (MyPoint 2 r :+ p) -> ConvexPolygon p r-convexHull (p :| []) = ConvexPolygon $ [toP p]-convexHull ps        = let ps' = NonEmpty.toList . NonEmpty.sortBy incXdecY $ ps-                           uh  = NonEmpty.tail . hull' $         ps'-                           lh  = NonEmpty.tail . hull' $ reverse ps'-                       in ConvexPolygon . map toP . reverse $ lh ++ uh--upperHull  :: (Ord r, Num r) => NonEmpty (MyPoint 2 r :+ p) -> NonEmpty (MyPoint 2 r :+ p)-upperHull = hull id---lowerHull :: (Ord r, Num r) => NonEmpty (MyPoint 2 r :+ p) -> NonEmpty (MyPoint 2 r :+ p)-lowerHull = hull reverse----- | Helper function so that that can compute both the upper or the lower hull, depending--- on the function f-hull               :: (Ord r, Num r)-                   => ([MyPoint 2 r :+ p] -> [MyPoint 2 r :+ p])-                   -> NonEmpty (MyPoint 2 r :+ p) -> NonEmpty (MyPoint 2 r :+ p)-hull _ h@(_ :| []) = h-hull f pts         = hull' .  f-                   . NonEmpty.toList . NonEmpty.sortBy incXdecY $ pts--incXdecY  :: Ord r => (MyPoint 2 r) :+ p -> (MyPoint 2 r) :+ q -> Ordering-incXdecY (MyPoint2 px py :+ _) (MyPoint2 qx qy :+ _) =-  compare px qx <> compare qy py----- | Precondition: The list of input points is sorted-hull'          :: (Ord r, Num r) => [MyPoint 2 r :+ p] -> NonEmpty (MyPoint 2 r :+ p)-hull' (a:b:ps) = NonEmpty.fromList $ hull'' [b,a] ps-  where-    hull'' h []      = h-    hull'' h (p:ps') = hull'' (cleanMiddle (p:h)) ps'--    cleanMiddle h@[_,_]                         = h-    cleanMiddle h@(z:y:x:rest)-      | rightTurn (x^.core) (y^.core) (z^.core) = h-      | otherwise                               = cleanMiddle (z:x:rest)-    cleanMiddle _                               = error "cleanMiddle: too few points"--rightTurn       :: (Ord r, Num r) => MyPoint 2 r -> MyPoint 2 r -> MyPoint 2 r -> Bool-rightTurn a b c = ccwP a b c == CW----ccwP :: (Ord r, Num r) => MyPoint 2 r -> MyPoint 2 r -> MyPoint 2 r -> CCW-ccwP p q r = case z `compare` 0 of-              LT -> CW-              GT -> CCW-              EQ -> CoLinear-     where--       MyPoint2 ux uy = q `subt` p-       MyPoint2 vx vy = r `subt` p-       z              = ux * vy - uy * vx
− benchmark/Algorithms/Geometry/ConvexHull/GrahamFam6.hs
@@ -1,103 +0,0 @@-{-# LANGUAGE UndecidableInstances #-}-module Algorithms.Geometry.ConvexHull.GrahamFam6( convexHull-                                                , upperHull-                                                , lowerHull, fromP-                                                ) where--import           Control.DeepSeq-import           Control.Lens ((^.))-import           Data.Ext-import           Data.Geometry.Point-import qualified Data.Geometry.Vector.VectorFamily6 as VF-import           Data.List.NonEmpty (NonEmpty(..))-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Monoid-import           GHC.TypeLits---newtype MyPoint d r = MyPoint (VF.Vector d r)--deriving instance (VF.Arity d, Eq r)  => Eq (MyPoint d r)-deriving instance (VF.Arity d, Ord r) => Ord (MyPoint d r)-deriving instance (VF.Arity d, Show r) => Show (MyPoint d r)-deriving instance (NFData (VF.Vector d r)) => NFData (MyPoint d r)--pattern MyPoint2 x y = MyPoint (VF.Vector2 x y)----- instance (NFData r, Arity d) => NFData (MyPoint d r)  where---   rnf (MyPoint x y) = rnf (x,y)---   rnf (MyP p)       = rnf p--toP                    :: MyPoint 2 r :+ e -> Point 2 r :+ e-toP (MyPoint2 x y :+ e) = Point2 x y :+ e--fromP                   :: Point 2 r :+ e -> MyPoint 2 r :+ e-fromP (Point2 x y :+ e) = MyPoint2 x y :+ e---subt :: Num r => MyPoint 2 r -> MyPoint 2 r -> MyPoint 2 r-(MyPoint2 x y) `subt` (MyPoint2 a b) = MyPoint2 (x-a) (y-b)--newtype ConvexPolygon p r = ConvexPolygon [Point 2 r :+ p] deriving (Show,Eq,NFData)---- | \(O(n \log n)\) time ConvexHull using Graham-Scan. The resulting polygon is--- given in clockwise order.-convexHull            :: (Ord r, Num r)-                      => NonEmpty (MyPoint 2 r :+ p) -> ConvexPolygon p r-convexHull (p :| []) = ConvexPolygon $ [toP p]-convexHull ps        = let ps' = NonEmpty.toList . NonEmpty.sortBy incXdecY $ ps-                           uh  = NonEmpty.tail . hull' $         ps'-                           lh  = NonEmpty.tail . hull' $ reverse ps'-                       in ConvexPolygon . map toP . reverse $ lh ++ uh--upperHull  :: (Ord r, Num r) => NonEmpty (MyPoint 2 r :+ p) -> NonEmpty (MyPoint 2 r :+ p)-upperHull = hull id---lowerHull :: (Ord r, Num r) => NonEmpty (MyPoint 2 r :+ p) -> NonEmpty (MyPoint 2 r :+ p)-lowerHull = hull reverse----- | Helper function so that that can compute both the upper or the lower hull, depending--- on the function f-hull               :: (Ord r, Num r)-                   => ([MyPoint 2 r :+ p] -> [MyPoint 2 r :+ p])-                   -> NonEmpty (MyPoint 2 r :+ p) -> NonEmpty (MyPoint 2 r :+ p)-hull _ h@(_ :| []) = h-hull f pts         = hull' .  f-                   . NonEmpty.toList . NonEmpty.sortBy incXdecY $ pts--incXdecY  :: Ord r => (MyPoint 2 r) :+ p -> (MyPoint 2 r) :+ q -> Ordering-incXdecY (MyPoint2 px py :+ _) (MyPoint2 qx qy :+ _) =-  compare px qx <> compare qy py----- | Precondition: The list of input points is sorted-hull'          :: (Ord r, Num r) => [MyPoint 2 r :+ p] -> NonEmpty (MyPoint 2 r :+ p)-hull' (a:b:ps) = NonEmpty.fromList $ hull'' [b,a] ps-  where-    hull'' h []      = h-    hull'' h (p:ps') = hull'' (cleanMiddle (p:h)) ps'--    cleanMiddle h@[_,_]                         = h-    cleanMiddle h@(z:y:x:rest)-      | rightTurn (x^.core) (y^.core) (z^.core) = h-      | otherwise                               = cleanMiddle (z:x:rest)-    cleanMiddle _                               = error "cleanMiddle: too few points"--rightTurn       :: (Ord r, Num r) => MyPoint 2 r -> MyPoint 2 r -> MyPoint 2 r -> Bool-rightTurn a b c = ccwP a b c == CW----ccwP :: (Ord r, Num r) => MyPoint 2 r -> MyPoint 2 r -> MyPoint 2 r -> CCW-ccwP p q r = case z `compare` 0 of-              LT -> CW-              GT -> CCW-              EQ -> CoLinear-     where--       MyPoint2 ux uy = q `subt` p-       MyPoint2 vx vy = r `subt` p-       z              = ux * vy - uy * vx
− benchmark/Algorithms/Geometry/ConvexHull/GrahamFamPeano.hs
@@ -1,107 +0,0 @@-{-# LANGUAGE UndecidableInstances #-}-module Algorithms.Geometry.ConvexHull.GrahamFamPeano( convexHull-                                                    , upperHull-                                                    , lowerHull, fromP-                                                    ) where--import           Control.DeepSeq-import           Control.Lens ((^.))-import           Data.Ext-import           Data.Geometry.Point-import qualified Data.Vector.Fixed.Cont as V-import qualified Data.Geometry.Vector.VectorFamilyPeano as VF-import           Data.List.NonEmpty (NonEmpty(..))-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Monoid-import           GHC.TypeLits-import qualified Linear.V2 as V2---newtype MyPoint d r = MyPoint (VF.VectorFamily d r)--deriving instance (VF.ImplicitArity d, Eq r)  => Eq (MyPoint d r)-deriving instance (VF.ImplicitArity d, Ord r) => Ord (MyPoint d r)-deriving instance (VF.ImplicitArity d, Show r) => Show (MyPoint d r)-deriving instance (NFData (VF.VectorFamily d r)) => NFData (MyPoint d r)--pattern Vector2 x y = VF.VectorFamily (V2.V2 x y)--pattern MyPoint2 x y = MyPoint (Vector2 x y)----- instance (NFData r, Arity d) => NFData (MyPoint d r)  where---   rnf (MyPoint x y) = rnf (x,y)---   rnf (MyP p)       = rnf p--toP                    :: MyPoint VF.Two r :+ e -> Point 2 r :+ e-toP (MyPoint2 x y :+ e) = Point2 x y :+ e--fromP                   :: Point 2 r :+ e -> MyPoint VF.Two r :+ e-fromP (Point2 x y :+ e) = MyPoint2 x y :+ e---subt :: Num r => MyPoint VF.Two r -> MyPoint VF.Two r -> MyPoint VF.Two r-(MyPoint2 x y) `subt` (MyPoint2 a b) = MyPoint2 (x-a) (y-b)--newtype ConvexPolygon p r = ConvexPolygon [Point 2 r :+ p] deriving (Show,Eq,NFData)---- | \(O(n \log n)\) time ConvexHull using Graham-Scan. The resulting polygon is--- given in clockwise order.-convexHull            :: (Ord r, Num r)-                      => NonEmpty (MyPoint VF.Two r :+ p) -> ConvexPolygon p r-convexHull (p :| []) = ConvexPolygon $ [toP p]-convexHull ps        = let ps' = NonEmpty.toList . NonEmpty.sortBy incXdecY $ ps-                           uh  = NonEmpty.tail . hull' $         ps'-                           lh  = NonEmpty.tail . hull' $ reverse ps'-                       in ConvexPolygon . map toP . reverse $ lh ++ uh--upperHull  :: (Ord r, Num r) => NonEmpty (MyPoint VF.Two r :+ p) -> NonEmpty (MyPoint VF.Two r :+ p)-upperHull = hull id---lowerHull :: (Ord r, Num r) => NonEmpty (MyPoint VF.Two r :+ p) -> NonEmpty (MyPoint VF.Two r :+ p)-lowerHull = hull reverse----- | Helper function so that that can compute both the upper or the lower hull, depending--- on the function f-hull               :: (Ord r, Num r)-                   => ([MyPoint VF.Two r :+ p] -> [MyPoint VF.Two r :+ p])-                   -> NonEmpty (MyPoint VF.Two r :+ p) -> NonEmpty (MyPoint VF.Two r :+ p)-hull _ h@(_ :| []) = h-hull f pts         = hull' .  f-                   . NonEmpty.toList . NonEmpty.sortBy incXdecY $ pts--incXdecY  :: Ord r => (MyPoint VF.Two r) :+ p -> (MyPoint VF.Two r) :+ q -> Ordering-incXdecY (MyPoint2 px py :+ _) (MyPoint2 qx qy :+ _) =-  compare px qx <> compare qy py----- | Precondition: The list of input points is sorted-hull'          :: (Ord r, Num r) => [MyPoint VF.Two r :+ p] -> NonEmpty (MyPoint VF.Two r :+ p)-hull' (a:b:ps) = NonEmpty.fromList $ hull'' [b,a] ps-  where-    hull'' h []      = h-    hull'' h (p:ps') = hull'' (cleanMiddle (p:h)) ps'--    cleanMiddle h@[_,_]                         = h-    cleanMiddle h@(z:y:x:rest)-      | rightTurn (x^.core) (y^.core) (z^.core) = h-      | otherwise                               = cleanMiddle (z:x:rest)-    cleanMiddle _                               = error "cleanMiddle: too few points"--rightTurn       :: (Ord r, Num r) => MyPoint VF.Two r -> MyPoint VF.Two r -> MyPoint VF.Two r -> Bool-rightTurn a b c = ccwP a b c == CW----ccwP :: (Ord r, Num r) => MyPoint VF.Two r -> MyPoint VF.Two r -> MyPoint VF.Two r -> CCW-ccwP p q r = case z `compare` 0 of-              LT -> CW-              GT -> CCW-              EQ -> CoLinear-     where--       MyPoint2 ux uy = q `subt` p-       MyPoint2 vx vy = r `subt` p-       z              = ux * vy - uy * vx
− benchmark/Algorithms/Geometry/ConvexHull/GrahamFixed.hs
@@ -1,104 +0,0 @@-{-# LANGUAGE UndecidableInstances #-}-module Algorithms.Geometry.ConvexHull.GrahamFixed( convexHull-                                                 , upperHull-                                                 , lowerHull, fromP-                                                 ) where--import           Control.DeepSeq-import           Control.Lens ((^.))-import           Data.Ext-import           Data.Geometry.Point-import           Data.Vector.Fixed (Arity)-import qualified Data.Geometry.Vector.VectorFixed as VF-import           Data.List.NonEmpty (NonEmpty(..))-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Monoid-import           GHC.TypeLits---newtype MyPoint d r = MyPoint (VF.Vector d r)--deriving instance (Arity d, Eq r)  => Eq (MyPoint d r)-deriving instance (Arity d, Ord r) => Ord (MyPoint d r)-deriving instance (Arity d, Show r) => Show (MyPoint d r)-deriving instance (NFData (VF.Vector d r)) => NFData (MyPoint d r)--pattern MyPoint2 x y = MyPoint (VF.Vector2 x y)----- instance (NFData r, Arity d) => NFData (MyPoint d r)  where---   rnf (MyPoint x y) = rnf (x,y)---   rnf (MyP p)       = rnf p--toP                    :: MyPoint 2 r :+ e -> Point 2 r :+ e-toP (MyPoint2 x y :+ e) = Point2 x y :+ e--fromP                   :: Point 2 r :+ e -> MyPoint 2 r :+ e-fromP (Point2 x y :+ e) = MyPoint2 x y :+ e---subt :: Num r => MyPoint 2 r -> MyPoint 2 r -> MyPoint 2 r-(MyPoint2 x y) `subt` (MyPoint2 a b) = MyPoint2 (x-a) (y-b)--newtype ConvexPolygon p r = ConvexPolygon [Point 2 r :+ p] deriving (Show,Eq,NFData)---- | \(O(n \log n)\) time ConvexHull using Graham-Scan. The resulting polygon is--- given in clockwise order.-convexHull            :: (Ord r, Num r)-                      => NonEmpty (MyPoint 2 r :+ p) -> ConvexPolygon p r-convexHull (p :| []) = ConvexPolygon $ [toP p]-convexHull ps        = let ps' = NonEmpty.toList . NonEmpty.sortBy incXdecY $ ps-                           uh  = NonEmpty.tail . hull' $         ps'-                           lh  = NonEmpty.tail . hull' $ reverse ps'-                       in ConvexPolygon . map toP . reverse $ lh ++ uh--upperHull  :: (Ord r, Num r) => NonEmpty (MyPoint 2 r :+ p) -> NonEmpty (MyPoint 2 r :+ p)-upperHull = hull id---lowerHull :: (Ord r, Num r) => NonEmpty (MyPoint 2 r :+ p) -> NonEmpty (MyPoint 2 r :+ p)-lowerHull = hull reverse----- | Helper function so that that can compute both the upper or the lower hull, depending--- on the function f-hull               :: (Ord r, Num r)-                   => ([MyPoint 2 r :+ p] -> [MyPoint 2 r :+ p])-                   -> NonEmpty (MyPoint 2 r :+ p) -> NonEmpty (MyPoint 2 r :+ p)-hull _ h@(_ :| []) = h-hull f pts         = hull' .  f-                   . NonEmpty.toList . NonEmpty.sortBy incXdecY $ pts--incXdecY  :: Ord r => (MyPoint 2 r) :+ p -> (MyPoint 2 r) :+ q -> Ordering-incXdecY (MyPoint2 px py :+ _) (MyPoint2 qx qy :+ _) =-  compare px qx <> compare qy py----- | Precondition: The list of input points is sorted-hull'          :: (Ord r, Num r) => [MyPoint 2 r :+ p] -> NonEmpty (MyPoint 2 r :+ p)-hull' (a:b:ps) = NonEmpty.fromList $ hull'' [b,a] ps-  where-    hull'' h []      = h-    hull'' h (p:ps') = hull'' (cleanMiddle (p:h)) ps'--    cleanMiddle h@[_,_]                         = h-    cleanMiddle h@(z:y:x:rest)-      | rightTurn (x^.core) (y^.core) (z^.core) = h-      | otherwise                               = cleanMiddle (z:x:rest)-    cleanMiddle _                               = error "cleanMiddle: too few points"--rightTurn       :: (Ord r, Num r) => MyPoint 2 r -> MyPoint 2 r -> MyPoint 2 r -> Bool-rightTurn a b c = ccwP a b c == CW----ccwP :: (Ord r, Num r) => MyPoint 2 r -> MyPoint 2 r -> MyPoint 2 r -> CCW-ccwP p q r = case z `compare` 0 of-              LT -> CW-              GT -> CCW-              EQ -> CoLinear-     where--       MyPoint2 ux uy = q `subt` p-       MyPoint2 vx vy = r `subt` p-       z              = ux * vy - uy * vx
− benchmark/Algorithms/Geometry/ConvexHull/GrahamV2.hs
@@ -1,95 +0,0 @@-{-# Language DeriveGeneric #-}-module Algorithms.Geometry.ConvexHull.GrahamV2( convexHull-                                              , upperHull-                                              , lowerHull, fromP-                                              ) where---import           Control.DeepSeq-import           Control.Lens ((^.))-import           Data.Ext-import           Data.Geometry.Point-import           Data.List.NonEmpty (NonEmpty(..))-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Monoid-import           GHC.Generics-import qualified Linear.V2 as V2----newtype MyPoint r = MKPoint (V2.V2 r) deriving (Show,Eq,Ord,Generic)--- data MyPoint r = MyPoint !r !r deriving (Show,Eq,Ord,Generic)--pattern MyPoint x y = MKPoint (V2.V2 x y)--instance NFData r => NFData (MyPoint r)---toP (MyPoint x y :+ e) = Point2 x y :+ e-fromP (Point2 x y :+ e) = MyPoint x y :+ e--(MyPoint x y) `subt` (MyPoint a b) = MyPoint (x-a) (y-b)---newtype ConvexPolygon p r = ConvexPolygon [Point 2 r :+ p] deriving (Show,Eq,NFData)---- | \(O(n \log n)\) time ConvexHull using Graham-Scan. The resulting polygon is--- given in clockwise order.-convexHull            :: (Ord r, Num r)-                      => NonEmpty (MyPoint r :+ p) -> ConvexPolygon p r-convexHull (p :| []) = ConvexPolygon $ [toP p]-convexHull ps        = let ps' = NonEmpty.toList . NonEmpty.sortBy incXdecY $ ps-                           uh  = NonEmpty.tail . hull' $         ps'-                           lh  = NonEmpty.tail . hull' $ reverse ps'-                       in ConvexPolygon . map toP . reverse $ lh ++ uh--upperHull  :: (Ord r, Num r) => NonEmpty (MyPoint r :+ p) -> NonEmpty (MyPoint r :+ p)-upperHull = hull id---lowerHull :: (Ord r, Num r) => NonEmpty (MyPoint r :+ p) -> NonEmpty (MyPoint r :+ p)-lowerHull = hull reverse----- | Helper function so that that can compute both the upper or the lower hull, depending--- on the function f-hull               :: (Ord r, Num r)-                   => ([MyPoint r :+ p] -> [MyPoint r :+ p])-                   -> NonEmpty (MyPoint r :+ p) -> NonEmpty (MyPoint r :+ p)-hull _ h@(_ :| []) = h-hull f pts         = hull' .  f-                   . NonEmpty.toList . NonEmpty.sortBy incXdecY $ pts--incXdecY  :: Ord r => (MyPoint r) :+ p -> (MyPoint r) :+ q -> Ordering-incXdecY (MyPoint px py :+ _) (MyPoint qx qy :+ _) =-  compare px qx <> compare qy py----- | Precondition: The list of input points is sorted-hull'          :: (Ord r, Num r) => [MyPoint r :+ p] -> NonEmpty (MyPoint r :+ p)-hull' (a:b:ps) = NonEmpty.fromList $ hull'' [b,a] ps-  where-    hull'' h []      = h-    hull'' h (p:ps') = hull'' (cleanMiddle (p:h)) ps'--    cleanMiddle h@[_,_]                         = h-    cleanMiddle h@(z:y:x:rest)-      | rightTurn (x^.core) (y^.core) (z^.core) = h-      | otherwise                               = cleanMiddle (z:x:rest)-    cleanMiddle _                               = error "cleanMiddle: too few points"--rightTurn       :: (Ord r, Num r) => MyPoint r -> MyPoint r -> MyPoint r -> Bool-rightTurn a b c = ccwP a b c == CW----ccwP :: (Ord r, Num r) => MyPoint r -> MyPoint r -> MyPoint r -> CCW-ccwP p q r = case z `compare` 0 of-              LT -> CW-              GT -> CCW-              EQ -> CoLinear-     where--       MyPoint ux uy = q `subt` p-       MyPoint vx vy = r `subt` p-       z             = ux * vy - uy * vx
− benchmark/Benchmark/Util.hs
@@ -1,7 +0,0 @@-module Benchmark.Util where------ | Generates different size benchmarks-sizes    :: Foldable f => f a -> [Int]-sizes xs = let n = length xs in (\i -> n*i `div` 100) <$> [5,10..100]
− benchmark/Benchmarks.hs
@@ -1,6 +0,0 @@-module Main where--import qualified Algorithms.Geometry.ClosestPair.Bench as M--main :: IO ()-main = M.main
− benchmark/Data/Geometry/IntervalTreeBench.hs
@@ -1,79 +0,0 @@-module Data.Geometry.IntervalTreeBench where--import           Benchmark.Util-import           Control.DeepSeq-import           Control.Lens-import           Criterion.Main-import           Criterion.Types-import           Data.Ext-import           Data.Geometry.Interval-import qualified Data.Geometry.IntervalTree as IT-import           Data.Geometry.SegmentTree (I(..))-import qualified Data.Geometry.SegmentTree as SegTree-import qualified Data.List.NonEmpty as NonEmpty-import           Debug.Trace-import           Test.QuickCheck-import           Test.QuickCheck.HGeometryInstances ()------------------------------------------------------------------------------------main :: IO ()-main = defaultMainWith cfg [ intervalBench ]-  where-    cfg = defaultConfig { reportFile = Just "bench.html" }--intervalBench :: Benchmark-intervalBench = bgroup "IntervalTree"-    [ -- env (genIntervals (I (5 :: Int)) 1000) benchBuild-      env (genIntervals (I (5 :: Int)) 100) benchQueryIT-    ]-------------------------------------------------------------------------------------- | generates n random intervals-genIntervals                  :: (Ord r, Arbitrary r)-                              => proxy r -> Int -> IO [Interval () r]-genIntervals _ n | n <= 0     = error "genIntervals: need n > 0"-                 | otherwise  = generate (vectorOf n arbitrary)--genQueries                      :: (Ord r, Arbitrary r)-                                => proxy r -> Int -> IO [r]-genQueries _ n | n <= 0     = error "genQueries: need n > 0"-               | otherwise  = generate (vectorOf n arbitrary)----- genQuerySetup     :: (Ord r, Arbitrary r)---                   => proxy r -> Int -> IO (Int,IT.IntervalTree (I (Interval () r)) r, [r])--- genQuerySetup p n = (\is qs -> (n, IT.fromIntervals . fmap I $ is, qs))---                  <$> genIntervals p n---                  <*> genQueries   p n----- | Benchmark building the interval tree-benchBuild    :: (Ord r, NFData r) => [Interval () r] -> Benchmark-benchBuild is = bgroup "build" [ bench (show n) $ nf IT.fromIntervals (take n is')-                               | n <- sizes is-                               ]-  where-    is' = I <$> is--benchQueryIT    :: (Ord r, Arbitrary r, NFData r) => [Interval () r] -> Benchmark-benchQueryIT is = bgroup "queries"-    [ env (setup' n) (\(t,qs) ->-                        bench ("queries on size" ++ show n) $ whnf (queryAll t) qs)-    | n <- sizes is-    ]-  where-    is'        = I <$> is-    r          = is^.to head.start.core-    setup' n  = traceShow "setup" $ setup n--    setup n    = (IT.fromIntervals (take n is'),) <$> genQueries (I r) 100000-    queryAll t = map (flip IT.search t)----- benchQueryIT          :: Ord r---                       => (Int, IT.IntervalTree (I (Interval () r)) r, [r]) -> Benchmark--- benchQueryIT (n,t,qs) = bgroup "queries" [ bench "query" $ whnf (flip IT.search t) q---                                          | q <- qs---                                          ]
− benchmark/Data/Geometry/Vector/VectorFamily6.hs
@@ -1,257 +0,0 @@-{-# LANGUAGE ScopedTypeVariables  #-}-{-# LANGUAGE UndecidableInstances #-}-module Data.Geometry.Vector.VectorFamily6 where--import           Control.Applicative (liftA2)-import           Control.DeepSeq-import           Control.Lens hiding (element)--- import           Data.Aeson (ToJSON(..),FromJSON(..))-import qualified Data.Foldable as F-import qualified Data.Geometry.Vector.VectorFixed as FV-import           Data.Maybe (fromMaybe)-import           Data.Proxy-import           Data.Traversable (foldMapDefault,fmapDefault)-import qualified Data.Vector.Fixed as V-import           Data.Vector.Fixed.Cont (Peano(..), PeanoNum(..), Fun(..))-import           GHC.TypeLits-import           Linear.Affine (Affine(..))-import           Linear.Metric-import qualified Linear.V2 as L2-import qualified Linear.V3 as L3-import qualified Linear.V4 as L4-import           Linear.Vector------------------------------------------------------------------------------------- * d dimensional Vectors---type One = S Z-type Two = S One-type Three = S Two-type Four = S Three-type Many d = S (S (S (S (S d))))---type family FromPeano (d :: PeanoNum) :: Nat where-  FromPeano Z     = 0-  FromPeano (S d) = 1 + FromPeano d---data SingPeano (d :: PeanoNum) where-  SZ :: SingPeano Z-  SS :: !(SingPeano d) -> SingPeano (S d)--class ImplicitPeano (d :: PeanoNum) where-  implicitPeano :: SingPeano d-instance ImplicitPeano Z where-  implicitPeano = SZ-instance ImplicitPeano d => ImplicitPeano (S d) where-  implicitPeano = SS implicitPeano---- | Mapping between the implementation type, and the actual implementation.-type family VectorFamilyF (d :: PeanoNum) :: * -> * where-  VectorFamilyF Z        = Const ()-  VectorFamilyF One      = Identity-  VectorFamilyF Two      = L2.V2-  VectorFamilyF Three    = L3.V3-  VectorFamilyF Four     = L4.V4-  VectorFamilyF (Many d) = FV.Vector (FromPeano (Many d))----- | Datatype representing d dimensional vectors. The default implementation is--- based n VectorFixed. However, for small vectors we automatically select a--- more efficient representation.-newtype VectorFamily (d :: PeanoNum) (r :: *) =-  VectorFamily { _unVF :: VectorFamilyF d r }--type ImplicitArity d = (ImplicitPeano d, V.Arity (FromPeano d))----instance (Eq r, ImplicitArity d) => Eq (VectorFamily d r) where-  (VectorFamily u) == (VectorFamily v) = case (implicitPeano :: SingPeano d) of-        SZ                         -> u == v-        (SS SZ)                    -> u == v-        (SS (SS SZ))               -> u == v-        (SS (SS (SS SZ)))          -> u == v-        (SS (SS (SS (SS SZ))))     -> u == v-        (SS (SS (SS (SS (SS _))))) -> u == v-  {-# INLINE (==) #-}--instance (Ord r, ImplicitArity d) => Ord (VectorFamily d r) where-  (VectorFamily u) `compare` (VectorFamily v) = case (implicitPeano :: SingPeano d) of-        SZ                         -> u `compare` v-        (SS SZ)                    -> u `compare` v-        (SS (SS SZ))               -> u `compare` v-        (SS (SS (SS SZ)))          -> u `compare` v-        (SS (SS (SS (SS SZ))))     -> u `compare` v-        (SS (SS (SS (SS (SS _))))) -> u `compare` v-  {-# INLINE compare #-}---instance ImplicitArity d => Functor (VectorFamily d) where-  fmap f = VectorFamily . g f . _unVF-    where g = case (implicitPeano :: SingPeano d) of-                SZ                         -> fmap-                (SS SZ)                    -> fmap-                (SS (SS SZ))               -> fmap-                (SS (SS (SS SZ)))          -> fmap-                (SS (SS (SS (SS SZ))))     -> fmap-                (SS (SS (SS (SS (SS _))))) -> fmap-  {-# INLINE fmap #-}---instance ImplicitArity d => Foldable (VectorFamily d) where-  foldMap f = g f . _unVF-    where g = case (implicitPeano :: SingPeano d) of-                SZ                         -> foldMap-                (SS SZ)                    -> foldMap-                (SS (SS SZ))               -> foldMap-                (SS (SS (SS SZ)))          -> foldMap-                (SS (SS (SS (SS SZ))))     -> foldMap-                (SS (SS (SS (SS (SS _))))) -> foldMap-  {-# INLINE foldMap #-}--instance ImplicitArity d => Traversable (VectorFamily d) where-  traverse f = fmap VectorFamily . g f . _unVF-    where g = case (implicitPeano :: SingPeano d) of-                SZ                         -> traverse-                (SS SZ)                    -> traverse-                (SS (SS SZ))               -> traverse-                (SS (SS (SS SZ)))          -> traverse-                (SS (SS (SS (SS SZ))))     -> traverse-                (SS (SS (SS (SS (SS _))))) -> traverse-  {-# INLINE traverse #-}--instance ImplicitArity d => Applicative (VectorFamily d) where-  pure = VectorFamily . case (implicitPeano :: SingPeano d) of-                SZ                         -> pure-                (SS SZ)                    -> pure-                (SS (SS SZ))               -> pure-                (SS (SS (SS SZ)))          -> pure-                (SS (SS (SS (SS SZ))))     -> pure-                (SS (SS (SS (SS (SS _))))) -> pure-  {-# INLINE pure #-}-  liftA2 f (VectorFamily u) (VectorFamily v) = VectorFamily $-      case (implicitPeano :: SingPeano d) of-                SZ                         -> liftA2 f u v-                (SS SZ)                    -> liftA2 f u v-                (SS (SS SZ))               -> liftA2 f u v-                (SS (SS (SS SZ)))          -> liftA2 f u v-                (SS (SS (SS (SS SZ))))     -> liftA2 f u v-                (SS (SS (SS (SS (SS _))))) -> liftA2 f u v-  {-# INLINE liftA2 #-}-----type instance V.Dim (VectorFamily d)  = FromPeano d-----instance ImplicitArity d => V.Vector (VectorFamily d) r where-  construct = fmap VectorFamily $ case (implicitPeano :: SingPeano d) of-                SZ                         -> Fun $ Const ()-                (SS SZ)                    -> V.construct-                (SS (SS SZ))               -> Fun L2.V2-                (SS (SS (SS SZ)))          -> Fun L3.V3-                (SS (SS (SS (SS SZ))))     -> Fun L4.V4-                (SS (SS (SS (SS (SS _))))) -> V.construct-  {-# INLINE construct #-}-  inspect (VectorFamily v) ff@(Fun f) = case (implicitPeano :: SingPeano d) of-                SZ                         -> f-                (SS SZ)                    -> V.inspect v ff-                (SS (SS SZ))               -> let (L2.V2 x y) = v     in f x y-                (SS (SS (SS SZ)))          -> let (L3.V3 x y z) = v   in f x y z-                (SS (SS (SS (SS SZ))))     -> let (L4.V4 x y z w) = v in f x y z w-                (SS (SS (SS (SS (SS _))))) -> V.inspect v ff-  {-# INLINE inspect #-}-  -- basicIndex (VectorFamily v) i = case (implicitPeano :: SingPeano d) of-  --               SZ                         -> err-  --               (SS SZ)                    -> if i == 0 then runIdentity v else err-  --               (SS (SS SZ))               -> let (L2.V2 x y) = v     in f x y-  --               (SS (SS (SS SZ)))          -> let (L3.V3 x y z) = v   in f x y z-  --               (SS (SS (SS (SS SZ))))     -> let (L4.V4 x y z w) = v in f x y z w-  --               (SS (SS (SS (SS (SS _))))) -> V.basicIndex v i-  --   where-  --     err = error "VectorFamily: basicIndex out of range"-  -- {-# INLINE basicIndex #-}---instance (ImplicitArity d, Show r) => Show (VectorFamily d r) where-  show v = mconcat [ "Vector", show $ F.length v , " "-                   , show $ F.toList v ]--deriving instance (NFData (VectorFamilyF d r)) => NFData (VectorFamily d r)---type instance Index   (VectorFamily d r) = Int-type instance IxValue (VectorFamily d r) = r-------------------------------------------------------------------------------------newtype Vector (d :: Nat) (r :: *) = MKVector { _unV :: VectorFamily (Peano d) r }--type instance V.Dim (Vector d)  = d---type instance Index   (Vector d r) = Int-type instance IxValue (Vector d r) = r--type Arity d = ImplicitArity (Peano d)--deriving instance (Eq r,  Arity d) => Eq  (Vector d r)-deriving instance (Ord r, Arity d) => Ord (Vector d r)--deriving instance Arity d => Functor     (Vector d)-deriving instance Arity d => Foldable    (Vector d)-deriving instance Arity d => Traversable (Vector d)--instance (Arity d, Show r) => Show (Vector d r) where-  show v = mconcat [ "Vector", show $ F.length v , " "-                   , show $ F.toList v ]---deriving instance (NFData (VectorFamily (Peano d) r)) => NFData (Vector d r)---------------------------------------------------------------------------------------- * Convenience "constructors"--pattern Vector   :: VectorFamilyF (Peano d) r -> Vector d r-pattern Vector v = MKVector (VectorFamily v)--pattern Vector1   :: r -> Vector 1 r-pattern Vector1 x = (Vector (Identity x))--pattern Vector2     :: r -> r -> Vector 2 r-pattern Vector2 x y = (Vector (L2.V2 x y))--pattern Vector3        :: r -> r -> r -> Vector 3 r-pattern Vector3 x y z  = (Vector (L3.V3 x y z))--pattern Vector4         :: r -> r -> r -> r -> Vector 4 r-pattern Vector4 x y z w = (Vector (L4.V4 x y z w))-------------------------------------------------------------------------------------- -- destruct            :: (Vec d r, Vec (d + 1) r, 1 <= (d + 1))--- --                     => Vector (d + 1) r -> (r, Vector d r)--- -- destruct (Vector v) = (V.head v, Vector $ V.tail v)----- -- -- vectorFromList :: Arity d => [a] -> Maybe (Vector d a)--- -- vectorFromList = fmap Vector . V.fromListM---- -- vectorFromListUnsafe :: V.Arity d => [a] -> Vector d a--- -- vectorFromListUnsafe = Vector . V.fromList-- ------------------------------------------------------------------------------------ | Cross product of two three-dimensional vectors-cross       :: Num r => Vector 3 r -> Vector 3 r -> Vector 3 r-(Vector u) `cross` (Vector v) = Vector $ u `L3.cross` v
− benchmark/WSPDBench.hs
@@ -1,26 +0,0 @@-{-# LANGUAGE PartialTypeSignatures #-}-module WSPDBench where--import Control.DeepSeq-import Control.Lens-import Criterion.Main-import Data.Ext-import Data.Geometry.Point-import Demo.ExpectedPairwiseDistance---readInput'     :: FilePath -> Int -> IO [Point 2 Double :+ _]-readInput' fp k = take k <$> readInput fp---benchWSPD :: Benchmark-benchWSPD = bgroup "Well-Separated Pair Decomposition"-    [ env (readInput' "pco.9420_convert.txt" 200) $ \pts -> bgroup "pco"-        [ bench "exact"     $ nf pairwiseDist                  pts-        , bench "wspd 0.05" $ nf (approxPairwiseDistance 0.05) pts-        , bench "wspd 0.10" $ nf (approxPairwiseDistance 0.10) pts-        , bench "wspd 0.20" $ nf (approxPairwiseDistance 0.20) pts-        ]-    ]---- main = defaultMain [ benchWSPD ]
− changelog.md
@@ -1,70 +0,0 @@-#### 0.8 ###--- Compatibility with GHC 8.6-- Added \(O(n\log n)\) time closest pair algorithm.-- Added arrangement data type-- Various Bugfixes-- Added Camera data type with some world to screen transformations.-- Additional read/show instances-- Updated some of the show instances for Ipe related types.--#### 0.7 ###--- Compatibility with GHC 8.0-8.4-- Implemented more Algorithms and Data Structures. This includes-  * Polygon triangulation-- A new implementation of PlanarSubdivision that now also supports disconnected-  subdivsions.-- Performance improvements by changing to a different Vector-  implementation. For low dimensional vectors (of dimension at most four) we-  now essentially use the types from-  [linear](https://hackage.haskell.org/package/linear), this gives significant-  speedups on several small benchmarks.-- bugfixes.--#### 0.6 ###--- Implemented more Algorithms and Data Structures. This includes-  * Bentley-Ottmannn line-segment intersection,-  * Well-Separated Pair decompositions,-  * extremal point/tangents for Convex hulls,-  * Minkowski sum for convex polygons,-  * one dimensional segment trees,-  * one dimensional interval trees, and a-  * KD-tree.-- Several bug fixes, including a very stupid bug in Box-- Separate ConvexPolygon type.-- More thorough testing for some of the algorithms.-- Started work on a proper representation for planar subdivsions. This includes-  a representation of planar graphs that support querying if two vertices are-  connected by an edge in $O(1)$ time.-- Dropped support for GHC 7.8--#### 0.5 ###--- Implemented several algorithms, including Delaunay Triangulation, EMST, and-Douglas Peucker.-- Revamped the data types for Intersections--#### 0.4 ###--- Major rewrite from scratch, providing much stronger type-level-  guarantees. Incompatible with older versions.-- Convex Hull and Smallest enclosing disk algorithms.-- HGeometry now includes some very experimental and preliminary support for-  reading and writing Ipe7 files.--#### 0.2 & 0.3 ###--- Internal releases.--### 0.1.1 ###--- Fixed a bug in point on n the line segment test-- Generalized the types of inCircle, inDisc, onCircle, onDisc etc. We now need-  only that the type representing precision model implements the typeclass-  `Num` instead of `Floating'.--### 0.1 ###--- Initial release.
+ changelog.org view
@@ -0,0 +1,85 @@+#+STARTUP: showeverything++* Changelog++** 0.9 (unreleased)++- Implemented 2D Linear Programming using randomized incremental+  construction (in \(O(n)\) expected time). This allows us to solve+  the following problems+  - testing starshapedness of simple polygons in expected linear time+  - testing if we can separate a set of red and a set of blue points+    in expected linear time.+- Data types for halfspaces++** 0.8++- Compatibility with GHC 8.6+- Added \(O(n\log n)\) time closest pair algorithm.+- Added arrangement data type+- Various Bugfixes+- Added Camera data type with some world to screen transformations.+- Additional read/show instances+- Updated some of the show instances for Ipe related types.++** 0.7+++- Compatibility with GHC 8.0-8.4+- Implemented more Algorithms and Data Structures. This includes+  * Polygon triangulation+- A new implementation of PlanarSubdivision that now also supports disconnected+  subdivsions.+- Performance improvements by changing to a different Vector+  implementation. For low dimensional vectors (of dimension at most four) we+  now essentially use the types from+  [linear](https://hackage.haskell.org/package/linear), this gives significant+  speedups on several small benchmarks.+- bugfixes.++** 0.6++- Implemented more Algorithms and Data Structures. This includes+  * Bentley-Ottmannn line-segment intersection,+  * Well-Separated Pair decompositions,+  * extremal point/tangents for Convex hulls,+  * Minkowski sum for convex polygons,+  * one dimensional segment trees,+  * one dimensional interval trees, and a+  * KD-tree.+- Several bug fixes, including a very stupid bug in Box+- Separate ConvexPolygon type.+- More thorough testing for some of the algorithms.+- Started work on a proper representation for planar subdivsions. This includes+  a representation of planar graphs that support querying if two vertices are+  connected by an edge in $O(1)$ time.+- Dropped support for GHC 7.8++** 0.5++- Implemented several algorithms, including Delaunay Triangulation, EMST, and+Douglas Peucker.+- Revamped the data types for Intersections++** 0.++- Major rewrite from scratch, providing much stronger type-level+  guarantees. Incompatible with older versions.+- Convex Hull and Smallest enclosing disk algorithms.+- HGeometry now includes some very experimental and preliminary support for+  reading and writing Ipe7 files.++** 0.2 & 0.3++- Internal releases.++** 0.1.1++- Fixed a bug in point on n the line segment test+- Generalized the types of inCircle, inDisc, onCircle, onDisc etc. We now need+  only that the type representing precision model implements the typeclass+  `Num` instead of `Floating'.++** 0.1++- Initial release.
− docs/Data/PlanarGraph/testG.png

binary file changed (38819 → absent bytes)

doctests.hs view
@@ -1,9 +1,9 @@ import Test.DocTest -import Data.Monoid-+main :: IO () main = doctest $ ["-isrc" ] ++ ghcExts ++ files +ghcExts :: [String] ghcExts = map ("-X" ++)           [ "TypeFamilies"           , "GADTs"@@ -13,6 +13,8 @@           , "ConstraintKinds"           , "PolyKinds"           , "RankNTypes"+          , "TypeApplications"+          , "ScopedTypeVariables"            , "PatternSynonyms"           , "ViewPatterns"@@ -33,8 +35,10 @@           , "FlexibleContexts"           ] +files :: [String] files = map toFile modules +toFile :: String -> String toFile = (\s -> "src/" <> s <> ".hs") . replace '.' '/'  replace     :: Eq a => a -> a -> [a] -> [a]@@ -44,14 +48,9 @@     go (c:cs) | c == a    = b:go cs               | otherwise = c:go cs +modules :: [String] modules =-  [ "Data.Range"-  , "Data.CircularList.Util"-  , "Data.Permutation"-  , "Data.CircularSeq"-  , "Data.LSeq"-  , "Data.PlanarGraph"-  , "Data.Tree.Util"+  [ "Data.PlaneGraph.IO"    , "Data.Geometry.Point"   , "Data.Geometry.Vector"@@ -64,9 +63,6 @@   , "Data.Geometry.Polygon"   , "Data.Geometry.Ball"   , "Data.Geometry.Box"--  , "Data.Geometry.Ipe.IpeOut"-  , "Data.Geometry.Ipe.FromIpe"    -- , "Algorithms.Geometry.HiddenSurfaceRemoval.HiddenSurfaceRemoval"   ]
− examples/BAPC2012/G.in
@@ -1,24762 +0,0 @@-49--2618 0-2618 1-1000--2618 1--2617 21--2616 40--2615 58--2614 75--2613 91--2612 106--2611 120--2610 133--2609 145--2608 156--2607 166--2605 185--2604 194--2602 211--2601 219--2599 234--2598 241--2595 261--2593 274--2590 293--2589 299--2586 316--2584 327--2581 343--2580 348--2576 367--2573 381--2571 390--2568 403--2564 420--2563 424--2558 443--2554 458--2551 469--2546 487--2544 494--2539 511--2536 521--2532 534--2527 550--2521 569--2520 572--2513 592--2507 609--2502 623--2498 634--2491 653--2488 661--2483 674--2476 692--2474 697--2467 714--2462 726--2454 745--2451 752--2444 768--2440 777--2431 797--2426 808--2420 821--2413 836--2405 853--2396 872--2395 874--2385 893--2376 910--2368 925--2361 938--2355 949--2344 969--2339 978--2330 994--2326 1001--2315 1020--2308 1032--2298 1049--2295 1054--2284 1072--2276 1085--2271 1093--2259 1112--2252 1123--2243 1137--2232 1154--2219 1174--2217 1177--2204 1196--2193 1212--2184 1225--2177 1235--2165 1252--2160 1259--2147 1277--2139 1288--2128 1303--2114 1322--2111 1326--2098 1343--2088 1356--2081 1365--2070 1379--2055 1398--2051 1403--2038 1419--2029 1430--2015 1447--2010 1453--1994 1472--1983 1485--1966 1505--1960 1512--1947 1527--1940 1535--1925 1552--1917 1561--1900 1580--1891 1590--1881 1601--1870 1613--1858 1626--1845 1640--1831 1655--1816 1671--1800 1688--1783 1706--1765 1725--1746 1745--1745 1746--1725 1765--1706 1783--1688 1800--1671 1816--1655 1831--1640 1845--1626 1858--1613 1870--1601 1881--1590 1891--1580 1900--1561 1917--1552 1925--1535 1940--1527 1947--1512 1960--1505 1966--1485 1983--1472 1994--1453 2010--1447 2015--1430 2029--1419 2038--1403 2051--1398 2055--1379 2070--1365 2081--1356 2088--1343 2098--1326 2111--1322 2114--1303 2128--1288 2139--1277 2147--1259 2160--1252 2165--1235 2177--1225 2184--1212 2193--1196 2204--1177 2217--1174 2219--1154 2232--1137 2243--1123 2252--1112 2259--1093 2271--1085 2276--1072 2284--1054 2295--1049 2298--1032 2308--1020 2315--1001 2326--994 2330--978 2339--969 2344--949 2355--938 2361--925 2368--910 2376--893 2385--874 2395--872 2396--853 2405--836 2413--821 2420--808 2426--797 2431--777 2440--768 2444--752 2451--745 2454--726 2462--714 2467--697 2474--692 2476--674 2483--661 2488--653 2491--634 2498--623 2502--609 2507--592 2513--572 2520--569 2521--550 2527--534 2532--521 2536--511 2539--494 2544--487 2546--469 2551--458 2554--443 2558--424 2563--420 2564--403 2568--390 2571--381 2573--367 2576--348 2580--343 2581--327 2584--316 2586--299 2589--293 2590--274 2593--261 2595--241 2598--234 2599--219 2601--211 2602--194 2604--185 2605--166 2607--156 2608--145 2609--133 2610--120 2611--106 2612--91 2613--75 2614--58 2615--40 2616--21 2617--1 2618-0 2618-1 2618-21 2617-40 2616-58 2615-75 2614-91 2613-106 2612-120 2611-133 2610-145 2609-156 2608-166 2607-185 2605-194 2604-211 2602-219 2601-234 2599-241 2598-261 2595-274 2593-293 2590-299 2589-316 2586-327 2584-343 2581-348 2580-367 2576-381 2573-390 2571-403 2568-420 2564-424 2563-443 2558-458 2554-469 2551-487 2546-494 2544-511 2539-521 2536-534 2532-550 2527-569 2521-572 2520-592 2513-609 2507-623 2502-634 2498-653 2491-661 2488-674 2483-692 2476-697 2474-714 2467-726 2462-745 2454-752 2451-768 2444-777 2440-797 2431-808 2426-821 2420-836 2413-853 2405-872 2396-874 2395-893 2385-910 2376-925 2368-938 2361-949 2355-969 2344-978 2339-994 2330-1001 2326-1020 2315-1032 2308-1049 2298-1054 2295-1072 2284-1085 2276-1093 2271-1112 2259-1123 2252-1137 2243-1154 2232-1174 2219-1177 2217-1196 2204-1212 2193-1225 2184-1235 2177-1252 2165-1259 2160-1277 2147-1288 2139-1303 2128-1322 2114-1326 2111-1343 2098-1356 2088-1365 2081-1379 2070-1398 2055-1403 2051-1419 2038-1430 2029-1447 2015-1453 2010-1472 1994-1485 1983-1505 1966-1512 1960-1527 1947-1535 1940-1552 1925-1561 1917-1580 1900-1590 1891-1601 1881-1613 1870-1626 1858-1640 1845-1655 1831-1671 1816-1688 1800-1706 1783-1725 1765-1745 1746-1746 1745-1765 1725-1783 1706-1800 1688-1816 1671-1831 1655-1845 1640-1858 1626-1870 1613-1881 1601-1891 1590-1900 1580-1917 1561-1925 1552-1940 1535-1947 1527-1960 1512-1966 1505-1983 1485-1994 1472-2010 1453-2015 1447-2029 1430-2038 1419-2051 1403-2055 1398-2070 1379-2081 1365-2088 1356-2098 1343-2111 1326-2114 1322-2128 1303-2139 1288-2147 1277-2160 1259-2165 1252-2177 1235-2184 1225-2193 1212-2204 1196-2217 1177-2219 1174-2232 1154-2243 1137-2252 1123-2259 1112-2271 1093-2276 1085-2284 1072-2295 1054-2298 1049-2308 1032-2315 1020-2326 1001-2330 994-2339 978-2344 969-2355 949-2361 938-2368 925-2376 910-2385 893-2395 874-2396 872-2405 853-2413 836-2420 821-2426 808-2431 797-2440 777-2444 768-2451 752-2454 745-2462 726-2467 714-2474 697-2476 692-2483 674-2488 661-2491 653-2498 634-2502 623-2507 609-2513 592-2520 572-2521 569-2527 550-2532 534-2536 521-2539 511-2544 494-2546 487-2551 469-2554 458-2558 443-2563 424-2564 420-2568 403-2571 390-2573 381-2576 367-2580 348-2581 343-2584 327-2586 316-2589 299-2590 293-2593 274-2595 261-2598 241-2599 234-2601 219-2602 211-2604 194-2605 185-2607 166-2608 156-2609 145-2610 133-2611 120-2612 106-2613 91-2614 75-2615 58-2616 40-2617 21-2618 0-2618 -1-2617 -21-2616 -40-2615 -58-2614 -75-2613 -91-2612 -106-2611 -120-2610 -133-2609 -145-2608 -156-2607 -166-2605 -185-2604 -194-2602 -211-2601 -219-2599 -234-2598 -241-2595 -261-2593 -274-2590 -293-2589 -299-2586 -316-2584 -327-2581 -343-2580 -348-2576 -367-2573 -381-2571 -390-2568 -403-2564 -420-2563 -424-2558 -443-2554 -458-2551 -469-2546 -487-2544 -494-2539 -511-2536 -521-2532 -534-2527 -550-2521 -569-2520 -572-2513 -592-2507 -609-2502 -623-2498 -634-2491 -653-2488 -661-2483 -674-2476 -692-2474 -697-2467 -714-2462 -726-2454 -745-2451 -752-2444 -768-2440 -777-2431 -797-2426 -808-2420 -821-2413 -836-2405 -853-2396 -872-2395 -874-2385 -893-2376 -910-2368 -925-2361 -938-2355 -949-2344 -969-2339 -978-2330 -994-2326 -1001-2315 -1020-2308 -1032-2298 -1049-2295 -1054-2284 -1072-2276 -1085-2271 -1093-2259 -1112-2252 -1123-2243 -1137-2232 -1154-2219 -1174-2217 -1177-2204 -1196-2193 -1212-2184 -1225-2177 -1235-2165 -1252-2160 -1259-2147 -1277-2139 -1288-2128 -1303-2114 -1322-2111 -1326-2098 -1343-2088 -1356-2081 -1365-2070 -1379-2055 -1398-2051 -1403-2038 -1419-2029 -1430-2015 -1447-2010 -1453-1994 -1472-1983 -1485-1966 -1505-1960 -1512-1947 -1527-1940 -1535-1925 -1552-1917 -1561-1900 -1580-1891 -1590-1881 -1601-1870 -1613-1858 -1626-1845 -1640-1831 -1655-1816 -1671-1800 -1688-1783 -1706-1765 -1725-1746 -1745-1745 -1746-1725 -1765-1706 -1783-1688 -1800-1671 -1816-1655 -1831-1640 -1845-1626 -1858-1613 -1870-1601 -1881-1590 -1891-1580 -1900-1561 -1917-1552 -1925-1535 -1940-1527 -1947-1512 -1960-1505 -1966-1485 -1983-1472 -1994-1453 -2010-1447 -2015-1430 -2029-1419 -2038-1403 -2051-1398 -2055-1379 -2070-1365 -2081-1356 -2088-1343 -2098-1326 -2111-1322 -2114-1303 -2128-1288 -2139-1277 -2147-1259 -2160-1252 -2165-1235 -2177-1225 -2184-1212 -2193-1196 -2204-1177 -2217-1174 -2219-1154 -2232-1137 -2243-1123 -2252-1112 -2259-1093 -2271-1085 -2276-1072 -2284-1054 -2295-1049 -2298-1032 -2308-1020 -2315-1001 -2326-994 -2330-978 -2339-969 -2344-949 -2355-938 -2361-925 -2368-910 -2376-893 -2385-874 -2395-872 -2396-853 -2405-836 -2413-821 -2420-808 -2426-797 -2431-777 -2440-768 -2444-752 -2451-745 -2454-726 -2462-714 -2467-697 -2474-692 -2476-674 -2483-661 -2488-653 -2491-634 -2498-623 -2502-609 -2507-592 -2513-572 -2520-569 -2521-550 -2527-534 -2532-521 -2536-511 -2539-494 -2544-487 -2546-469 -2551-458 -2554-443 -2558-424 -2563-420 -2564-403 -2568-390 -2571-381 -2573-367 -2576-348 -2580-343 -2581-327 -2584-316 -2586-299 -2589-293 -2590-274 -2593-261 -2595-241 -2598-234 -2599-219 -2601-211 -2602-194 -2604-185 -2605-166 -2607-156 -2608-145 -2609-133 -2610-120 -2611-106 -2612-91 -2613-75 -2614-58 -2615-40 -2616-21 -2617-1 -2618-0 -2618--1 -2618--21 -2617--40 -2616--58 -2615--75 -2614--91 -2613--106 -2612--120 -2611--133 -2610--145 -2609--156 -2608--166 -2607--185 -2605--194 -2604--211 -2602--219 -2601--234 -2599--241 -2598--261 -2595--274 -2593--293 -2590--299 -2589--316 -2586--327 -2584--343 -2581--348 -2580--367 -2576--381 -2573--390 -2571--403 -2568--420 -2564--424 -2563--443 -2558--458 -2554--469 -2551--487 -2546--494 -2544--511 -2539--521 -2536--534 -2532--550 -2527--569 -2521--572 -2520--592 -2513--609 -2507--623 -2502--634 -2498--653 -2491--661 -2488--674 -2483--692 -2476--697 -2474--714 -2467--726 -2462--745 -2454--752 -2451--768 -2444--777 -2440--797 -2431--808 -2426--821 -2420--836 -2413--853 -2405--872 -2396--874 -2395--893 -2385--910 -2376--925 -2368--938 -2361--949 -2355--969 -2344--978 -2339--994 -2330--1001 -2326--1020 -2315--1032 -2308--1049 -2298--1054 -2295--1072 -2284--1085 -2276--1093 -2271--1112 -2259--1123 -2252--1137 -2243--1154 -2232--1174 -2219--1177 -2217--1196 -2204--1212 -2193--1225 -2184--1235 -2177--1252 -2165--1259 -2160--1277 -2147--1288 -2139--1303 -2128--1322 -2114--1326 -2111--1343 -2098--1356 -2088--1365 -2081--1379 -2070--1398 -2055--1403 -2051--1419 -2038--1430 -2029--1447 -2015--1453 -2010--1472 -1994--1485 -1983--1505 -1966--1512 -1960--1527 -1947--1535 -1940--1552 -1925--1561 -1917--1580 -1900--1590 -1891--1601 -1881--1613 -1870--1626 -1858--1640 -1845--1655 -1831--1671 -1816--1688 -1800--1706 -1783--1725 -1765--1745 -1746--1746 -1745--1765 -1725--1783 -1706--1800 -1688--1816 -1671--1831 -1655--1845 -1640--1858 -1626--1870 -1613--1881 -1601--1891 -1590--1900 -1580--1917 -1561--1925 -1552--1940 -1535--1947 -1527--1960 -1512--1966 -1505--1983 -1485--1994 -1472--2010 -1453--2015 -1447--2029 -1430--2038 -1419--2051 -1403--2055 -1398--2070 -1379--2081 -1365--2088 -1356--2098 -1343--2111 -1326--2114 -1322--2128 -1303--2139 -1288--2147 -1277--2160 -1259--2165 -1252--2177 -1235--2184 -1225--2193 -1212--2204 -1196--2217 -1177--2219 -1174--2232 -1154--2243 -1137--2252 -1123--2259 -1112--2271 -1093--2276 -1085--2284 -1072--2295 -1054--2298 -1049--2308 -1032--2315 -1020--2326 -1001--2330 -994--2339 -978--2344 -969--2355 -949--2361 -938--2368 -925--2376 -910--2385 -893--2395 -874--2396 -872--2405 -853--2413 -836--2420 -821--2426 -808--2431 -797--2440 -777--2444 -768--2451 -752--2454 -745--2462 -726--2467 -714--2474 -697--2476 -692--2483 -674--2488 -661--2491 -653--2498 -634--2502 -623--2507 -609--2513 -592--2520 -572--2521 -569--2527 -550--2532 -534--2536 -521--2539 -511--2544 -494--2546 -487--2551 -469--2554 -458--2558 -443--2563 -424--2564 -420--2568 -403--2571 -390--2573 -381--2576 -367-0 0-1 0-1-0 1-0 0-1 1-1-2 2-0 0-2 2-1-1 1-1 1-0 0-1-2 2-1 1-2 2-1-0 0-2 2-0 0-1-1 1-2 2-1 1-1-0 0-0 0-0 1-2-0 -1-0 2-0 0-0 1-2-0 2-0 -1-0 1-0 0-2-0 -1-0 2-0 1-0 0-2-0 2-0 -1-0 0-0 2-2-0 -1-0 3-0 1--1 -1-4-0 0-0 2-2 0-2 2-0 1-1 1-4-0 0-0 2-2 0-2 2--1 -1-0 1-4-0 0-0 2-2 0-2 2-1 1-0 1-4-0 0-0 2-2 0-2 2-0 0-0 1-2-1 2--1 2-0 0-0 1-4--5 -5--5 5-5 -5-5 5-0 0-0 10-4--5 -5--5 5-5 -5-5 5-0 10-0 0-4--5 -5--5 5-5 -5-5 5--10000 -10000-10000 10000-1-10000 -10000--10000 -10000-10000 10000-2-10000 -10000--10000 10000-0 0-1001 1001-1000-1 1-2 2-3 3-4 4-5 5-6 6-7 7-8 8-9 9-10 10-11 11-12 12-13 13-14 14-15 15-16 16-17 17-18 18-19 19-20 20-21 21-22 22-23 23-24 24-25 25-26 26-27 27-28 28-29 29-30 30-31 31-32 32-33 33-34 34-35 35-36 36-37 37-38 38-39 39-40 40-41 41-42 42-43 43-44 44-45 45-46 46-47 47-48 48-49 49-50 50-51 51-52 52-53 53-54 54-55 55-56 56-57 57-58 58-59 59-60 60-61 61-62 62-63 63-64 64-65 65-66 66-67 67-68 68-69 69-70 70-71 71-72 72-73 73-74 74-75 75-76 76-77 77-78 78-79 79-80 80-81 81-82 82-83 83-84 84-85 85-86 86-87 87-88 88-89 89-90 90-91 91-92 92-93 93-94 94-95 95-96 96-97 97-98 98-99 99-100 100-101 101-102 102-103 103-104 104-105 105-106 106-107 107-108 108-109 109-110 110-111 111-112 112-113 113-114 114-115 115-116 116-117 117-118 118-119 119-120 120-121 121-122 122-123 123-124 124-125 125-126 126-127 127-128 128-129 129-130 130-131 131-132 132-133 133-134 134-135 135-136 136-137 137-138 138-139 139-140 140-141 141-142 142-143 143-144 144-145 145-146 146-147 147-148 148-149 149-150 150-151 151-152 152-153 153-154 154-155 155-156 156-157 157-158 158-159 159-160 160-161 161-162 162-163 163-164 164-165 165-166 166-167 167-168 168-169 169-170 170-171 171-172 172-173 173-174 174-175 175-176 176-177 177-178 178-179 179-180 180-181 181-182 182-183 183-184 184-185 185-186 186-187 187-188 188-189 189-190 190-191 191-192 192-193 193-194 194-195 195-196 196-197 197-198 198-199 199-200 200-201 201-202 202-203 203-204 204-205 205-206 206-207 207-208 208-209 209-210 210-211 211-212 212-213 213-214 214-215 215-216 216-217 217-218 218-219 219-220 220-221 221-222 222-223 223-224 224-225 225-226 226-227 227-228 228-229 229-230 230-231 231-232 232-233 233-234 234-235 235-236 236-237 237-238 238-239 239-240 240-241 241-242 242-243 243-244 244-245 245-246 246-247 247-248 248-249 249-250 250-251 251-252 252-253 253-254 254-255 255-256 256-257 257-258 258-259 259-260 260-261 261-262 262-263 263-264 264-265 265-266 266-267 267-268 268-269 269-270 270-271 271-272 272-273 273-274 274-275 275-276 276-277 277-278 278-279 279-280 280-281 281-282 282-283 283-284 284-285 285-286 286-287 287-288 288-289 289-290 290-291 291-292 292-293 293-294 294-295 295-296 296-297 297-298 298-299 299-300 300-301 301-302 302-303 303-304 304-305 305-306 306-307 307-308 308-309 309-310 310-311 311-312 312-313 313-314 314-315 315-316 316-317 317-318 318-319 319-320 320-321 321-322 322-323 323-324 324-325 325-326 326-327 327-328 328-329 329-330 330-331 331-332 332-333 333-334 334-335 335-336 336-337 337-338 338-339 339-340 340-341 341-342 342-343 343-344 344-345 345-346 346-347 347-348 348-349 349-350 350-351 351-352 352-353 353-354 354-355 355-356 356-357 357-358 358-359 359-360 360-361 361-362 362-363 363-364 364-365 365-366 366-367 367-368 368-369 369-370 370-371 371-372 372-373 373-374 374-375 375-376 376-377 377-378 378-379 379-380 380-381 381-382 382-383 383-384 384-385 385-386 386-387 387-388 388-389 389-390 390-391 391-392 392-393 393-394 394-395 395-396 396-397 397-398 398-399 399-400 400-401 401-402 402-403 403-404 404-405 405-406 406-407 407-408 408-409 409-410 410-411 411-412 412-413 413-414 414-415 415-416 416-417 417-418 418-419 419-420 420-421 421-422 422-423 423-424 424-425 425-426 426-427 427-428 428-429 429-430 430-431 431-432 432-433 433-434 434-435 435-436 436-437 437-438 438-439 439-440 440-441 441-442 442-443 443-444 444-445 445-446 446-447 447-448 448-449 449-450 450-451 451-452 452-453 453-454 454-455 455-456 456-457 457-458 458-459 459-460 460-461 461-462 462-463 463-464 464-465 465-466 466-467 467-468 468-469 469-470 470-471 471-472 472-473 473-474 474-475 475-476 476-477 477-478 478-479 479-480 480-481 481-482 482-483 483-484 484-485 485-486 486-487 487-488 488-489 489-490 490-491 491-492 492-493 493-494 494-495 495-496 496-497 497-498 498-499 499-500 500-501 501-502 502-503 503-504 504-505 505-506 506-507 507-508 508-509 509-510 510-511 511-512 512-513 513-514 514-515 515-516 516-517 517-518 518-519 519-520 520-521 521-522 522-523 523-524 524-525 525-526 526-527 527-528 528-529 529-530 530-531 531-532 532-533 533-534 534-535 535-536 536-537 537-538 538-539 539-540 540-541 541-542 542-543 543-544 544-545 545-546 546-547 547-548 548-549 549-550 550-551 551-552 552-553 553-554 554-555 555-556 556-557 557-558 558-559 559-560 560-561 561-562 562-563 563-564 564-565 565-566 566-567 567-568 568-569 569-570 570-571 571-572 572-573 573-574 574-575 575-576 576-577 577-578 578-579 579-580 580-581 581-582 582-583 583-584 584-585 585-586 586-587 587-588 588-589 589-590 590-591 591-592 592-593 593-594 594-595 595-596 596-597 597-598 598-599 599-600 600-601 601-602 602-603 603-604 604-605 605-606 606-607 607-608 608-609 609-610 610-611 611-612 612-613 613-614 614-615 615-616 616-617 617-618 618-619 619-620 620-621 621-622 622-623 623-624 624-625 625-626 626-627 627-628 628-629 629-630 630-631 631-632 632-633 633-634 634-635 635-636 636-637 637-638 638-639 639-640 640-641 641-642 642-643 643-644 644-645 645-646 646-647 647-648 648-649 649-650 650-651 651-652 652-653 653-654 654-655 655-656 656-657 657-658 658-659 659-660 660-661 661-662 662-663 663-664 664-665 665-666 666-667 667-668 668-669 669-670 670-671 671-672 672-673 673-674 674-675 675-676 676-677 677-678 678-679 679-680 680-681 681-682 682-683 683-684 684-685 685-686 686-687 687-688 688-689 689-690 690-691 691-692 692-693 693-694 694-695 695-696 696-697 697-698 698-699 699-700 700-701 701-702 702-703 703-704 704-705 705-706 706-707 707-708 708-709 709-710 710-711 711-712 712-713 713-714 714-715 715-716 716-717 717-718 718-719 719-720 720-721 721-722 722-723 723-724 724-725 725-726 726-727 727-728 728-729 729-730 730-731 731-732 732-733 733-734 734-735 735-736 736-737 737-738 738-739 739-740 740-741 741-742 742-743 743-744 744-745 745-746 746-747 747-748 748-749 749-750 750-751 751-752 752-753 753-754 754-755 755-756 756-757 757-758 758-759 759-760 760-761 761-762 762-763 763-764 764-765 765-766 766-767 767-768 768-769 769-770 770-771 771-772 772-773 773-774 774-775 775-776 776-777 777-778 778-779 779-780 780-781 781-782 782-783 783-784 784-785 785-786 786-787 787-788 788-789 789-790 790-791 791-792 792-793 793-794 794-795 795-796 796-797 797-798 798-799 799-800 800-801 801-802 802-803 803-804 804-805 805-806 806-807 807-808 808-809 809-810 810-811 811-812 812-813 813-814 814-815 815-816 816-817 817-818 818-819 819-820 820-821 821-822 822-823 823-824 824-825 825-826 826-827 827-828 828-829 829-830 830-831 831-832 832-833 833-834 834-835 835-836 836-837 837-838 838-839 839-840 840-841 841-842 842-843 843-844 844-845 845-846 846-847 847-848 848-849 849-850 850-851 851-852 852-853 853-854 854-855 855-856 856-857 857-858 858-859 859-860 860-861 861-862 862-863 863-864 864-865 865-866 866-867 867-868 868-869 869-870 870-871 871-872 872-873 873-874 874-875 875-876 876-877 877-878 878-879 879-880 880-881 881-882 882-883 883-884 884-885 885-886 886-887 887-888 888-889 889-890 890-891 891-892 892-893 893-894 894-895 895-896 896-897 897-898 898-899 899-900 900-901 901-902 902-903 903-904 904-905 905-906 906-907 907-908 908-909 909-910 910-911 911-912 912-913 913-914 914-915 915-916 916-917 917-918 918-919 919-920 920-921 921-922 922-923 923-924 924-925 925-926 926-927 927-928 928-929 929-930 930-931 931-932 932-933 933-934 934-935 935-936 936-937 937-938 938-939 939-940 940-941 941-942 942-943 943-944 944-945 945-946 946-947 947-948 948-949 949-950 950-951 951-952 952-953 953-954 954-955 955-956 956-957 957-958 958-959 959-960 960-961 961-962 962-963 963-964 964-965 965-966 966-967 967-968 968-969 969-970 970-971 971-972 972-973 973-974 974-975 975-976 976-977 977-978 978-979 979-980 980-981 981-982 982-983 983-984 984-985 985-986 986-987 987-988 988-989 989-990 990-991 991-992 992-993 993-994 994-995 995-996 996-997 997-998 998-999 999-1000 1000-0 0-1001 1001-1000-350 350-309 309-662 662-505 505-637 637-760 760-389 389-971 971-197 197-214 214-939 939-952 952-275 275-941 941-897 897-121 121-846 846-673 673-139 139-990 990-2 2-154 154-584 584-4 4-547 547-575 575-326 326-749 749-628 628-862 862-734 734-617 617-909 909-287 287-263 263-842 842-594 594-630 630-104 104-242 242-250 250-666 666-277 277-970 970-307 307-116 116-866 866-471 471-535 535-721 721-387 387-179 179-388 388-134 134-947 947-881 881-196 196-109 109-719 719-508 508-301 301-285 285-536 536-553 553-207 207-15 15-794 794-950 950-872 872-96 96-454 454-161 161-288 288-602 602-631 631-532 532-184 184-974 974-75 75-724 724-989 989-556 556-227 227-474 474-45 45-338 338-208 208-291 291-244 244-627 627-431 431-501 501-72 72-273 273-667 667-115 115-853 853-761 761-187 187-523 523-215 215-783 783-625 625-436 436-458 458-585 585-942 942-943 943-73 73-237 237-492 492-428 428-406 406-210 210-620 620-8 8-49 49-803 803-766 766-888 888-840 840-769 769-608 608-707 707-349 349-684 684-157 157-887 887-280 280-823 823-223 223-413 413-578 578-710 710-398 398-804 804-573 573-409 409-725 725-41 41-763 763-516 516-639 639-239 239-297 297-186 186-616 616-796 796-512 512-289 289-955 955-55 55-442 442-229 229-693 693-456 456-589 589-120 120-895 895-54 54-820 820-443 443-282 282-231 231-520 520-632 632-180 180-771 771-850 850-181 181-687 687-363 363-946 946-978 978-368 368-940 940-150 150-775 775-768 768-62 62-178 178-348 348-533 533-81 81-299 299-995 995-565 565-405 405-319 319-50 50-906 906-416 416-365 365-21 21-925 925-936 936-6 6-944 944-689 689-987 987-323 323-764 764-638 638-66 66-755 755-513 513-599 599-149 149-481 481-903 903-635 635-901 901-966 966-58 58-142 142-370 370-889 889-801 801-429 429-3 3-77 77-496 496-791 791-552 552-483 483-833 833-665 665-53 53-182 182-343 343-548 548-459 459-976 976-414 414-656 656-91 91-914 914-321 321-437 437-19 19-63 63-591 591-68 68-346 346-369 369-498 498-354 354-920 920-359 359-880 880-110 110-544 544-89 89-34 34-64 64-900 900-902 902-256 256-366 366-448 448-814 814-968 968-11 11-284 284-99 99-408 408-997 997-825 825-495 495-42 42-929 929-752 752-912 912-679 679-305 305-329 329-122 122-331 331-742 742-592 592-457 457-711 711-415 415-926 926-148 148-173 173-133 133-545 545-514 514-621 621-248 248-682 682-411 411-770 770-460 460-270 270-882 882-335 335-95 95-5 5-254 254-132 132-894 894-71 71-18 18-191 191-193 193-65 65-696 696-40 40-543 543-292 292-488 488-146 146-855 855-399 399-956 956-476 476-659 659-657 657-439 439-747 747-767 767-377 377-787 787-540 540-124 124-464 464-559 559-51 51-728 728-362 362-800 800-266 266-703 703-308 308-353 353-905 905-118 118-188 188-130 130-490 490-856 856-131 131-423 423-375 375-23 23-622 622-1000 1000-525 525-493 493-158 158-80 80-690 690-119 119-427 427-786 786-777 777-998 998-972 972-784 784-677 677-204 204-836 836-607 607-788 788-953 953-965 965-452 452-759 759-686 686-489 489-14 14-312 312-671 671-524 524-494 494-164 164-983 983-13 13-706 706-795 795-504 504-373 373-743 743-316 316-233 233-961 961-260 260-705 705-597 597-44 44-816 816-934 934-502 502-39 39-400 400-28 28-612 612-883 883-646 646-342 342-295 295-896 896-327 327-230 230-751 751-733 733-674 674-924 924-774 774-590 590-868 868-169 169-582 582-527 527-268 268-451 451-704 704-586 586-807 807-357 357-849 849-509 509-163 163-845 845-797 797-518 518-199 199-155 155-463 463-251 251-172 172-272 272-720 720-165 165-726 726-255 255-76 76-515 515-611 611-385 385-744 744-789 789-159 159-61 61-874 874-70 70-762 762-805 805-198 198-445 445-821 821-534 534-174 174-147 147-580 580-519 519-171 171-340 340-873 873-678 678-554 554-351 351-808 808-852 852-670 670-858 858-113 113-419 419-817 817-517 517-933 933-467 467-740 740-330 330-83 83-449 449-658 658-730 730-234 234-167 167-529 529-648 648-830 830-781 781-144 144-170 170-106 106-831 831-461 461-916 916-176 176-381 381-143 143-570 570-189 189-441 441-480 480-613 613-336 336-810 810-48 48-951 951-551 551-138 138-680 680-875 875-497 497-211 211-317 317-624 624-669 669-623 623-701 701-935 935-286 286-802 802-52 52-141 141-834 834-201 201-29 29-702 702-890 890-236 236-111 111-560 560-374 374-676 676-16 16-938 938-854 854-843 843-754 754-396 396-205 205-303 303-195 195-135 135-7 7-403 403-792 792-948 948-739 739-985 985-949 949-384 384-748 748-879 879-899 899-587 587-967 967-136 136-100 100-22 22-341 341-746 746-664 664-877 877-709 709-361 361-619 619-1 1-371 371-579 579-692 692-511 511-778 778-203 203-249 249-645 645-318 318-313 313-466 466-444 444-750 750-991 991-101 101-418 418-470 470-568 568-394 394-799 799-378 378-36 36-596 596-521 521-932 932-712 712-574 574-683 683-59 59-296 296-723 723-194 194-603 603-156 156-959 959-221 221-185 185-636 636-151 151-644 644-647 647-626 626-973 973-300 300-839 839-224 224-653 653-397 397-24 24-571 571-364 364-963 963-57 57-741 741-31 31-867 867-688 688-697 697-835 835-871 871-274 274-507 507-539 539-487 487-246 246-722 722-609 609-561 561-218 218-190 190-46 46-908 908-438 438-546 546-819 819-753 753-26 26-108 108-90 90-827 827-232 232-918 918-294 294-822 822-564 564-528 528-913 913-306 306-337 337-915 915-245 245-225 225-392 392-860 860-996 996-499 499-426 426-878 878-259 259-9 9-992 992-869 869-960 960-598 598-522 522-102 102-765 765-25 25-355 355-809 809-569 569-432 432-401 401-776 776-482 482-322 322-298 298-716 716-919 919-271 271-344 344-162 162-640 640-832 832-848 848-824 824-595 595-402 402-94 94-643 643-206 206-407 407-937 937-958 958-235 235-123 123-650 650-258 258-175 175-78 78-811 811-583 583-562 562-47 47-125 125-290 290-844 844-694 694-641 641-192 192-904 904-655 655-691 691-217 217-324 324-315 315-12 12-360 360-222 222-240 240-714 714-69 69-410 410-863 863-930 930-581 581-907 907-491 491-921 921-382 382-661 661-541 541-465 465-576 576-715 715-200 200-847 847-17 17-267 267-43 43-88 88-478 478-302 302-537 537-975 975-311 311-390 390-261 261-33 33-479 479-114 114-826 826-735 735-67 67-600 600-736 736-859 859-718 718-334 334-982 982-209 209-969 969-675 675-738 738-395 395-931 931-430 430-994 994-279 279-503 503-577 577-605 605-38 38-152 152-531 531-462 462-446 446-618 618-404 404-468 468-238 238-988 988-729 729-339 339-954 954-922 922-892 892-202 202-558 558-177 177-663 663-685 685-870 870-785 785-964 964-345 345-421 421-213 213-253 253-257 257-660 660-790 790-681 681-917 917-572 572-857 857-927 927-216 216-555 555-886 886-713 713-530 530-999 999-500 500-772 772-841 841-601 601-758 758-87 87-891 891-60 60-550 550-538 538-455 455-376 376-837 837-264 264-898 898-700 700-818 818-737 737-281 281-82 82-563 563-367 367-615 615-779 779-269 269-604 604-86 86-97 97-30 30-588 588-283 283-140 140-893 893-320 320-74 74-984 984-145 145-358 358-328 328-453 453-672 672-928 928-276 276-166 166-92 92-128 128-107 107-633 633-757 757-433 433-219 219-593 593-372 372-727 727-815 815-993 993-20 20-865 865-356 356-347 347-798 798-698 698-813 813-386 386-160 160-98 98-425 425-420 420-352 352-695 695-699 699-884 884-325 325-380 380-731 731-127 127-980 980-642 642-447 447-412 412-829 829-651 651-542 542-851 851-278 278-84 84-228 228-756 756-864 864-606 606-945 945-486 486-37 37-27 27-923 923-526 526-129 129-241 241-911 911-440 440-484 484-247 247-473 473-510 510-304 304-450 450-424 424-475 475-112 112-745 745-629 629-828 828-10 10-265 265-838 838-153 153-105 105-773 773-649 649-652 652-103 103-117 117-977 977-126 126-183 183-861 861-962 962-379 379-79 79-168 168-85 85-979 979-435 435-391 391-717 717-981 981-793 793-35 35-668 668-422 422-383 383-557 557-137 137-806 806-472 472-252 252-243 243-614 614-876 876-32 32-220 220-549 549-332 332-314 314-417 417-812 812-634 634-910 910-56 56-654 654-506 506-262 262-957 957-226 226-986 986-610 610-780 780-477 477-293 293-485 485-434 434-93 93-393 393-333 333-310 310-732 732-782 782-708 708-566 566-212 212-469 469-885 885-567 567-0 0-1001 1001-1000-1000 1000-999 999-998 998-997 997-996 996-995 995-994 994-993 993-992 992-991 991-990 990-989 989-988 988-987 987-986 986-985 985-984 984-983 983-982 982-981 981-980 980-979 979-978 978-977 977-976 976-975 975-974 974-973 973-972 972-971 971-970 970-969 969-968 968-967 967-966 966-965 965-964 964-963 963-962 962-961 961-960 960-959 959-958 958-957 957-956 956-955 955-954 954-953 953-952 952-951 951-950 950-949 949-948 948-947 947-946 946-945 945-944 944-943 943-942 942-941 941-940 940-939 939-938 938-937 937-936 936-935 935-934 934-933 933-932 932-931 931-930 930-929 929-928 928-927 927-926 926-925 925-924 924-923 923-922 922-921 921-920 920-919 919-918 918-917 917-916 916-915 915-914 914-913 913-912 912-911 911-910 910-909 909-908 908-907 907-906 906-905 905-904 904-903 903-902 902-901 901-900 900-899 899-898 898-897 897-896 896-895 895-894 894-893 893-892 892-891 891-890 890-889 889-888 888-887 887-886 886-885 885-884 884-883 883-882 882-881 881-880 880-879 879-878 878-877 877-876 876-875 875-874 874-873 873-872 872-871 871-870 870-869 869-868 868-867 867-866 866-865 865-864 864-863 863-862 862-861 861-860 860-859 859-858 858-857 857-856 856-855 855-854 854-853 853-852 852-851 851-850 850-849 849-848 848-847 847-846 846-845 845-844 844-843 843-842 842-841 841-840 840-839 839-838 838-837 837-836 836-835 835-834 834-833 833-832 832-831 831-830 830-829 829-828 828-827 827-826 826-825 825-824 824-823 823-822 822-821 821-820 820-819 819-818 818-817 817-816 816-815 815-814 814-813 813-812 812-811 811-810 810-809 809-808 808-807 807-806 806-805 805-804 804-803 803-802 802-801 801-800 800-799 799-798 798-797 797-796 796-795 795-794 794-793 793-792 792-791 791-790 790-789 789-788 788-787 787-786 786-785 785-784 784-783 783-782 782-781 781-780 780-779 779-778 778-777 777-776 776-775 775-774 774-773 773-772 772-771 771-770 770-769 769-768 768-767 767-766 766-765 765-764 764-763 763-762 762-761 761-760 760-759 759-758 758-757 757-756 756-755 755-754 754-753 753-752 752-751 751-750 750-749 749-748 748-747 747-746 746-745 745-744 744-743 743-742 742-741 741-740 740-739 739-738 738-737 737-736 736-735 735-734 734-733 733-732 732-731 731-730 730-729 729-728 728-727 727-726 726-725 725-724 724-723 723-722 722-721 721-720 720-719 719-718 718-717 717-716 716-715 715-714 714-713 713-712 712-711 711-710 710-709 709-708 708-707 707-706 706-705 705-704 704-703 703-702 702-701 701-700 700-699 699-698 698-697 697-696 696-695 695-694 694-693 693-692 692-691 691-690 690-689 689-688 688-687 687-686 686-685 685-684 684-683 683-682 682-681 681-680 680-679 679-678 678-677 677-676 676-675 675-674 674-673 673-672 672-671 671-670 670-669 669-668 668-667 667-666 666-665 665-664 664-663 663-662 662-661 661-660 660-659 659-658 658-657 657-656 656-655 655-654 654-653 653-652 652-651 651-650 650-649 649-648 648-647 647-646 646-645 645-644 644-643 643-642 642-641 641-640 640-639 639-638 638-637 637-636 636-635 635-634 634-633 633-632 632-631 631-630 630-629 629-628 628-627 627-626 626-625 625-624 624-623 623-622 622-621 621-620 620-619 619-618 618-617 617-616 616-615 615-614 614-613 613-612 612-611 611-610 610-609 609-608 608-607 607-606 606-605 605-604 604-603 603-602 602-601 601-600 600-599 599-598 598-597 597-596 596-595 595-594 594-593 593-592 592-591 591-590 590-589 589-588 588-587 587-586 586-585 585-584 584-583 583-582 582-581 581-580 580-579 579-578 578-577 577-576 576-575 575-574 574-573 573-572 572-571 571-570 570-569 569-568 568-567 567-566 566-565 565-564 564-563 563-562 562-561 561-560 560-559 559-558 558-557 557-556 556-555 555-554 554-553 553-552 552-551 551-550 550-549 549-548 548-547 547-546 546-545 545-544 544-543 543-542 542-541 541-540 540-539 539-538 538-537 537-536 536-535 535-534 534-533 533-532 532-531 531-530 530-529 529-528 528-527 527-526 526-525 525-524 524-523 523-522 522-521 521-520 520-519 519-518 518-517 517-516 516-515 515-514 514-513 513-512 512-511 511-510 510-509 509-508 508-507 507-506 506-505 505-504 504-503 503-502 502-501 501-500 500-499 499-498 498-497 497-496 496-495 495-494 494-493 493-492 492-491 491-490 490-489 489-488 488-487 487-486 486-485 485-484 484-483 483-482 482-481 481-480 480-479 479-478 478-477 477-476 476-475 475-474 474-473 473-472 472-471 471-470 470-469 469-468 468-467 467-466 466-465 465-464 464-463 463-462 462-461 461-460 460-459 459-458 458-457 457-456 456-455 455-454 454-453 453-452 452-451 451-450 450-449 449-448 448-447 447-446 446-445 445-444 444-443 443-442 442-441 441-440 440-439 439-438 438-437 437-436 436-435 435-434 434-433 433-432 432-431 431-430 430-429 429-428 428-427 427-426 426-425 425-424 424-423 423-422 422-421 421-420 420-419 419-418 418-417 417-416 416-415 415-414 414-413 413-412 412-411 411-410 410-409 409-408 408-407 407-406 406-405 405-404 404-403 403-402 402-401 401-400 400-399 399-398 398-397 397-396 396-395 395-394 394-393 393-392 392-391 391-390 390-389 389-388 388-387 387-386 386-385 385-384 384-383 383-382 382-381 381-380 380-379 379-378 378-377 377-376 376-375 375-374 374-373 373-372 372-371 371-370 370-369 369-368 368-367 367-366 366-365 365-364 364-363 363-362 362-361 361-360 360-359 359-358 358-357 357-356 356-355 355-354 354-353 353-352 352-351 351-350 350-349 349-348 348-347 347-346 346-345 345-344 344-343 343-342 342-341 341-340 340-339 339-338 338-337 337-336 336-335 335-334 334-333 333-332 332-331 331-330 330-329 329-328 328-327 327-326 326-325 325-324 324-323 323-322 322-321 321-320 320-319 319-318 318-317 317-316 316-315 315-314 314-313 313-312 312-311 311-310 310-309 309-308 308-307 307-306 306-305 305-304 304-303 303-302 302-301 301-300 300-299 299-298 298-297 297-296 296-295 295-294 294-293 293-292 292-291 291-290 290-289 289-288 288-287 287-286 286-285 285-284 284-283 283-282 282-281 281-280 280-279 279-278 278-277 277-276 276-275 275-274 274-273 273-272 272-271 271-270 270-269 269-268 268-267 267-266 266-265 265-264 264-263 263-262 262-261 261-260 260-259 259-258 258-257 257-256 256-255 255-254 254-253 253-252 252-251 251-250 250-249 249-248 248-247 247-246 246-245 245-244 244-243 243-242 242-241 241-240 240-239 239-238 238-237 237-236 236-235 235-234 234-233 233-232 232-231 231-230 230-229 229-228 228-227 227-226 226-225 225-224 224-223 223-222 222-221 221-220 220-219 219-218 218-217 217-216 216-215 215-214 214-213 213-212 212-211 211-210 210-209 209-208 208-207 207-206 206-205 205-204 204-203 203-202 202-201 201-200 200-199 199-198 198-197 197-196 196-195 195-194 194-193 193-192 192-191 191-190 190-189 189-188 188-187 187-186 186-185 185-184 184-183 183-182 182-181 181-180 180-179 179-178 178-177 177-176 176-175 175-174 174-173 173-172 172-171 171-170 170-169 169-168 168-167 167-166 166-165 165-164 164-163 163-162 162-161 161-160 160-159 159-158 158-157 157-156 156-155 155-154 154-153 153-152 152-151 151-150 150-149 149-148 148-147 147-146 146-145 145-144 144-143 143-142 142-141 141-140 140-139 139-138 138-137 137-136 136-135 135-134 134-133 133-132 132-131 131-130 130-129 129-128 128-127 127-126 126-125 125-124 124-123 123-122 122-121 121-120 120-119 119-118 118-117 117-116 116-115 115-114 114-113 113-112 112-111 111-110 110-109 109-108 108-107 107-106 106-105 105-104 104-103 103-102 102-101 101-100 100-99 99-98 98-97 97-96 96-95 95-94 94-93 93-92 92-91 91-90 90-89 89-88 88-87 87-86 86-85 85-84 84-83 83-82 82-81 81-80 80-79 79-78 78-77 77-76 76-75 75-74 74-73 73-72 72-71 71-70 70-69 69-68 68-67 67-66 66-65 65-64 64-63 63-62 62-61 61-60 60-59 59-58 58-57 57-56 56-55 55-54 54-53 53-52 52-51 51-50 50-49 49-48 48-47 47-46 46-45 45-44 44-43 43-42 42-41 41-40 40-39 39-38 38-37 37-36 36-35 35-34 34-33 33-32 32-31 31-30 30-29 29-28 28-27 27-26 26-25 25-24 24-23 23-22 22-21 21-20 20-19 19-18 18-17 17-16 16-15 15-14 14-13 13-12 12-11 11-10 10-9 9-8 8-7 7-6 6-5 5-4 4-3 3-2 2-1 1--10000 0-10000 0-560--9999 1--9999 -1-9999 1-9999 -1--9997 2--9997 -2-9997 2-9997 -2--9994 3--9994 -3-9994 3-9994 -3--9990 4--9990 -4-9990 4-9990 -4--9985 5--9985 -5-9985 5-9985 -5--9979 6--9979 -6-9979 6-9979 -6--9972 7--9972 -7-9972 7-9972 -7--9964 8--9964 -8-9964 8-9964 -8--9955 9--9955 -9-9955 9-9955 -9--9945 10--9945 -10-9945 10-9945 -10--9934 11--9934 -11-9934 11-9934 -11--9922 12--9922 -12-9922 12-9922 -12--9909 13--9909 -13-9909 13-9909 -13--9895 14--9895 -14-9895 14-9895 -14--9880 15--9880 -15-9880 15-9880 -15--9864 16--9864 -16-9864 16-9864 -16--9847 17--9847 -17-9847 17-9847 -17--9829 18--9829 -18-9829 18-9829 -18--9810 19--9810 -19-9810 19-9810 -19--9790 20--9790 -20-9790 20-9790 -20--9769 21--9769 -21-9769 21-9769 -21--9747 22--9747 -22-9747 22-9747 -22--9724 23--9724 -23-9724 23-9724 -23--9700 24--9700 -24-9700 24-9700 -24--9675 25--9675 -25-9675 25-9675 -25--9649 26--9649 -26-9649 26-9649 -26--9622 27--9622 -27-9622 27-9622 -27--9594 28--9594 -28-9594 28-9594 -28--9565 29--9565 -29-9565 29-9565 -29--9535 30--9535 -30-9535 30-9535 -30--9504 31--9504 -31-9504 31-9504 -31--9472 32--9472 -32-9472 32-9472 -32--9439 33--9439 -33-9439 33-9439 -33--9405 34--9405 -34-9405 34-9405 -34--9370 35--9370 -35-9370 35-9370 -35--9334 36--9334 -36-9334 36-9334 -36--9297 37--9297 -37-9297 37-9297 -37--9259 38--9259 -38-9259 38-9259 -38--9220 39--9220 -39-9220 39-9220 -39--9180 40--9180 -40-9180 40-9180 -40--9139 41--9139 -41-9139 41-9139 -41--9097 42--9097 -42-9097 42-9097 -42--9054 43--9054 -43-9054 43-9054 -43--9010 44--9010 -44-9010 44-9010 -44--8965 45--8965 -45-8965 45-8965 -45--8919 46--8919 -46-8919 46-8919 -46--8872 47--8872 -47-8872 47-8872 -47--8824 48--8824 -48-8824 48-8824 -48--8775 49--8775 -49-8775 49-8775 -49--8725 50--8725 -50-8725 50-8725 -50--8674 51--8674 -51-8674 51-8674 -51--8622 52--8622 -52-8622 52-8622 -52--8569 53--8569 -53-8569 53-8569 -53--8515 54--8515 -54-8515 54-8515 -54--8460 55--8460 -55-8460 55-8460 -55--8404 56--8404 -56-8404 56-8404 -56--8347 57--8347 -57-8347 57-8347 -57--8289 58--8289 -58-8289 58-8289 -58--8230 59--8230 -59-8230 59-8230 -59--8170 60--8170 -60-8170 60-8170 -60--8109 61--8109 -61-8109 61-8109 -61--8047 62--8047 -62-8047 62-8047 -62--7984 63--7984 -63-7984 63-7984 -63--7920 64--7920 -64-7920 64-7920 -64--7855 65--7855 -65-7855 65-7855 -65--7789 66--7789 -66-7789 66-7789 -66--7722 67--7722 -67-7722 67-7722 -67--7654 68--7654 -68-7654 68-7654 -68--7585 69--7585 -69-7585 69-7585 -69--7515 70--7515 -70-7515 70-7515 -70--7444 71--7444 -71-7444 71-7444 -71--7372 72--7372 -72-7372 72-7372 -72--7299 73--7299 -73-7299 73-7299 -73--7225 74--7225 -74-7225 74-7225 -74--7150 75--7150 -75-7150 75-7150 -75--7074 76--7074 -76-7074 76-7074 -76--6997 77--6997 -77-6997 77-6997 -77--6919 78--6919 -78-6919 78-6919 -78--6840 79--6840 -79-6840 79-6840 -79--6760 80--6760 -80-6760 80-6760 -80--6679 81--6679 -81-6679 81-6679 -81--6597 82--6597 -82-6597 82-6597 -82--6514 83--6514 -83-6514 83-6514 -83--6430 84--6430 -84-6430 84-6430 -84--6345 85--6345 -85-6345 85-6345 -85--6259 86--6259 -86-6259 86-6259 -86--6172 87--6172 -87-6172 87-6172 -87--6084 88--6084 -88-6084 88-6084 -88--5995 89--5995 -89-5995 89-5995 -89--5905 90--5905 -90-5905 90-5905 -90--5814 91--5814 -91-5814 91-5814 -91--5722 92--5722 -92-5722 92-5722 -92--5629 93--5629 -93-5629 93-5629 -93--5535 94--5535 -94-5535 94-5535 -94--5440 95--5440 -95-5440 95-5440 -95--5344 96--5344 -96-5344 96-5344 -96--5247 97--5247 -97-5247 97-5247 -97--5149 98--5149 -98-5149 98-5149 -98--5050 99--5050 -99-5050 99-5050 -99--4950 100--4950 -100-4950 100-4950 -100--4849 101--4849 -101-4849 101-4849 -101--4747 102--4747 -102-4747 102-4747 -102--4644 103--4644 -103-4644 103-4644 -103--4540 104--4540 -104-4540 104-4540 -104--4435 105--4435 -105-4435 105-4435 -105--4329 106--4329 -106-4329 106-4329 -106--4222 107--4222 -107-4222 107-4222 -107--4114 108--4114 -108-4114 108-4114 -108--4005 109--4005 -109-4005 109-4005 -109--3895 110--3895 -110-3895 110-3895 -110--3784 111--3784 -111-3784 111-3784 -111--3672 112--3672 -112-3672 112-3672 -112--3559 113--3559 -113-3559 113-3559 -113--3445 114--3445 -114-3445 114-3445 -114--3330 115--3330 -115-3330 115-3330 -115--3214 116--3214 -116-3214 116-3214 -116--3097 117--3097 -117-3097 117-3097 -117--2979 118--2979 -118-2979 118-2979 -118--2860 119--2860 -119-2860 119-2860 -119--2740 120--2740 -120-2740 120-2740 -120--2619 121--2619 -121-2619 121-2619 -121--2497 122--2497 -122-2497 122-2497 -122--2374 123--2374 -123-2374 123-2374 -123--2250 124--2250 -124-2250 124-2250 -124--2125 125--2125 -125-2125 125-2125 -125--1999 126--1999 -126-1999 126-1999 -126--1872 127--1872 -127-1872 127-1872 -127--1744 128--1744 -128-1744 128-1744 -128--1615 129--1615 -129-1615 129-1615 -129--1485 130--1485 -130-1485 130-1485 -130--1354 131--1354 -131-1354 131-1354 -131--1222 132--1222 -132-1222 132-1222 -132--1089 133--1089 -133-1089 133-1089 -133--955 134--955 -134-955 134-955 -134--820 135--820 -135-820 135-820 -135--684 136--684 -136-684 136-684 -136--547 137--547 -137-547 137-547 -137--409 138--409 -138-409 138-409 -138--270 139--270 -139-270 139-270 -139--130 140--130 -140-130 140-130 -140--8555 4746--5150 8178-1000-6749 3296--8923 1329--1040 3550-1504 -6685--6185 -984--779 -513--9158 -3891-4716 -6171-2417 2347-5106 -5883--4054 6288--1511 2780--704 -7578--7602 4542-3422 -7798-7731 5063--3607 991--7769 -4707--6836 5507-1998 8603--7017 -1932--338 6113--1569 -3495--30 7911-5207 -8074--9503 -1254--3222 -2691-6406 2056-3887 3184--2894 5624-3431 -6847--1081 3844-3059 3482--8340 -5093--5828 2379-1063 -3725--2128 8161--2620 1706--6387 7364--4049 1220--1599 -6517-5422 -2661--6141 1692--1913 -3561--1861 -7973--7437 -5230--2074 -782--2366 -8549-4241 -5559-7073 861--4693 -2419-3200 592--5185 192--4518 -1178-3812 -1192-8358 4866-6982 4010--1596 861--8540 2533-2552 543-3647 -8257--6385 1713-6747 -4181--791 -3707-8324 5472-3213 8301-8306 -3575--1450 2668-2192 8938-4756 2309--8013 -4819-1502 2799-1352 -4204--1875 8485-7348 3606-2426 -2725--2302 7885-7740 -4176-6746 748-7529 212-344 5521--2909 -7365--8816 3460--8318 -2890-6187 -3575-1225 -2815-2757 6856-1084 9099--1083 -6803-2179 -3823--4082 -6264--4618 8460-2018 5576--7775 -3443--8811 3709--2545 524-3341 7816-4066 7406-6438 -5064--4710 -2485--7580 4742--7986 4547-7654 4379--5718 5536-933 -8087-162 -9946--4225 4359--2351 -3391--7728 -5434--7856 -4290-1758 -7110--1121 -1226--4889 215--7064 1506--1672 -7237--8852 -1878-3544 -8077--5535 -3027-1416 -1490-5113 -2506-534 -4669-4676 -124-1674 -2484-2276 -4212--5337 -5796--3624 1614--1474 -2477-7502 1478--3822 2653-6954 -1556--2704 7679-6257 -7335--8909 1651--4280 -4833-612 1448-2821 -5686-4674 5535-5446 -4283-5104 -2798-1865 -2243--2929 1317--2492 400-801 -5782--5461 3693-3717 7523-5524 -1355-7152 5337-3220 3428-3986 1483-2236 1008-519 8998-1875 -8451-109 4077--7395 5433-419 5976-7081 2615-2872 7212-4769 -3751-4351 3968-8543 -793-1032 4967--3846 -3257-284 -9970--7781 -222-7293 5770--4864 -4664--873 -8443--1615 -9653--5169 2859--6888 -83--6195 -6517--7876 1899-5170 -3242-4691 -6508--2668 -9617--7111 -4053-6770 -7308-3107 5626-345 6245--6300 7314--4308 -8773-3000 5099-2912 -2196--2472 959--537 -7344--371 6594--1739 -6457-1306 -38-4830 -4083-4194 -8444--3772 1593-3496 -9043--6240 -2045-5281 936-7074 94-949 3404-2237 742--4740 2703-7527 -901-2465 2397--3386 -1058--5831 5710-814 -8380-561 -554--2496 -9421--5275 5276-2255 4955-636 -4755-4673 -558-4215 4087--8658 -3824--2661 -6924--1118 -879-1974 -7544--6702 561-988 -3472-7818 -816--6591 -5245--5775 1765-2885 3431--7289 -6636--1287 -6684--7201 -6467--3814 -2828--2815 -5058-1972 7640--3576 5488--5131 4208-7975 -39--5518 4422--5894 6785--2180 6308-8951 -1088-3390 -9077--8822 -752--2584 9223-3050 -7608-2463 7117--570 2068-2401 -8893-4783 2237--5975 -4067-1238 -6073-6305 -6591--6804 -6934--2297 2287-8351 2272--4125 -2708-6109 -6280--4265 1855--350 -7661--3404 4812-2507 2929-1973 -4858-6130 -7310-2940 5134--9331 130--3608 3101-1164 -8956-3704 -4760--5190 8070--4569 -5714-3524 4737--1820 6416-6790 4964-3672 6724--6414 -7670-5724 -6433--8474 3281--7436 1632-6455 -348--5413 2017--966 -7581--2070 -4324--487 7433-7615 -4943--7302 -3960--7851 4281-7394 4244--1127 5927--5577 -4245-1922 635-2425 -4153--422 -5956-8389 -3707-1932 -9189-7136 -686-1748 3276--3277 -4458-7574 -3945-282 4659-3356 9202-119 -158-7345 -3333--8015 82--6109 2843-4696 -5170-9141 -2215-3547 8216-6061 -6721--358 -2585-5648 -3610-3398 9071--6679 6843-2252 -4527-5908 1631--5230 -4429-5067 -5057--7795 -2651--6558 -5160-6560 6549-6691 645-5261 -1990-7224 -4670--2753 2568-5770 3483-6216 -7041-2167 -3260-3936 4134--129 2976-9258 875-8512 4321-7597 -6348--6869 -2550--843 -2636-5470 -7046-107 2813--5186 -3636-368 7400-1161 -415-3866 3956--3809 -3997--6097 -682-2351 -7141-6470 7596--3597 8744-5970 -6935-5763 -6228--7460 3726--5211 -5517-5253 3250--2027 -278--5968 -4701-6933 -3685-6325 -2374--6599 4840--1092 1093-8819 3217-9312 2307--69 -4041-808 8284-1172 -6125--6279 3113-1502 -3685-2643 8718-3397 8708--5646 -1726-5851 -3949--7418 -2665--2035 -1387-6741 -2238-4751 -610-327 4515--5077 -4991--2201 5531--7419 5823--8933 -4295--4968 7285--6806 3976-1518 -3117--1574 -146-4403 -4446--3764 -2477--1765 -8813-347 -9383--3123 -3074-89 -4419--235 -8455-1631 3458-2704 -237--5415 -1623--8571 1827-74 -7507--5410 7266--1702 6261--4483 8561--7626 -921-3840 -4804--3492 -7907--5781 -5331--5569 -4272--6906 -2480--4512 1740-710 -3907--4697 7308-690 -1616--3971 -4516--3267 6863-1913 6166--461 3794-3018 -4177--1912 4227--1657 9466--2560 7224-2770 2404--5141 2307-6241 5088-7199 -4445-1043 1290--3390 7276--9064 1665--7778 3199-6093 -7573-2074 5255--6478 4537--5865 -2292--593 3369--342 -9326-1490 3705--1638 -667--2619 -1616--535 -4823-3416 -5009-5077 1239-3562 -4965-6821 -3554--2405 919-9241 -1073-8499 5084-4268 3500-7540 -882-3125 8440-4629 3438--465 8748--4253 -7433-1304 -1319-4908 4190--6379 -7599-6432 -1887-8637 -406--4975 -7542-6221 -5831-319 -8220--4934 -5893-1837 7101-2746 2988--4316 1411--2141 -4302--5052 -5106-7658 -2776-2431 7232--3945 4954-9142 -2218--7659 -5908-311 -6697-382 7856--6502 7279--4321 -6119--5284 -6885--7126 1619--7790 6117--4715 -6079-4693 -6906--1487 485--2232 7899-9577 -916-1525 -8264--1198 -5993-1499 2069--1455 -2057-4435 6366--5111 -2436--549 2041--5670 6491--1040 2697--6262 1396--3045 -3079--1178 -9695--5784 6230--3949 40-4271 7741--4737 1885--9828 1450-4165 -7723-8417 -878--5955 -6334--2231 6182-735 2776--608 -1942--1996 5421--6673 12--7777 3898--4423 -8276-3701 5993--6324 661-7219 640--7019 1426--1528 -1320-7787 5175--3209 -8411--756 2799-4103 -3031--3079 -5843--4598 -8448--5744 324-3477 6182--3201 4072--7830 -3608--593 -3260-3477 -1338-334 7709--3874 4076--7621 6167-6908 2022--3892 -2509--7230 5615-4477 -1027--2516 -4459-4584 -6586-6127 -3079--1721 1765--1239 2477--1978 -1324--4721 6371-6559 4950--465 -1506-2171 -400-9848 944-5671 -929-3818 -3972-8411 -4308-5727 -7813--994 -7545-9079 -967--9208 -1470--3355 -3909-7147 2548-7442 1942--7159 -1287--6785 3623--997 377--2687 9002-8100 3504-5629 6147-1197 1429--3220 -5642-3308 8949-3707 2217-387 2625-5652 6449-2376 -1773-2067 -1416--3949 -7766--485 9419-5872 -1212-7509 1940--1664 -7745--8047 4486-3506 8275--7900 -1070--3539 2138--3349 7671-1590 -6072-1651 7994--8914 -4473-3843 6817--7021 1111-785 -969-9514 1607-1343 8255-4540 -4178--916 -5635--5783 -2277--5850 1243-368 245-1339 6567-1998 -8271-4549 -4640--731 398--6604 3749-1984 -3194--3678 2945-1249 3228-5099 6880--1728 -8461-8649 -3249--5770 7547--590 2959--8179 4694-1409 -3485--2251 6108--2561 -6817--6625 5174--1238 1953-4385 -2752--9915 1139--2373 -6082-4371 8895--9790 -123-6930 -1751--3582 -1406-3271 6709--2083 7724-8421 -273-5724 7487-3895 6593--9032 -1729-2001 8181-7656 1240-398 -4976--35 -9261--5820 7799-5802 -1067-1784 -1435--5172 -3486-7634 -2002--1396 -6980--1270 9783-3313 1019--3275 7921-7295 -6305--8809 1191--3661 1954-3242 -4255--1971 -8622--2391 -6650-9172 -3068--4946 -7316-6526 6890--1718 -7326--5634 5325--5824 -1032--2172 -7659--4728 -8584-267 1412--3359 8870-3225 -1223--8224 51-2485 15-6486 3630-2893 -5975--3467 -8293-8690 3359-6901 -361-1865 4450--5687 2807--7136 -3693-5112 -27--5482 7706-5482 -4885--8220 -3244--2610 -1258--4030 -5360--87 9493-8930 2345-6350 -5664-2049 -9448--1439 7225-7458 5996--1378 -5549--5011 3070-2820 9101--4135 3790-7131 -4969-6026 4531--5086 2743--1576 -1308-1714 2417--648 6341--4313 5791--3164 -5548--3910 -8846--821 -1898-5263 6957-2223 8340-3991 6330--1998 -1821--259 3759-500 -502--2840 6246--6383 -7491--5593 286--35 -8421--5996 -3992-3352 8000-3882 -1171-6326 -5370-3280 -7039-8089 620-3742 1295--7738 -93--2107 -6953--4064 -4411-7264 -6786--3305 -163--7018 1367--77 -5577-8868 -230--2378 -4271-1241 667--5053 -8495-462 4779--4350 -3139--5674 2460--5844 -519--4396 179--6793 1592-8237 1079--8377 510-7498 -3820--5921 -7853--9194 -86-3024 5871--8655 -1306-661 -8662-681 5317--2708 -5789-8422 5349--3720 8797--3242 -5958-5119 -146-9864 -3-691 6349-6806 -4862-3646 -7131--5488 835-6539 -454-4490 -173--1999 -2330-4848 -6360--429 2440-6694 3423--6987 -3332-8030 2304-7353 6503-5514 6682--1033 8330--4937 -2818-5696 2608--540 -3977--4708 -692--7106 -4154-678 609-6908 2655-964 -5456--6768 7058-615 -8194-3056 -2958-6067 -6214-4702 5118-1770 2203--4944 6788-4935 5019-2272 9033--5599 1942--6413 -2905-1903 -8165--6995 -2202--8355 -4439--5905 3595--2696 -4693-5397 4943--2589 -5693-3341 3824-1436 -8113-2984 -5959--574 828-172 6362--186 3387-5363 -2787--1855 8895--4742 -1177-2339 1935-3639 -9101--1022 2712-6035 7324--2240 -4378--4843 5893--6557 582--7169 4018--3924 3226--2897 73--6371 2963-534 6598-683 6436--9316 3371--5087 -6938-1286 -3735--3420 -2150--1506 3608-3503 -4071-2807 -4711--8384 321--428 4676-2870 -6847-5044 7543--1705 -6428--7944 2447--2177 7515-4376 -6380--4504 -2262--8075 5393--8402 -4249--898 -314-2366 5143--1269 -9387--928 -8731-973 -5936--6466 4628-3361 -6705-1210 -8330--6111 -1510-3511 -7460-3348 3387-4634 -8257-3452 7193--8431 -2081--5390 -312--8034 1866--7360 -1317-6758 6691--6145 -2334-5371 5962--2785 -8719-1644 -278-1740 4043--6403 6113-7994 1324-636 6323-7318 -5738-5621 -1690--624 7927-2780 2738--3393 -6325--654 9630--9715 1528--3763 -3971--6500 -5061-9636 701-8714 2578--8511 3623--1173 -3566--239 7123--4014 -4269--901 6292-3563 -5318-1947 -134--6080 -5345--5806 -2655-2146 -2529--8661 2239--3612 -5553-4218 -6445-3614 -1360-3624 791--8209 2598--3204 1115--6475 -5119--7516 -3923--5106 1307--7614 3111--1407 -1948--1533 -2111-5753 -5074--3513 -8300-1405 -8066-8526 3145-1248 -4470--8400 4138-6739 1397--3053 2161-3492 5967-4262 8483-3099 3084--4962 -2510-1884 6772--2928 -1065--3099 -8463-5715 -206--3022 -6351--1586 1446-6202 6225--5183 7021-4657 -448-1792 1754-9535 140-7960 1563-4297 6998-5944 -4496--3142 8780--5992 6196--1865 -1841--5700 -4268--3758 -2249--3621 2632-3197 -9194-9474 -1558-3352 -945-1701 -6969--1356 6847-2179 -6563-6684 6254--6817 5151--3350 -9010-6044 -889-313 9877--8407 3972--4949 -2044-1809 -9442--9265 1478--3900 8215--5331 4620--9280 -1776-6276 3502-2451 903--5400 677--4111 -6048-3870 -2314-4078 8225--2663 -8986-1704 9802-3334 -6906--4046 -7372--3645 -500--2796 2393-3358 -5046--7305 -158-1152 7132--6184 -6755--5808 7200-3153 4388--187 -2554-564 -1832--2074 3772-1197 -9002--2520 -6983--1143 3604-3224 -4495--1759 -5991-5215 6628-6261 -6938--3350 8743-9552 1324--7859 319--3868 7422-3625 -6587--8809 4274-1000 2930-4742 5138-5301 3506-8923 1174-5894 -1136--1610 -9641--2059 -147--3416 1769-753 5066--985 8884--3943 -8032--3969 2736--5855 -3188--4547 4652--3442 4375--3757 -6791-6647 -268--1349 -5871--2465 9351-768 -1499--4316 -3109--6965 4288-5936 -680--1465 2604--6944 2958--3617 -7841--395 -9507-5795 2449-6388 -6182-6461 -3911--473 -9295-1944 -8449--8423 882--3363 -3193--7641 5945--2627 -7547-6682 7198-323 -1971-7547 -4206-1570 -2309--7546 4944-542 -8161--6949 5153-6712 6457--6072 2873--437 -9468-5134 -3060-4360 -6791-25 -5937--655 7831--558 -9798--5061 5177-4790 -3228--9557 -2280--9561 -2280-1000-5800 2491-3144 -7639-2397 9180--1510 -8506--3264 -9295--4569 2675-2918 4021-6269 4687-7057 469-7955 -3496--1172 8207--2175 2862--1439 8860-2093 -4791--622 -5144-1409 9453--600 5554-2047 -1374-1159 -8125--7715 4821--4815 2778-495 4603-39 -2287-3702 -3981--6743 4201-2694 -5775-2491 6891--5250 3854--5085 7415-4955 1870--2255 -6591--7148 4918--1290 -2625-4186 2420--6486 2964--7813 2772--7727 3614-4352 2564-5813 342-3636 7842-2680 858-9825 693-4953 -3201-4807 6185-2349 -9657--812 9176--154 2243-1427 -3843--8786 -710-7832 -279-4182 2805--147 -6559-1595 -2402--1424 -6519-4251 444--4954 -5516-604 -5445--5090 7443--601 2675--7908 1142--2649 -7554--194 -1803-4626 5671--4775 5303-511 942-1216 4414--5078 -7767-1523 8094--3027 1369-4201 2923-6370 -698-6061 -7038--2869 1726-3617 -328-1906 -5355--8159 -1475--4983 5033-9552 2355-2094 -4491--468 5298-4661 -7176-6007 4807--749 -1372--7398 2173--5007 -81-8996 -2141--4403 1255--5247 3070-3859 -1297-4147 -3666--7190 -4633--6389 412--4508 641--1044 8199--8268 -719--7949 -1207-8412 -1228--4534 6565-84 -3472--1634 -83--1248 -506--1149 -1165--6315 869--4771 -7500-7223 -4994--108 6089-7537 2865--1169 -1686-2489 -9646--759 -5729-5307 -3008-7345 -2487--2095 -2640--6290 2852--7378 -6064--8508 -4378-5292 -7803-2987 -2251-3165 -2792--3649 7324-3399 5294--2141 6962--7058 -1206--8511 4073--2438 3005-4154 5831-2952 -1084-5756 7361--630 4000-4095 5644--2967 -3639--7646 -3899--5215 4936-4211 5173--2431 7698--6722 2564--7077 -3114-5040 4870--5002 -1151-6283 -3462-7850 2039--328 5448--3916 2364-5596 -3834-9533 1527-739 -3843--933 5954-6257 -7309--5864 4409-1560 -7215-171 6540--998 -7932--4379 -7513--9150 3775-6882 -95--6717 -7190-4251 3069--7051 -5470--3219 -5064-8037 -2324-8774 -4637--1823 -411--300 -5181--8530 5219-1971 -7017-2436 -1543--7687 -5978-1084 -7357--6738 871--4818 -115-3700 200-716 1443--5983 -273-1663 -5296-1113 6597--2739 7462--5948 -935-4424 7543--3726 -7947--1792 -3956--8628 -3654--613 6840-5337 4846-3000 -607--4945 -6676--3314 -4836-5907 7144--6203 -4328-2474 -6748--564 -5041--6659 3093--2881 -8914-3506 -2022--5689 -7540-7611 4425-1964 -7623--1385 92--3641 -8233--4363 -3815-468 760--2370 -3610-1915 1973-5112 -6782--6294 -363--8050 -3657--5842 658--6097 -1672--4031 572--5544 3089-8068 -3811-9348 3238-9308 1370-2078 3040-9519 -272-5599 -2519--4639 -7781-7736 -3129-6379 -3765--3812 9051-4026 -6236--3527 3483--6502 -149--8164 865-545 -1202--64 -1628--7996 -5324--7554 -1653-2686 9134-6109 2135-4792 -5800--903 -5197--3222 7341--1547 -6734--5715 6310-1531 5417-7619 -3004-3625 5629-2378 -1595-2012 1262-5594 3968-7307 -5528-8207 1323--8266 -278-6734 1372--1836 45--6360 -5731--4724 4675--3088 6201-1120 -8283-5661 7454-4678 4730-2429 6849--290 4892-3262 5646--46 6171--1815 2794--9443 -2958-8557 1414-3455 4298-8471 3739-5469 7684--6852 -6496-7544 5480-6627 3637-4504 3142--187 -7098--9251 -2503-1938 -2263-4404 1730--3886 8996-1622 5506-6051 3267-3457 3811--1520 603--5736 5147-511 -7510--2475 -4490--3132 -6279-6752 -107-6534 -1579--8047 1078-1985 -8590-218 3917-2018 3201-5880 1072-258 -2126-3603 -18--3109 4871-1759 -4-7057 2036--327 4939-4282 -7106--5318 -600-2716 -7832--392 -6001--7320 -4247--812 -4744-1373 2995--1311 9730--3294 -780-7479 -3912-7316 2868-2217 2535-3822 6759--1340 -6175--4707 1241-3095 -5582--3002 -7481-4012 -3162--5012 -6382--6316 -7007--901 7009-439 9857--6850 -4732--171 -271-6858 -4428--3277 -5330-6087 5697-6742 6575--5722 6985--9267 -845-3342 -6993--8915 -4304--6419 7051--5643 5269-5596 1874--6561 6682--7720 2398-2697 -3393--814 -976-348 -3302-2380 3630--2154 2442-2813 6422--2887 9263--3167 -8852-805 9400--1738 3391--5708 848-298 6301--6183 -5836--2758 8709--7088 1611-1305 2234--288 7878-5275 7627--8625 -4074-8648 2529--5096 -3988--5476 -7778-1368 -1016-7243 3183--1598 -5575-5890 -6772-2423 -7239-7250 1004-3179 -384-5535 -1094-2903 9004-1582 9374-5070 1072--9360 2738--3159 -9047-1784 7555--2274 1687-1635 8629--1365 8931--1785 1652--3804 9222--9003 1705-3763 2973-2269 4767-3584 1309--5696 7294-3191 -2526-1330 -3550--1814 3878--1838 3083--216 -3543--5043 -3923--7809 -2870-2837 -2155-4533 -7782-3709 3613--5402 191-2363 871--6702 -7050--4664 4975-3099 5155-2809 6601--2291 7729-4481 863--1867 -2303-6632 -5310--9530 -994--3842 -713-1527 1468-725 -6255-2320 -2801-6021 -590--1829 -4801-5786 -2796--5970 105--1570 3167--3664 -1386-1181 -1467-6978 -1031-1919 8165--6824 2328-2800 -7275--5245 -3519-6664 2664-4957 -6217--6564 -1588-5415 -7032-4324 -2827--6380 1309--9828 450-4535 -5926--5037 2377-175 -1060-177 -6263--411 -5392--2202 1665--5175 -5627--3622 724--1829 2719-5539 -4471-550 -2609--4032 206--6338 -6494--9277 3662--3545 5157-5177 1116--5885 -520--9676 -1605-4447 -6132--5316 -2019-140 -5002-3369 -2992--1130 -4188--5917 6656--5684 195--7828 5064--4020 -6400--1252 -7817--6552 688--5929 5705-184 -3561--3269 5204-4189 8291-2974 -3328--4434 -610--2308 -7266--7305 -6561--2720 -7795-2820 2460--3477 6626--4751 -2011--816 118--10 1429-4711 6027-7097 4071-8778 1922--6072 4290--5382 1007-8179 98-1426 2747--467 -5640-4437 -6736--8270 -1473--4030 -8264--2293 8010--3315 -8261-173 -4777-5957 1954--839 1587-9275 3106-3742 -7495--4623 -8742-3321 -5346--5709 7673-924 5442-4894 -7023--4067 3364-758 6312-3866 8683-4091 5662--6585 1953--5661 -958-2785 -7493--1754 -3820-799 3582--6043 5743--285 -4088-34 -9669-840 -5118--6646 1700--7452 -2911-666 -6400-8393 -697--718 2669-1189 -1986-1080 7807-1755 -2712--1445 -783--7208 2317--6376 -2283-6569 2660-8291 -2856--427 -4557-8896 2674--7327 -375-600 6798--1887 3880-3006 3607--1558 -7596-6347 -6557--254 7739--621 -2018-91 5273--7373 6107--9541 2702--3600 3001-5876 5122--8427 4499--2101 5539--6425 -5602--1430 -3580-6237 4659-3156 -1726-3339 -2348-5998 1507-5683 337--8072 -3022-524 3422--1116 -7960-8871 2500-8898 1142--2607 4489-3137 -6482-5181 -5008-8282 2463-1299 -6954-1879 181--5666 7275-6912 -5952--6736 -148--4309 2000--1577 -9656--824 -999-3399 -806-3643 -6296-3055 -3280-529 -9910-5824 -6183-5261 -7708-2047 1225-4379 7349--7505 -5668--4384 -3107--3860 4172--6627 2742--2471 -8428--8488 -1075--271 5999--2076 6769-2045 2722--2257 2572-7819 2892-7667 -4265--2949 -4440--1736 -3423--2916 -3272--6120 -6948-2878 1355-6608 6890--5395 -7774-2513 845-4490 4418-2285 8033-3765 -7880--1114 -494-4029 6260--2308 -9064--4724 1301--7820 -2412--5791 -5432--4056 7611-8603 -540--1334 4002--8854 4644--1703 -619--9024 -2812--6970 -301--1169 1650-2150 201-4527 1549--3627 6155-3620 -2065--5309 -1542-5672 994--2568 3597-2163 8031-6342 -7377--9480 1225-7330 -2729--7448 -3742--4805 3859-7441 1384--3432 -8289--5294 -1415--6885 -1537--1354 -3580--2904 -3185--4025 -3519--49 -5022--2593 -8406-6512 -562-1056 154--5876 -2908-7693 -5098-5843 -2688--4772 -7283--7225 -5302--2055 6296--2225 -4257-1362 7870--6734 3142-4173 -1429--2456 -175-7959 3595--1868 -547--4353 6638-4829 -6673-802 1986-2654 -966-2908 -1736--7058 2732--961 -5016--5150 -3088--8697 1843-7815 984--1384 -6998--2830 5981-9645 798-9398 -664-6429 -6845--4065 6133-8286 -2030--8583 1398-1767 5617-3635 380-318 -1868-4847 -6274-8996 -2561--7993 5799--5687 6008-7448 5936-5560 -513--971 -4003-3514 6284--7310 -118-2280 748-7229 621-6771 -5920-4033 6921-823 -5469-4350 -761--4656 -2009-8361 5067-1428 6305-373 -5696-5331 -5055--4322 7377-4252 -2059-130 5540-4651 -3312--724 8715--1620 1929-6570 -4870--7771 3790-6209 -3885-5750 790--1164 2059--7957 -346-8687 -3415--3200 -7248--7366 -6462-2959 8455--2032 1970-128 40-5138 -3859--6616 -2909-2914 -3675--4290 -3046-1404 5801-4546 -2760-7038 3658-2322 8716--7958 -1073-6231 4124-6377 -6415--6207 -7277--4478 4240-6767 -4516--8140 5005-8107 1855-6394 5255-6731 -3889-7456 -1007--4683 -4786--4794 1711--5079 -7350--458 -4608-1844 6278--7596 -1710-2659 -4811-92 4328--7343 -3359--3669 -3876--9028 1224-5853 -2122-8651 1217-6433 -2869-1398 -404-7242 -4336-2062 5307-7534 6304--3790 5186--1637 -4282--7227 -5728-4634 1142-4601 8284--724 -9085--2142 -6055-3690 5879-4569 1299--432 -2114-1272 7612--4696 -1321--4022 2481-3972 -1103--2986 5007-8764 4409-4505 -2343-269 787-4087 8149-605 2269--163 -5945-5933 -4365-5569 -4672-4630 -871--7455 1968--2070 -7974-4657 -7517-5442 -1722-3061 -613-6748 122--7238 475--9338 -1501-5369 -4973-4764 -7612--2219 -5297-4244 -8812-5956 -381-8337 -2080--6331 -2344-3280 6934--3451 4771--3680 -858-4317 2776-3333 -3157--5228 -4491-3373 -7569--9056 1267--5722 -1061-3331 -2039--7633 3864-8986 3778--4362 1348-4180 -4902--4658 -2318--1885 -9503-8864 -2652-2854 4890-7906 -5425-3053 -6178--3069 -7459-2768 4776--6551 -5726-4628 -6625--5995 7062--1183 -2564--5879 -6159-1175 4705-7115 -5834-3869 -5161-7521 -6531--7442 5928-5269 -1432-815 -5187--3764 -7209--5328 5759-9202 -2148--7007 3121-8505 1245--4644 750-3294 -6966-4564 -2520-941 -67--3759 1499-2417 -9013--3161 7766-3726 -1698-4665 -8201--852 3172-3383 7318--2050 168--4309 4142-664 2404-4227 -6148--3205 4340--7515 1727--6913 -231-1442 -430--4042 -6458--5145 -3798--3224 5132-89 7021-1626 -4925--4635 -7501-20 -3043-6293 2456-3937 7881-2218 -7896-1771 -9339--7893 5357-6577 -191-5680 -7914--3606 6645-2132 -5018-5212 3098--2441 -98--3024 6235-2874 -8753-6451 1482--7023 -4158-2166 -3179--5975 -4628--9304 -2855-4816 -2813--5827 5364--6866 6825-2075 -2967-8712 -1506--5109 427-3223 -7276-1348 -3447-2133 -3993-2333 -6009--2984 3889-0 1440-4496 -8448-8750 662--3641 3295-758 8884--9298 377--8331 5280--500 -942--5946 2812--7618 6431--750 412-5162 447-1053 -1231--14 6665-7203 247-5502 2891-970 1246-9183 -3780-2820 -301-1936 -616-4015 -5579-2925 8397--5966 6053--2688 -9094-6403 -4829--1823 9242-9758 1028--760 6397-416 3834--1043 4650-995 -9289--3040 -2621-2568 -6459-8699 -4076-371 -9523--3366 7711-5974 1579--7943 -645-3488 8717--959 6264--4932 1724--2649 -7709--7178 -6386-7022 -1022-735 -4063--7418 -2081-3486 5142-7649 4106--2885 -2555-5141 2544-6724 7099-5933 867-575 -3620-5884 829--1762 -2633-920 -8296-6245 -2692--5115 -3752-3726 7893-1430 5144--4027 5417-647 -4901-1978 4812--6044 1346-6852 4734--7765 1597--4029 -2266-2411 2877-982 9242-7697 2364--871 -2175-1513 2687-2863 923--3656 -4826--4842 -6918--4847 7554--1117 9031-7603 -6227--6060 -5697-643 9962--5837 951-4295 6078-2914 6220-1133 -6996--2843 -3171--4984 6571-1605 -6041--9201 -3314--550 -8061--8300 2484--7190 2107-6635 -5528--4222 7404-7116 -4900-4607 968--446 -5040--2629 2480-2621 -6599-1035 2444--232 2519--2630 2529-6594 7051--3934 -4333--4216 -3936-2876 -2754--2599 9259-4224 -3908-7466 -5872-959 9116--3268 -4056-1216 -2973-6641 3681--6535 -1901-4852 6979--2033 7807-644 -9098--1488 2467-4574 5850--7662 5967--3277 -5356-2493 6273--2141 6241-3233 -1935-2150 -1074-9508 1156-5547 7620-6077 6584--3127 600-6023 -7576-4679 572-4568 7593-480 3582-5602 -4682-3930 91-2173 -6761--1363 8329--78 9946-4524 -8485--9813 1516--9614 -1838-1000--1484 2744--2997 -4310--4982 -898--5993 -1679-6133 -364-8361 -4692-1934 -4141-2510 4707-5083 -5223--2031 8814--2072 2445--6898 -395--1658 5626--2888 7418--2487 -7913-553 3885-778 1458--2740 7000--4945 -6982--5841 1888-4258 8351--2070 -206-467 1133-6446 -6418-618 -3662--5149 -2908-5964 -7849--5395 -3229--8849 3336-4921 7472--3574 -3338--8365 744--2947 4150-3924 -5155-4735 2823--3789 -7422--1761 -8931-1074 388--641 3812-4389 -1336-2032 9628-2851 -4804-4705 3833-5220 -2615-8894 2085--2678 1014--765 6781--2725 -6578--1226 5289-5027 1444-3590 8131-2944 -2481--422 5710--7252 3234--663 8963--9096 3214-3342 -3065--238 -5418--3914 -1022-164 -4844--7555 2172--5096 3351--7596 4698-1012 -9423-7599 4753-5409 -6683-441 -2830--521 4788--1202 -4582-3429 -6687--1585 9597--6025 479-1120 7315-1694 -6497-7427 -4754-9760 -959--4638 -167-4641 1806-4673 -8583-2408 -3035--5054 5514--3593 -226--7683 5369-5884 92-3293 -2747--8302 1159-5708 5949--2757 134--3380 -3069-2002 -1850--3187 859--285 2015--8517 3170--506 8538--5529 -1221--5679 -903-1866 -4973--2361 8938--8492 4927--3387 8086-1151 2070--6677 -6702--6313 5043-8245 5250-4336 3879--3867 636--805 -6743--1386 -6214--294 6707-4501 -3812--7928 2739-6823 -6850-684 7898--6703 -4941-3339 -9147--2417 -1319--7184 2858-2686 -7929--4695 7444--8451 -3525--1136 -5725--6664 -3315--5418 400--716 9628-6084 7676--8695 591--4742 -5174--5891 -2477-4532 -6634--8254 4960-9039 3920-501 -6199-2467 443--2367 -1436-2085 3241--3025 9016-88 -3810-4641 -8543--7203 1608--7192 4343--1244 9333--2762 8489-1204 -3126--1116 6846-8050 4881--5005 6216--8038 2867--7315 2045-5108 -2155-5514 147-7542 6370-7278 3812-1252 -2880--6451 -1430-7846 -3783-241 16-2756 -2915--6685 1876--1605 -1678-8437 -1116-4195 -7278--2672 8442-173 -9283-4294 178--3649 6526--1440 -4311--7286 -3980-4249 3284--44 -8362--6487 -2531--2342 2246--6806 -1769-6964 -2134-2821 -4753-2258 -426-386 -29-8663 2609--7163 -6823-9345 -997-4354 2642--5061 691--2216 6066-7825 -2607-8978 1898--6678 632-2014 -869-7237 6508--2012 4341--9348 -3061-4504 -3258--6709 -2437--9124 3768-1538 3426--4618 4726--334 124-897 -4650-3471 -3157--1681 5977-2896 -4940-3193 -1612-5244 4301-2951 -3153-1870 -9560-9540 -2924--5459 -8349--3009 607--1213 5051-260 1646--9624 520--2153 5802-4905 -6488-4143 -7308-5282 -2334--2974 9128-7008 885--2185 8418-241 2102-7542 29-2582 -4431--5868 -7856--2652 -3111--527 -2735--6008 2847--9171 1175-4458 5226--8006 -3944--4248 5016--7153 5216--6295 -2485-5369 -161--2628 -3080-8617 -2309-154 7429-2749 -4150-852 7826--1856 3798-1887 -6240--7901 5083-6341 -6990--1398 4941--4287 -811-6578 -6616-7262 -1278--5291 1087-7685 3685-5249 -3301--3712 7782--9678 2355-9837 121--6017 -4530-5808 5829-5174 -3077-4473 7006-6120 1703--5538 -7793-422 8222-7896 2760--8238 2628--2978 -1778--6341 -5562--5461 321-7546 -6102-824 -4011-6967 2342-1761 -9251--2504 8051--4551 -8175-4639 1646-7854 4203-301 729--8469 -2196--172 -7832--6972 -3647--1128 511-7721 1593--6377 -3329--5583 -719--9885 -619--5708 -2514-3668 -2280--5504 3762-1301 5831-7836 -2947--8461 403--6271 3640-2702 6167--8859 -2264-8917 -3948-2576 3708--1697 573--1287 752--5973 -2696-198 4543-1159 9088--9598 2760-4046 -4605-7985 3096-204 406--8289 -4669--6877 5666--3520 5197-8076 -1561-3953 6121-3514 -3132-6604 7308--7136 -202-7663 -1362--8614 -956--4366 2151-4619 1284-4742 -4065--5955 -3136-2552 -5454--956 -4867--3759 -7429--4838 2746--4146 -4796--8935 -3054-2920 3168-2366 1353--4880 4845-4215 8307-6750 -5862--466 6472-6956 -1995-4629 -5305--1348 -4108-9307 -1506--5348 -6079-4353 6215-1725 3894--7953 2954-8535 1082--5558 -291--2269 -5084-4986 3882-521 8871--7662 4779-5767 -4278-2673 2468-440 -7900-3709 -8500-4013 8234--2022 -2744-2798 -8352--4627 1804-8455 -4858-1047 -8208-3902 -4817--2254 6721-2264 4168-5206 7522-3108 5003-5239 1620-1125 -7731--2390 -5353-560 7335--4208 4308-5012 -6498-3399 -3702--5391 5514-7832 2856--2634 -216--581 -5101--6346 6446-3682 -143--2112 2652--7960 -1182-4122 5502-9211 3600--4901 -1657--8842 2417-4443 7022--5877 5313-2414 5148-4892 -2875--7734 -3852-4348 6307-7785 -4455--515 -9847--309 6070-5250 595-2549 -4079--9518 1088--2492 8076-2788 5700-6821 5236--112 4200-5743 3468-605 1130--1981 809-1012 918-9897 -70-1543 7294--3104 -6694-2449 2590--4739 -1661--3513 200-7433 2696--8551 -505-2856 -3819-7795 964-2620 -2772--2101 3145--1713 5862-8089 525--7376 -125-3336 5597-7765 -2222-3372 9125-2686 -3100--6342 -90-7615 -3525-5924 -416--8199 -1905-7699 -2203-3644 7508--2046 -3518-1642 -8968-1479 -808-4803 -3611-5183 1812--2718 3397-8712 799--1213 -108-6711 -6934--5529 -5283-6836 -4810-2641 8141-3924 -4083--6340 5519-2863 5741-425 -7234-5433 1514--257 -9090--5558 4655-6183 1369-9123 1922--7455 -4658--1189 -4929--8011 -1728-4042 -4783--2594 4548-2121 4057--9944 673--4740 8461--5914 -6745-3207 -3252-235 6893--4771 5521-9633 1557--7513 -4653-8736 3504-5662 -3833-6412 -4205--899 -8056-51 374-5698 5574-4684 -5588--1457 -9440-6247 4537-6948 6624--2728 -8956-7575 -4920--2691 -3161-4511 840-6459 -6039-1627 2624--787 -3248--1643 267--1923 -6093-3919 8252--1193 3312-6457 -108--3457 4997--4722 -620--4326 4207-8707 1338--4215 7254-7689 -1039-6654 4331-2823 -2084--7616 6100-7111 5941--787 -9016-1176 6075-8500 79--8865 -3613-5266 3138--5843 -707--3970 2681--5485 -2757-1618 -8842-4471 8830--6491 3541--4982 -5486-3326 -3130-4050 3496--7266 -5814--1634 -2454-2690 -915-8186 -356-5200 -1545-1864 -7929-8166 -2969-3243 -1813-4029 -8865-6752 -6840-3043 1783-7301 4158--1341 -346-5112 7433--4112 -8205-498 9855--657 -2893--5753 -1076--3030 -7696--3502 -1585--4084 7107--635 210-4213 -9055--6560 3071--3719 -7498--6715 -6843-5848 928-3126 3631-5730 -4440-6415 5174--1024 -2424-3765 6911-1542 -9392-9724 -1722-3508 6275-2335 4634-3644 8530--6821 -1786-8305 -1100-5164 -4058--2733 7803-9333 2604-2435 -5464-3284 7775-6992 6647-4497 -6794-3503 -3622-1872 5139-4066 -2386--3161 -432-6204 -7704--7232 -4988--7879 -5686-1501 -3615--7027 2327--7144 -2189--7384 2403-153 8127-5849 1424--989 152-150 7164--1475 -2253-6999 5730-5574 5763--3870 -3714--2451 -8124-1054 4529-176 -3995-1339 7590-5670 1894--1849 5601-9551 -2326--7468 5800--8328 548-5277 -2171-7758 -4421--6975 2641-4621 6648-4165 -5403--2243 -5779-6040 -7583--2131 8495--1853 -8621-9600 -503--5052 -6876-4715 -5676-7338 1698-8335 -1738-3470 5375--8449 519--2167 -6995--4925 4308--2180 5468--5840 -4482-4476 -3239--1734 -3069--4380 6857-865 8920-790 7090--2392 -2403--3049 -7342-6811 4495-1015 -3746-5250 -7554--6633 -4679--7952 -2174--8649 -2349--6615 4383--7756 252-4300 474-3840 4650--7758 4141-3275 -472-960 -310--3592 11--7300 1735-1788 3437-3912 -1773--2285 7974-2817 -8942--4108 5431--6012 -5648-990 -9082--8483 -1417--7821 2235-3123 -2930-2229 -6148-478 -425--5030 4680--3100 656--5308 1557-2539 -7740-4965 4131-6369 -4479--6216 -1316--6459 -4889--120 4546-9628 925--5646 4518-5717 2458-6410 -2189--2297 1813--9131 2257-4442 1322--1300 2549--8425 -937--5905 4699--2861 -1198-337 -4303-60 -5320--1194 8188-3975 4690-7338 767-464 -8930-9353 -2540--576 7697-298 9633--4880 4277-8268 3736--268 -9386-1515 1278--469 -2371--6560 -5036--7989 -5048--6113 7817--4027 1659--2716 4215-3238 4215-6042 3600--3648 9052--2844 -8859-2078 -3287-6320 2871--8869 -3702-5395 1270--248 8983-3334 -5579-2960 4571--3073 5157--5036 -7082-7752 -5280-6385 5682-2737 6453--1724 2247-2841 3335-1072 -951--6847 6089--5157 2308--4197 -7191-7799 -561-7999 1384-7448 -5470-6807 778--9154 -1083-5608 -5143-2327 1655-3940 866--4234 2114-962 6588--8839 1870-2146 -1289--5710 -2521-5284 286--1321 -6634-5927 -4831--222 2394--1028 6233--4254 3568-2372 -9685--5259 3797--5031 6382-1185 -946--6493 7373--569 -2586--5208 307--9377 -451--3234 -3901-1415 -5624--7422 -409--7878 -5361--5086 -7564-471 -6159-9824 -853-592 1850--2015 -2006-1107 2297-6456 -1474-4697 -5553--4761 3214--1935 8686-2219 3093--6375 3441-1349 -750-3669 -8742--1240 -2707-7122 -982--8559 1828-6954 -5262--7069 1111--4022 1023--311 3300-4700 -8305--2972 -2796--8201 753--8245 -964-7822 -1786-8030 -2814-1761 -6116-6744 1529--3447 1875-5905 6447--7227 -4125-6125 6566--1081 7665--1505 -2883-6084 232--4245 3968--3790 4076--4993 -1476-4047 -1160--7715 3430-283 340-3256 8377-3355 -116--6027 -4834-54 -4846-230 2978--1785 4659-4086 8688-1184 -1776-1848 468-5770 2000-8131 -3634-4456 3248-701 2257-6590 6690-7976 -5173-7877 -4838-164 -3634-6366 -2024-452 9044--3148 6165--5132 929-8883 4491--5081 -405-3878 -3590-1762 3113--6503 -5430--1040 -1045--5150 -5469--4797 3584--2800 -1797--4051 -4893-6985 -2321--3805 2512--1182 6234--294 7738-2336 -4694--3253 3813--7263 6196-8112 4834-5561 -6339--4298 1692-4483 -3579--6174 -7331--3820 -593--7719 283-2053 792-4853 -4577--6082 -334-1209 169--1874 -7169--1667 3098--7823 -3879-5136 3447--1035 -2104-340 3512-5385 6547-1732 2971--8523 -2533-145 -1655-6861 3174--9144 -92-9738 1586-109 -5245--3158 4069-6756 7024--5135 7903--5263 3272-804 8629-6712 6522-4789 4983-1554 -65-2354 -4903-2826 4228--606 4449-2529 -6892--1508 -8809--4572 2371-4872 7250-7700 -2338-3527 1563--5999 -3228-5013 8104-3125 1793--1314 7854-4680 6693-6265 -7677--3368 -1919-4515 -7601--6178 -7020-3815 5099-2310 -1426-4003 4259--2329 -4753--4662 8739-4021 5668-4230 -8467-8146 -453--905 -4034--6805 -6702-3744 -8536--1833 -879-1710 7619-4582 -2056--5490 1826--6972 -5090--1480 5303-4897 5744-6301 -4205-1491 -9450-2876 8699--6910 7072-3668 510--5879 6832--6049 2326-5090 -6349-316 -5966--8050 -5255--1568 -1282-556 -3416--5019 729--2604 -5011--8429 1692-4541 5833--684 5606-2836 -6724-6555 -1763--5851 5805-8638 3795-5227 4108--4552 2376-2271 -2913--8025 1031-6257 2366-2507 -5378--5285 -4959--4706 -3162--7421 -4237--2092 -6947--3860 3992--7092 -6508-7797 1101-4175 8239-6621 -5189-6203 1181--2329 4988--7926 5384--3329 -7383--2851 8485--5645 -4053-5156 1919-2418 -4897--6665 6378--6695 -3057-5727 7934--1611 1522--254 2580--2088 9026-409 -5092-7924 -3897-643 -2137-3704 -2786--274 4103-6556 -958--372 -9036-1154 -4619--8842 4256-4048 -8558-8883 -529--2156 -1896-6201 -5298-9407 1597-2603 5886--7560 5499-1583 -284-5366 7227--4116 1005--7288 4987--6585 -4493--1184 9909--2526 -7207--4435 -297-2105 5974--6072 -4194-338 8566--6149 5465--968 3367-1730 -3265-422 7370-350 -4862--4395 8246-5340 -4715--1240 2952--1500 -7266-1505 -4997-946 3054-302 5961-7854 1743--5842 -4553--6487 -5864-3553 2164--9645 1908-4600 -7739-15 -2062-3254 3176--1164 440--5709 2513-5820 1852--7197 -4938--9383 2780--2881 -443--848 6866-4078 -282-254 7504-9328 -2524-2537 1356-4800 -586-5983 7601-1245 -5053--9568 1461-7488 2677-7101 -748-4752 -959--2050 4612-4 5708-9061 550--8223 -2896--2425 7080--786 -475--3249 8508-6182 6409-760 -8461--1435 2229--6463 2898-1868 -541--1054 3187-5999 1664--3382 8549--1393 -7135--4321 -647-3057 -3231--3809 8871-9276 3585-1000-974 -9778-3487 -6373--854 5073-2490 8264--8342 1212-3570 -5056-1277 7775-213 6359-3396 -6159-7926 -4965-2985 4956--6976 -870-3980 8519-2621 2052-1342 5053-4239 4868-5607 3704--1167 4615-2646 432-5139 -4069--1913 2442-4844 6360-4930 -5189--2083 6353--5858 5925--2826 2229-6476 -1869-1481 -7719-2793 -6468--1810 4864--6939 -5819-554 1366--1521 8858-6072 -6607-5160 1383--1627 -1574--6439 -3334--7243 1098-1259 -1834--1583 -9244-1117 3524-5424 -5453-7915 -5405-3618 9226--90 777-6114 7514--3683 -3253--2303 8795--6323 -135--526 3458-7190 3117-1057 -8342-6948 6428-7460 4335-5746 1627-7098 2123-2872 6253-5952 5315--1436 -8946-3455 1307--834 -5201--75 -5128--1064 9544--3389 4785--5262 6292-5332 -7398--6049 231--5441 3950--6595 6616--2450 -5397--8429 -1558--7533 -3583--5197 1212--1731 -4051--5281 -1876--3191 5532-5931 7460--3250 -6897--6219 2164-2831 6054-9722 860-5444 -3969--6181 -6406--3324 -2568--3353 7173-1023 9477-4591 8521-5789 -607-9192 1287-7676 1249-969 953-6899 -1648-4450 4854-1036 -1681--8525 -2696-3837 -486--4251 1110-1311 -3453--4988 -2109-3668 4313-709 -1511-5406 -6294--1075 1221-137 -6567--323 -3750-1380 -3834-866 -9913-760 2775--567 -7665-4224 84--3735 -8606-4530 319-6895 -2895-1725 3921-690 8696--7381 -1821--7158 1755--3525 -7005-1317 -8848--1561 -7436--8636 -170-7840 2810--51 -246-1011 7560-8759 -1695-2192 -8247--9103 614-8207 4693--621 3961-5036 4192--2482 4341--9701 -1380--5378 5940--5947 5238--8379 -4974-4536 1125--7743 -1420--4141 -8361-5065 -6724-2300 -6169--7449 1151--3650 5391-1963 9072-7249 -6866--8284 5589-1961 -1639--2089 -5515--8454 -3509-5072 -1988-3998 1476-6797 -5679--7236 1455-4798 2824--8585 -4258--1751 -7688--1864 5078--4468 8228--3512 1344--6439 3147--5484 -3593--4253 -5685--9038 599--7862 4184--7281 1947-2396 2372--4870 7036--5731 -4272--5040 -3248--5643 2535-7842 -4403--79 560--1406 5947-4087 6291-5436 -2078--5185 6708-7083 5895-4223 -7459-5961 -1409-4659 -2457--2634 6185-8996 4331--4233 6938-9405 2370-1480 -1339-8471 -1290-9297 -3473--5428 1319--5664 -7110--2421 1012-6568 -1179--5624 1708--8449 -36--297 5874--9470 -2043-1568 3243--3085 6374-1491 7291-9471 117--1974 6506--6704 1538-4911 2884-700 -7960--1308 1644-5969 6525--918 -6580--32 -2006-4573 7708--4476 4266-8143 -4660-2253 6362--3974 5959-8093 176-3116 8673-6597 -876-6075 680--4307 3290--8130 -2926--849 2038-2750 1764--2616 -3956--6856 5477-4308 6284-5675 101-1555 -8393-3317 4425-1502 -1829-5496 6268-2476 -4632-3624 3396--5001 -4271-105 -8077-4814 -5059-6416 -3072--7422 -2663--3212 1141-3363 -7890--3925 8191-9493 -1382-7957 -930--1877 7648-3757 -1741-5258 2423-2456 9440--4441 5215--1869 1323-188 -6615--2618 2204-1577 5632-1418 2125--6303 -2723-259 7156--3651 -82--7184 1618--5905 1819-909 -2295--2248 -14--173 -9164--1325 -6354-2164 -2358--3126 -1668-3086 -805-3814 -3208-5957 -7249--3805 -7325--6740 2780-3430 -5692--6201 3440-5160 -5378-6982 2800-3905 -7603--7991 5477--4324 -1951-4327 6725-2356 4453--1285 5496-5107 150-6936 -5008-4485 -3626--3070 -1768--640 -7026--5774 1804-6411 -2575--4320 1013--4962 8159--761 3119--6777 -401--7112 4399-2231 4985--2579 7753--7039 443--6005 6225--2114 2193--8220 4887--8183 5168--87 5550-8742 -3201-4621 854--3504 6241-3978 3826--7509 2620-2685 3731--3790 -6846-531 -7350-8390 -2278--5245 6974--3033 4950-4520 3898--6624 -4567-4309 -6337--1503 6268--8195 4765-5985 2470-7937 4221--3228 882-7069 -6554-560 6831--586 7766--8514 -2474-6764 -540-8009 -3530--4775 -6853--824 -7363-4644 2753-1168 -4630--2457 8835--4037 7947--1989 7259--7050 2170--2112 5849--280 7656--5782 3933-5545 774--4296 -3914--4322 2407--404 5072--5595 -6834-4203 133-2652 -5007-6327 6574--1660 -3415--5336 -2918-2008 7903--4754 -1813--2569 7010-6893 3869-2211 2365--7533 -126--1811 -9827--5751 -6756--1970 506-6128 -1425--3350 4707-1580 7290--7056 5057-4157 -7848-2407 -2927--31 9825-2971 7579-3528 779-1071 3338-2139 433--4741 -8198--5182 -928-392 3842--6029 -6231--9336 981--6506 -5491-2030 4600-1356 6474--1866 -1558-3776 -7057--2189 -2384--6376 1452-6165 670--2738 7555--965 -8202--5230 5471--4498 -648-5531 -8061-6968 -7025-233 4767-3313 -1295-4647 -5683-5158 6642-5233 -6969--1070 -8338-2013 8807-2429 3167--1161 -9081-6907 1198-7334 6548-4286 5578--4559 -6391--5643 -593--3971 4895-2082 4925--953 -8972--2028 -2059--4125 -5055-2396 -2327-9623 1896-2985 3967--4996 -1864-2799 -948-3033 2918--1401 9500--5784 3650--780 4815--830 -5492-1302 -7513-5811 -5853-7251 2053--544 -8867-6674 -4929-4973 261--1428 7209-1386 -7358--5052 -7839--6572 -4864-5741 -1716-368 4743--8162 -2716--2620 -3208-6507 3648-5866 -3461--2828 -6960-6569 3821--5293 1224--342 -3952-1196 -3012-4084 -1313-7090 -1582--2346 7443-2312 9224-454 -5713--2809 2806-7604 -3173--2807 1753--6103 -4452-5440 -3319-8224 -3597--8031 -4597--2476 4770-4610 1912--3372 -187-8915 -3948-2583 9352--7153 -2771--7360 -5140-6824 6133-4475 6171-5165 1071--5108 -8162--4091 2311--6892 7117-1511 -1811-2536 -5000-3512 5341--7689 -2746--7801 -3646--1028 6012--225 6157-1636 7514-4817 -5103--1829 -8425--2791 5346-4516 -5291--2427 769-7401 -1652-5368 -305--4023 7602--541 9090--5242 -6329-2739 9262-4086 7676-7271 -3503--7300 1378-2203 -6014--1606 1002-2231 5754-3364 208--4778 3657--1285 8786-6743 -2719--3970 -8625--2648 -270--7692 -1784-1461 -4858-90 -9942-263 4974-1404 2042-8374 -4392-516 3224--2280 -7814--1527 5938-7909 -4517--2727 8412-1417 -1481-7366 -1738-1090 -9486--364 -195-3366 -905--2753 805--5217 -834-2934 6355-791 -86--1196 -6538--6318 7616-89 -6806--526 5184-7853 -3074--1128 8922--3435 8995-4233 7237-211 6244-5016 7772--118 78--6690 -2177-2394 -8664-1196 -6224--5770 3696-449 152--9445 760--5550 6369--3013 6205--7591 -5379--2533 -1243-5270 -4126--242 -9284-6371 2431--8083 -2249-6910 -3089-1386 9055-9359 -739-4618 3860-7916 5527--7356 4944--4995 1281-3468 -6716-812 -4156--2630 8231--5955 6612-1442 9039-8560 4260-39 -9984-527 -9639--4370 -3433--2475 8256--3230 -8979-3827 3113--2047 -8410--7984 4351-4038 2743-4142 -8897-9560 2835--2386 4972--3270 -6581--5572 -3725-4520 1529--7052 -543--8971 -40--4205 -6584--2974 1003-4094 6262--5479 -4864--6874 -3684--7246 890--600 -4418--1851 6419-5189 7621--6190 4730--1601 -5055--8912 2587--6404 7385--6500 2793--5859 4332--7591 5975--4681 1476--908 -5648--7874 4481--7971 -1479-7312 4626-5302 5486-5586 -3506-8207 2334-2938 -4386-1929 2017--433 3764-6174 -6558--5226 -8159--8310 -4547-5696 -4884--3206 -5965--5215 301--6420 2781-8322 599-8892 2847-9296 -630--1454 7314-6400 3377--2881 8075--6600 -6245-3284 993-605 -3575-3874 -8405-4449 3561-1548 -5728-7647 -3823-7155 176--1968 -1780-3105 2540-6741 -5383--3202 6394-4978 -2198--3175 5673-3303 3998--6331 -6859--8302 3461--2100 -1884--3950 -1528-724 -3113-4032 -2484-496 -7423-7243 259-3444 3995-9720 -1649-2260 8301-7431 362-5831 7747--5442 1058-2913 6386-4139 -3764--1921 3842--6318 -3933-3887 4115--3965 -3737--3738 5890--216 3780-396 -390-5441 -6936--9974 34--7304 4967-6551 -4680--6834 620-2075 -1792-5003 -433--8959 315-7184 3378--4748 -3822--844 -117-9133 91--19 6332--6061 442--7033 3513-3935 6193--2144 669--2068 -1266-2211 -7855--6641 4068-8510 -3725-2407 3271--2079 -7737-2213 4427--2262 -2808-5011 -5505-9414 -969--394 4108-4196 4741-3270 515--4074 622-8703 1461--603 -1855--5804 7250--7293 -4110-4487 1070--2741 -3404--322 7634-2877 -2997--4629 4914-3709 2739--7647 -6049--8892 -993--5404 1799-9233 -1449--258 3379-9219 -379-5793 -3048-3518 8527--4993 3296--5875 2799-6635 -3178--3893 4588-4912 2787-963 2154-4995 1056-8317 -5463-4090 3440-164 6424-6860 6172--7473 170--7808 -2388--2500 -8465--1140 -1053--2066 8811--2432 6623--452 -2873--3184 8353-6464 5864-4563 4385--6662 858--5364 -2814--6425 6699--6723 -4797--1463 -793-5402 4837-4311 1575--859 778-6554 -2732--6722 4286-2810 5379-4933 -8570--1670 -1540-7430 -4420--868 -9369-3370 3735--7156 1818-1166 -5126--5901 6015-260 -8280--4430 -6458-335 -843-5509 -6374-2362 -2677-8226 4591--4178 8743--1484 6674-4947 -8674-3690 3701--919 8885--8 8585--6584 1456--3174 -2413-3244 -5609--3837 -8529-250 -9537-3323 8974--773 -1985-7697 1697--3084 1190-663 -5523-9357 2247--394 -1016--7407 -3142-1253 2411--7633 4155-3659 3017-3127 1489--7136 -1553--1842 8794--8418 4095--8345 1255--4947 -6710--6380 5292--8307 2294--7423 -1659--6569 1395-3103 8097-2128 -3042--4078 -93--400 -3059--7897 5401-7919 -2156-2941 7561--917 1584--2846 -7626--485 9193--8957 1628-652 2665--5535 3392--5007 6885--5020 -4756-8885 3557-3807 -5838-5300 -8148-9498 -1900-7438 -4636--7735 1604-3040 -9197--1762 66--1579 -3465-626 7718-4661 1113-6593 4444-3215 6153-4721 -3134--260 3065--8753 -4593--11 -1710-8304 2394--3913 -3726--9264 1549-4760 1127--7857 5329-342 3474-5310 2462-2190 -775-4757 -2506--4743 3653--9230 1681-3817 -7725-6714 -6930-1501 987-7344 2393-1399 3086-6975 -988--674 8177--9138 -136-1385 5449-3792 4436--5264 -2711-4966 4997--6029 -2606-8509 -3553-3603 3149--2011 -7925-2733 -1048--1151 1313--137 814--7524 -3426-2179 -5724--8426 1275--2285 -8057--1834 -8044--6172 -2719-1838 859-7053 -1275-3390 -194--8753 3609--1270 -5465--5262 -8482-5360 -5877--5914 1824--63 -8191-4987 8066--5484 -3344-1676 3479-2090 3834-4270 -37-6528 6989-3419 3546--31 425-658 -373-1614 -1829--2697 -5536-5818 -2522-9874 -756-5157 3610--9018 -1621--1444 1047--22 -6787--1819 4224--2978 -435-1278 6454-4160 6251-5682 -1981--8517 3208-2008 -4594--1690 -1151--7397 2252-5007 -7864--6100 3839-7763 282-8747 -4241--1002 -2339--3366 -6213-4734 1603-606 251--237 8689--6860 4510-5632 -5863-8026 -4302--3929 2823--7480 4845-3934 -8712-5889 -876--1706 -1094--1 2756--709 -9739-2323 -6786-2203 -7852-4004 -3565--3623 -1492--2954 -2890-8785 -772-3268 -5429--2036 3979--4988 7353-1861 4140-5142 472-4392 -2939--4412 8332--4604 -8657-7875 1976-4234 -2137-6524 -7441-3228 5465--3769 -2651-8848 700--6371 -726-4909 1056--4848 6039--965 -4208-8593 835--711 -9675--7455 -4595-6836 3142--2488 -2694-5017 6612-2903 1103-3009 -455-5302 1059-1610 6417-6340 4194-3513 7911-3579 -5011--8290 -1218--8498 2789-5078 7987-3606 -322--8737 1312--7764 -2686-785 -9745-2450 9191--810 -3586--2830 -2069--1698 3258-1684 -2825-303 9636--4695 2300--1678 -3169-2499 -3290--2696 7102-2186 3347--2578 676--907 -7942-5150 5563--579 -6975-2766 -4816-1332 -5878-1887 5638--7775 4976-7208 -3143--5032 -2762--4558 2598-6150 5044--1527 -9608--122 -2274-2937 8562--7745 -4209-2005 -5392-4022 -6671-4256 635-5114 1156-7277 -5579--4058 7408-4358 -8909-619 2608--5611 5257--5207 2744-5003 -5256--423 -3478-7977 -175--3391 -3886--2572 -6411--9102 -1682-4442 2791--4410 3821--472 3224--7763 -1421--4374 -5399--1412 -9429-3072 8498--8681 -473-3954 -6457--6652 -1512--3662 -1822-6843 4122--5748 7666-7 3086--5834 4145-8745 -3307-6743 4359-9131 -1528--261 -973--3292 2760--5380 44-3531 9045-4120 3382-3694 -1942--2052 -8590-1171 9459--8458 5143-1000--9757 -2106-7000 651-2898 -4822--280 -3959-3098 4225--873 -3600-8699 -2682-8616 -3388--923 -9159--5426 -5681--3420 -1836-2667 -1272--714 -8839-4282 1195-4701 4497--3144 -9114-7102 -6579-1740 4904--2713 -8461--680 -2023--5748 -277--4385 -1161-5257 6115-6019 -393--3300 -651-3904 1372-4383 -5890-9405 -2571--6202 7537-2873 7903-1285 -5137-6651 4936-325 2407--3216 -2299--2985 -955--3819 -8539--7664 4737-9006 -774--6967 2664--3906 -6178-1597 -4746-4856 6806--2409 2089--5376 -1635-6713 -2437-4900 8659-6185 -4611--2576 -4779-1225 5482-672 -4027--2331 936-4020 7675-7313 -1389-1237 -4733--928 -7392--3595 -6850--1926 -2054-369 7649--1474 6502-5331 8379--3775 8307-922 -3541--1026 -8076--530 -7067--3219 3830--7414 3578-3619 6829--933 -8874-4764 6439--4252 -188--4644 2251--8615 -577-4637 2126-8047 155-3460 9269-4697 -6987-2573 7674--4598 -2520--3903 -184-2270 -6979--1651 6235--2357 8987--2852 8827--7871 4199--466 6752--5687 -43-1553 5027-1608 -3874-4468 7896--4853 -2882-2882 -3855-8312 -1222-2468 5890--4820 4091--5239 -5801--4929 -1355-8047 -4484-8648 -1391--1571 -8197-2175 2776-5832 -366-5245 -1838--972 4612--7463 5225-2564 3742--6277 -5407--8211 -5318-1621 3-2688 -6610-457 4880--4284 7010--3463 3225--2483 6287-5948 7882-5937 -7122-9972 452--4402 -5518--6369 -6076--6698 -7183-1302 -9699--4917 -2532-3962 5701-6775 5522--4019 -3766-1101 4--2075 230--2159 859--8694 2562--7383 -358-618 -9213-1216 2141-2653 4768-7605 -2682-7321 -4523-1252 -8933--5637 1137-9465 -1822--1539 -2168--3231 4587-1551 4309-601 -1026--7106 4851--5851 927--5634 -434--2007 -3371--7830 734-7635 1434-4572 2589-2473 -8216--3019 5089--4452 8668--1531 -9245-4927 -1032--4455 6442--7152 3385-6504 -6018--9694 1387-712 -5682--4926 -6323-4191 -2095-2290 -4336-300 -2082-1411 -1431-1582 2801-341 545-453 -8151--429 -3935--8584 3133--3152 -1884--2198 8474--8101 3261-4927 -3504--957 -6550--2670 -6297--7116 3144-2897 -4168--3004 -7917-3871 -7001-2622 -112-3448 -2667-5916 -7788--872 -6410-1957 780-1307 -4396-211 67--64 9362--772 -8302--3450 -5477-5988 -4160-3681 861-6948 -760--5267 -5756-4826 195--4248 6288-9716 2223--9764 948--5629 3717-1033 -7454-3043 -4007--2515 1116-2298 4358--4355 -3547--6777 1635--1070 -9264--4335 6673-4020 -8109-2321 3769--6364 3002--7349 4646-5470 -7601--3353 1085-8933 254--1315 8553--5177 -3949--3051 4238--2697 -3432-208 -6982--2964 -10--4814 3854--131 2502-4951 -7904-2731 5438-3113 -7979-3621 854-35 -5612--2945 -2271--269 -9046--970 4080--7133 -275-7518 2753-682 4115--6610 -177--4614 -4771--8699 -302--1619 1515--2623 -8427-7572 -5893-1611 -255--362 6090--3041 -786-732 4845-5827 -3343-1650 2700-5590 2875-6520 6935--234 -622-5951 -3946-1672 -430-8068 -4251-2426 -5802--3415 3551-3265 -1616-2101 -1927--5903 -5387-7918 -5893-4197 3978--5438 -7247--7377 -6238--2733 1656--4418 -7436-1191 -2906-1748 -7609--3075 6476--6995 4953--3075 9061-2337 3271--7858 -2514--2188 4388--4426 8247--3593 -123-3371 4452-9814 -1358--5061 5523--9348 -3309--8806 1782-765 -9316-2792 3351--787 9094--2819 1471-8676 -3886--3957 8691-8208 4534-4906 997--6380 -1456--8505 102-4961 3791-5196 446-7324 -3617--4603 7480-5666 -5910--6242 -3529-8643 410--1781 -5016-879 -6841--5421 -7705-4246 -2487--1540 -4316-2042 -7881--3256 1746--60 8804--989 7791--671 -1537--6174 2374-3689 8492-8298 3110-2334 3376--3203 -4912--2555 9108-5778 -4806-504 5805--3761 -7724--1462 -3424--7974 -4916--6084 87--6980 1979--4961 7329-5754 6966-7428 -439--8673 -1056-282 6007-614 7425-1542 -1059-9209 3504--6210 2792-7461 169-8282 -2140-3848 -7208--1540 -3413--4908 5478--1238 -5854-5787 5476-7063 4918--4719 1743-4930 -1904-2793 -6331--6121 3492--4500 -2479--7653 -1416-6570 -1414--4725 -3102--6308 -3791-1047 4142--8889 -1117--207 -2876--582 6261--875 1202--5817 -5970-3981 -3146-1812 -9448--4326 1165-3632 5493--5582 4601-498 -6385-6783 -2622--1000 8324--733 8107-1227 4792--6229 988--7387 -1883-1557 6176-4603 -1775--6850 1904-4306 7140-4465 -3196--1212 -3131--685 7768-782 -1926-1917 5350--1459 2062-5194 7028--6116 -246--6623 -3501--2813 -3696-1763 -7572--4801 4902-3831 204--6984 5113--2720 -3326-7865 -967-101 -8548-1801 -4344--1356 -2696-7601 5366-7151 -2707-9256 996--5451 -4684-4784 5226-1606 -5938--1079 1306--1848 3365--5564 -662--5527 4103-781 -2543-7571 -3023--2993 3558--6674 -4892-2641 -5389-1696 -5732-7727 1663--5320 -817--3396 -1826--9931 -935-1544 -7098--6011 -3413-2765 -7808-1001 2992-1957 -1783--1760 -7137-1152 -5106--3230 240-6711 -6718--1224 4053-3699 372--7000 -5699--3406 -8348--7048 -4866-6488 -5581--3875 2756-4701 -7066--7586 -1049-2361 6774--1764 -8919--446 -9921-5740 -2374-8771 -2717--6014 2892--6403 6946--1561 -4529-6676 -4005-2695 4556--5675 3902--1387 4744-3842 -7442-1182 1142-1264 2356-2750 3009-3776 -614--269 -1512--3062 4132-782 -5640--7257 3710-6126 313-6401 3291--4267 6563--9009 2843--4967 2269--6584 -5650--8671 1164-2963 -3358-2353 -739-4882 -3754-1059 2925--959 -6229-3798 391--8463 -2376--5573 3085--2332 8667-8102 5343--2313 -585-7877 4896-5303 2314--4610 7041-6451 6713--1736 -9221--4400 5280--985 6309--1402 -883-3249 -136-1776 3976--3616 -2025-5863 2851-1108 -4554--6538 -4270-2346 2298--2134 5348-3203 -4941--5304 1591--2326 -4165--728 4982--9860 532-6973 5156--5257 5841--1540 -3331-8960 4375-934 8448-1001 9245-372 -7722--8360 -1067--4383 2098-9180 3897-8941 -2391--6303 -2852-3092 1074-6973 -6599--1044 -3362-1065 -7751-8842 -1788--6092 -6749--4956 -7822--42 -2464-2410 9561-6739 7334--5977 -6441-1588 9416-4604 5550-526 -6474-3768 -3482--5776 949--8257 2297--9511 1526-3393 8130-4349 1731--1158 -4064-190 5128--6130 -508--172 -5875-6524 -2968--6803 -5111--5750 3841-7802 5967-809 -1398--6717 -1918--387 3003-1769 2259-3682 -649-792 2975--8945 -79-3703 -2205--4678 -6505-5858 -1121--5949 4380-6212 -1956--83 1166-4771 2016-108 236--2488 -2776-7797 -2854--7203 6287--8653 -3782--4009 5077--2534 -8473--1363 -702-4823 -7313--4122 537-756 8939-5543 4792-1221 -1649-8675 -1911--1977 -1715-8680 -1007-6951 -2498-4053 7309-2516 -9460-2584 440--6225 -7369--5521 -6118--6814 -3373--8403 815-1487 -8353--1217 -4006-8407 2640--5465 8358--1892 2853--6144 2745-2323 5674--974 -3728--5385 -6600--3252 5597-43 -4127-3682 4786--4632 -592-1642 -2492--4971 5987--3157 -3121--3410 3997--1094 -1444-401 -3581--3874 222--2810 1945--4102 6704--2139 -2320-4215 465-805 -3956--1912 5852--3916 5629--6541 1319-6271 -7253--3570 6328--2195 -6738-6342 1756-4013 6926--1110 -757--6496 2845--4273 6898--843 -6835--7146 1862--6322 -2583-901 -8914-2733 -7184-5464 4143-6778 5020-3449 -9268--3482 292-5961 4409-1567 5346--2189 1991--3968 -5157-6204 -965--2016 -908-3887 -2089--1701 4255--4550 -3681--5018 -6814--1617 -5534--7899 -4142--3542 -8647--4719 -3270--504 4369-5151 -2720-9334 988-8147 -2020--6845 -3939-3768 4074--3517 -6201-6718 -6197--5191 4519--8602 -4623-5927 -5627-835 -1444-5824 6702-952 -4246-3676 -192--5314 -6431-3212 -2904--5313 -6599--4973 5287--1098 3741-2091 -1085--2420 7004--5526 7491-4052 -5105-1622 8278--9010 -2105--9917 1267-4317 6120--79 7120-5741 -5579--283 -1053-888 1471-1055 2187-5567 -8227--2946 -1131-4388 3049--3297 8567--8470 -867--4585 -5184--4602 -1876--5416 -1363-5514 56--2592 2491--750 -3374--2140 3628-2422 6488--7060 -6126-3712 2373-2853 -1709-3197 -5654-2481 8544-5407 5039--888 -7186-1501 9330-3472 4726-3593 -1246--5946 -6313--5328 -5149-4547 -4148--8386 -2079--6507 408-2388 7102-1491 -4136--9855 -962-1293 -2823-5429 -6675-2540 7684-2119 7983-7983 -2618--1804 -1056--1309 1009--3221 598-4719 -8134-6759 -5236-4890 -5070--6797 2017--1728 1507-2784 836--499 4781--8045 2317-109 -1227--3906 1167--3111 5419--8923 4465-2657 -7521--250 -7304-373 4236--953 -4941-9393 -1249-7367 -1592-6285 5340-1755 -8686--4789 2285-9289 -3556--1257 3827--6380 3073--6585 -2059-7681 3099-1675 -6235-2627 2319-8480 -1205-6101 -2484--2117 -7353--2267 7603-8485 3099--3002 2131-6836 -4602-4757 2001-3038 3321--7223 -6023--535 114-7116 -4842-5526 -7450--1605 3739-6274 -1394--8181 -4964--4586 3618--7586 4940--1228 -9757-2766 -8201-7366 3355-6475 5038--3456 3667--7532 5403--3208 -5119--3466 -7991--7540 5121--2156 -4927--1066 -5449--5837 3856--6628 5187-2271 2570--7418 -3417--7969 -1181-984 4868-6615 -7370--6431 5426-5625 5457-9258 3604--9102 -1848--2634 3064--6861 -2097-9021 385-9522 -6--3542 1828-906 -1524-3963 -7302-5859 -4481-3183 4887-5105 7088--1304 6026-3579 -3559--4314 8610-42 3666-4538 1214--472 1869-3204 7249--4005 -6760--1684 6701--9049 1018--7152 4568--3624 -3809--7530 -3941-2085 9312--4757 -2511-6032 7010-346 5443--6345 -6264-9286 -153-83 1498-1473 2729-1163 8215--6407 -6762--8201 -725-2149 -7211--2380 -6679-940 -3618-489 -7820--5148 3755-4054 -7686-4310 7128--1738 -9383-2017 2957--6153 -7519--3440 7784--2935 -6790-660 9124-8358 916-9649 861-3951 -1446-3910 -6417--6918 -4358-9798 1397-4497 6651--1831 -4930-1532 6267-4571 -1547--3835 -5448-2809 4083-3644 436--7709 3277--431 -173-4011 2834--3767 3512--5971 852--3989 -1669-8175 3511-2701 7195-7108 4238--2496 8291-4561 -3479--8214 2388--3922 2057-4401 -3790-966 9056--7904 -3351--928 4600-4063 452--216 -1921--8242 -818-3275 -742-1273 -1256--3397 6031-1024 -4738--7021 -2800--6501 -2854--5568 -4231--1857 -1694-2680 -661--3029 -820-2233 583--2962 -1645-6144 3317--4151 -3630--6011 2926--1806 -6005--5640 5067-3241 -8118--8704 3325--1995 5947-8456 -706--1096 -8073-3152 -9442--1380 -9029--1651 -4438-2814 -9232--7498 2955-3392 1445--2952 5588-8186 -2042--2466 -4844-4658 -3562--3834 -8459--3811 -6785-2680 6539--8643 3969-4641 5386-907 6513-7400 -6583-5598 3677--1152 -5429-1180 -826-7042 -1245-160 4275--4542 7957-761 5698-4486 -4516-1667 -4277-2116 -5558--2860 -9421--6298 -2129--8704 -3435--6096 3503-3833 -3175-267 917-4770 7017-936 -8902-3037 -6078--3119 6675--5078 1484-3877 -7511--5467 2930--879 3099-7347 -2133--4988 -4118-2803 -4917--5217 -18--4824 -3271-4448 1290-5702 -4374--6332 964--1326 -3278-1557 -1008-734 -4018-614 -8287--7989 5826--6594 5195--1992 -4505--1671 6726-2674 8968--6903 -7198--5963 -1523-5061 -5655-6888 5944-6586 7400--3215 6595-1554 -3673--1906 -842-4054 -7641-5340 -1343--4800 -7633--1989 -5556-6325 4726--7166 -5455--6727 7113--3810 -9083-2584 7331-7933 1331-4155 -2857-6294 -746-281 -5146-1344 3270--4862 -895-4658 -4312-8465 1331-4937 1861--7726 5378--8071 -5776--8530 -842-162 4284--2783 -2303--7302 627-5999 131--5457 -3043-8208 853--1622 6696--724 4508-2805 -2161-3057 -1787--2069 -8687-2261 -8985--128 -928-8677 1793--4474 8523--3674 5382--4120 -5006--7004 -4296-7405 1477-7059 4012--64 3539-1192 9271-6241 -3226--2555 531-4094 -3486--2720 4082--126 1543-3855 4085-4815 1625-41 5207-3572 -3587-484 5914-7282 -4123-4176 4380--3714 8429--7274 -1661-5437 1450-1308 6488-684 2323--4220 303-8329 2401--81 -4261-7787 -5589-6159 -7320--2747 -5688-673 4461-7855 208-6728 -4257--7471 4376-1780 5958-3393 6410--4804 -34--1834 -4359-4698 -5042--9418 -3120-9853 736-1000--5259 1618--6830 -3909--9104 1835--985 1403--7951 4716-591 -5852-7244 4047--1169 -5543-6987 3664--4022 -2660--6731 -2066-7713 -3096-182 -213--2367 -8783-1108 6401-3617 3868-5092 -5201-5041 -1600-8161 2--2944 -8119-1069 9228-5443 -6098-5078 -6433--3262 7898--4942 4711-1071 -9907--8562 459--7485 3443--8325 201-2602 6693-4765 3351-6364 -7710-1039 6127--1749 -5288-5175 -1600-415 4245-5443 4471-3797 8979--6922 -6525--8600 -4146--5012 1960-5556 3507-1189 4707--8675 -3596--5978 7350--3071 7525-731 229-790 -9682-7559 16--7013 -4484--1130 -607-2097 -4215--4 -1623--7823 -285-5284 10--5449 7058-8755 -559--1100 -4025--6384 2635--917 -8231--1326 -4357-549 6401-1576 -6502--8686 1601--5256 -5945--435 1979-63 -7400--7258 1678-8884 -1269--2513 1808-6968 921-9188 3345--8861 -2970--1408 -6535-782 -2454--7581 5079--2847 3831-4835 1768--1648 -5503--6945 2171--8064 -5707-1347 -4952--3849 -2970-3029 9303-6050 -5919--4615 2429--1304 7001--3139 -4281--6103 3928-6593 4742--7546 4340-8117 -3473-1768 -3720--8422 -858-8845 4100--1280 -6559--1685 -4647--997 4136-2828 6519-1214 8009-1300 -2097-7473 5163--4317 -3305--1555 3025--3742 -5868-6878 1004-3484 -3392--2578 8306--5192 -6375-5705 1375-8327 -1961-82 9114--4006 -4597--5468 6301-4731 3798--4196 -7363-6718 5333--3080 -9261--7586 5758--4926 1065--7356 -4172--561 1301--6182 -7323--8492 -4514-1193 6780-3077 -8235--4448 4716--3492 1918--5314 7992--1879 6163--269 7128--6395 5628-14 7558-4127 3519-4973 6285-779 1533-7065 3931-1419 -4687-8649 1349--5886 1778--5781 -1283--4929 3379-2683 -8476--2052 4207-3914 2303--5237 8318--1399 7288-7522 -1504-1970 -7180-9135 1885-6575 3162-4354 204--6171 -4174--6813 1492-3558 5237--7418 -6465-1395 1798--5985 4960-7775 -666--9076 75-364 511--834 3298--4729 -5686-1322 9548--3323 3015--1860 -7931-3129 -5097--8033 4184--8918 3828--4393 1260-1378 9263--5316 502--8637 3985--7857 -2569--7779 -5096--7210 1475--5544 8194--1323 -4557-8779 -4112--5065 3622--2175 7024--8628 -2618-4439 -8433-3361 -1739-3690 2119--2691 -4651-3001 1239-7119 6963--826 6179-5604 5034-2474 -198-4678 -2537--3618 -280-4821 148--2614 6345--1210 -6390--6627 -111-3738 -8820--2281 3043-321 -7123--6293 -5903--8549 369-7349 -3322--4888 -1271--9090 -4047-4560 1594--7394 -2953--4742 -234--301 4910-6811 3895-606 4739-6570 -7071--416 -8295--5432 4716-6621 -5061--4337 6772-3908 -9107--2941 -6933-1645 6019-6932 4722--7082 -2646--9100 1567-980 8977-3715 8879-990 6668-6423 2439--6775 4701--3952 -2711--4594 8601-4118 -8773--1237 -7774-5720 -7207-3223 2716-2978 4590-2329 -2021--1061 5140-8366 -4277-5170 -8235--1459 -2276--486 -8203-7299 5886-633 -3977-2574 929-4857 -8137-3313 -1734--293 -7492--8153 4838-9400 -2007--4207 2650-267 3469-5905 -799-2994 -7660--9124 3156-5149 5421--9031 -3717-4603 -5037--3159 5898--138 -1493-4865 -453-6993 -1143-2532 -5960--7044 -1652--1444 4896--4570 -3049-4310 6946-872 -2077--538 4480-4521 7956-8978 3778-2269 3511--2214 -5251--3332 -1351--1237 -4114-4977 8216--5206 4872--8481 5142-5955 3269-8710 2937--7540 2467--6258 -4626--811 8028--5105 3268--3958 944--3820 -8173-1688 4929-5050 8224-5663 1792-1678 -7953--4292 -232--4687 -7574--1298 -2527--8278 3679--1735 8135--4588 -2650-9811 978-9051 1215-2551 -8836--1914 -1777--6112 3028-2941 -2613-5295 -5623--4567 -6259-4674 -6163--532 5045-1143 -3946--7648 -4122--5178 -4081-2073 -953--8612 -4111--195 423-4532 8763-5293 7727--8065 -278--4949 368--5875 1510--6413 2115-2440 7291-7455 5709-327 9694-2067 -9597--1863 -33--3750 -6577--2905 -4671-8477 -1281-5430 -1886-8797 1635-6578 1501--2233 3597--19 5030-4772 3959-5041 3729-1315 1548--9725 1246--8137 -3822--9018 -1943--191 7009--6458 -7140--4405 2267--1470 4192-5326 7135-9281 -200-5169 -6975--4296 8123--478 2535--3381 2793-657 -3648-4183 -6998--2473 -2918-7380 -1110--4548 7615-3824 -5226--7671 2287--5932 7616--7922 376--8673 4951--736 -5188--8784 -4340--4958 -3654-4292 3815-1893 5338-6509 5491--1694 7239-2557 -4566--7677 -2675-4745 3903--3870 -6337--1013 3528--6215 -5080--102 -8265-242 6299--3404 -4239--6800 6335--3864 -1554--8835 -571-1244 3596-1618 633--1576 -8406--1247 9681-6526 6087--1400 8260-7393 -2580--6743 -3384--8472 193-5855 -1298--6557 6228-6680 3330-4643 -7897-7564 -1870-7726 161-2170 -5617--8496 625--246 -3197-6575 6528--9216 2421-2399 7832-3350 -5841-4764 -8623--1171 4602-2369 -2283-564 -5258--8942 -3903-17 4103--8643 -997-8795 -1812-5954 7873--6687 -3346-1660 2024--3886 6991-5267 -6185--1489 -5219--3863 -4804-6930 455-226 4316-1893 81--965 2020-5511 2027--1948 -1566--2705 -1896--5775 1894-891 5321-4333 917-6625 5110--1076 7756--822 -7052-2267 -1034-4514 6629-5312 2839-2967 3558-6465 2772--7610 -1090-732 -8759-3442 -5129--3576 -4709--7547 -2708--4343 -3703-1271 -1313--1468 -5663-5643 -7757--8773 1491-5961 -78--3351 578-3843 5215--4693 -8355--2666 5812--7107 3645-346 -8390-6202 -4807-7019 -3151-3579 2536--6355 -2930-2280 -8371-8649 -4752--1360 7142--5777 -4473-9387 -1561--4197 2768-1049 -4223--4664 168-5649 -2030-3077 215-2769 8784--4083 7034-2060 1889-5606 -2373--8230 -3873--8551 -4739-8693 961--6946 2672-8547 4637-1145 -6003--7233 -947-5260 -2476-7668 -1123--2846 -1279-184 -4186-7419 -5374--605 -4246-7125 -6630-7292 -6630-5546 -3484--6282 5248--5577 1394--3395 2876--3466 3187-1517 -893--2357 3027--854 -4166--1609 -7616--3482 1825--3638 -6187--6757 2832--4824 5655-2501 6797--1217 3813--6255 3999--1711 1977-2127 -8780-9227 1087-4684 -2929-4796 -2815--9017 2398--765 -3140-1460 -4328-4926 -6090-688 2945--6650 -6972--4805 26-8819 174-431 6027--6750 2633--3765 -7880-4980 -2829-4108 5818-5650 6504--2189 -5052-6195 4850--7547 -3357-3019 1767-5786 -6682-31 4797-1140 3823--9256 454--7598 -1205--5840 -543-338 -818-7635 -6023-5472 -2969-3696 -9120-9900 497-6834 3631--2630 337-2717 3220--5996 7476-7890 20--660 -7329--5472 1159--5394 2136-7918 -3113-166 -4779--2371 -5634-2548 -5068-2086 358-1930 4850--6306 6669-8216 -4521--1145 -6670--1600 -3719--682 -7878--382 -3584--9540 -503-6215 -5332--7788 3279-312 -4156-7838 -2127--5674 5692-2161 6714--4662 5526--9089 4048-7416 -547--268 -5068--6346 1763--9517 -2142-6234 191-2046 1979-244 -8333-6072 5339--1833 6972-4623 6668-3697 -7787--136 4888--1949 4658--1632 2213-1306 1674-1564 -9364-2572 -2814-5857 -552--5517 -4233-8769 4754--9519 322-2232 8917--4436 5445--5968 -6320-2266 6899-1186 6050-7803 -5965-65 9234--2923 -4539-1322 -8995-7335 -6253--1467 -6187--2792 2958-2611 3285--1566 -8277-4613 4449--2002 -9750-6770 -7202--3700 8891--765 7381-7170 1615--3748 -1627--4920 -6557--7140 1048--2658 5153-5419 463--9601 2351--4763 2648--2216 -2496-157 4178--7177 -240-9017 -3298--382 -6240-259 -5353--4486 1360-1326 -3372--7163 3116--7600 3440-489 -7877-7544 5138--2699 1676--5005 1670--8005 1100--7693 -2487--2021 -4906-9766 -543-4821 1334--3948 -3062-1388 -917--6709 1064-3433 -6278-1309 8688-211 -3768-1435 -7062-3263 -9244-725 -5211--9 7633--5000 6505-1446 613-2982 2209--3432 -5663-4823 5829-8027 265--7425 2651-7578 2764-1327 -3829-8905 -591--5246 -7619--3426 1355-267 1456--5614 -2-3599 6862--6070 -4128-6534 469-8070 -864--7779 -3172--2285 5919--4318 7019--8106 2353-3053 -4177-6449 -5096--6665 522-507 9193--3212 6216--8843 -417-8429 2489--5341 -6430--5044 -5095--3899 -4549-7353 -5478--2189 -331--9286 -2401--25 1095-3705 3507--8938 819-5707 7183-3888 -5984--6128 -1425--4814 -8675--6183 -6517--796 4110--2826 6105--659 8652-6773 2105--4710 -2662--4193 -8669--1768 302-7452 -4319-1775 -217--7915 -4112-3735 -5244--9264 2770--7969 -4795-940 -1356--1377 -5186-1280 5528--1120 -4012--3201 1357-923 -1205-3908 5429--6553 -3424--589 1987--4408 579--2979 -9295-5222 -6318-6810 7086-2649 511-2243 -2228--4238 3586--988 -2517-6477 -356-3229 -4255--7120 4101-73 9385--8329 -2452--43 -4188--336 5463--7639 801-773 9123-3157 9000--1733 5900-3858 7959-9 -7423--2828 4830-9118 -2047--5315 6719--6283 6994--9911 560-2337 9231--1357 -1819-2390 -1613-1231 7551-3786 1360--1342 -7952-4125 8955-2741 -2371-1333 4759-6057 1901-8681 -1853--5875 543--4847 5723-2044 1961-1064 -3698-3294 -6736-3654 4677-264 4785-3779 9105-2448 -7449-3986 8081-1634 7496--4118 4203--3073 6796-3373 -43--2714 -8273-3221 -2015-6928 -2626-2233 -1066-6511 -3436-2968 8902-196 8410-4109 -389-3973 8332-2605 6734-1344 4030-9620 -521-4407 6573--84 3408-4156 3133--968 6083-7961 2968--3725 3881-373 3795-1415 8820-9070 -3559--2498 588--4559 -6587--3549 -1721--3491 8601-255 -6317-3563 -5291--6113 1893--6268 -250-224 -6245--1819 9664--8005 -4657--4169 4942-1161 7199-9718 573--6019 4854-4649 -4528-5115 -8574--5991 2960--1410 1869-2092 7353--3883 -7471-6928 3921-1520 -8847-38 -7811-6507 2554--80 3180-1522 4383-2185 2318--9743 -2188--2998 -3555-1409 4297--1836 -5345--5609 -876--1850 2071--8562 -1483--5771 4750--1947 195-969 9678--7077 -5322--1256 -287--2198 -3543--1079 43--6308 -7403--6820 4067--7543 -4991--7812 5972--5233 4620--9218 905--962 -9242-5364 2121--2011 -7794-7029 -4938-3814 -3366-673 8596-9207 -808-377 3618--2459 -6933-6113 3315--5134 -3280--1319 4015-7062 6872--5795 -4338--3521 -4828--5256 -2486-3222 7288-1866 -388-3066 -2000-34 6274--7117 -6239-2703 7012--5165 3501-3866 1185--252 -3086--1934 -9710-2391 7064-8361 4976--4286 -3188-9138 3353--4859 674--4778 3347--1572 9322-823 -6561--587 -14--6030 -1093--6383 -6492--5946 -2165-8962 -385--1064 -7789-924 3602--4037 -6272-1688 422--3696 365-1057 74-9205 -2714--860 5072--1007 9383--1496 5624--7863 -2325--236 8946-7568 -6304-8833 240-6552 -1950--4538 -8290--155 7285--1050 -820--293 5211-1107 2623-95 934-5936 7331-1547 3447-5487 -432-130 5091--4114 4782-5464 4439-5985 7124--4599 4274--4449 3849--2621 8057--2135 829-374 -5739-779 -2837--5095 4902--8394 722--746 7747-7573 6152--2455 4024-1179 6732-714 -6470-6139 7295--8943 254--7849 -5091-6192 481-2942 2829--689 3563-711 9425--3566 -6021-8871 -1288-3189 -7937--4656 5217--5851 -6573-1474 4584--1309 -5351--6998 -6003-2174 -4634--2510 -8844--2029 -9152-5190 -3498--4651 5384--2912 -8966-4428 4034--7615 162-5467 7666--6787 -6365--4577 -8431-1736 -9298-6127 -4677--1026 -1043--5604 -6812--4261 2730-4911 -6737--6385 5675--5103 7797--459 -3427-2770 3599-717 -4981--2843 -9336-63 -770-8799 870--3337 1347--8666 3080--152 -5024-6186 -5256--14 9805--5103 2898--445 -8436--9734 -140-5930 -3857-5183 -4285--3298 -6456-8451 3528--6565 -3291--2661 1371-8753 -3908-7770 286-2631 3275--3358 -3237--1442 -3629-6558 329--7033 3786--4238 -1472-5794 1760-6921 -764--2780 -8648--7752 6046-6950 -5764--6865 -1227-4378 5373-15 -2107--4133 -4353-5972 -2254-2174 -8724--1946 -2748-8135 -5631--3162 -4027--4714 -5846-5658 -1556--1833 -9132-4575 6910--6583 4650-8434 -2223--4630 -3865--7918 -5167-1098 6650--624 1404-4741 2737-2085 1953--9649 1648--1996 -4493--4981 7666-3724 -5194--7811 5699--4159 -7254--4798 -4513--2566 1627--1151 1802--7222 -2219--8213 5456-2413 4890-5808 -8008--9433 2339-1000-2446 -1893-4537 -1456-1595 -6319-4454 -1441--6551 3301--1986 -6849-8636 256--1596 8768--8142 2718--2116 -3675--1967 4341-5909 -6586--8020 94--3355 -4291-5332 5802-7118 -1148--6084 2395-6632 2416-9471 892-9782 -1074--1871 -7685-8404 -1500--2204 -4505-8922 -2034-6439 -2424-8486 -5181--393 8277--285 3472--64 2146--5299 -7409-4326 -1215--6106 -4224--6841 -1556--179 5731--8063 -1467-2118 -7908--5769 -6274--7526 -4093-6146 -3139--1373 7569--3197 -7926--7660 1213--3965 5759--3776 -4254--2482 1993--1074 7218--5613 -3757--7852 -4384--908 -165--1883 -4313--2072 1305-447 8846--1307 -3985--2189 -4641-8974 2717-1894 -6374--3854 2709-3816 2585-2441 6609--2457 2738-2112 5079-4285 3722-3511 -2487--4102 -2072--7484 5728-6150 7356-4479 2509-1046 -2551--4815 -6747--2583 -2211-4640 1437--4295 -5211--4204 -1163-5778 7973-3334 8887--4429 3892--9927 -936--3547 -7356-6439 -5597--2594 2231-5736 4964-7465 -2717-6092 833-5656 998-5099 -2617-9392 2652-3371 -2185--2971 9378--2052 -8100--3764 -558-4877 -8694--1767 -8481-7503 -2498-517 9315-5477 4657-6730 6429--8001 -3179--1930 -9068--3079 -8418-4385 6135--2575 9531--3129 -5620-1214 -9722-617 1946--3930 2785-275 -4379--9025 2717-2024 1744--1041 -4919--1703 -2544--6986 -3178--1209 9017--3859 7101--5419 -8288--600 -7015-4044 3912--3606 9255-154 5410--5439 -3597-4875 6168--3746 6333--8168 -3974-7631 -3817--7816 -1087-3691 5435--5211 4215--3590 8883--3399 8003-8342 1473-2147 -5474--2614 -2823-3964 -8443--1268 6685--6227 -514-4592 -8130--6085 -6992-5113 3420-2984 6447-2403 2597--6866 220-3782 -5951-6484 -1199--3886 2853-4890 -3309-2154 1055-2773 -4953-9008 -2275--6670 -5749-7313 673--182 -5310--2512 -3035-6670 7177-7776 4384--3712 -1204--4003 -5011--2758 -5390--6924 -489--7560 -6500--4924 4754-2591 -6510--8329 -4720--1927 -6524--8025 -3819-6466 -431--4113 2251--1040 -3775-3362 -4214--6389 -1347--6635 -4901--2141 -9524-5880 3826-4223 3968--6052 -452-2272 -8354-3914 -2368--5045 6159--221 5196--2695 4499-2759 -335--5273 -1804-3363 5024--4313 -6607--2309 -9556-2896 6729-4601 -7135-6085 7320-2284 386--5161 4927-4185 1823-3640 -1894-7945 -4027-7221 3025--1240 1736-1891 -4149-640 6490-7129 4126--2634 -2592--354 -997--5759 -6506-7969 -796-3329 -4626--7678 -324-3247 5083--9092 -1561-4904 -3973-8313 1448--4069 -6206--170 -190--1653 -6081--4527 6657-2546 -4773--7981 5633--7375 -5333-5758 -1674-3370 647-3095 7622-3068 8623--6867 6505--226 6597-5502 5461-6434 2939--2501 -2540-9059 521--1259 703-3401 -5699--2667 -6585--280 -3585-3746 -2844-1739 9547-2437 -3169--7134 5145--3253 -8257--6358 885-5531 -5348-8295 2690-676 4642--1760 4203-1114 5006-4505 1488-4455 6283--2271 5068-5134 5959-4430 -4515-8764 -2154-8534 -4970--8761 -149--3477 3703-4758 -1868--5331 -2293-5102 -3867-1476 -9039--497 3858--1101 -2833--3625 1830-3593 -2022--6698 4569--7191 6418-7006 4439-2893 -807--499 8095--9437 1668-2550 7552--1243 -9444--7135 -6785--2519 8701-6058 -7447--1884 6550-323 -5865--220 3888-7049 -1036--5850 2406-7146 3822--1765 -8315-5686 -7502--2048 -4148--1456 -8178-6834 -3733--459 -4649-6355 -4948-4369 6058--94 2120-5771 -4118--158 8689-1252 5572--2988 -1067--6065 -6512-1057 5095-944 -5996-9777 63-6857 344--3318 1881-2342 5416--8084 -1090-4806 3181-8562 -1496-3668 -6128--1725 1453--8774 -2993-9017 867-1543 -3756--6533 2800--709 -6266--3845 -8141-8266 3373-4944 7975--1598 -2788--6935 796-6505 4078--9467 1531-5839 -4059-5016 2941--4776 -2406-2284 2885-1722 5267-8250 -3454--1347 -7759--3389 4030--8871 -2845-5006 -739-4765 1576--7451 3573--3745 7751-4186 6535--7455 -1490-1995 9455-2490 -6457--1070 8478--8298 -1885--3927 -4533-3906 4860--1408 8510-6631 -7263-5056 -3785-7962 -1488--3408 -2727--9437 2099-1630 6512-1700 2147--3095 8204-5856 6959--5288 6341-1836 5164-5437 -5766-5797 -2147--3639 -7073-4282 8021-7350 6100--8030 -4507-5212 5566-6659 -5903--7324 5097--1181 5632--7085 1467--7484 -3814-1489 9172--8100 -3779-3649 -8799-6019 4702-1877 -6387-1131 921-8316 -141-8767 -1253--920 -6646-1755 -2159--991 4989--6096 2095--922 -3035-883 -8342-525 -2282-3508 2194-7400 4799--3112 2355-492 -3598--8199 -309--2056 -8742--5978 -5198--4322 302--8151 -2893--3115 652-801 -6905-5980 -1946--8387 5242--2103 8133-6217 -5377-8515 2150-7205 -3933--354 -7336--6390 -5117-2067 3316-3662 -1520--4756 -4772-7372 -3048--9032 -3545-5379 -6221-7251 5075--5376 -1345--2533 2121-1608 42-8420 -1607-7202 1615--4638 -2066-3098 -6257--5510 -4475--2321 -9387-3605 7692--2927 4373--8441 3417-490 -8800-89 2699-3996 253-2256 -7739-1431 8334--2671 4100-4337 3785-3388 -4185-3689 -4940-6693 -31--632 -4256-832 6985--2432 -8323--4079 -289--7097 4314-4863 -2388-4030 691-2600 1290-701 -7649-2638 635-1969 6409--2007 6374-8535 -3136-2865 -874-7450 4577-2152 7529-3810 930--5280 -2397--2661 9402-6561 -2146-8413 4627--4930 3660-5556 -926--4868 5634-1269 6332-606 6254--826 3804-6802 6749--4811 -2634-6335 6595--6089 5581-6092 -5007-959 -8580--7742 -3268-4677 3190--8594 2105--3258 -6584--3734 -8139-2567 6628--5395 -6346-2468 8953-5420 -3291--5269 4197-1830 7772-8926 532--3195 -5148-600 4738-2421 -870-98 1251--1650 5857--9591 -434-2653 5236-6595 -6064-3201 6279-4813 -1404-6460 -905--7910 -3080--4746 7344--925 4225-3948 -479-2105 -7431--589 9379-4914 -5454--5741 6713--2936 3542-5193 -6537--4952 -87--8304 4901--8271 4933--1696 9425-8346 -2706--6023 -6597--7039 913-1531 9528--835 -6038-7268 6528-5505 -766-9748 155-3758 -9189-5476 -5789-7895 -4398--1745 8295--5370 7588-4048 1334--755 2366-6645 -1029-9037 2619--9475 -800-5239 -3500-5104 5891-8643 -4212--3565 7987--645 1203-5635 374--9808 -804--2801 3317--9852 725--8243 -702-7249 -5262--1582 2016--4321 5146-5415 7597--2922 3062--4274 -8659-3274 -4802-8481 4858-2906 4982--4001 -5561-7669 -4849-8918 -2295-704 -8073--4617 -1339-1560 -8534-1099 7642-7061 4923-3427 822-8399 -2195--5055 -4331-7411 -3203--6698 3216-3240 7442-5282 -3009-546 -259--687 3926-3346 1618--6481 -2638-377 -6641-4006 -7842-7112 -2916-2561 -2222--179 643-1459 -6384-923 878-2015 -4703-660 2411-1325 -6540--7712 3624--7601 -5173--560 -7320-5613 -4625-2629 -2644-2695 7506--7411 3401--8002 3865--6506 -7247-7040 970-6494 536-6784 5912-3630 -6975--7068 -1174-225 -9468-5086 4830--1337 6900-3640 7993-2313 8481-547 -9449--5727 6553-5089 1534-4241 4092-1831 -5157-1455 -4752-770 -7837-6389 6029--7819 -5002-2545 3202-8820 -1754--7009 5635-893 -1199-3698 -7338--3393 3161-3823 5297-6811 -977--5846 1665--1681 9720-4402 3666--3192 4428-5234 5907--6151 1630--6008 -6726--3149 -6754--2069 -9139-2439 -6494-107 7095--2993 -1893--7265 1877-8672 -1266--4594 3564-2650 -3700--5034 6067-681 4326--3300 -7912--1532 8605--1620 -5310--4046 -1477-551 3338--3538 -2980-6542 -4448--4149 -8559--831 -338--6574 5448--7072 -5062-79 -905-762 6730--6655 -1563-2857 6726--6742 -7231-8441 -2952-9170 3944-450 7833-2930 -7898-1145 -7417--1524 3869-754 -9507--626 8502-2160 -283--2827 -1844-663 -1477--2294 4818--6739 3304--107 6767--3562 4504-563 -2297--4293 -4954-3909 4265-3992 8647-5589 -7037-6743 -7319-9096 300-6163 -1524--3760 -5148-570 6516-845 4065--3311 7535--4295 946-6415 -1821-3570 -2114-6031 6234--6553 -673--881 -471-3750 -2198--7668 -1926--8575 868--7270 1754-6111 1155-1796 4691-8813 -1955--468 4318-3169 5672--5152 -1881-3053 5016--6399 -4478--8907 -2474-2309 1038--5215 7852--5393 4188--4504 -8326--5974 -6916--5270 -3207--6041 1241-1826 3912-1147 952--1880 -3472--1695 2881--1094 6596--8860 -2130-7181 5524-6080 -7097-4395 7150--6101 1917--9131 -2971-679 -1758-2304 5870-846 -3271-4720 1246-946 1283-7416 641-6198 -6803-2373 7821--1705 7447--8580 -246-5738 7835--3873 6877--1562 -4099--9059 609--11 -3643-2220 -3939--1555 -7537--8243 5545--3364 3773-288 3453-5594 2734--2803 -29--806 5384--372 -697-2230 -4188-5596 3770--4450 3619--5514 -4561-5722 -7883-3188 -940-8441 405-7240 -2195--515 8770--2394 -6072--6687 3307--6472 -4594-296 9725--7878 -2298-10 4780--362 -8607-3577 -1778--1981 -2331-5459 -4001-3278 -6193--7209 -5886--4393 7404-3426 -8560-6969 6932-2896 760-7303 878-34 8060-5534 2855-1745 -4303--2884 1728--2954 1563--5081 -4852-3235 -8358-4606 -4156-9808 883-2409 -1520-487 -7563-4266 -5526--9574 1587-2563 -7277--5577 -6578-4355 -7640--6114 -5349-5712 -3507-5713 -7979--106 1594-7898 3045--3275 -9063--3939 -5201-7158 -250--8302 -1323--676 4332--6510 -6829-2282 -4481-6507 -6847--3365 3007--8658 -4661-8584 3626--1534 7854--7623 -2995--3108 7990--5563 -1887-2177 -1080--9100 -2102-1561 2380--8716 -2181--897 9303-1952 -4636--2240 617--3495 -578--8649 -3636-3807 5103-4307 -6126--5813 -4221--1842 -6644--3738 7867--6947 -1842--4444 7588-797 5374-4802 -904--7195 -2479--2759 8655--9323 1078--2521 -5736--2611 6223--7303 -3256--8207 -2195-4766 4037-396 5171-7537 1961-5344 -4878-1576 3981--1744 -4376-2560 -1624--2764 5813--2063 6459--7196 179--6007 7641-7115 -4053--5169 -8528--1877 1995--4363 -7364--5052 4873--1548 5096-5406 8015--2768 6707-6222 7809--1800 -77--5739 -6869-7581 -65--7299 -136-6477 1937-2955 6683-7057 6141--1 969--790 7601--4784 -2191-2961 -9369-2869 -5407-1783 -937--4178 416-1106 1581--833 932-7095 1658-5829 -7835--1577 -8092--5900 -3809--649 -6993--4797 -3890--8022 -3297--6070 940--3844 8293--1819 9222-292 -9448--3781 4529-1274 5416-2032 806--341 3529-8969 847--971 6883-7243 6057-6021 -2082--1816 1686-3782 -7922--9469 -412--4096 9084--3963 -1488--7169 2637--6074 5010-8971 4158-5785 -8001--6581 2779--8004 -237--7663 3125-4263 4806--9010 3957--1652 -9810-3603 -362-3888 -5398-2915 1164--7889 -3366--2673 -639--3499 7685--6388 -1905-560 -4390--2590 7281--5220 -5238--1236 3170--5597 -1930--4538 -827-2735 -3134-5923 -2031--3541 -3673-2591 1624--6016 -2171--5803 -5033-3837 7675-1165 6740-4461 -3414-2719 8413-84 3085--1074 -8869--5464 6901-9736 -1895-2967 -4882--34 -9396-3872 -2337-2045 6246--211 -5543--6931 -2434-9429 1421--995 -3687-1200 -9686-3506 -9206--4588 -6665-135 -7458--227 -8800-4431 -3037--2962 8472--1622 -986-5862 5154-5242 -8154-788 -9304-4436 1639--1279 4340-9660 -2072-7841 -927-4353 8295--5336 -7678--4206 -3312--2780 4792-4141 -8529--4989 5266--2261 3199--3227 4350--4113 5133-6614 2239-2184 7367-1800 6819--1275 2216--3092 -8220--376 -7573--9640 -2098--6482 -5477-4413 -2893-5754 -815-5446 -7906--5146 50-2638 -4365--1696 -4060--765 5652-2320 7760--4924 2169-1426 7081-4805 -6835-1725 -4900-5983 -4799--5556 4130--1905 -369--5994 7406--1935 7484-614 -5651--5573 3585--2999 -2781--7340 -1039-253 -672--3793 -5976-2635 -4748--1908 -4276-2287 3758-2336 9631--1075 2056-1592 -8816-2237 -6278-2301 -8751-9146 2433--2328 -6171--3211 -4332--913 -6361-3307 -5206--5708 854--2804 -7129--5076 -313-994 1814-341 8906--981 3138-5824 -6123--7871 1871-4691 -4405-5787 -2047-1582 -3845-2334 -8309--6244 -2126-7947 62--4243 -8381-9861 -1365-3083 4507-7330 -6741-4543 -4504-6574 810-1541 2757-4326 -1967--6948 6357--5029 5113--1369 -9007-5511 5119-3879 8477-712 -4265--1457 6792-3940 -9066-9487 -1700-1000--6298 4839--6182 5452-5702 -5203--4567 -8030-1315 -6158-2827 -8125-164 5520-5707 4334-5710 1471-3310 -5034-7012 1531--8661 442--5513 1617-1685 1603-2814 -5070--846 -9092--1138 7936-1646 5567--4888 -6642-592 2766-7578 1562--3943 4761-7760 5090-6705 1785--5309 -3314-2438 7812-8966 2731-9064 -218--8084 4389--8937 747--1670 8132--8743 -40--1959 1344-2350 3846--4082 3918--1665 333--5632 -8205-6652 -4594--3701 -5714--8764 -2403--4414 -3237-459 -2047-6546 -5499-6071 -1841--8829 3510-1270 6299--2253 -8980--2956 -2375-49 -698--5026 7599--4796 1767--1330 -8620-3174 712--2569 2059-4382 3236--2345 -4026-5727 -4821-1253 2892-3992 152--5088 8235-4232 6807-469 5928-5643 3566-4243 -4664-6288 3084-786 41--124 -8330--8568 -906--7827 3926-3287 8885--1748 -1369-1546 1536-3411 -9112--1986 3853-3848 -4843--2566 -4138--6246 3759--6497 -2720--3829 2281-2189 -6453-1712 -1666--539 4746--3647 7991-7215 -5964--6667 5318--333 4788--4930 -6424--520 9266--3442 4257--1840 -3375--3566 -8592--883 3045--1138 -7358-4933 -8618--4291 6463--3690 294--2410 -9656-7664 1143--3394 -8783-6110 -2669-8121 -5273--4810 -1891-3464 8107-6837 -6474-7851 3759-7812 -5039--4846 2678--5837 2171-1956 -6194-1073 -8535--931 4220--6711 -6516-5130 -461-3667 3997-8186 1304--659 -1588-4214 -1870-26 -4706--226 -965-4657 5648--3297 -3757-2689 -8597-7686 6093-268 8702--5228 4901-5480 -7609-4872 -6549-1877 4213--9052 1674--1904 5660--8405 -3753-5684 6261--324 -1809--4273 4133--987 551-3175 2032-8643 -2696--5642 1858-2187 -4181-1113 -9035-4052 -7126--6275 6063--3803 -3812--9143 -1018-2925 893--6778 -6898--3667 521--7524 -5566-2713 -5886-6619 -2130--5218 -5775-4743 -1949--788 -4206--1283 2631-3858 -3716-1518 -7144--3321 -8418--381 -692-1612 -3310--3556 8437-8798 1033-2834 -7761--5465 -6127--6807 -2783--1575 -7956--6417 -688-5163 538-3634 -6270-1529 684-2166 -8554-2000 7820-4724 -956--8639 3217-137 6530-3848 -3909-1230 -3901--112 9844--524 8283-7181 1314-4498 -4115-2439 -5843-6423 6089-405 7821--3529 -5986-2750 1545-2750 3140-5454 655--6699 3037-5057 3564-3531 8517--6516 -4376-3121 -4914--1306 -5731-8480 -732--6452 6995--2782 -1168-2923 -7105--3055 5528--7215 -6732-1673 -2009--7456 -4324--7755 1049-5683 7862-2051 4050-3905 -2016-9270 3489--1604 1212-3146 3003-3790 -1233-6614 -3446--857 948-1391 -6440--4559 4398-5459 1321--4439 -1603--2309 2327--4991 4909-4209 -3980--454 -6771--5917 8006--5422 -4697--4145 3833--440 -9091--4712 -7571--5525 1940--8784 -2356--5391 5280--724 5727--7263 4726--3276 4372-5339 -5150--620 2107-5500 -7581-254 -9791-3076 -3480--872 781--1623 6295-671 -1704-372 -3133--3819 1556--8145 -2080--3936 4392-5022 5986--402 -7424--2025 -3303-5021 -3358-4754 -8774--2472 5207-4561 517--2642 3620--4011 1001-5500 -5519--5757 924-6575 5655-4552 -2413--5014 -6544-2534 6613-3848 -980-1818 -192-1180 2535-7045 99-5568 1521--5188 -4193-4025 -4251--1838 -5925-1834 -2078--4375 -2537--4336 739--2789 -19--2618 -7881-6013 3105-39 -1541--6745 4382-404 1312-871 -360--1300 -7054-5474 -1788-5976 4104-2569 1383--1240 -9565-1585 6307-9031 -3192--2264 4270-3801 -4767-3499 -79-6555 1447-7225 439-2386 -2651-2045 -9647-3622 -5638--396 19--9319 3490--2729 1768-6105 -7172-7278 -1923--2662 -8854--4892 4831--6000 -3540-7857 -6178--1273 6174--2865 -1260-3097 1549-1480 3375--2183 1345-7430 -514-7646 1254--8944 -1326-5047 -1325--2122 -4791-6191 7190-6333 880-2932 -2496--2327 -6774--1908 -2766--9565 -263--3273 4377-4736 -8273--7983 -614-2877 -727-3975 7897-2349 3318-1719 -3188--7651 -2937-9449 1705-462 -1941-3096 2552-7841 -4195--963 7186-2572 5782-2330 9587--4245 3087--8251 3063-100 -3148-758 1085--9320 1469--2920 -5916-1373 678-715 -657--2379 -2095--3521 -1331-2757 1356-6858 -1447--6855 -1192-787 -939-4284 -2631--763 -3958-5705 7164-7321 -3907--492 3378-2923 6063-3942 -3429-2575 -3704--4095 -1111--6848 -4310-8157 172-5278 -5447--4914 7020-44 2691-90 8600--6897 1806-6699 -2377--367 -2650--2850 -7759-3612 -1294-7137 3221-5385 4890-8018 2915--515 -9648--7788 765-5219 4707--1333 -3422-2456 -2169--442 -8438--1854 -8844--8693 -3736--4241 1053-1041 4882-3932 -2810-7172 3336--6595 654--3883 445-4630 -722-8645 907-4609 1922--6141 -2561--6618 7359--6795 5958-1179 -5840-6401 -6941-3227 -2845--3249 3004-5085 -3170--139 7452--1812 -4094--5364 -7935--3763 973-5577 -2568-3825 766-1699 7934--2233 -5330--2392 9709-1743 534--2408 -798--2515 4731--4980 3214--92 4103--8469 902--778 2793--250 -3159-7558 -2572-5003 -6407--6184 6579--7525 -2097-9091 -1650-2086 7643-4298 -8726-3790 2077-2312 27--5097 -5405--3258 8229--864 -4270-2966 -5201-8195 3543--2098 -8897-2017 1371-1040 -1110--5758 8090--2126 -21--9392 -1495--2615 -444-4340 7113-1627 -6433-7630 -5901-8091 2308-9666 112-5092 715--3474 -7029-5214 3395-5772 -514--8833 615--2694 6101-614 4674--798 6431--2055 -7102--3680 7717-9163 2508-2372 1626-6378 6468--2673 3001--1439 -7076-812 -1002--2377 7498-1044 7713-7100 -1130--3502 976-3859 -954--110 2807--8246 3414-31 29--6001 -1900--4106 8727-6281 -5181--3640 222-9479 2336-5753 -6853-1420 -7992-1792 5854-2639 7778--7376 4899-8000 3684-3479 -1009--3410 6959--6868 -6029-1827 -2869-5975 7511-3402 4942--2539 -3691-8125 1641--6774 2134-6000 2386-2236 678-8088 252-3122 -9354--2996 -8102-3312 -6431--9448 -630--6398 -4805--7711 1180-1068 -4948-6437 -5630-5494 4040--7008 -2693--1296 -573-5408 -6008--4593 -5679--3136 3126-4677 -5187--9999 29-2273 -7859--4669 6891--5262 272--2572 8908--2292 7586-2072 7241-4185 3892--4136 1511-1074 -3514--4607 -3007-5869 3579--2572 -4400-6119 -5383-2609 -2992-2241 -2343--1330 -5560--160 9151-2494 -3459--3464 -1878--7146 -3367-2485 5588-4321 -6599-2204 2500-3683 3817-5016 -6009--2193 -5302-9159 -3245-7417 4876-1148 -4387--319 -7995-5103 4379--1074 546--5242 7662--950 -6910-4688 -7989-7503 5159-4919 -2--1093 6587-6432 -732--3870 31--3935 5405-1195 2262-6354 -3090-4264 -7973-2279 3323--1269 216-6084 2144--2565 8799-255 8038-2055 6969-5370 6767--3365 8042--8973 4402-3361 2185-8062 -2772--982 9051--901 5246--437 -2704--1754 5850-1053 -2059--1756 -9694-9217 -3508--8624 -4515-1799 5053--2076 -8892--2042 -3905-8062 467--1384 6571--1653 7099-2544 -2416-2030 -7285--7663 1866-6672 7367--340 -2058--5926 5948-3066 -7086-4361 -5761--3206 4297-6990 877-3513 3057--1708 -3289--9086 3691--2287 9458-6003 6027-6039 5417--7743 449--3544 -2127--6899 -5387-6992 -5428--1767 -9035--1557 2242--2476 3497-4791 6764--5103 -2568--5770 7793-2754 -2350-4241 -6811--4762 4176-9647 2011--5310 -7102--3819 7608-4640 -5834-2440 -1421-5424 -1447--2245 -5749--1031 -1562-6224 -3402-176 -9669-2271 5399-1696 4295-2780 8489-3916 3428-6082 -3839-7044 -6246--4731 -4351--273 6721--3686 868--4954 4659--2252 5125--580 -2548-8081 -579--2148 -241-3755 447--4302 -4728-4688 2229-2329 1984-1160 -8397-7259 5200--3485 -3905--5129 4670--7533 -1263-1913 7543--6379 1164-5722 -4221-7814 -648--9474 -1739-5673 6370-9076 -1071-1496 2234-4567 8692--7424 4022--1424 1056--4563 -7524--4672 6292-1484 162--433 -3283--9354 3073--3037 -1367-1798 -9475--7077 -4762-1202 -1353-4663 -3544--976 -7045-5799 -2442--5241 -4184--5371 -6887-384 9630--7417 -1870--6131 -6618-5495 1278-8461 2115--2857 5577-4304 4192--4502 8635--1912 -9467--1543 6182--8019 -3177--4299 1558-4883 -4433-1601 -2277--2018 6227-3623 -3303-3216 -8002--3773 7940--1363 310-469 -8038-2173 9565-6360 -2250-1960 9643-7184 1321--6007 7786-5700 4965--5958 1913--129 1121--2583 -7995--1995 -7178--9598 2479--4137 8179--5267 -3909--7629 -2401-6605 675--1912 7850--1585 895-3113 -6439-5309 7551--6690 -4908-4229 -8845-1059 -7471-7036 -6185--2567 985-2520 2792-5801 3732--7693 1364--2280 -1620-1256 -450-6498 -1599--7471 3950-8019 5329--1589 5669--6819 -429--1636 -2571--1239 -2019-359 -8191--1671 -6881-8566 -3633-2363 -5740--2646 -5416-368 -9236-2823 -7750-9215 -2506--5142 4554-4338 77--7018 -5342-73 4331--5148 -1313-5812 6922--8272 -3970-5040 -7860--2185 2028--1776 5782-2621 -2725-9254 1286--1254 -8146--3544 3689--7847 5392--1890 -4224-383 6050--4484 -2898-3993 -6247-4724 -5646--4340 1030--3076 6254-5127 -2385-7494 -598-3453 3589--30 -6771--56 -7210--7920 -2828--5126 8485-8090 4091-2073 5351-5676 311-5715 -2949-5436 -5710-1549 -3270--4005 -8788--7053 2882-3167 -4239-6357 -4671--8337 5061-1578 4886-5769 6663--1188 -9352-5313 5307-8215 -5152--1872 1379-1625 -9832-1974 -3513-2188 3727-8586 -3064--5373 4033--7511 3732--5068 -7065--9320 3166--3421 -7120-7452 -259--5559 6222--7748 -665-5236 3057--1205 1542--3309 1646--223 5174--760 201--8015 348-8861 -4010-9214 3148--8709 3380-3277 6641--995 4234-5301 -6371-1552 -9626-2068 3106-4206 -6556-5066 -4161--3479 2853-7148 -5568-6689 -283-7191 2208-6700 5338--689 -1614--6531 1338--735 1004--2228 -8089-1739 2561-4015 -2247-2565 -2029-5547 -5012-143 7769--1889 2523-1162 -7722-3984 7958--4532 6595--2998 439--2293 4210--7912 -2832-6610 6963--1460 4283-4844 5416-223 9171-6973 -1935--8028 -5359--1119 -4132--8717 1912--7151 4137-5542 -5940-3574 -2139--5317 8207--528 6421-9365 2219--3110 -9250--2816 2526-7922 5115--5082 -1680--3721 -538-5611 4298-3451 1114-7647 3584-787 -5286-2696 -2498--4903 -5745--2623 -9627-4101 -3223-5242 -5050-8968 3021--6710 1789-4564 -4853--5 404--5467 -2-1865 3675-6798 -3887-6239 -4638--1191 3844--200 8086--7055 -3489--2472 8013-3581 2920-136 -1063-6436 1302--4233 2242-2498 -8261-6121 7060--7247 -5073-8088 335--4803 7739-1618 7653-9323 -21--8587 -798-411 -9614-7889 -461--7030 959--670 -7015-7116 -6653-6207 4976-20 4119-6894 -138--2221 -7730-7226 567-819 -6600--1031 -3252-2599 2668--5452 -3858--2557 1723--6190 -76-323 -7094--3245 8283-681 -718-2995 2362-9753 112--5136 -4948--3351 5030--2371 8781--5850 5880-6137 -2549-5272 -4135-6109 6327-2741 -2323--2689 8074-6897 -3655-3984 5428-1528 7615--7474 1951-1855 -5916--5385 6771--318 1239--5976 -5232--8407 -3279--1972 -2895-3925 -8261-6168 2291-2596 1420-3057 -5325-2674 4681--3081 -4326-3932 2396--2239 -7074-4146 -2902-596 5441--4410 4234--6944 -430-3616 -1716-8200 3295--2376 9246--2599 7459--7854 816--7138 -5617-2192 8192--2894 7382--5314 -7769--2845 1593-7948 -4196-579 4893-5230 7108-7551 2047-4066 5580-1435 -3817-1142 -7777--3544 3277--3377 -339-5327 7565-8849 -2376--594 5985--7938 5545--2985 -4344--5561 -1629-2344 1454--6661 5377--1815 8285--5503 4791-6977 6045-4197 -4972--4125 -5728-5596 7926--47 4457--3861 7959-2554 -2475--8819 3039--2522 -9--2674 4887--1155 -1745-1774 3367--324 -7688-6299 -757-6641 -5756--5989 5948--5276 -1791--3951 -2412--3265 -1412-5374 -1000--3360 -5830--711 6726-1721 -7715--809 8705-7050 2507-1150 4605-6375 -4722-7669 4592-293 -9485--773 -7403--2381 -1847--3350 -8686--4690 -4552--1547 3243-4818 7744--4781 -5731-1201 -5896-2206 2714-8156 -1592-8982 4391-3336 -8277-6815 3775--6887 -231-4858 -8670-8910 -977-7143 -3167--2098 4857-1147 6792--3519 -1342-4562 -8338--6764 2659-6050 -606-5946 -8026-1940 691--9086 3536--8009 -5753-1000-714 6097--6205 1170-5136 -2879--8481 -3441--7402 1365-570 -1976--3608 -1592--8695 2012-1470 -300--2507 -6103--13 8442-4311 2863-3863 4866-4954 -465-4085 4130-1046 3403-6046 -1572--206 -1388--8144 2167--4813 1171-3798 2227--656 -1966--7631 -2504--4109 8450-6925 -2288-7140 1531-8254 1998--1010 2201--4807 1113--5535 -6369-1810 -4223--7122 5502-4243 -5515-6145 -4777--8096 3291--889 6130--4918 803-907 -8617--1608 3502-5494 4272-2915 4556--9372 2315--14 -2161-7087 1069-7626 -266-8436 -3222--8274 4881--2491 3083--6385 28-5304 -6549--613 -1585--4589 -215-1254 -5681-2498 -8318--9211 -2636-3012 3396--7227 -3636-4620 -6938-1046 -2631-3024 -8631--513 4542-6546 -701-8563 1502-5207 -2302-6308 3259-5944 1910--3920 6736-6964 -536-4356 8873--7740 -2826-5876 517--1505 -950--1902 -6464--6482 -6078-6659 -2657--892 7906--2680 6638-2004 -1615--8878 2938-3710 -3127-2412 -7627--1796 -824-2949 7061--6765 -659--177 3518--6698 -4132--2428 2648-9842 567-467 3012--3899 206-5544 -5236-7702 -3695-296 -5447--3650 8080-9386 -124--3469 -7025-6128 5061--598 -6956--62 -3576-3632 -1105-6466 1141--1947 -4391--5530 -7808-1524 2999-6930 -3293--8566 1195--5005 -339-5935 6793--9927 -221--5248 -1913-1965 -9241-1952 -2876--7478 -5384--1387 7827-2807 -5652-5046 -5770--3703 -527-7426 -5604-8033 2919-3463 -3711--9658 672-3079 -3182-1629 -8138--6662 681--2159 4657-1551 9406-9275 -2046-5258 -4160--7685 -2528-5877 5471-164 -8122-8307 -4861--2775 -9221-2471 2539-7078 1795-9371 19--5654 -816-1430 9736--7487 1608--1672 -3109--5280 -5094--3009 -8739--1952 1991--7615 -5114--92 -2667--1006 -6342--6936 4365-6022 3572--2719 8828--702 6251--3446 -3431--1157 -2267-4926 3812--713 -9331--4315 -5147-6219 1780--2617 855-8165 4987-3862 -1677--496 8152--6627 6921--5636 -4051-7338 4584-5475 1620-9267 -3092--8766 1720-9659 205-5370 8402-8311 -2623--1429 -3355-3 -4401--1986 -4524-30 2388-8419 3153-8379 4300-368 -976--584 4138-9952 -243-1281 3508--7878 -4538--1647 6391-1236 -725--3303 -776-8675 805--5580 -6855-2072 -9250--6711 -5565--142 5556-4217 4168--927 5137-7578 1072--555 -4349-2178 5150--1131 -6425-7658 4474-1533 4926-696 3521-5357 -7421--1208 1554--632 -3090--7263 5567--5164 -4474-966 -4752--1120 -3284-5417 3912-7199 -3293--9318 -3190-7744 -3789-5049 7228--9063 -1434--4836 -2591-8980 2954--6680 1852--8710 -1017-7847 5859-8429 -3652-6990 -642--3697 -8398-1055 8674--6886 6036--209 3800-9080 -1120-9152 3154--1671 -9395--6715 -3340-5498 3781--4534 6338-704 -7162--3949 -5404--4436 2810-4112 4059--4622 916-7839 -3039-1571 2464-5721 1007--1411 -6786--5808 2576-8617 -250--2078 4458-7632 -1786-5007 7323-4517 5347-5799 -3338-4362 -8461--2736 2566-7930 707--765 5635-1905 8174--7382 -5129--784 -1303--4521 -5443--3184 -6028-3536 4687-1770 -4719--6399 -2105--4797 -1160-4567 -5093-240 -8307-5696 -4485-6306 -2602-990 7618-228 -6348--6396 6679--7164 5342--2875 4694--5123 -4211-7752 -5004--5142 99-6177 5102--5733 4664--725 -9893-2226 -8203-1948 -4824-1427 -1160-5321 -3452--7809 3968-6223 6903-1700 -4610-7596 -588--7908 5761-2725 629-1123 -6253-4680 6987-4905 1473--354 7866--9394 -572-4791 6154--3437 6719-5992 3891--4890 8461--5705 1699-2359 9166--112 -6192--7092 -6524-5867 -3347-1897 2701--6175 1661--7999 1451-7252 6035--7902 -3791--6768 -5690-2296 -1244--3295 -6359-5758 -6184-2658 2136--4473 662-906 -1209-5317 -2565--8566 3162-4989 4135--2289 6344-3456 4876-5918 798-3622 -158-564 -3486-1385 -2557-5229 -6497--5116 5025--2413 8238--7145 -3492--2477 2230--8396 4598--984 -3511-1023 -7016--4980 7348-1105 2141-4993 4783--2115 1265-651 2049-5396 5821-156 9009--1665 984-1624 6168-3106 -1039-1225 8106-2304 -3908-3106 8116-4099 6678-8014 -3887--929 -1868-2572 -6092--7574 4865-679 -9153--734 6618--996 -5881--4823 -5435--2861 -9445--2380 2888-8296 2160--4764 6160-3417 4499--3735 7270-1613 -1225-7883 -4361-6674 827-3244 -2819-2889 745--4694 -2571--6852 -1044-9265 3349--9611 -580--1390 -6219--3420 4122--3591 -6601--1414 -1954-5754 6688--5113 2323--2444 -2288--8495 -2821-8507 -3168--2835 2521--3026 985--2416 -6402--1760 9473-8708 -798--8168 -4913--4407 4747-1881 728--2378 -5326--4810 1076-7294 -1397--5055 5447--441 -3679--6403 6981--9743 2181-6730 -3812-7566 512-5870 3676--5701 6812-3817 -3477--6711 -6682--5986 7260-3516 -3680--6260 -5319-7392 6103-7527 -2211--4284 -8479-4632 -8574-4194 -5197-2020 6874-595 1853--8537 3555-672 -7055--1073 5118-7731 742-537 -4251-495 -4036-3917 6775--6951 1878--2784 -1264-318 -1557--9710 1779-7955 -1349--983 -12--4170 8007-9747 1723--5794 -4588--3587 1090-6474 2096--310 -185-6070 -7152-4184 4592--7195 -4103--2739 5901-74 -8833-7580 3624--2009 -3510--5609 7737--5430 1784--1374 5360-2602 1495--4127 -3215-2655 -6450--6349 4389--2558 1540-7355 -6548-2302 7349-5192 20-3761 -5641--3235 -4546-3622 9215-1832 -6352-4652 827-6834 659-7053 3498-1095 2967--1468 -1615-4412 -8657-1435 4982-1634 1611--5761 4342-2942 9399--1135 332-3768 -1835--4741 958-5826 -7986-4037 3803-4541 -1848--355 -7877--199 -5885--6710 -252-7738 -3252-834 -5447--3115 -7749-6535 -5000--4889 3028--5332 6872-4499 -966--3317 3661--4297 -1643-1219 -6157-1746 9083-5122 2501--2395 -9630--7958 3607-6445 5279-6191 -5615--9220 793--8087 8-1756 -4438-6754 -6301--1171 6412--6159 2298--4294 -8434-6500 1993--705 9077-2454 8896--4413 -5144-6593 -3230-8758 -4823-2185 -6451--3807 -1563--2165 3025-938 -3884--1255 2734-850 -3123--6697 -1873-3725 3959-5894 7606-3192 5602--7180 -3213--127 -5861-5645 -6405--5801 4734--6371 -3213--3932 -5267--5545 6658-442 6145-89 -8336-9663 1561--3163 3691-6519 7374-1456 -6796-7109 2495-4021 -1180--320 2290--691 3495-4248 792--8386 -3177-298 690-9131 942--5798 -6583--6834 1592-457 -7618--6538 -4554-6093 5553--2069 7500--7838 554-4100 -2674--1189 -8952--2523 -1110-2665 5057--1266 -8570-2870 -473-3448 -4674-4509 4833--8260 414--7152 3461--1898 -2103--2307 -5110-5286 -7208-6207 -3322-386 3720-7430 -4067-2971 2879--2768 -7934--8067 3644--2247 8065--3082 427-2935 -8590--325 -5858-3728 9020--1427 2765-2751 2342--5222 7149--8485 178--1630 -6588-7045 5798--5172 -2493-5725 -3825-1792 9685--3410 3258-9883 889--7124 -905--6963 -777-7056 -1018--5929 190--2481 -3347-6191 2759--5479 -3239--4184 5408--6936 -3437-7973 1120-5725 -2320--4149 3042--1776 -3123--9457 -364--6711 -2584--3295 1704-2642 3581--9898 429--2183 5623--5209 7905-1287 -6678--8425 4887--8137 -1555-1301 9665--7820 1188--2397 -3076-3454 8650-491 7154-8264 -4183-4674 -5543--3794 -3695--2798 -1172-510 -6498-2270 8544--3925 6--1228 2633-3107 -9148--2468 -7990-4298 -1300--2882 4706--5621 4409--1991 -2950--8484 251--8239 4649-312 -1318-7350 2320-6524 -201--8334 -2319-9389 1596-3067 -1874-863 -3884--6727 -5400--8552 -2210-6709 -1147-4568 7014-5971 -2317-2741 1804--3216 -319-3864 6899-1745 -2877--828 -9698-1560 6416--5792 352-4944 -7825--3814 -7876-8339 -3931--74 -3919--5187 -6897-5147 8075--4234 -3016-4122 -3411--3821 9105--7087 228-8099 5335--5546 -5564--1845 -3034--808 -6726-7948 -1234--6429 -7263-7069 682--2604 3860-5123 -1642-4672 8655-3477 -928--8489 2138--5329 1208--7305 891-8914 1501-5004 -2840-1768 4071--8127 -5584-1288 1421-3439 -4042-639 -7142-5142 -2798-3951 7426--7178 -3072--3608 6731-4703 5951-5280 2059-2298 -4397-2059 -8261-1117 -5166-1291 6694-7075 -6503--1953 -9073--228 -6839--9107 -2148-2008 5123-8804 605--3748 7600-9556 -1790-4808 6939-6824 3629-3663 -1487--2164 -1059--8067 4867--639 8829--81 -9575-2452 5218--1254 -9458-4037 5369-7375 -1052-3889 8736--1951 1994-1066 -1994--4820 2225--2917 -2083--851 -3197-2988 -6333--1118 -3702-9047 -3490--197 608--975 3431-149 -1957-5151 -5199--5855 -3546--6932 -4064--5525 -205--2326 -168-3501 8685-4734 -7830--1129 7010-826 -4812-123 -5031--576 2492--2827 4571-4691 2675--8292 -474-1812 -3301-8191 -5041--1701 -5253--3569 -5987-4397 -8119-1203 -192-1056 9092--6288 5692-2118 1858-2830 7977--3892 1752-6649 -2845-2265 -4187--2405 -4807-4830 7629--412 -5606--8205 2405-5237 -733--2050 -4201--8405 2175--6074 4353--1292 -8713--701 -8400--2626 3535-8958 -2818--6569 4703--940 5846--1576 4622--6245 -5925--5418 -6721--7896 -5918-6932 5233--4849 5660--4041 3154-2131 -8710-1928 -951-4836 6594-5438 7023--4973 -134-1897 -5367-7661 3856-4151 -3403--7889 5082--309 5901-5091 7534-5454 -567-3980 1310--4611 -662-7761 -853-5787 5321--395 167--8633 3184-4427 -4774--292 9645--6890 7061-6251 545-1851 -5350--3115 -3102--7416 2236--9274 788--139 2935--715 -1512--3342 -8115-5982 -4174--6292 -5879--6952 -5018-5395 2305-6278 -2673--2233 5135-2185 -3641-9009 4289-7818 1454--9250 -83-5503 7883-1887 -6127--1511 -7830--3934 -5464-4308 4272--6416 -3092-385 3842-3540 -5064-5794 2043-8326 -3147--7211 -814--7163 -4872--8593 -4--2368 -159--7582 189--5388 8229-1826 8844--4640 7681--7631 757-4723 -19-6390 -5239--316 1170-2563 -6020-3106 -2719--5362 -6927-4096 3620--7647 4408-1165 3058--7980 -1829--94 -3835--788 6754-4713 -2906-476 2898--8037 -2856-1869 8645--126 6571--7323 -2311--2397 -7790-6719 2639--2825 -3924--2823 -6971-1187 2180--4430 -5101-7001 -5469--6121 -5880--321 5774-5177 -1970--547 6163-1454 2310--3328 -3842-6592 -7294--293 -373--8862 -2303--7814 -3189-4061 4587-246 -7841--3259 8534--2870 7777-7086 3296--4580 -5095--4000 -57-1498 559--2836 983-7855 -1567-5971 1405--1408 -6360--3050 1637--8011 -3456--8227 -635-750 -7564-1382 6540-2451 -132--6180 -2168--8568 -176--2967 8473-6014 -4654--2671 3564-6796 -6466--3328 -2490-1902 2971--2918 -9070--757 8698--1129 825-8188 2078-327 -4248--9000 -1239-1602 2932--776 164-6353 -470--1996 8810-5905 -5009-908 9623-597 -4630-3112 2827--7987 5178--4521 2493-4206 -3212-4127 -6901--1787 -7464--8445 632--6758 -3348--7137 -3077-8042 4913--3239 4232-1438 -4520--1086 -3439-5040 2416--8915 2765--1054 -3037-2991 -1096--6449 -3656-1921 -3571--1919 3133--7423 5456--1241 -2258-5632 5900-1037 -7100-6057 47--9800 -973-4768 -974--217 -200--3769 7620-5342 -7940--6803 -1521--1610 -869-9303 -3517--3533 8527--3724 7739--4022 2479-7299 2430--2207 -2369--9504 -2950-4623 205-5468 -2321-6728 -3935--450 -7586-3504 7283--5706 -2652-1557 -8958--7026 1933-972 -4008-4323 -4225-4210 5258-6000 5035-4207 484-9660 1875--794 -3698-4907 -3918--402 -1019-3373 3157--3042 7173-1683 -1738--1592 4394--4489 -7663--3560 -412-65 -607--6191 -7820-1954 32--6923 7009--4987 -8063-5103 -3698-7548 -4234--1805 -2820-2090 9209-1934 1143-1823 6961--2945 1283--169 -4209-6071 -1500-6588 -6485--5363 -8123-2081 5474-948 4907-6590 -6670-4209 -4246-3934 7762-225 -1631--5948 -6785--2056 1740--1998 -447-607 -2941-3763 -9206-5014 -8520--1822 -4342-3251 2595--145 -7010--2784 5943-3571 1117-417 2718--1436 -8265--5280 -4100-2327 3505-2464 -3135--81 2999--652 -9120--8254 -3546--1093 -3931--6709 -933-4793 -2917--4501 -6500-6864 -6364--1542 -7832-7302 -6496-9330 -1100--169 -4587--4857 -7857--6628 6291--8731 -2405--4324 7640-3762 4407-5535 7788--6698 -6800--6187 5261-2430 3573--796 2998--8751 -4426-3689 -8882-1000--8915 2101-5577 4866-7926 3721--5 -9930--166 -1710-1306 4248--8849 -3403-3070 -7203-6727 -5859-2373 -7870--4226 -6350-8393 3082-648 7069--2186 -9617--1459 -2805--3356 8392-5176 2542--4739 -5405--4094 3824-6128 -7108-1701 1706--4741 -5171--8119 1525--642 1657--1459 3658--5524 -3008--771 258-5438 232-2866 -3375-4117 2187--3784 -949--9635 2173--1912 -3687--5339 296-3504 -407--5054 4637-3172 -1709-2395 -9166--2603 3622--6893 3872-4287 8435--8936 -689-5392 8178-2963 8254-5482 2224-1912 -1869--494 1244--1301 -3884-8090 5054-987 -5178-587 -5167--7615 -2429-6554 5252--3698 294--7977 573-2693 4452-4946 2573-9331 -1285-5180 7542--8436 -550--1256 2786-7658 -3985--5528 -8120--5284 3690--6073 -6494--4773 8276-8244 -3837--45 -9162-5524 2936--6118 2739--1712 -1915-4554 -742-1435 -2795-5678 3586--7246 -392--2604 3370-8320 165--5887 5434--8035 -5692-1952 3049-1628 8258-3498 -815-5324 -5689-3748 8451-7409 6369--3784 9029--6003 1531--1366 5042--2600 -1356-1492 6--3276 989-7386 5375-5195 -3583--9405 -2037--8909 -3021-2284 -1999-6569 7122-1879 -4560-4514 -8516--7644 -424--4057 -7356--2113 -6679-5026 -7125-3127 -43-6860 1315--4963 164-8517 -4466--2589 4460-1877 8991--1617 -9568-5388 7948-3679 -4512-8836 3799--6016 -3193-8820 3138--6105 4124--5278 7798-8186 -5122-3664 -6099-2315 6987-7473 4227-7728 116--2687 902-1509 1849-9175 -3730--248 4739-3241 -5385-1512 3537--8312 3265--6857 -1225--1327 7552--5407 -424--4165 -4671-399 -5408--2985 -2227-3912 2571--7705 6018--1055 3415-5900 -3752-7329 4164--5394 -1437-2859 -9253-3599 2175-8955 -4132--7796 -3440--4475 -4790--8253 -5105-2185 -2045--8946 91-2251 -9400-796 6434--3080 3201--6157 -4585--3000 2802--6671 -7214--9447 2578-6147 2288--3536 7422-858 -5521-9698 -2120-5317 -3172-3754 -7609-756 1346--4411 8240-2695 1379-1319 -1986--3004 -3796-7971 -714--4801 -7758--3169 -7087-7044 6730--2864 3986-2570 -1367-4570 5269--2224 6526--3600 -8298--254 -2490-529 4918-933 8935-4972 -7617--4107 -4851-2528 -5334--9472 -3163-1418 3109--5707 517--6204 -2935-2807 3230-1976 1581-868 313--1538 9332-8808 1398-6916 485-3427 -1985-8267 -364-8027 -2629-778 5511--2913 4099--2920 -1223--7011 -5878--5440 1645-7790 601--6949 -5507-534 8919-3882 -1225-2870 -3503--3083 -4166-1974 -6239--4886 -8318-2603 992-6310 3849--845 7038-632 -7821--7682 5778--4087 -618--8431 2657--367 833-2149 7518--345 -743--604 4868-2242 229--8105 4285-7548 -2857--168 -3031--3708 1204--8310 -4462--3230 -7997-2261 -6838-3543 3701--7119 -811--199 -9076-2766 -7827--5541 -7029-4242 -5020--5426 5162--1765 8864-3221 1006-7701 -1983--996 -2036--1353 25-734 -1087--7327 -4842-3161 2715-7988 3180--5114 -2063--5359 -8275--3487 -3353-5577 -3370--8057 -3385--8126 -4765--8762 3669--2112 -5272-3867 -7034--617 -9460-4453 8312--5718 2523-1522 2791-8682 3261-5709 1038--9591 1123--8184 -2442--4348 775--6898 1437-854 -3186-4917 7162-2853 2916-2371 1649--6856 3207-4554 -1210-6711 -6588-6728 -5620-49 -3668-488 -216-2605 2191--6209 6543-1494 -9049-1924 7380--3040 -9243--94 557--4081 5030--2940 -7296-3013 -1856-314 -4385--426 -1719-6645 -3063--8057 -4329-2031 2451--3549 -1007-7415 -3199--156 -3711-437 -676--8959 -2120--5692 -6832--2798 7564--49 -5225-5495 4980--6794 4305--1389 4700--3972 778--3927 -3445--2594 7667-3569 -1430-817 -6551--8590 -1041-2136 -9360-884 1422--4695 -7393-484 -9890-2487 6968-2262 2408-8582 936-2081 1489--3644 2879-8216 -3046--5672 -1818--407 4925--1548 -3459--2915 -1697--1489 -2110-3448 -6225--7331 1081--5775 3471-336 5051-2414 -1982-4055 -2248-4622 -7766-1308 6086-1568 -3058--1058 -4522--459 -5775--8301 2347-2691 1772-221 8495--3411 -3083--9689 2307-1060 5981-1544 -5454--380 1636--344 -9611--8226 -1664-4274 -8267--3548 -446--7033 -6313--381 -6277--7857 -4799-6980 6397--7628 1214-5771 -2619--4175 2450-2681 7883--533 -7960--2468 -3856-3247 4909--6336 -2993-1413 -5087-3189 7681-1655 7963-1498 -5061--2495 -5553-5441 5766-920 7559-6516 6522--9692 -490--6551 3791--3442 6585--5813 -8091-1007 7124--2882 6183-1115 -4354--9398 2528--5195 5678-4976 6677-7627 -3004-4885 4116--9085 1003--3217 -3894-2501 -811-6114 2975--2333 -8182--814 8299--7323 6452-4895 5956--4511 -4930--564 6792--3013 -4567--8916 3546-8220 -753--419 9872--1011 -3892-1733 1427--2729 -4751-1861 -1182-799 -7126--9947 838-6893 3450--747 4394--2386 3829-115 4206-6855 -1888-3510 -4243--1418 1189-302 -8869--240 2862-4789 115--872 1036-1803 -1581--2828 -8109--4247 -2270--692 -5494-5384 7039-5626 3235-4435 7075--5961 5988--4241 -310--2393 -1905-2835 8551-8208 -5711-5563 -3684--6017 -2803--9586 400--5676 6993--1994 7171--2364 1440-4615 825-5047 6898--5033 249--3648 2450--3881 -4188--1310 -101-3838 6150-7490 -1811--5183 -1797-6320 2955--7509 1480--2775 8301-1177 -1047-8508 513--5214 -2829--1441 4064-2942 7406-5666 4555-3067 -5855--6529 -2269-3674 -1490--5681 -4589--474 -8938-4842 -6035--7169 290-6118 -1898-6105 -1494-3746 3532-5452 5051-2886 5777-3424 -7105--2806 8935-4571 3106-3887 1601-7464 5580--1003 -3303--8616 1710--197 6064--3754 -3906--7520 -1764--7581 -4577-1510 8768-6083 -4457-2437 1119--3161 1277-6895 1361--6432 4961-7891 -4645--1171 -1456--3332 6996-8481 3163--4598 -7454--6546 1364--4863 406-9605 -361-4007 8598--615 -8625-7 7170-8846 -1206-650 -703--3097 2736--1073 -9101-585 -5166-4288 -4023-900 -3941--4511 7910--1927 9250-2520 -4809--143 7264--4157 -9069--5200 -6240--75 5634--8332 -4338-5720 -3877--2868 -1073-2579 -8890-625 5802-1990 -6203-3817 6645--129 6343--659 4933--786 6895-6678 5048--5685 1726--1266 -6542--326 -1124-3414 1603-4312 -3161--6147 5725-3459 8691--6494 -1659-6622 -3179-7425 -5869-4610 6822--131 1988--6102 1586--4125 -4242--4307 3733-9638 -467--4603 -6087-2830 7983--5882 7608-790 9267-4092 -8584-8815 1258--9028 -3383--7646 -6160--7317 5278-5374 -1019--8498 -681--4121 6964--8996 3503-175 -8698--2509 9407--5138 -3413-211 -711-4795 4414--6505 -6247-1833 1532-985 -4950--1856 -1590-9041 509-3878 -1152-8737 4255--474 151--585 9649--5431 7458-4571 4227-4072 733-3715 6753-2295 -8933--3234 370--4194 -6347--6921 542--1967 1478-4060 -565-657 8449--4332 -3338-2717 -5955--7778 1435-6096 7411--227 3508-4732 6594--3252 4108--5068 -3025-5368 -3752-5512 -2676--3676 -3651-2889 6886--726 -6638--2390 -596-2047 -3997--5388 -6972-4215 2528-5396 -1092-3141 9311-1722 1131-8645 4576--8025 3981--6626 -6004--4627 2210--4260 -7201-3158 6065-9238 3577--384 6788--3144 -8424--5555 -2207--9247 -1650--2820 5843--74 9889-6721 -5865--5937 -2871-502 9569-9703 2198-331 -6441--351 1375-8786 1397--7803 -285--1857 -2988--7882 -5883--22 3554-196 -6977-417 -1880--1176 -3503-4510 -5325-276 -7758-1631 1718-305 325--2044 -3071--1484 2372-1315 -8920--3411 -1624-3000 1719-5602 1452--1112 5066--8690 1083-4422 358--9194 298--806 7027-1419 3317-7145 71--6348 6610--773 -5963--4062 -3407-9205 -10-360 4647--1689 -2201-7995 4876--7164 5844-3639 3257--9308 -94-3787 4388-623 -2996-7340 -2130--1518 -9004-5016 -977-7779 6158-1973 -3273-5666 -4519-691 -3719-2246 8113--654 -3361-5851 5664--1137 4948-7237 247-5809 6163--3731 8154--2398 -2732--4464 -4627-1349 5045--5243 1668--5042 -1935-5831 7927-5002 4481--5143 1175--4383 2932-1209 -3275-3698 -8517-5824 3923-1837 -440-4222 -7638--769 1500-5378 -5810-6871 1383-1685 -537--7197 -3949-2588 -4390--3512 8271--214 6043--2648 -6163--2446 -1271--6237 3586--6892 -6796--3545 -6339-5516 3988-242 7936--7470 -513-90 6754--2985 -8115-8201 -432--8843 2437-9472 -2883--3288 3316-1673 8613--5246 4505-3489 6001--3991 -6495--1383 5222-9179 -568-1829 -5761-3882 2266-6357 4096-489 6838--794 -5117--3504 4203-1647 8310-4603 -2926--3836 -3624-4293 3444--5890 -1564-1715 -8089--1609 -6819--3862 9179--7080 6614--9604 2368-4856 -5377-7952 -5816--6264 7102--8446 3840--2942 -4948--2042 1146--54 7486-6519 -4198--3384 -3534-3018 37--4231 -8109--2783 3975-1660 -6860-1427 4403--4858 4243--9526 -2778-3605 -2014--3506 8400--5556 -167-6286 -460-8867 1395--5164 -2940--2158 2464-3463 7637-4807 3106--5568 990-8697 -302-1344 -6279-1832 4357--4923 7498-2048 8113--2331 6823--837 6749--1779 -6174-3884 -403-7809 -4182-2951 -1973--6249 -1187--235 7467-9390 -691-7931 2427-332 -6225-6374 5695--4774 2488--3288 5586-894 -9012--2636 -988--4092 4816--5576 -3939--6336 101-2130 -8477-595 5946-178 5273-8918 433-3571 -6948--8181 -1883--5908 -4723-57 -7418--4849 -6362-3894 -1942-3560 1935-902 -1693-7308 2665--2388 -527-1707 1904-488 -1127--5678 1686-612 -5912--1616 7921-8148 2227--3829 3359-2320 4199-516 1315--8026 389--4465 2749--914 -6207--6031 -1068--4031 5252--584 1191--1419 8549-3459 -1788-3385 -5138--7890 -5063-3934 8001-3994 -4708--9644 2109--2571 8001-2382 4288--4783 2372--4691 5613-1180 -9288-4576 8684--3665 -5601-3656 2759-1851 1965-6827 -3756--2244 9206-1675 -4123-3768 -2925--5255 270-6546 3388--7461 6007--2053 4934-5163 609--2191 4488--6425 2331--2803 -1676--260 -83--1209 -8180-116 -3363-4501 4821-7146 6904--6812 2275-6432 6374--2023 7387--4636 -7527--2417 4411--1058 -3777-4084 5601-8919 -2921--7410 6691-3354 -3062-7134 -447-1336 5758-350 -8449-3856 -2184-4968 7439--6164 6066--4514 3116-4498 -6292--5943 -428--4742 -1267-342 -8971--257 4216-7093 -2814--2505 -373--1594 136--7595 -5358-2274 2310--3924 -2790--1346 4274-1206 1372-3500 -7700-7628 -1129-6287 764--488 -7275-1475 -4726-3692 7893-2552 6077-2288 -6231--5874 6265--571 3950-8387 3529--5517 -6785--57 4390-1261 -2944-3495 -1528-5206 2972-4999 -4300-2763 7111-5940 4650-7226 -2971--3991 -1176-3180 -4274-1704 -7248--873 -8550-8975 1721-2580 7881-2155 -1107-1465 4861-654 6300-867 7492--1012 -3193--5525 -2296--4970 6946-8491 -5054-6305 -2537--1784 -5308--2608 -2320-8210 -2576-6802 2847-78 -4420-6639 -4190-9742 -459-8663 2589--4250 -1829-5581 -3443-5791 4213--1367 -7583-4130 5422--2889 7612-430 -2310--6262 -3716-6559 2871-7849 4748-5773 111--1535 -1575-7350 186-1119 -6176-6910 787--1218 7228--8730 1786--7890 -3611-5430 4110--2923 3409-5168 1194--6032 2424--8182 -2723-7873 2254-357 -1518--1696 9141--4055 423-996 -5471-1715 -796--6024 6978--2390 4602-6512 6264--19 -5812-6220 2406-2184 -7900--3868 -6319-4762 -6723--6757 2925--7094 4282--8466 4261-509 -4076-7940 -3595-2020 7008--8869 -60--4073 5846-9191 -413--3221 -4636--5453 2812--8346 -3256--6484 2028--3862 -4801--6023 1657-6548 151-4118 3068-1034 -1957--2635 8784-935 -3710--5793 -6063--1484 -7187--8870 365-2661 -6894-2188 -2877--4224 -5589--235 9454-8882 -2837-1503 -7371-634 9423-723 9796-6492 -5933--1774 -8440-1597 860--1461 5661-8558 -2283-3509 -715--2662 3773--490 -4260--5243 -7231--2961 7184-3564 -6040-2475 1425--5261 5805-4439 3158-7655 -6323--7842 -5907-9267 1448-6476 -340-5996 753--2814 -4556-3501 8597-443 -2009--2798 9448--8847 -2514--3044 7295-6409 4997--3481 -5205--2983 7243--716 5748--5765 37-4633 -7557-1231 -9312-1252 4134-4415 760--7523 -830-1071 277--5687 5610--686 -303--3765 -3102--3960 2789--3476 9240--4452 -8745-1000--2031 -3167--7067 6789-1848 -8685-3492 1681-6189 -3815-6278 2543--9357 2501-4588 -7117-5340 7587--2394 -5711--266 -3064-8990 -3275--3758 8645-7568 -2583--2409 -1890-1127 -5134--8344 -5487-715 -6662-7066 -6761-7189 -6073-6375 -4063--8144 -3041--905 2102-1210 -8621--5022 -3129-5241 7932--620 -1666-6027 -7073--6209 7104-2595 -8368--5713 3527--3043 -5396--5404 1122-5756 6182--2448 -2828--3881 2810-8002 823--2475 1508-6072 5618--4134 3936-4591 -2644--5746 -15-2636 9044-6081 3337--210 -1136-6355 -2589--6264 6162--4073 3055-2850 3641--8470 -4369--8858 1164-2282 4488--738 7849--6457 -5892-3387 8473-4441 -1866--400 4805--2238 4090-1553 8606--812 -6807-5504 4105--286 1329-3118 1978--7102 3665-463 -3902--1340 -9839--6046 -7392--2285 -5725-6473 5611-7790 5509--911 2366--177 9327-8004 -4005-3116 -94--4562 -8340--5373 -8036--6899 -262--710 -4767-458 -4157-2098 -3952--1091 -2923--5413 -6602-7782 -4999-6863 6836-108 6679--6307 6767-9304 1264--2938 -8816--2947 647--2174 -3052--3867 -8967--436 112--290 -2377-984 -7247-2706 -271--1594 -7662--8444 -2396--6427 5184--9419 -237-1683 -326--8535 -4657-783 -2783--2106 2985--3174 1366-5869 -1677-8758 -1496--190 -5494--5862 8018-4372 -8419--2411 6152--1439 1408-6368 -6264-3807 7229-3856 -7972-5192 -3834-4695 2273-8347 3723--3766 -3669--7821 -3603-2137 6480-1706 -6337--1692 5530-1644 8676--5945 -7249-3146 -4376-4194 7486--962 3018-4387 -6902-5871 -4889--3414 261--5504 4693--1295 1220-6760 489-1603 1444-2587 3903-2290 9620-7372 -177-7156 -3805--2052 3381--5752 1484-4711 -4374-4295 7399--6002 781--1332 -1409--6573 -5344-7650 368-2201 -5154-4479 8099--1480 5653-3964 3788--3051 -7311--6244 5627--3752 -3665-5386 7579-1470 8039--1505 -4499--6052 -5828--2147 1019--2523 -5439--1537 -4835--3131 9353--4133 -4720--4105 -3484-3456 -9145-413 -7699--1536 4726--3792 4574-621 6869-1060 -4514--2297 7231-2249 4708--4386 5315--3470 1908-2173 5631--3403 3619-5697 5494-7513 3247-3882 6261--65 -7122-1675 -8613-2484 6869--710 -5192--2670 8595--4643 5314--2105 1173--3666 -3778-947 -6890--3867 5852--7874 -246-9908 1276-591 -2274--1160 6393-2176 4050-1120 6159--8444 -227-3454 -3894--1227 5292-4981 -8340-883 -2468--4669 58-8106 -4866-223 -4433-2103 -3545-2746 -352--2548 7622--3465 -4928--4450 -970-5463 862--4133 -7924-1103 -720-218 2868-6341 4183-8432 -2934-977 4003-7155 6877-2582 3043-1896 2380--5107 -5404--4877 465-4288 -6406--828 4893-1169 -2320--372 7786-8660 -577-3850 -1785-2405 5627-4766 -2361-7263 6375-3812 8328--5216 7412--7936 -5500-8503 1964--5309 -2330-8321 4766--1137 6335--4961 -7428--1344 -1023-76 7236--6238 3716--6208 2139-1237 -3433-5396 -7620--308 3383--3709 685--5894 -1777--2379 -4412-4430 -1049--1317 -4157-7557 -5992-3681 5063-5878 166--286 286--7213 -2176-962 5285-369 -8033--6121 -367-6195 5785-3847 -1438--4106 -6856--3744 -5729-5058 -7179--8814 205--8401 4197-6940 -3891--8585 4736-798 -2582--6763 -5135--6240 2371-4026 21-7481 -4785--6051 6529--1736 -1411-1340 -6244-1213 2022-4312 -6488--4446 4080-1562 -125--2370 4499-1878 -7395-1823 -5105--7369 -6574--5552 -6515-6753 -1761--1126 3769-1568 -6596--4211 -1758--7223 2500--2105 6809--960 -657-436 -1064--1268 -2052--1140 9157--2779 -6821-4660 763--2204 -4565--3326 -593-3465 -3721-7361 6040--6699 -3527-3588 -9176--2516 2736--6828 6728-5776 2393--7459 4888-5162 7679--76 -6069--6474 4695-5185 -1186-1257 9304--4618 -7261--6499 5397-7196 3906--1561 6433--7092 -3857--1198 -2785--4322 -3007-2793 8109-9312 3295--290 -5630-2247 -8862--1958 -9275-2928 3343--5089 -2452-5434 -7731--4197 -7256--6489 -2824--2452 -8698--5553 7806--6157 2101-6068 3464--5291 -2603-3821 -7429-5713 -7000--2907 -8991-5734 1666--2807 8695--4963 3303-690 -9747-1720 1695-8099 2219-120 937--2657 -2945-167 -1975--3816 9124--8307 -2696--5371 -3901--695 6438-8898 362--948 2271-9210 2307-4451 5429-2688 520--5172 -7113-8921 3811-9397 552-4957 -1627-8482 -4762-8440 -2536-3613 -3152-920 2298--3091 2485--5301 -4070--4304 -1562-14 8484-7542 3035--5753 -5525--3375 -9412--5248 2783-7283 -1513-5429 5747--3146 -9316-134 7022-1122 62-8218 2379-1991 8081--4607 -3224-8016 1717-3001 6808--2426 -3189-1665 2889--5620 2234-3649 5569--2560 6259-7477 -940--6946 6590--7880 -774--3823 -4005-3423 -5194-1951 -9497-2012 4471-2476 4957-1130 8202--1203 -1811--2868 -7941--6346 6237--221 -5584-2978 -6346--3650 -3006-3521 4131-8172 2669--2881 4195-1971 849--4227 -7430--466 -2966-1477 -6185-3259 -2041-4477 -2332--6288 6234-1270 2056--4155 -1738-8663 2087--715 5944-8910 -3959-9824 -1173-7939 3944--5715 5867--6905 -2983-459 -9655--3181 -823-7828 -3321-1582 -9266--4421 -7095-2758 -151--9033 -45--3869 7908--3451 -2400--4316 5566-7229 1983-9020 -3326--3002 -9407--3811 6211-3814 7750--1560 6721--874 -1863-243 7997--792 9403--1936 9164-3051 8488--2617 -5966--745 -2867--1626 -8954--1809 7791--1853 2042--8814 1709--2489 -3558--5243 -5468-9141 985-5195 -1005-7329 -2032--2424 1027--2572 6325-4013 -2525-8213 -2438--4374 -6338--800 -1199--6302 -7314--7427 5837-7163 -1353-98 7965--5369 -6555-1015 -1879--180 8153--3950 -5401-3924 7358-4995 7578-547 2218-9034 2643-694 6450--7969 -4248--3128 -669-4424 -7026--5082 -7663-5097 -1216-4211 8674--1126 -9393-8277 3666-324 -4936-4074 5954--1719 -8292-4736 -5280-394 8651--4880 -1161-4290 1975--5079 1514--4311 -8683--1215 -2445--71 -7598-4578 6062-7272 6044-3099 612-3449 7446-2254 4964--4905 -4707--601 -5484--5453 3490-5400 2094--7969 1680-8285 858--8926 -2255-4987 -7295-7926 5067--2158 7578--127 857-6202 6306-2655 1813-4502 6564-3670 546-4032 8031--1248 -1965--4771 7655--4216 911-1608 -6781-1721 1075-5129 -6912-9095 3411--582 -3046-1307 -5498-4432 3406--3872 -4935-4614 -3681-8104 3505-926 1266--4994 7828--4624 5587--4829 1427-8904 747-2474 -456-5975 7683-3952 -1302--4406 5033-654 -892-4130 -1058-7618 -1379--4653 -1048--1156 -9632--6875 6032-2264 -7721-1229 -7280-1351 -6239--28 8498--2232 -4349-5105 5781--6290 567--491 -2447--3744 -7069--745 6864-2959 -6261--6635 3625--4780 6157--3766 -737-5229 -8399-5228 1028--409 6365--235 -3814--478 -6622--8924 -4510--3228 1761-4644 5747-8148 -4698--4386 -6916--1096 3203-4108 3880--647 -7630-1212 -1648--3470 -879--3754 8078--4701 -6942-1514 7679-4713 -937--1798 -3333--5288 -840-6140 267--2521 -6059-2686 -2538--2873 -2080-4020 6547-8552 3523--2675 4613--5655 -2109-4902 -4477--1686 -4846-5690 1763-6306 3668-4471 7244-8491 696--289 -3633--992 9841--4968 6950-886 -2054--1092 7195-5639 6647-8491 -3733--694 8727-5219 -5525--5937 -307--76 -7411--6945 -394-1839 -8498--5652 142-9676 1050-3310 3553--7284 -6109-5715 -1899-3039 -672-4146 6059--7809 -3397-4230 -1938--4835 -3342-487 -6668-4491 2714--533 7745--1691 -2425-1003 5291-6811 -7163--4755 -4314-4542 152--4942 -7229--4258 2820--1337 3102--4874 7435-5645 2272-1149 -2395--5311 -3775-12 5523-3503 5279--2155 416-2874 162--3782 -2825--160 2631--7119 -3788--2983 2536--1287 -7949--8912 472--2204 1640-758 6684-7356 5619-6012 -7079--1836 -5896-7248 -4990-9563 -2550-2480 5333-4168 -4603-4005 2970--1871 -651-58 4696--7425 -893--1522 8791--6392 -5205--496 413--3831 2708-3585 -7010--66 -5708-3717 6101-2710 -3337-4419 -5621--6355 -1840--4246 -7142--6208 -5540--1024 -7369--7477 -1079--8481 -5014-5386 -236-1416 7251--2610 3325--1721 1103--2086 4687-5510 -6704-4474 3760--907 -3539-7965 -455-2208 2822--3480 -1179--9350 -3042--6579 -7368--2567 -7217--5818 -4715--6113 -5748--6638 -7346-8598 3265--3105 -6703-2897 -1912-1704 6831-2373 9534-315 3428-2139 -2570--9052 -2778--4712 -5546-4426 1646-3255 -8965--1918 -4575-3901 -1223--8077 -1018--5477 -4475-4997 1333-5611 2365--6603 999-1980 -2126--3460 -8545-3439 -5118-3189 -8087--6323 1734-5200 -1038-2968 -9163-426 -8308--1454 8418-5958 -5184-6808 886-6426 6300--7006 3518-547 2046--3080 537-348 -4588--4011 -933--2375 1056-9068 -1019-7456 -3464--246 -2580--4303 6180--486 -4920--8666 1492-1208 4862--5202 2991-5883 -4023--7673 2682--7292 5114--8158 2429--6362 1413--5070 1809-614 155--2289 -6238-2787 1884--5174 -1535-3899 2639--7799 5118--1805 -7292-7683 -3914-1079 8393-2385 4758--3352 -7409--4933 8281-5177 2778--9322 3001-698 2045-5932 -3487--1983 -8171-3449 1289-810 -585--3933 6416--3338 2383-4571 -6100--4208 -2713--8659 699--2577 -1405--8755 -2514-2753 9149-323 -218--3393 4716-1597 8321-5061 6041-5436 -7119-6026 3998-1196 6866--8209 157-1911 5057-915 -3084-2526 5670-6147 6285--6241 -1925--1660 8166-3910 -7097-2587 1558--2760 -5622-1976 5429-65 7351--6171 4534-469 5514-1770 2968-1165 -2089-9483 -494--3050 -8266--4833 7349--4087 2031--3597 -8368--8361 4034--3751 -3576--6943 -1736--4287 -1523-645 6630--5610 1463--5594 -5009-2461 8559--1242 -9260--5525 -8082-4546 3927--4767 3468-1140 8001-251 661--6051 3795-7500 -995--6115 -5031-349 3970--3219 -3351--7248 -3959--5745 3851-439 -3666-2583 6742-262 -582--4846 -37-3990 -1096--3465 -7524-2500 2503-745 7498--1464 2209-6723 7007--3085 -8881-3455 1778--4365 -2726-8889 -2838-4955 8466-1597 4425--379 -6152--4132 777-3404 -1026--8703 2281-3827 -8910-8000 -561--7650 300-7700 4121--2480 6344-5709 4719-8539 2765--5921 -7493--2139 -2652--4491 4008-6776 -4391-1531 -7946-4023 1830-4598 -8755-1735 6120-8140 231-2818 -7456--712 -6762--4743 -195--4331 -4978--4815 -2362-3498 3884-1832 6457-5899 -4808--4721 -1524-1969 7352-5277 2129-5842 5151-5776 3324-2940 -5752--5808 -5755--6116 832--6303 5180--318 -3585--7719 3758--1305 4652-8352 -754--9225 -3309--4977 3640-2601 -4067-8549 -618--8576 818--3300 -7717--791 -4244--1056 1769-3515 3762--4682 -1333-5362 -1318-2500 -6485-81 -513-3330 -6289--2457 -8200--4987 5665--345 5844--2569 -3784-2011 -1158--6237 4011--2023 -6466--2821 -5738-2452 6464--6066 -1694--7464 -6581--5384 -3724-1231 3727-6271 1249-7632 -6063--351 5682-2763 3928--253 9662-2722 -9469--843 5543-3186 -1363--331 -437-168 -9996--2754 -4788--5654 -1357--6559 -2478--5168 3147--7610 600--409 9551-4105 -853-3454 6091--597 -6307--7804 5639--3581 -4407-648 -1435-2684 -3078--3996 8060--5504 7565--4601 2110--5538 -7104--41 -7809--4107 -3276-7783 -359--1530 5152--8351 3750-8560 -4903--3553 4895--8474 -2845-4844 3554--2710 -6497-4470 -6-6640 -1650--6825 -4809-7773 -450-8892 1137--2470 5413-163 456-6569 -4180--2396 6367-3452 1381-2491 -1684--330 -1111-4044 5673--5900 462-461 -1637-3917 2837--1828 6339-3902 214--879 1486-7257 -1837--2676 -8003-929 8302--6683 -688-8126 -1709--4750 1781--9836 -38--5805 2805--7957 5195--7727 2485--8196 -3819--1679 -4977-210 -1991-6597 -5241--7564 -1088-2570 -7417--6026 1061-848 -2598-1321 8444--1966 7053-5582 7816-347 -592-8117 -1495-83 -5022-1679 -920-4844 -6887--3969 -1037-4427 1513--4667 -5702--9462 2939--2914 3705-2860 7340--4047 -6908--6871 4342-495 4114--2369 963--7181 992--2492 9375-5025 -8320-6636 -4135-4342 8525--8836 2849--5630 5014-987 -6728--2328 8799-1421 2015--1306 -5316-5618 234--5138 -3540-7887 4354--6852 -5812--4184 -6816--6924 1592-7115 3350-3308 -5558-8619 -2168--3037 9328--8710 -4464-1000--5224 -3237-2777 1225--929 -3404--4622 951-5101 -1661--3017 3577-880 6294-50 2413-3161 -9456--1827 -5354--5830 5801--5174 -6252-9649 -305--1231 -1839-1318 -1066--4786 -7657-3531 2363-287 -3144--7605 926--9784 -701-7801 -6056--3189 -887--7955 -1117--4639 5748-4431 8258--1477 -5107--7030 4663-1555 5727--4910 -4534-8645 757--6793 4325--3869 -1934--729 -1182--2207 -2614--8981 -795--3695 1320--4391 -5364--3921 5802--7228 681--9706 -706-3580 7575--4869 4265--6936 2618-1847 7247--5506 -7365-5462 -7938-1461 1577-1455 3408-3999 -5246--2860 7518--1674 -3239--2916 -992--1413 -1537--1757 6130-4367 7421--1008 -2759--7809 -2528--4514 -3963-3390 -8392--5993 -7026-4121 -8361--3062 9136-679 2387-3640 -2967-3437 8530--1262 -5129-4153 -1328-3988 5404-2037 4997-5268 4031-3700 8760--4137 8996-4746 -6165-7780 2122-1844 -5116--8414 3818-250 9259--5199 -6495--907 9771-1035 4822-3400 -4861--3574 -6160-5486 -1637--7847 -2196-1502 4456-7005 5987-3359 -6986-5200 -1284--159 -3757--2545 -389-820 -3863--5961 3807-5512 7873-4586 8619--7378 -391--4022 -4698-2311 -5706--4295 -6634-3634 -4981--4197 -8618-2144 -8393--2388 6488-5633 -815--1920 8183--990 6338--7142 -2303--5826 -604--6900 -6122--448 7114-6401 2779-3766 -7997-578 -9735--9681 -62--7345 -5377-4897 -6056-4822 -3750-4134 -4831--8773 -262-6739 6688-3164 -2208--4837 -8635-2821 -7100--2635 -8212--478 -8419--5662 8102--8317 -4922-2885 839--4217 -2642-7754 4274--6384 -668--816 -1377--5612 2506-5528 331--8745 4564-1258 6392-267 448--1958 -6307-194 -8424-2846 -6047-959 4087--5489 6440--8465 2767--7840 -3703--567 5627-3996 7622-4177 7354--1917 -6984-2313 -8169-7041 1246--5079 16--2903 1793--4312 472-5408 -8125-8565 -4038--1261 -5813-5616 4268-1312 2858--3737 -4184--8548 2474--3369 -6737-7418 2803--537 7652--909 -3700--9530 -935--9766 1963--1993 4628-2017 7238-6294 -5550-87 1026--3918 -8706-5708 -7748--5462 93-2181 -9506-1709 -874--722 821--2422 1759-3049 3557-1564 -7104-3600 -2048--241 -3697-6993 25-2639 9432--6509 2028-4332 -4425--7942 5356--9529 -3025--5415 129-2321 2478-690 3347-2138 -6463--1822 -8884-5359 4936-4053 -7591--6412 -2043--7708 -1088--3160 2212-7327 -553-696 7983--4715 -255--8096 -1008-5060 -5847-3307 9303-1796 915-1558 5615--4308 -8611-8482 3850--383 -2104--395 -5645-5909 2048--7097 -799--5842 6180-5866 -6168-2017 -5722--8816 1478--5529 4638-1085 2216-962 5538-8557 3671--7004 -5407-1717 2897--3646 -9195-6825 3146--5062 -7173--1290 4814-7966 16-8110 -1430-3313 2234--5845 -8100--8654 489--2618 278--788 3799-9577 4-2326 -4854-3848 7601-8581 4712--3827 3633-501 7246--23 -9142--865 6882-8652 -3601-6137 -7210--4639 7833-3166 5408--6422 -4074-4501 5512--7104 -1222-1938 -9075--508 -9206-4176 -1714--1826 9058--1541 6299-62 7934-2100 -7383-596 -9885-1758 3186--7382 2260-9468 -2294--9813 -1402--5671 537-4140 -6334-9045 -2915--7276 6322-4472 3613--5364 3605--2039 -6186-2944 668--7153 -336--803 -2688--6064 4829--8618 3777-7974 -3944-5565 -1884--51 -7797-6320 2592-4680 5774--7997 -4496-9737 926-3201 8260--3963 -1040-8945 -717-7207 2873-9400 1097--6941 5509-3869 4175-7092 -3579-1237 8920--5885 2150-1853 2770--1051 -4340-984 -230-6814 2805--3142 3162-1520 -6-4664 936-2731 74--6764 2249-1263 -8499--2458 1496--770 -7717-4920 4843-3869 -3885--4296 -262-2268 -8811--145 1859-1953 -6932-3595 1832--6665 -5337-651 5705-5308 -7933--6895 -4878-9064 2352--5851 -7255-7517 -5903--4969 588-5699 -5427--366 -2291-4663 -5429--3212 -7255--2849 8959--2783 5567-5739 -8064--3173 7899--818 -6820--8230 -3802--154 6829-2393 4747-5036 5590-910 -807-2068 4365-3677 -4681--2784 -3543-432 -6035--2460 -6256-6873 6768--6128 -3626-1657 -2911--624 1566--4723 4790-563 -8791--6539 6199-3233 8151--7420 -4296--3668 5621--8669 -1954--3045 7219--593 -4139-173 -2390--4148 4127-8218 2727--1140 7257--538 8404--7866 4636--2056 -2500-8552 4810-6318 348--3820 4119-6290 250--5022 -2665-4816 -7948--531 2667--7688 4493--8612 -2215--1753 2407--3589 -6049--6891 2281-3842 -8383-4076 2336--7058 2998-784 99--2796 1908--4123 -5003--1882 7143-3215 -1397-7210 -6008-8731 440-115 228-4805 3365-8665 -1585-5878 -2757-861 212--5538 5589-3089 980-5013 1788--5641 4382--7215 4723-2282 4203-1304 1122--4947 1232-7569 1942--3088 -3208-4030 4467-5244 7686-4121 6920--639 -1757-4745 -1729--6945 -3080-4 -4020--8053 -1065-6460 1535-1899 5352--9629 1199--5971 4530--5838 1271--4790 -3125-3373 1861-9177 2893-3776 8389-3210 537--1900 171--8625 3276-2203 9704--991 -6842-781 -9772-5130 -3016--6870 811-8266 1151-4471 -5274-7790 -916-343 -7962-2295 6948--2338 -4771--3412 -791-3153 4101--8719 1635--1685 -2286-3776 -3921--994 -7901-2828 3404-4526 -7178--4374 4862-8119 -5459-1991 -2801-8336 4439-3607 6556-2415 3635-1971 6645-4202 -4072--9745 -196--5255 7000-1312 8807-259 -583-9529 935--2450 2938-96 -7764-3189 6841--1170 723-7472 4062--6252 3950--9491 -518--4758 3291-1260 3815--603 227--1298 4139--6186 4523-4893 -4310-5161 4547-2865 -7129--785 3437-590 5941--2377 -8778--3572 -7589-2354 2719-4676 4066--8921 1474-2252 -6138-172 -6292--5144 -3809-5596 6760-8830 -377--1407 -2458--7895 -5907-2836 5962-879 7954-4573 2572--4847 -7594-1240 5995--5230 -6751--1219 6-4960 1992-5400 3456-4307 5440--4167 5381--7214 -2153-295 -7614--4108 -8101-8353 3489--4194 4049-2115 7344--8430 -2385--5709 -5271--214 -5636--2705 7427-8014 -3218--359 2301-1181 6066-4583 -3280-1515 8547-1759 -5908--3611 5105--8274 2559-1732 -3211-3135 5969--1294 8450--6713 -5044-6262 4785--7773 -2313-1105 5505-5720 1186-4518 -3393--6390 -3513--347 9494-6885 -1260-5503 6871-1659 -5327--4282 4005--2082 7748--2109 -3826--4388 -6372-5439 -750--8796 -3671-5932 -4833--457 -897-26 -9252--9607 -1905--4263 7237-1699 -1732-2452 -1175-4947 8339-480 4866--2681 -3543-1890 -3434-1460 -2938-3444 9257-438 -4629--2517 6537-8531 3830--6334 -2910-7721 -2344--4595 3043-1162 -7418--8526 1931-4721 -7243-2122 2666-7935 -1176-6032 6904--2446 -7778-8254 -5289--89 4323--3498 4702--2821 8310--5241 -8471--2859 4674-7541 2819-8983 3478-9474 -2901--4780 -8242--7596 -473-5389 -7128-3153 6157-2336 231--3363 4566--5661 4776-4570 6625--1510 -2320--7135 -6809--4772 1490--4023 -3296--2865 -978-4732 -7049--3861 4728-1518 -852--3023 -2163--3940 2015-6238 2712--1757 8322--5564 -4364-8739 2816-4884 777--1186 -9624-1777 1544--7308 1930--1320 -1451--4225 2498-5058 5275--505 1487--1854 354--5100 2647--5035 -3288--5834 -6420--1690 902-5737 -3001--259 -5735-7943 -863--1941 9657-3126 614-1299 -2626-5453 8239--2032 -8170-6991 -7071-6806 -1782--5176 8153--1550 6309-1165 5314--1884 8969--5870 -4006-5187 4379-1461 5154--196 2917--8039 -4446-51 -8031-6476 1989-4597 1867--3155 -1234-1915 -439--1448 -4439-8052 -1818--975 368-6649 -1847--783 -6781--266 6900-820 -7586-5745 5501-9752 -1526--3935 1473--5199 -1839-7389 -100--5198 -6736--260 -9307--1636 -8445-8634 -5036-3991 -7209-5626 -4047-3002 -4940-7571 3792-8303 750-2117 -633-6659 -2622-666 4775-6140 -3440-4223 5427-1078 9746--4317 6889--418 -6538-2220 5412-697 -9383-1540 7602-4672 -481-1128 -5978--2163 5493--8045 -1011-1458 -1155-2194 -4-8421 -4064-6325 1393-5576 7747--7085 4979-3809 5773-3332 4475--1761 3955-102 -7546--2952 110--7276 6141-7612 -4596--6776 508--4057 -4173-4547 -2060-1677 4635-393 -7784--6236 -702-8005 4445-6408 -4489-6091 3648--347 482--4663 4600-4908 2184-6319 2074-4891 -4539-4917 -8490--1070 9590-758 -8071-3758 -7751-5875 1771--1105 9566--404 8625--1488 -6586--3111 -7526--6260 -1691--3035 -2700--1453 -8131--2047 25-6856 -2362-112 -2434--4066 -1594-34 -214-6702 -457--7092 2132-6376 6500-2262 -2192-931 9128-2724 -7406--926 5547--8391 -3610-2503 7020--7437 -4704--1045 -4--278 8865--966 -5324--2847 -1255-7895 1589-8053 4721-7480 -1658-4764 6284-3326 4902--2915 7647-5166 -8290--6903 -4822-3350 4164-705 6617-3998 -5584--3389 -8703-5169 2094-1764 4809-3459 -1064--3344 2393-4007 -5669--6454 -4192--2724 2567-7634 -951--3851 -285--5528 7909-1922 9130--8441 -432--5562 3283--7726 -1749--7117 -4416-2146 -9478-3083 3844--7991 -5231--2192 2194-6528 -2459--3757 -1934-3151 -9103-8121 2187--1867 7710--326 -4750-1339 6958-5078 -7609-525 8782-5106 -7952-4556 577-5413 -6431-4791 4456--7899 4683--212 -2836--9255 2062-1187 -4806-2961 -8858--8305 -1121-5775 5737-515 8832--4335 -6470-5370 -4973--7536 -5528--501 4376--7014 -5087-2731 -811--4929 4056--7305 -5818--2179 7698-49 5709-6733 4116--7115 5797-4304 4492-3411 -955--6366 4851-8795 2796-807 -3663-2709 9490-2051 9324-1152 -2991-1424 -7224--7734 2457--4264 1541--8169 2316--1469 2680--6697 -144--2435 4421--6076 7731--3200 1140--705 -4300-8385 -4801--5124 6128--1394 7002-1180 -987--5568 -2365--2715 -1238--4368 -7087-5536 4579-129 -9329-1180 4889-6921 -2826-7313 -1274--941 165-3200 2875-4550 2532-9813 944-2759 7428-6644 -2268-556 9082--3759 7132--577 -944-1202 -7180--792 -2974-6054 5157-5613 -8093--4584 -2090-1631 8049--4696 -7602--1349 7829-6011 -5822-4660 3038-2941 5004-0 3889--5526 -6095--5803 -6335-7921 226-3079 114-4539 7123--3785 -5893--2926 -8432-5058 4905-2877 -3174-4252 4192--2156 -6503--2805 -1205--637 8993-4765 -1687-2821 -2522-6742 -6585--5676 5588--3253 4621--5246 1754--5847 -4016--614 2854--5572 579--8138 -934-5287 4677--1881 2695--2871 7701-7311 -6135--2953 -916--3809 7400--1590 -4011-2955 -1253--8007 -4980-1068 1832--8057 -12--1710 -8403--6613 -5041--4965 3148--9411 2195--5345 1718--7369 -3963--8428 -451-565 1446--8103 -3595--1411 3109-2205 -4800-6776 1870-2927 -4425-1571 3121--8336 -4093-6905 1655-3524 -5951--6864 6298-769 9530-724 9583-4222 7616--4628 -2695--953 5700-3962 7462-7152 2262--5380 234--1886 4432--1807 9022-3136 -3214--8905 2046-2048 -1238-6786 -3121--5135 3930--2986 5961--8389 2344--1250 8959--4619 -6268-2328 -3622-2981 674-1253 179-6504 1965-6562 -7452--9844 1088-2167 601-19 1522--2458 7867--2782 -3050-6586 -2773-5038 -3026-3209 -5454--4229 -544--5583 -836--9895 869-926 9057--7419 986-4802 8447--2661 8390-9513 1258-2122 -9006-424 -5699--6218 -4298--4109 8111-6380 -6777--2038 -1242--775 -3886-2245 -1055-2200 -4385-4298 -1626-4382 704-435 -7119-989 5334--2539 3455-7860 1168--1256 6215--1218 -2819-4857 2101--1111 7082-8730 436-8523 -2413-123 -1448--7536 3721-1778 -6027-4121 3570-8170 278-2456 -8399-5504 -7099-5027 2637-8388 2213-5610 -3432--3556 -1890--916 -8537--6367 -4753-6136 7117-4981 -4120--8050 4678-2838 1523--5372 3898-4366 3386--3048 -667-3227 1064-5821 -5931-2810 4839--1356 -5205--2944 -3786-7060 -5243-275 -9370-1466 -4392--3325 5496--1774 6468--5125 -7895--8838 -1647-4812 -1912--3771 3044-344 8452--6944 689-5804 4719--9339 -1653-7900 4832-2656 3655--4000 7847--7516 1051-4512 8473-149 6407-208 1812--4917 2922--6333 3539-952 9239-103 837-7119 4740-1897 9368-926 7868--5055 1435--2125 -2944--1100 -269-4002 3676-2175 1117-5802 -1599-1769 2693-4452 1987--3267 8652--1833 -6779-6929 6200--4423 -1178--70 9863--6712 -7220-1000-5395 6563-6213 4903-127 5929--8378 5157-2276 -259-3900 4559--7038 3746-72 3123-3796 581-1382 -8521-1222 -7367-2184 -5888-5417 -6174-5071 -527--6533 1388-4599 8136-3746 -5932--1307 -7930-1540 -9276-5764 4708-1913 -9729--7419 1398--7803 2652-7462 -3493--2764 -1756--5481 8275--164 -4065--8358 3677-8638 161-2876 -7279-6931 2217--2359 9306-669 -2965--3812 1855-3032 -7310--7373 4558--9592 1115-66 -8841--2109 3385-1455 -4888-4638 2629-7917 -4099-4622 -3975-842 9869--3580 8242-2741 5562--1700 -2561--3318 -5228-7697 -5959-462 -3667--3518 2967--2054 -6986--5173 599--925 -8470-5269 3499--3527 8891--5948 -5474-2205 -7871-2876 7979--5742 1788-2685 -2753-5090 3183--6972 -5365-1357 -3649--278 3305--828 4262--5093 -4999-6493 -7400--765 -6348--1357 9400--7389 -5495--5221 -3860--817 3091-5780 3766--1990 -3973--6887 7106--8933 -2383--5363 4303-1757 -6625--4795 1495-1048 8871--1748 8511--406 -986--2804 273--3336 802--7440 5663-2451 -8033--7004 4575--8949 -2233-3283 -794--3888 6904--8505 1024-3835 4072--4325 -8713--1343 1486--7528 -3374--130 9428-8783 290--7125 -2123--2158 -817--121 -8552--4743 7284--6966 -3883-182 5575-5309 6234--9404 -2468-6026 6362-3683 6004--6477 -2987--5559 6020-7703 -248--7075 3725--8846 -2334--4218 5342-1415 3543-5116 -3998--6914 -953--2945 -3659-3245 -1277-3816 6757-5723 -6938--1141 -7526--6746 -2089-928 232--3591 4506--7072 1703--9406 -416-9954 504--3620 -4803--7833 -4573--2780 1037-5551 -5707--869 -5902--4795 129-2484 9236--3236 7321-9281 787-7881 6007-6980 -2544--4158 5033-6770 -2450--2496 4386--1658 4434--5859 405--8418 -2007--7405 4541--6138 -3271-308 3457-765 3435-6840 -2648--5283 -5627--2243 7306-4551 4369-8803 -4317-1389 -7523-618 9155-3445 6730-3645 -6188-7893 -4014-4498 -4051--1708 -7778-8086 -3486--3683 -7242-8940 4422-204 -1835-2111 -8006-3104 -5405-319 3991-5360 -4378-5341 7785--6349 5902-4224 2484-5895 -7156--1199 6359--3500 5958--1902 6918-4097 -4735--4406 2388-3027 2467--5684 -5476--3061 -2223--4562 3155--1105 -9547--4636 1571--2831 -7167-8266 -1947--1673 -5139-856 -7640-5522 2580--2266 -6265-2556 2127--4068 -4989-9854 -768--720 -5203-6325 5199-524 4318-109 -7452-9210 398-741 7995-3834 1993--7 -7949-3392 8971--167 -849--2798 8644-6926 -4994-6207 -7767-7127 -482-3356 -1608-5765 355--1525 6605--3589 6324-1036 4186-2538 -5997-3526 7861-1480 -4338--6095 -7471--1631 8430-5189 -7900-3626 -4642--2886 4469-4806 2670--7077 -127--3536 -6493-6253 2446--4575 -3434-8799 3134--1152 1023-150 8768-6525 2674--1469 -5983-6223 2000-8630 3130-1071 -6252-5895 2999-3361 9114--549 -5512--4376 -7002-7416 -5121-8003 1546-8028 -143--2021 6977-1577 -6981-2147 -351--216 -1627--4150 5252--6912 -4039--1808 1553-7972 -3537-6844 -5036--6005 -7790--6043 -6375-6629 7296--4389 8634--4031 -3219-4611 -36--4392 4035-2989 -4407-2271 5420--62 -4187--1369 8168--2686 1845--4668 5664-1388 -4197-7201 4700--6465 -3--5650 2602-3179 -4523--5733 -7588--3515 5257--5391 201--7977 -1791--1730 2799--8675 -463-6992 7131-6767 -7338-5407 4139--5808 -4730-3375 5239-2937 8913--3310 1247--4919 5854--7377 4753--2164 3838--2956 -200-6175 4354-1106 -485--8474 -3820--3504 6059--608 -1019--1436 -7184--1410 1998-2810 507--5264 2243--2395 9545--3269 -4396-3160 -7345--1607 568--618 1639--7953 3787--2495 4965--6716 -6977--1146 -7633--1328 8651--1203 -6773--3784 8921--573 -9924-5771 -321--3569 4301--6264 -5924--1346 3952--8319 4814-737 -6480-8294 -356-5408 4903-1406 9383-1909 -4385--7227 -2775--3207 7140--8797 -2736--7483 6308-948 -6749--7116 4458--2358 -392--4663 -5381--3267 -5328--3283 3632--8766 2768-2497 -6852--3487 829--5583 2269-3850 8409--1088 -9534-2192 7255-3144 -4143--5459 2130-2977 3160-4708 -6517--41 6053-87 8661-1790 5227-9126 958--6343 5615-7534 -3711--4207 6445-1938 7766-6330 7582--6430 3305-8976 -2334-4668 -6761-2139 -6167-5109 2206--7183 4478-391 3304-490 -4981-2567 6720--3498 7436--198 -4005-8130 5750-5181 3779-940 -216--1767 8772--8199 4146-8515 -4519--141 7040-4833 -8689-924 2804-2932 -6190--6200 -707-3991 -8509-4778 -4394--4559 -3982--9068 3994--4981 -410-9477 -1981-837 -9819-7124 6556-1154 -9667-1641 1741--870 347--3088 -7298--4850 -5322--4888 -2759-2145 634--8334 -5451--7437 -226-6889 2982-4285 3322--83 -8916-6928 5307-9314 -1973-8540 1872-5680 6557-814 1785--6616 7146-4728 6829-1410 4918--3930 5172-6769 -1690-3765 3371--3403 -7042--424 2783-4537 387--77 7293--4819 8468--8032 -376--8372 3007-2203 7651--4234 2537-1428 5635--6901 7142--7416 -6654-5688 697-5571 6900-3957 7058--7392 4392--9388 -1317-3061 1864-4563 -2439--3871 4908-980 4307--3569 4111--378 -2274-34 -972--8576 -2386--7293 2692--8528 3813--2280 -5034-268 -6964-13 -615-1746 7500-2115 -8294-1377 -5784--8497 -1889--3218 -9444--2995 -945-1275 -3484-63 7207-6097 -6926--6746 -5474--435 -3017--621 553-2605 5792-3585 1047--2869 9258--1252 8600--256 -9847-8221 -3503-2444 -122-6179 4625-8833 -1298-1024 8350--1370 2443--9898 -688-4019 6092--9442 -2174--243 -1727-5878 -5457-1820 1330-4477 -4580--2912 6935--3598 6109-1211 -8006-67 -8342--277 6249-2449 4877-2357 -6697--4118 6255--5915 -1932--8026 5848--6679 335-1749 5925-828 -3093--7033 -3623--5044 -8284-7760 -3784--8771 2574--6225 5384-5168 5700-678 7575--2555 4113-2112 -2241-6078 6761--7779 1681--5511 3336--2867 -8921-4911 2497--9164 -51--6269 7381--7469 -3386--4508 2195-1907 -6393--6258 -3124-6906 648--1048 3740--1566 5182-1480 5300--4700 606-4818 -3770-8827 2470--4961 -6057-2753 -1362--8156 4379-1870 -1471--1637 5958-114 -7038-6477 -2220-8547 -3331--8960 -3441-1814 -1192--3600 -3699--921 3713-200 7450--2831 5050-3624 -8636--76 -5179--6603 -7244-2854 3764-8740 2155-2735 6804--1014 -1779-948 -4531-4975 8347--8032 3381--5391 -3494-3385 5640--626 4065-6955 5952--3705 -8699-6981 -4953--3795 3040--5044 5663--3009 1786--6636 4011-8648 -4471--1756 -133--7835 3151-1223 3970-6822 -5290-6857 -5506-1089 -3342-5711 7458-7632 1480-2296 5242--1859 -3970--5514 2292--3444 -2761--480 -9790--6702 -5976--8908 1232--2523 6274--6600 1694-5985 2579-7066 3759-6333 5786-3057 5309-6738 -7100--4484 1662--3155 -6554--9569 -541--7450 -5464-2749 8760-771 8038--6354 -3589--250 9774-1397 6466-634 -9843-8060 3279--1473 -7518-5875 5012-4147 -784--9303 1901--5125 -7863-1983 -411-851 -9659--7821 -4699-2337 6547-1505 9408-3274 6751-42 -8112-5500 3026-2395 -8200-989 -9653-688 -1849--4911 2461--1824 -1762--4938 4442-934 -7036--1520 -430-8677 2852--4263 6343--1428 922--4332 5787-4240 -3392-507 5957--6683 2287--3025 443-6645 -4590--3071 2744-3814 -4661-7592 -587--520 4889--2730 7973-2263 1685--3501 -6169--4717 -8570-4194 -7112-2708 7009-7062 4305--9641 2270--1938 3292-3382 5006-6731 -2681-3579 -3634--1002 6364-2146 4905--3756 8739--4951 1046-7415 -4892-2279 -3353-2175 -9343-1018 -2166-6004 -6838--2380 6125--6280 2726-2728 -1474-5862 6157--4255 -7995--190 -8778-9528 -1195-2714 8363-3089 5158-7685 -1280-3179 -6549-1391 -3094--5970 -3155-4372 680-8439 -3537--5240 2508-5167 -4306-7802 -1371--3147 2170--3211 5592-575 -6550-1919 2869--3845 -3746-2138 5400--4900 -8476--2782 -7821-1220 -3288-1663 2650-5777 832-7884 4002-4351 1431-2055 -4267-367 -3154--273 -7796-8828 2283--6074 3751--705 8734--6713 -6508--234 -2055--1118 8462-6430 3726--2818 3384-6101 -6918--1038 5554-1455 6902-3705 256--3463 5727-7252 1494-248 627-9621 2249-4984 -1325-5506 7436--1725 -1367--3039 -873-805 6555--2773 4987--3066 -1919--139 -3423--5656 2050--8117 -3169--5315 2339--1468 -755--2189 4025--9720 -2197--3726 -309-1644 -6804--538 -9714--2343 -8932--7611 -297-5015 -6303-8481 2800-6898 -6844-987 4527--5853 2154--6744 699--4192 -8512--1917 -9611--4351 -1115-3355 1078--1659 -7110--1592 -5909--6020 3797-6317 -5045--2778 1033--4199 8188-3343 -5681-4326 3480-6289 -5022--2168 9421--6147 -3700--8927 -3114-5874 6856-1669 -8627-2802 3648-3155 2485--4351 4390-9319 -1213--7199 -6324-8334 -4908--6760 -3838-4891 -6857-1393 -2944--7960 -5673--1135 -9326-782 4510--6485 675-3442 9165-62 57-9421 2417--1173 6177--8256 -1094--1309 333--7712 1005-4070 -223--9316 -874--1377 -8325--3225 -3700--906 -283-4518 -7798--4111 6263--2328 2336-1559 -1929-2369 6342--3131 1977-9363 1799--1166 1011--2695 -7598-6002 -4429-208 -558-2034 8859--5167 -4139--476 -3031--815 -4275-1274 1997-5216 -605-5405 2850-5340 1232--1953 -7819--7509 -1512-4729 -5776--2108 9439--694 -4051-5730 -6534--2864 -1700--4463 -2757-967 301--3655 -5625-9586 1521-9873 -1235--2512 1234-3705 -3066--2957 -4503-6927 3194-1604 4213--7037 5961-3959 2463-6348 3522--8887 -2173--3447 -718--2929 1413-9894 -1024-5638 5817-1758 -2319--3333 6621-4356 -6081-7751 4003-323 -3492-4604 -5639--4882 2355-3036 -6090--2162 -9231-6383 1759--9358 -1468--1163 9393-2783 -1103--6653 -4796--1735 1436--6184 -4288--6620 -3687-297 -8713-4456 5047--8022 -1875--7213 4380-2340 -4064-8767 2886--383 4992-641 -7872-494 -4578-4843 3248--750 7665--1644 5326-1846 708-4170 -6975-4942 -7475--1054 -5357-4813 683--5149 -2591--942 -8504-7139 6903--6786 -30--8320 -2579--9233 475-2835 1149--6199 4398--9648 956--4810 7220-629 494-5554 -4784--2896 6551-48 8454--4592 1072--9193 3907--9413 -3375--1966 8383-7739 5966-4491 8397-5819 -2769--7322 -6683--1204 5083--8496 -4435--4940 -5131--8722 -2972-1608 -7148-3028 8321--7810 -839--3607 -2132-1417 -1674-7173 1425--1741 -282-607 -9253-7047 2491-2676 3317-7548 -346--7813 763-2760 -9410--3951 744-1320 1114-2090 -442--1538 6261-1203 1122-3932 -4996-9428 -725--2485 -4570-7899 530--4701 2662-3880 4581--5638 5357--2430 3090--621 2172-2789 1315-9524 -2516--4684 5629-3721 4573-9576 -1386--3703 251-8006 4438-2653 -4949-5244 4884-4463 5021-376 7181--2030 6423-6797 -5896-79 -5278-1495 -6352--4431 -3021-5109 4603-6437 -4343--2952 -3980-8579 -4556-2156 3136--1334 -4276-7544 -5555--2471 6848--682 4058-4655 4058--9033 2891--1266 8821--5997 -6767--5442 -3612-3085 4172--5839 -5516--7611 1202-1611 1010--3313 -6772-8576 -4523--7437 -547--2063 5360-3514 -7460-8235 4151--5569 7495--4287 -6505--4976 5993-5959 -430--4554 5387-9096 3019-6938 2582--5079 2398-1385 -994--1063 -5507-2572 -7937--9322 2518-7294 -976--3480 1743-3448 -8943--7217 -4175-2498 9143-2434 -476--2169 9203--1271 6047--2671 -3864-5799 -7605-161 9691-1315 543-3435 3679-5752 3394--6728 6607-5855 -3209--6288 1835-1787 4618--2627 -9327-1869 6000-6188 -217--8574 -1523-5262 -1317-1912 -4913-166 4222--5770 1268-6433 -5734-4496 8363-1222 -9231--5489 7299--7798 -2385-2012 -1779--1971 2352-1438 -9666--7550 4073-3269 -3965--6771 -4538-7160 -5285-240 1591--5060 4362-9947 -666--3072 -1037--254 -5681-1453 -4234--6738 -879-8505 -1593--1688 6494--50 -4464--3128 8409--6146 -547--4974 -8128-8028 -5904-3111 6277--5495 7855-780 7716--621 3714--6039 -3631-7449 5897--6652 -3035--3425 3622-1914 -7707--3433 -2961-3692 -2073-4486 -1323--4032 -3381-4823 7170--5811 -4077-9532 -619--3509 -7070-4820 -6775-2242 2952--1215 8193--2923 2913-4068 8895--977 9853-58 5619--2749 -661-7491 -6335--9309 -3464-1000-3829 6620-576 -1182-3327 -5046--5111 5868--3913 6417-390 -2802--3962 -3954-3201 -3330-1956 1406-3413 -4286-6697 -3040--3172 8966-2076 -8173--241 1911-5425 -7060--738 992--9253 -2885--4830 3713--3286 5529--1574 -9396-864 -6696--7953 -2696-3029 3944--2193 -3611-3960 7351-1331 -910--2426 7456--3639 3526-2488 -5019-4571 7908--8278 -2323--4034 706-6180 4043-5404 -7897-4089 -2131--5119 -6364--836 4134--795 3754--7016 -5580-2663 -4871-2768 -3649--1214 -8895--8413 -875-4536 3106--5774 7089--369 7020--8258 4428-8635 -1088--9419 3307--5116 -7449--9136 -1923-4026 5990--1702 5846--9546 -2907-3447 -4092--4270 7162--4244 -3984--3304 -4123--1128 4430--8465 -4301-6081 -3008--2361 -6230--1068 1332--4006 6018-5469 448--1207 6658--2858 -1415-7174 -1544-5805 -7--8128 5361--1666 3598--4416 -3713-808 8568--1180 -8864-184 -7858--3662 -7826-2136 -9354--227 -6961-814 5994-3989 -8496--3745 -69-3905 -3906--4535 -6702--2584 -3248--8976 -1543--3863 2810--5984 1955--4719 -342-7204 4119-4739 4162-82 -1654-5404 3524-5780 -7575-1378 -7171--4562 -2110--3441 -332--5450 2107-1857 3027--706 -73--4535 2704-6430 -5841-3472 4484-6735 -7276-3068 -7953--1563 9356--858 -2746--633 -5953--3166 2923--9232 -1616-6603 4593-3730 604-5752 7134--982 948-1492 8313--8934 -2342-7970 -3920--1818 -8343-7119 6980-2141 -5444--5124 -861-4328 -3025-8372 -2595-7581 6342-7413 2097--9102 3252-165 6042-3143 -4801-4316 -8480--5884 3174--4215 -3147--4609 -8769--1513 -6114-9177 3347--4109 4910--836 2349-1104 3103--8501 1770-698 -9477--8244 4952--1106 7179-3694 -745--8092 -967-75 -8635-9063 116-2390 -8185-5720 4746--2713 -720--1815 -5191-5978 21-6933 -1607-1374 7473--1327 5431--9290 976-4445 -7525-131 -9375--5423 -7198--4235 -3707--6236 2465--2893 3426-3628 7062-5894 6448-4157 -667--8255 -2430-1153 -7649--4976 2216--343 -2590-1166 -9302--7850 -3744--2820 -5248-2950 2347--3986 -4880--29 -1033-1771 2414--6380 1409-6596 6604-655 -758-5354 -5225--4407 -6414-1715 -8780--558 3677-2969 -6558--6031 -2874--4662 4527-6588 -4571--3402 356-3769 786-2530 -2364-1182 4072--9221 3402--2534 749--4123 -6295-556 -9959-4136 -5347--1248 -5552-8617 1405--691 -2817-2794 -1281--6765 3954-933 -7377--6914 -1542-2098 4866-6113 -654--2093 514--6477 2521-7377 -4041--7998 -2700-3031 -5969--5889 5665--3906 -7605--2117 88-3615 8655-5021 8622--6852 2053-7463 -5829--704 -6615-2129 -1696--7451 5514-4027 4385-4669 47--510 2081--7018 3317--5760 6787--7508 4709-4784 1255-4169 7574-9187 -326--7115 -4138--5641 -7496-3342 -3025-4485 -574-5172 4691-3573 -1166--4693 -7388--4042 -7415-4076 6240--2409 4256-2810 -8330-2065 7958-5557 359--1303 -2796--7 -460-4690 -5283-5900 285-3981 7751--622 1166--3420 -2297-944 4526--4301 -3465-6046 48--5346 4548--1760 1382--5702 7149-7188 -1596--7553 -1197-8984 1341--664 8454-2946 3587-3535 5168--5058 2233-5537 2083-269 -3053--4000 -7703-1574 596--1700 6539-3009 5303-43 -8050--24 5633--3954 8969-4065 -8790--2282 -1774--3404 -1827--72 9239--3776 5940--6027 4158-4803 1775--3517 1966--3064 4702--8027 158--4662 -272-3058 -8352--3227 -2995--1662 1880--7947 -435--5238 -3738--6753 5091-2222 7040-2490 -5823--1683 -8943-7285 -1846--6316 -3175--5809 -2870-3160 -4811--4150 -757-3166 3548-2038 9703--2627 -3640--3308 -3747-2831 -9134-2592 2747--1766 5564--1193 7189-5300 4997--5849 -2671--5510 4493--7108 4573--3151 -2107--1092 -7529--6149 -2042-1855 -8969--8038 1686-3746 -3086--6300 -2463-5022 -1690--1807 -9596-3139 -5582-4365 -5537-8745 -1031--5200 -5042-2433 -1049--4033 8805--120 -6873--3880 -6117--1094 -5524--7316 -4628-5276 5731--6456 90-5686 -6335-3035 9214--2848 -476-6038 5347-6582 -3783-8719 -4357--9097 -1475-881 3644--5559 -1053--2078 524-6885 -7102-1383 305-1979 4193-5109 3956--5448 6311-8758 -2059-50 2816-7662 -4654--2087 -9639--1977 -8435--9232 -736--1510 -6592-1095 -9636--5282 -2510-3803 -1273-1489 -9513-3767 -3192--486 -5906-460 8210-3627 -4583-4025 1623--804 -7273-1012 -3447--4964 -2841--4230 3945--3825 5769--3706 -478--3065 -681-4368 -4266-1907 4253--4624 4384-3116 2774-5292 308-8651 498--2419 2207-646 1342-8478 -3001-6031 875-8417 -921--7624 5650--8895 -793--5810 -555--154 2497-3595 8513--6008 -3644--3166 5751-4855 3700-7686 -6070-5021 7949-100 3598-7805 5580--8260 3753--3481 2389--3671 -5521--7037 -4406--765 6633-5530 -5849--56 1965--2957 -773-798 7884-8719 -3802--841 -7444--1628 7295-3286 6125--7169 -2968--2347 -6373-4260 -1044-645 5301--3522 8435--5323 -7146-1626 -1580-4876 -1134-1446 5271--3097 249--3790 -6464-7121 3185-1085 4867-3095 3534-4034 3315-1315 -4114-1342 -2942-9164 -3580-4511 -18--3256 3214-5569 -1466-8943 -1029-2118 -4285-1438 7462-5982 292-1849 -4162--8179 -3515-8753 2791--2698 -6265-2000 -9537-1650 -1395-8500 2384-7257 518-148 3284--4645 -2569--3018 2813-7467 -3622-5577 2919-116 2600-348 -4542--1077 4348--1512 101-5345 6138-750 -4155--5726 6318--3638 6948-5728 -7017-6788 226-6012 -880--5214 7883-3061 6647--333 1435-7517 -2226-7187 90--4496 7041--4527 7410--2625 -5836--3361 -3778--6829 -2776--4281 -6544--8090 4667--3107 -5061--6880 4496-5703 -1938-6407 -4661-6256 -7337--1202 -7814-1011 -494--3690 -7384-215 7737--8742 936--4515 -4824-9362 532-7948 -3934-5261 6625-7109 110--2137 -3823--7408 6258--2797 1129-8890 3073-6734 -4364-891 -7570--8840 1500--2503 9453-6841 3143-6241 -142--5935 -3860-9075 -3197--5190 -195-6993 3436-5366 2392-9490 1264--6035 -5125-9065 -698--4573 4961-469 2687--5001 -5485-1059 -3416-235 5677-841 9424--3302 -4541-654 -1558--6104 1385-1520 -3225--1328 -575--6954 7028--4186 3586-1402 -4328-5083 -7859--1593 5851--2983 -6805-3337 -87-5111 5725--8198 1374-9004 571--6116 6661-8680 -4529-1522 9224-6538 -6582--298 7712--7686 4961-19 4250--9408 1128--9120 -2557--7939 3610--842 3304--2027 3554--3664 4825--310 -3267-1366 -8924--6358 3686-6446 -3379--7712 -1473-4408 -2134--9457 2233--3900 -6519-9230 -3011--6586 -4962--5640 559-9449 -3162-3434 3848--7140 -5112--1868 6840--2511 -8670-6799 5040--809 467-470 -2150-6857 5093-2303 -6130--1028 8918--5317 -1251-5932 -3914--5686 -7900--8327 4801--6248 -7566--7917 460-6133 -6405--7762 1767-2014 3187--7627 -4241-4041 7506--1019 4856-6682 412-2643 2095--901 3384-8409 994--1800 4333--798 4868-1029 1046--2445 -1181-6260 126--7676 -1436--1 -2444--742 -5562--95 648--1947 -572-4647 -3773--8555 -1857-1733 9136-1692 -8770--2854 -6170-5145 -6339--854 -5659-2233 -4577--635 1080--2866 -6541-765 6159--5328 6256-634 -6358-6764 5058-2687 -4463-2100 478-4709 -8091-7408 -1062-5829 -7671-3517 3028-4131 1603-7047 -2686--2658 -8186-1298 6090--8914 909-6064 3050-1377 -4678--1112 -1895-8757 -1240-8893 1771-3284 5435--5433 1436--3183 -5553--2859 -746--2631 2987-7242 4625-5299 2073-5502 -4094-4376 -7489--7219 3061--5153 -1221-133 -4379--1258 6734--6310 -3039--4625 -4238--5349 -2150-4168 -4666--3384 -2063--2145 6200-9174 152-745 5781--5221 -7336-198 -2719-4168 5467-5019 -4622--6591 -1950--6604 -3816-593 -4527--2540 -2152-8621 588--7569 -3798-1038 -6881--3117 -1588--1916 2687-472 7362-5061 6432-4088 4775-5164 -4949--5062 -3323--2476 980-6734 1490--6062 -5989-3750 -7881-4731 -8025--2835 8652-4397 8261--2265 -4853--3825 -3329-7576 2228--6798 -5799--8803 -1366--6986 7065--129 3724--3173 3462--5936 3264--3724 -6360-3424 -5733-2192 -8766--8697 -4110--9637 -2648--3996 6261-997 -7929-8288 4546--2096 -2422--2081 -9040-6561 -6989--585 -349--2171 6055-1746 3568-3311 -1752--5384 352-4057 -7925--7970 2936-2971 191-4708 6937--6802 147-4588 -1821--1734 3911-3630 -2181-369 -2337--4955 -4288-564 111--2228 -9231--3210 -4992-930 5642--2544 -4009--5307 -5929--2951 3949-9191 -3491--483 5043-7169 -4288--5392 1258--1349 894--101 -5542-3849 8085-1351 -9135--2024 9008-5291 6900--8340 3325-3116 -5824-5439 2793--4447 5798-153 117-5169 -946--3207 -5283--3728 -9084-270 -8822--8556 1515--8224 3730--2526 -4256-1510 6842-430 789-7790 -1748--6253 6363-4656 -1679--2515 9380-5597 -3994-1565 -8876-5960 -7777-2101 2779--2004 -3529-2872 6522--5290 -4612-8168 -3891-309 9896--5830 6046-5513 -101--1186 64--1684 -2533--9608 -2206--4583 3787--2214 -938-3701 1051-841 -8115--5421 4021-2063 -5609--5433 -5572--2110 9517--4673 -6555--5677 -5631-842 -8533-7086 -507-6699 -2707--629 -5985--4131 -7467-6793 1115--8669 -3861--9482 -2731--3466 2352-1555 3813-6823 -2640-2038 -4697-9654 -2027-1648 -7815--9230 2014-6717 -2807-720 1482--4964 -6508--141 9936-8101 -5564-3060 8366-5542 7907-4903 1616--3652 7219-1470 -9852-2239 235-6831 4096-1260 -9576-1620 2894-6338 5485-4639 4596--4713 -442--5858 -1064--3749 -3330-3531 8117--8261 -4--5630 345--303 -3853--8199 -4199--7975 -5025--1547 -7545--4305 -7317--2831 2650--90 -8106-6270 3914--5875 -7115--7598 -1494-5142 -943--6787 2144--3865 -7107--8118 -5430-2091 6998-8538 -836--5324 -2953--6302 -2496--3386 -6916-1767 -2197--370 -7005--3000 7456--8707 -114--713 693--4049 5785-8320 -1749-7575 -870--8265 -3747--7868 -4366-7448 4301--1484 -2754--3515 3102-5807 -3387-2335 -8937-237 -2210--5501 7954-5010 4394-3642 -2689-9239 -2561-4751 2525--9069 -1154--1111 -9484-8324 -1304-188 8312--9347 -1993--4113 -6931-8548 -4283--15 5222-147 2067-1364 -2737-7781 3476--6685 -2880--8064 -840-7630 -364--6456 5600--921 -1321-1307 -7291--7769 3614-2860 -8135--4901 5436--1794 1530--1995 -6170-4830 -5519--44 -7323--4487 8531--6365 -2709--217 4996--2707 -854--4946 2935--3244 -8377--9171 -3179-4564 2682-3196 5313--3279 -2266-4881 2383-5566 -6433--2149 -2076--306 -4609-2139 -6530-8686 4671-6007 2089-5704 5844--3420 -2303--9553 -120--1058 -8197--3635 -7117-8926 2193-870 -9197-6499 -5174--4293 108--2713 -558-6808 1445--3062 6025-3078 4539-5485 -1435--359 -4723--2438 3817-8732 -2706-794 -1094--1736 -1233--1349 -9566--3280 1414--2338 8265-4920 4851-6592 -959-6196 -3858--9142 112--3906 -3761-114 -467--1677 9845--6782 2631-5700 1503-4225 8433--2604 4753-4232 1482--1165 6353--4301 -7585--1912 576-4816 692-2028 -57-8541 -1206--9036 4249-324 -7213-7358 5863-2335 5084-3113 -2426-5458 -4743--6507 1856-4760 946-235 8268-2288 8233--4355 6912-457 9971--4849 156-1527 -2588--3223 5298-3636 -3769--605 -9546--5748 -5503-3120 -8558--2322 -832-5900 3245--7325 -4314-6515 -3537-4874 -8593--4275 -4663--5768 -466--1248 8163-2912 8946--7275 -1875--5544 -1365--2650 5754--4588 -8777-54 6529--1414 -3324-3432 2806--3028 3889-1151 -6648-723 490-1038 -2836-5547 5744--4193 6002--3154 1408--4702 2060-9343 -2732-4389 -7348-4660 6358--6899 6056--1691 -7302--786 6910--4204 1385--8967 -4099-3904 -9199-4214 -8024--2873 -7020--1913 4458-2031 4623--1037 -1301--1474 4226-5700 -7086-5054 -3037--5667 2139-2601 -2531-1150 3939--2565 -7501-1400 7852--8122 2203--8250 -832-3411 8491--6402 7593--9304 -1034--1409 4198-1543 6071--926 -8022--6207 5579--9069 -4025-6079 -831-9204 -85--2187 9205-3556 -7827-2723 7556-3154 -3758--2137 5142--7915 -3894-5789 -3921--1403 -805-3216 1679-9441 -2568-2823 -5196-822 7686-6724 -1191--7291 2428--8637 4235-1200 -9445-3457 -7691-8969 -1621-2801 -4194-5527 8193-8117 -5672-1000-9512 -1044-1197 -76-2563 -3521--5067 -5056-1259 -1502-7647 3499-2701 -3979--3840 7842--3696 -4709-2396 -923--715 681--937 -8541-6476 4585--6980 6708-3200 -5967--6969 687-1416 -4322--4982 3842-2813 -1386-2543 567--6357 -1016-2267 2743--9244 -3056--9106 -3838-4011 -4662-2116 -1429-6219 -5021--1973 8858-2233 8181--5370 2992--7380 -6347-4290 -2785-8589 1505-1156 -383-2892 1543--5600 74-95 -9036--7651 -6377-6567 -5103--873 565-1103 1943-8937 550--7222 2648-7925 266--6163 2055--6881 6604--3572 1821-1938 1617--1382 4884-1176 6371-7695 2377-6250 -6275-9099 -1456--1763 -7882-1984 1805--6206 -5695--2947 3928-2740 -8149--5006 917-2031 -9139--5113 4845--6691 -902-2367 -3822-4037 -180--8608 -3050--3342 -5073-7669 6008--1622 8952--3471 -7081-7263 6-3000 -1220--1581 164-6024 4928-4992 -2626-3918 -3333-2539 -4720--6091 -3390--9298 -1447-3704 -7933--2773 7082--7154 501-810 5668-2958 7799-7786 -4311--5585 8061-4764 -4914--423 -1713--3497 8442--1483 4561--1678 3866-3350 -3930--4516 -7192-2224 9248--3419 -1593--2252 7950-1507 -7157-751 -4646-369 3293-8586 -4916--5651 4793-2623 2434--2664 6116--2704 -2165-6200 -3334-765 -7791-3148 -4193--859 -3299-8596 2159-11 -2657-7649 -1639--1957 9089--5619 2339-7864 1259-6796 6855-3229 -3071--1486 -4230-3165 2125--3482 8325--1642 6886--894 7393-8718 3621--3254 3180--5440 -1224-5814 6030--5974 -3903--4964 -5951--4250 524-4895 -4953--1866 -3480--2131 -7771-7840 2888--2114 7886--1260 3794--3258 -2166-4532 2107-6543 -3074-3442 483--3255 2223--1550 -7614-213 -3406--4695 -737--1276 7575-8639 -3229-6622 6857--5124 8509--6392 5648--2790 -1518-2041 5905--7704 2516-1487 8032-4105 5787-3027 3545--6248 2895--871 6625--221 -125--5936 -835--3948 4168--6652 4097-5606 4761--1417 1191--621 3971--3425 -2270--28 5720--2447 -8383--4450 8440--5182 -3052-1622 -7677--5216 -5253--1855 6889--855 -297--3150 7123--6913 -6251-3504 -2958--4221 -1769--7946 -2539--3825 -1090-5351 8161--1780 -2849-4080 6224--3923 -6488-876 6647-6622 -6725--346 -5396-4883 7646-5573 8002-492 8398--2131 -4492-4369 -2401-1751 4248-2153 -6116-667 -996-5695 -5215-5989 1347-7782 -6138--4464 5762--8767 2262--9021 -1580-6399 2724--755 3157--1005 3607--2168 8081-6687 944--2595 7961-130 6018--1126 -3156--5329 6061-3180 332--3974 -3400--8448 396-3765 -137-7183 -774-8621 1147--6250 631-5653 -4975--6200 -1993--6701 4167-6919 -4491--2187 7321-7438 1764-4924 3676--1235 4790-6121 2938-1981 -9730--6190 460--5152 5363-1969 1712--8636 3652-2660 -9229-7857 -4986--950 1362--969 -6040-2705 -3021--8108 1202-7966 -2848--4903 -4147--8830 2978--6818 4929--8345 5456--5142 273--7084 -5762-2265 -3212--588 -4087--1402 -5013--6726 3374--4005 2068-2846 -7111--8574 3345-5539 -6421-2147 4478--2835 -1481-7813 6236--4947 -7859--4086 157-1255 2017-5479 -4037--3109 -1541--3629 -6293-8833 -2552-6176 3499-6297 -4472-3739 -8553-1001 -7509-5761 -1753--5350 -3324--1843 6110-1650 5853--5408 -4204--3232 -4106-6174 500--2791 3680-2363 420-2077 -6657-8561 -4335--8236 -3842-9062 -744-329 5339--666 -7792-1452 -1044--8134 -5254-7049 -4483-5352 -5834--7583 2119--1005 8181--5610 -5635--8080 -2391-2837 8392--9289 1834--5443 8066-3661 183-5974 -5513-3482 -1340--2164 2581-6805 675--5634 -3423--4803 2734--8191 -5316--7389 4301-3932 -6694--1714 4136--1827 -1623--8234 -3424--6717 5582--3194 -4965--5818 -1305-2211 -9426-7074 -6604-410 564-2483 5381-778 6474--2885 -3091--2068 1422-4339 2104-2226 -537--1818 -2419-7753 1056-3669 -8667-5167 6711-3623 -6511--1774 2492-1257 8917--2638 -1490-3318 2422-756 7722--1457 859--1856 1695--5123 359-8594 -2137-2691 -997--4423 -4016-2326 31-27 -4187-626 7076-8215 3699-676 361--3120 1005-4545 3134--6953 -4667--3970 763-532 -270--7969 -1295--7125 -4534-3013 -8575--8341 4270--1719 2213--4095 -3209-7826 -4873--5098 8105--134 -3159-1419 5698--3777 -4999-3600 5029-6327 -692-759 3088--7745 5464-1860 -9210-2694 1314-1749 2456-5755 -3717-2175 -2906-4366 -5455-5742 6387-2225 -2890-6105 3064--1819 1771--5871 -4368--3037 7434-4605 -3677-91 -8274-7662 942--1448 8515--2673 -4948--1150 -7512--8250 -4705--5598 -41--5519 7093-285 -4369--3643 -8599--472 -8008-3266 -2422--366 -9590-884 -9936--6708 -4513--396 5012-2061 9269-3442 -5067--5104 7908-6476 -5512--7545 3737-7154 -2524-451 1187--349 -2013--789 -5542-5567 -6030--6413 -4479-4732 7512--3128 -9225--5994 6844--2184 3282--2435 1126-747 5649-4592 5810-8033 3624--8042 -2774-6477 -7505--7456 730-7044 3243-5391 7562-4953 -1485--281 -2687-5215 4263-4079 -6544-2217 -8943-2636 -3866--2491 -6712--818 4823-5799 -7944-8779 -4443-7541 -6025-34 -8790-7590 3722-3691 2389-4389 -4171--226 4760--3313 6448-2268 9371--3960 7559-6049 -4956-2570 -3548-5298 -2522-5215 1972-1804 5919--2356 8867-9493 2018-8609 -2027-814 -259-4364 -2373-69 -8526-4037 -2811-5722 6555--3691 -5728-5599 -767--4099 -7156-3193 8023--6307 4848--2588 -4299-274 -7840--2358 9403--2522 641-1873 -3435-6815 4788-8077 1887--7735 677-3317 6400-2534 -4325-1640 9518--4682 -964--8139 2109-6366 2928-2936 -4577--4469 8702--982 1843--5365 8032-4298 7700--2525 -4094-5611 -6886-5034 5136-9424 1362-1508 3414--1359 -210-224 -5026--8197 3799--197 4715-4127 8--4473 -6839-742 -1466-1437 -6806--3988 6993--2892 55--8943 285--927 1029-4755 7850--3043 -6301--2422 -5323-5748 -738--72 2191--8903 2891-4649 -3165-6264 7614--359 1540--2209 -9652--1533 6461-7082 1723--723 9243--5680 -5226--2315 -4652--2479 -582--5444 -5683--7217 -1653-4743 -5303--494 -3012-2536 -525-6912 -5365-3734 -3551--8755 2327-2337 -266-7774 3661-3624 -3223-4786 8776--1375 -3116-8769 -207--4024 3104--7014 251--6230 3096-6776 33-5489 7480-2775 737--6113 -7437--5368 -6474--728 7864--8666 -3115-3684 460--3293 -4062-7087 237--8028 3392--4879 -1767--158 490--5321 -838-5147 -8336-7348 139-4265 -4656--5710 -2482-9226 483-4004 7516--1486 -1329-7483 3388-4202 2125-7465 5222-1642 2307-4167 -4518--5092 -2894--6113 -7212--3923 1881-8184 -2740--3458 2733--5201 -7324--2075 -6866-4063 -5270--4285 -6164--5020 7576-4153 1448-3787 -8752-5237 4149-461 -825--4069 6238--5333 -3099-4557 -7082-3431 -4391--6172 1349-2967 6766--337 3803-364 -3909--2427 5292--7176 -3661-3132 -8319--2552 -5069-783 -4597--7604 4222-7981 5702--820 3315-3358 2957-6276 -5201-1827 -1190-6507 -2384-2060 7439-6073 6115--2782 6199-5818 -864--7392 -3849-8868 3738-5576 1017-795 9720-7229 3704--7970 -2587--5747 -4551-2144 -7697-3598 2871-972 4040-2225 6435--8281 2568--9146 4001-2997 -8181--3632 2556--8075 2745--2271 2514--2518 -3856--3118 5886--5054 4699--7019 -928-5204 -3935--2515 -8078--7732 2295--8604 -1915-735 -8261--501 6296-4344 522--3233 2220-694 8689--3047 -5246--4101 6600-2978 -8409--6894 2487-1340 6361--1970 3774--930 3406--7006 3758-1962 8336-4613 -3235--227 8366--1918 9615--4577 -3818-1790 -2643--3332 3988-1345 -8681--1788 -7001-506 6745--6473 -530--8271 4096-9198 -2373-4169 8936--6678 6561-7938 6057-6291 7208--3274 -5465-967 3319-6344 -3577--4825 -2635-6333 5251--9573 -1447--7045 -1294--6954 5589--4760 -7492-1278 6625--2169 -5479--479 4322--5547 -1005--6628 3639--4452 -1189--824 -1330-1809 5610-1915 -7424--5744 5821--4309 -6843-3650 2975--4439 -8549-2666 1794--2409 3329--562 1245-3948 2723-3548 299--9360 2952--577 -954--6447 4935--196 6144-1211 -788-7879 -3777-3684 -1732-1884 -6484--3407 -6866--119 7689--5605 4327-6344 6303-544 -3543-3919 -3036-821 -1134-6063 -1990--8094 -5765--5307 6434-344 -3756-448 5274-2922 -7572--3999 -8606-3496 7730--8798 2108-5099 -7007--6034 -3963--6372 6717-2948 1404-8380 -3917--8549 3497-5465 3407--577 1502-8489 3247-2862 -656-2751 -4072-219 -5356-1019 -7371-3712 5869-5444 2424-7956 826-6873 6451-716 -9906-870 -6142-473 4276-9439 2736--4747 6855-5737 3501--7824 -5660-5291 -2282-2739 5828-5999 -6937-898 -118-7252 -6825--1803 -8176--181 -2604-1376 8944--1074 9356-3616 8980-7206 200-9843 473-4866 5630-147 -5766--1778 -643-6690 1568-2370 7441--2819 5995-2326 -5553-7824 -425-4588 -2557-5808 2964--4066 -3394--502 -9249--1807 4731--3279 6935--9235 3334-3624 4382-651 -2360-2445 -9039-1134 581-2460 422--6923 1931--3935 -5655--379 3159--4846 -6036-333 8635--1311 3368--8818 4137--391 2876--6242 -3536--6492 578--7354 4344--6604 1687--1618 5392--7284 3554-3177 4071--1453 1481--3388 -4780--2351 203--6697 -2088-2415 -6908-44 -8076--38 -8391-8527 3064-6186 -969-7571 -4469--7859 609--654 -8848--1982 6733--6586 6407--7779 5459-4436 -731--6265 1276--7119 741-67 4017-1019 191-8603 -3006--7146 4968--4831 3426-1754 -5073-668 -4116-2473 -9407-7643 -6424--2946 6835--3272 -2560--8696 3936--3515 1478--5491 5972-889 5624-7342 2270--4492 -886--4238 -759-319 1278--4071 -6085--5524 -7802-5414 1154--537 863--1280 5085--4817 6340-3464 -2956-9558 2136--5470 -6504--7946 -6051-1431 4778-4372 -164-8042 -860--3528 3632--6099 5122--6539 7432--457 -24--709 -3653-6805 -3092-9512 221-4022 -8910-2955 5645--1128 -4079-2638 -8663--9444 -3224-3467 8480--4609 -512-2707 1925--7251 3941--2645 -2097--6004 -6065-3965 8539-6777 -3958--5387 -7720-558 6015-1768 -5735-1248 -8621--8194 5582--167 -5471--4281 -823-2852 -2292-7095 5066--1520 4201-8387 -4547-7424 3686-3713 -353-1644 -2235--1596 579--7779 1512-9305 961--6467 -6433--6469 -4371-8122 -2133--2155 9256-2459 -4215--4983 -8382--1974 -2004--4639 -2778-4753 -8253--2430 -5258--1583 -2607-2208 -3764--7099 -4064-1286 -5531--2225 9220--4966 4047--2460 -8153--5761 -4374--6875 -4941--2862 5669-8278 3546--740 -6070--4853 2964--8259 -613-1227 -1378--147 -816--5708 2134--3961 8398--6444 6801-2242 2885--6394 -2290-6655 1206-7221 -1094-5990 -4998-3563 2797-5431 2978-2351 -762--3070 1162-5354 -1172--4054 1183--6286 7213-5038 -2661--7579 -2992-4170 -6568--903 -7157-751 -548--2464 -627--4840 -5342-7433 -6635-1596 3170-6379 6803-688 -706-2749 5024--3053 3201--8508 -4948-6230 2929-7682 5740-6705 2235-5792 5798--567 9436--60 5714--6110 4178--3856 -3252-1470 9503--6890 -2484-3848 -5531--1983 -2940--6715 6407-2563 89-4815 -6409--6729 5008-4898 -3838-9032 -398--2532 8224-5906 6739--2983 7638--5644 2861--3093 767--9108 885-8511 4612-6948 2173--5904 -6712-554 1894-2027 -9704-6065 -2005-5162 1010-2962 -5722--2265 -8640-8405 -917-2990 -2482--3452 -8072--2030 2805--5712 -639-7400 -3700--3942 -8088-8878 -3199--764 6448-6891 2206--8075 359--8271 3911-108 -6980--7471 5260--3112 3589--737 4211--3212 1670-457 -4091-5617 4433--1601 361--243 9673--8432 -1027-5207 6506--9131 -2896-2795 -1024-7935 2507--3942 -7322--5853 -7216--7760 702-3906 -7806-2740 8233-91 9303--7134 3596-3012 8612--1253 5486-2660 -1010-3777 -8000--2921 -9524--8659 2404--9823 -95-2350 8725-1172 -3741--6251 526--7086 -3643-2672 3594--9167 -3619--8146 -175-93 -5729-0 855-3870 3929-3816 -642--1615 -962--4051 3825--330 -6326-190 9421-8181 3914-1595 -234-1532 -6513-830 6553-4869 -7835--6448 6532--9216 -3337--3651 1976--2585 9031-8124 5019--4477 -6376--9808 -1022--8550 -3359--5633 -3460-2203 5341-5202 3078--4196 -8963--9592 -2094-1000--2695 5316-7565 866-2225 -1379-5073 -813-8416 -1353-3654 -1294-3389 1419-6387 1365-8166 2530--4909 3954--4548 2875--6747 5290-4636 5116--2777 -8847-6402 -7196--6425 6059-629 4596--869 -7819-6157 -4745--6851 4339-6309 3564--8830 1941-4861 -6330--4914 984--202 8456-970 9124--2996 -2814--8430 -5234-5666 9--7887 -2522-6512 6900--437 8395--1380 -3793-1530 -7183-3133 925--3490 4578-2506 1435-2941 -5228--1643 -9735-5395 -1797-740 -8535-4715 3169-3738 -4869-592 6675-2712 -9596--6991 1821--5458 3636-923 4204--5010 4463-8690 418-3834 -4254--5508 6780-1556 -5215-8022 -695--5117 1216-5355 -5224-8503 3507-996 7244-2202 7251-5608 2474--2190 -1085-5433 -56-2072 5570--3751 5697--3553 2690--6915 3466--2494 7776-9245 -2203-2091 -1328-313 -8534-6151 -6931-1950 759-1505 5907-7391 3295--3680 -9094-6389 1349-4209 -1876-5620 3131--7043 1201--1296 -6037-3092 1854-6814 4157-5332 -1322--2310 -4244--61 -7673-3205 -1399--8239 4949--8559 -827-8837 4539--4600 -3010-9058 2122-2405 -2115-3028 -6289--5630 5970-7534 3343--1756 -9564--4753 -4145--3721 1618--2012 1567--6404 2681--5565 -2682--8778 2797-621 1614-8760 1259--9662 2417--5185 -2529--846 -4251-6834 662-8890 -2486-4796 8491--7989 -434--6378 2361--4461 -1297--2629 5524-5186 -6555-3968 -6759--4261 4755--1749 1361--304 1127--4382 -1398-5058 7791-1662 1997-337 -6890--1366 -6130-1535 -4582-999 -6610--5314 3507--3011 3966--984 -4286--2807 5088--8389 -2899-4424 -2487--9167 3849--6845 6867-3239 -8720-3696 4365-3177 3857-838 890--5458 -456-3092 -6487-1873 988-7053 7077-2084 9155-5223 -2187-1998 -4517-2002 3857-6948 6077-5497 -979--9006 2413-5097 -7964--2088 9366-471 -7562-7966 -2417-165 9651-247 392-6196 -1305-5940 1825--1576 6487--688 -5677--67 517--4680 6021--7129 490-9112 -2583-3473 1428-3336 4641-7424 2667--7908 2810--8240 -2763-1653 -773-4669 -6791-2728 -6273-5229 -4722-522 -9540-3590 360-1816 4242--4783 -7494-5992 3054-6964 -7165-6500 5047--7853 2268-4913 -4463--5853 1032-5577 5891-3026 6670--1909 103--691 4547--8675 2184--8593 3476--128 6517-847 -4079-1934 -5911-6134 -6223-4186 7557-3373 -1621--3758 7558--4101 -4300--8559 -687-41 7015--1187 9421-9317 -2543--4219 -7070-4179 -7989--2425 4588-5646 -2724-1124 -4268--3259 -387-8604 -3132--584 6112--633 -204--5090 -8497--1305 -4579-3811 -8490-2272 -3001-3555 8181--9357 -2859-3442 3388-4495 4084--7762 55--6098 -5303--2915 6162--3604 -1857--2136 1388-2145 5914-7562 -3118-4606 2644-2257 6687--1503 -2630-7097 -3611--7150 -1648-8784 2585-5294 -6432-4135 -9074--3755 2879--896 -7072-1310 -8427-9983 -510-4667 1044--6164 1876-2202 5457--411 -2816--1265 -819--1024 9648-2180 8478-5173 4619-8676 -3190--6284 5390--1746 -5212--4900 5801-885 -975--6999 -3641-7707 2719-1519 1125--2124 -5399--8881 2377--878 4812--1689 -6206-2188 5423--6701 1904-959 -6210--1573 -1710--8188 -3585--6329 -2910--54 617-3071 9437--8608 -1694-3951 -4119--5116 5102--2811 -5835--1375 5346--7661 -6106--5616 4613-924 -1539--6245 3569-4624 -2228--1451 -4402-4168 2620--1518 8496-6086 2432--6665 766--1731 -8460-2733 -8469--1721 -54--9407 228-8916 -808-1274 3705--165 2197-6862 917--5852 -7773--9070 -1800--7201 -4893--8321 -1833-2681 8495--6261 -2539-3369 -6247-1686 -2108-2404 -5260--5722 2762-5915 1067--2352 833--4202 -2870-3906 737-1095 7603--3206 -8232-7030 7093--2956 5051--3298 3976--4958 474--6878 -4187-1966 7692--2390 4755--2407 -8760-910 8735--547 -7727--7785 -5873--7496 6534-5389 7094-7099 5803--581 -8337-2518 -9656-5535 6971--5285 5433-2990 -6196--1452 -5502--6993 6095-8148 -2776-5359 7449--5906 -7703-2185 3828-6719 6172-2682 -7916-7306 -4101-1250 -6749-5872 -1886-2905 -4716-5533 1617-813 -9662--6487 7307-8244 -5227-1790 -2584--2255 8207--3272 -719--3338 -3167--1264 7081--2143 -6959-6746 -942-694 -8937--3659 5177--946 6416-2614 7865-1392 -3346--617 -2645--1825 -8512-4686 -4142--4534 7269-3282 -2620--2049 -3547--7079 1115-3620 5676-6182 7056-1240 -3363-6509 -5007--2686 7239-2347 -5988--4663 3400--7495 5463--1128 8112-3468 -1486--4884 4260-374 7056--7866 1354-2831 -1232-386 131-973 -8673--2948 -3897-5732 1003-856 4693-7415 -4080-3098 5699--700 -1026--987 7456-806 9235--4368 8336--4750 -7929--290 2398-3451 -5337--4684 693-1127 145-3353 -5328--3074 9012--8900 -635-1811 -9406--8419 -5348--8541 -2344-9854 509--8353 -992-633 -4533-2542 -6144-84 9985--5299 890-4762 3426--480 5731-9031 -3186--7644 3007--3556 -159-4908 6456-9406 111-6162 -6200-109 8238--3174 -2135--2826 5743-2416 2831-7214 -4506--6192 -5696-4207 -8022-2503 -3034--7061 -5654--6165 -3554--6137 7260-1295 -2188-1696 8609--4372 -7812-6765 3810-5401 522-6652 2543--8251 -2591--3049 -8271--8013 1606--5336 -4596--7182 -2572--4187 7600-5935 3319-5997 -1644--2890 5878--4444 -7519-4596 8160--6440 7020-315 6762-124 2927-5816 -6677--139 1962-6009 -7269-5346 5139-2114 -447-3429 3706--4901 -7229-6823 -1046-7041 6942--743 -4055-3241 971-824 1567--8499 3578-5203 7812-6120 3184--1540 1835-3493 3085--9079 -2999--6076 6986--2556 -1949--3014 4681--6967 -2651--5022 -1861-7768 983-4204 3225-4826 5030-5302 7976--5508 -1984--7883 -4172--7465 3871-1287 6214--6964 5281-739 7617--4702 3265--6681 -6476--692 -7582-8665 -707--8948 4284-5448 -6761-7441 -1436-1613 -7426-3653 6280-2561 9264--3534 5299--4909 6614--4710 3263-531 -4512-900 -5350--6192 3283--4537 7478-676 8466-3268 8787--4723 725-5687 5940--4961 -4730-4248 -8300--7945 5765-3129 -9019--5915 -4189-1244 -8943--9523 2744--1895 -4203-4901 -1697-5721 -1977-8403 -3646-2712 -1288--4360 -7079--5326 6623--85 -6820--1066 -4364-1914 8084-2040 -316-1730 7751--2214 -6297--579 -4598-1550 -7321--1889 -4744-7745 -5387-7162 -825-1699 3106-4742 8400-8210 -4685--1246 2812--2995 900-4776 5040-2542 -9234-443 1853--4886 3090-6320 -5411--2445 6156-1396 9305--947 -427-2468 -149--6547 -682-310 2689--8498 -5101-496 -9118-872 6983-975 -6047-7019 3088--2784 -1418--6223 289-1200 9157--7310 -265--2259 -4881-418 1961-536 6937--1381 7411--2951 1527--3502 4508--3660 1223--1847 8718-4154 3577-4960 7182--2790 -5257-3128 -2360-1182 222--4146 466-3997 2139-148 1324-881 1109-4029 4704-9838 1747-853 -393-1582 -850-1971 6465-888 -9415--7322 5426-97 -914-7750 6010-7952 -5954-5312 -8039-5985 -4997-9432 2439--4182 -2190--3466 -4662-6585 -582--1977 3354-5878 5145--3542 6321--973 -9747--5026 -346-1555 8254-9028 1662--1043 -9685-2630 -6360--3116 5870--9516 -2980--1421 -7937--3009 -7855-9429 -1381--453 -2930--2111 6904-3968 -4145--8143 -2943--7712 -4639--1134 -7375-5337 -1298-7244 -4148--6115 -6382-2531 5127--950 2684--6881 2243-9535 -876-5592 8124--2088 3570--4119 -8788--7944 5522-3723 -6717--5860 -6592--8183 -3671-3151 1746--2125 7339-4264 -3708-4663 4285-7453 1332--7871 -2404-406 -8701-5236 4115-1362 6708--2125 318--715 6684-5527 5939-1024 -8712--8463 -1300--5506 2949-3463 5123--5932 3182--2923 259--5922 5062--3779 5635-3690 -3345-185 -8691--7393 6113--12 -5601-9386 -860--1932 -459--1433 -6077--7773 -535--469 -9797--587 9103--20 -6668--3863 8580--2479 6318--3597 5375--118 901--3793 -4365--193 972-3591 7904--1634 -6490--9143 -3932--3617 8647-5971 669-6893 -736-166 -6753-2406 7080--9347 2883-9096 -903-3768 -2195--9623 107--1844 -7360--5345 2332-8487 313--4363 -6004--4694 4200--6554 -2154--3478 -8868--8894 -3175--3081 -5687--6999 -4032--1316 447--7988 4042-611 8592--8025 1405-4977 -7378--6903 6552--7990 4579-9699 -1556--6650 -6725--1801 6293-509 -8284-8164 344--3789 -7706--7193 -5392--2753 275-1971 1783--8893 546--6143 7798--4907 -6355--4409 -4237--405 -6014--7995 4065-937 4374-6346 -1462--2252 -8738-4894 6473--7040 6301--7587 4506-1921 7873--618 -9859--9096 -1424--9617 541-4010 -5702-4403 -5930--6164 -7777-4444 -988-7873 -2889-2714 791-7447 2971-1581 -7866--889 3239--1052 4317-5785 -2982-262 4316--2268 8670--5337 3468--4074 -2422--2925 -3991--5507 3589-3646 6965-2838 2898-322 -1107-7367 3234-7104 808-5347 2563-1592 2657-4557 -5070-1976 978-647 -5381-1383 -436--5468 -5445-6378 -6784-671 -4220-8944 -1616-5468 -6000-3096 5754--9664 -1204-7197 -5637-3114 -7442-6025 2882--1867 -8468--292 2313-8222 4101--950 938-7922 -1900--4467 -7017--4543 -2721-1263 -1628--3249 -7947--6169 -1235-6787 -469--6653 4212--1400 -3520-1149 -7886-7282 3355--1038 8898-756 975--5974 -7527-5772 698--1476 -8083--4558 -7298--1598 3804-2480 8756-6626 -714-5767 -7984--7943 3947--1355 8364-1747 1306-7159 2716-1190 -2346--42 -2762--448 -7296--6282 1255--920 -6673--7545 -1938--6723 -5547-8411 -4524-2359 7006-1780 9228--4713 8198-7798 5872--5787 4111-4484 5308--261 -2160--1835 1923--6450 5782-2735 -6210-5639 -7868-871 3465-3213 4823--4974 -7692-6414 -499--4555 -1147-9890 -773--1939 -9683--8113 -2106--4333 -6242--6511 -6435-6716 -5712-6958 2336-7223 4863-627 4497--8644 -1831-4460 5965--1295 1995--5539 7585-2131 1336-8006 4326-4930 7725-6491 -1846-5233 -4141-2937 -820-8553 -625--156 -90--2033 2933--2784 -4189-2085 -8471--691 2881--6846 -2905-4286 -314--7602 -3182--767 -7801-7263 4367--8518 -4781-215 -9591-6557 -4672--6095 -1770--294 -7964-6428 6665-73 1608-7595 5599-4932 3568--5867 6645-8909 -777--6179 6714--6755 -4334--4533 -2278--1692 -9768--2972 -3908-4106 -6985-968 -5358--8420 -4292-497 3224-2286 -1142--2653 1219--1813 6875--6279 280-6688 -3240--1202 1684-3935 -9093-5131 2065--173 2257--2595 -4971--2468 8519--2187 6626-7188 -4249-4983 3926--3249 9152--6786 4456-6523 -4498--8111 4721-6484 -4819--5613 933-1123 1973-377 7004-2000 8192--1295 -9281-934 -2020-1958 -9797--4071 739--5472 4549--2281 -7035-4325 8347--1734 4770-3481 -6015--6250 1678-3482 6495-2198 -2819--7293 -783--1700 -2285-7359 -2807--2290 -931--9058 -56--2286 -8303--338 -7174--569 6750--5786 5973--7722 1140--3298 -9424-862 -4947-3538 5115--6304 -1413--1950 -5390--2610 9272--6087 -313-219 4931--2968 -2703-1905 -3591-3962 -5902--1516 -1571-9725 2180-239 3210-4536 373-4003 -1424--6074 4680--1150 -7702-5096 -4285-9347 2309--7761 -6098-2131 3413--4987 -3872-3187 -4001-3934 6956--3485 1434--407 8261--5329 -119--8623 -4478-8078 4805--5985 2811-6631 -7147--3150 -5831-6537 -7236--1405 -8195-7206 -3639-5460 5946--6979 2069--4989 -5421-405 4858-6236 -2068-438 -4463--4079 2703--7591 1896--2367 -4845--2647 690-1323 -7283-1185 -5491-3368 -7694--265 -5493--968 1775-4897 -1089-8609 -3893--3953 6983-7793 -5797--8410 1372--5959 7862-6653 826--4410 -5285-1956 241--5115 -6506--5987 -3283--6805 687--6550 -287-445 -5560-9052 2180--1658 1110-2145 -4413-9337 -561--71 -6498-5666 -2218--5066 4299-296 599-115 -1281-5914 2939--2134 4006--1912 -8432-4828 -3707-3756 4916--2271 3084-9217 -1214-296 -7980-2687 351-3361 6172-2394 2419-1446 4159--109 8830-53 -5796-2801 6349--5583 -3517--3631 7771--1080 -9022-8491 1531--86 -8763--3686 3893--3859 -679-3183 7768--4018 -20--8506 -2596--7578 1138--4316 1864--3713 -300--4342 5057-8714 -2821-639 -6442--1313 -5364-6331 5436--2074 8991-2590 -7976-3678 608--2933 5298--9330 -952-7101 4042-2168 -1920--9337 3332--4500 -8838-1000--137 9836-8205 513-3490 -5672--876 11--1119 2341-505 -3136-1056 2814--404 2471--9185 3115--3637 -598-780 -9315-3080 -7731--6274 304-8400 -5239-3058 -4101-464 -7596--1277 67--596 6282-4977 996--8930 2401-6375 6807--1945 -1968--1760 -715--6132 -7538--7959 -1913--296 -2053-1539 4325-4345 678--6157 -1051--7851 -1685--1635 2355-2096 -161--8058 5687-6865 1851--1539 -6187-3935 -7064-3264 6726--2678 6140--7072 803-8808 3624--2503 -6122-309 450-3216 5246-7569 761-8648 1711-6812 4260-1533 1334-8663 -3194--5155 5031-6932 4450--5719 7503--2582 1980-4373 1015-5827 -7192-118 375-5300 8047-4466 -4231--7976 3020--1092 -2181--2371 -8200-3008 -448--3505 6201-7146 -6673--2472 7527-7482 5093--7585 6471-1071 -5185-7657 4750--1152 3416-9607 -13--3855 7452-2296 9489--448 382--9145 842-2236 334-3894 -3491--4158 -2265-4002 1822-7516 1222-2563 6395-1427 5304--7339 1277--998 4599-3239 5234--2605 -1055--6415 7041--6529 4578--7141 -3823-7471 2524--198 -9018-888 3293--6817 -1588--5911 6230--1492 -5427-4090 -1133--786 2039--2670 -14-7622 -5216-1293 318-860 9089--2989 307--549 3456--6626 1048--2184 864-7055 4478--5153 -5098-4399 1935-1999 433-2896 6554--9274 -3414-4426 -1264--1747 -7189-660 6814-2350 5537--3348 -7995-1240 4609--5471 6224-1708 457-13 -2794--293 5646-2781 4657-6046 -6406--200 1036-7217 -1305--3296 5295-3763 -5103-7017 -5624--7727 -671--6195 6557--1978 7458--8103 5764-4192 6685-4003 4443-662 -3497-2587 964-2122 -9183-5973 2800--5697 -7927--9425 1579-2390 -6584--4212 -3235--5077 -4956-2245 6146--7064 -5732--9063 -3235--5021 -6061-7212 2173-1111 5210--2241 6489--430 -7465-2092 2100-8125 2895--1860 -9398--3852 2347-779 -8383--1610 3690--2272 6279--2450 6783--2137 7893-4806 2343-3986 3551-6011 -4947--4649 2548--2290 7890--800 -1304-5138 4632-4417 6467-3653 6202--8733 -2793--784 -8865-7887 -3359--130 7557--342 -7913-3459 7170--1289 -9730-941 -8265--5500 5824--108 2464-2408 7041-4015 -6077-8191 -3204--7693 4282-5391 4258--3984 4501-325 9908-5373 1049-5384 1971--3422 -1654-4743 6405-7115 -941--7658 -4412--8235 435--5095 3544--3144 -8384-4182 -621--1640 -2082--5392 1640-6774 -5682-5893 1963--7457 -1267-5380 -2875-9858 -735-3525 4807-2771 1008-2056 -872--3199 4708-5362 4053-8660 983--7649 -4588-4373 -5834-6130 -3334-6343 3681--6448 3332--1686 1678--4932 -2055--5769 6464-6037 5547--9115 3882-22 -5077-6905 -4893--5183 -5018-2275 -2828-9457 2970-3864 -2344--2064 -5286--1383 5442--4226 2876--4637 1586-6075 5221-6278 4350-5512 -6569-6786 5898--1650 -8754-8273 -1130--2742 3791--8655 3765-6089 -7429--4905 209-7103 1703-8077 -768-5596 -1405--3115 -1908--4101 -2103--5487 -7934--3225 -9309--7847 -1671-7461 3874--8058 -3498--1872 -8969-928 -5888--3937 -4311-8491 520--2825 11-2631 -6730-8382 -2519--9183 -2950-3020 -5728--8723 -4442-4626 -963--6865 -5908--5522 4684-4711 4674--3736 -3774--1737 6172-3826 7700--3969 7118--8426 5180-7635 -45--1268 -5810--2113 9750--4352 4730-4457 3873--8310 -5362-6764 3820--6168 6350--2098 6647-3930 -8703--3193 -6132-6992 5875--1551 -8305--7595 2027-3314 -1010--3324 -5443-2628 -385--1230 -1561-9536 2404-869 -3924--8940 3873-717 -2447--4041 -4885--4260 3388--4050 4795-2800 -5965--3142 5834--7328 4146-2569 -9230--1188 7509--8069 5511--1173 9347-935 -7730-6220 3130--2392 8560-2359 -4643--8914 150-5474 5321--5429 -8048-4225 -933--5525 2230-1669 7120--2224 5632-1687 -1848--1081 9406-2855 702-8156 5572--5056 6209--7631 2280--9369 1105-8506 4929--1459 1158-6287 -2653--4447 -6115--1919 -3671-5969 6859-8247 3689-2458 8282-4792 -5170-7674 -5038--5550 4215-2706 -42--3828 -2199-4864 1780-5241 -3455--6052 -5959-2630 -7262-1995 -2477--1658 -1322-3695 8636-7854 945-233 4821--6532 735--7174 -5025--3792 3106-8423 4880-8882 -2426--5886 -7076--4387 -1756--3645 3808--3074 -5408--4123 -5279--417 -9540--2536 -8769--4898 5532-3110 408-5761 3844--1325 -3805--3877 -5616--320 -3045--2747 1596-6201 -6260-3391 4820-1834 4932-1212 9123-5975 -7936--8556 -50-1198 3151-6824 -522-6451 -6786--948 4213--3628 -9285-5071 -5194--2497 -1211--1624 -2973-7315 3364-5823 2831-7107 -3530-1008 -1878-4488 -6075--5676 -5620--4467 1641-7536 3246--829 -6269-2528 -4414--3754 -6394-8411 -2576--143 -6147-7728 -1781-3206 -2625--5457 -1343-8158 -5011--2898 -4403--9316 875--8293 -5058-4661 -5377--5653 556-3830 -5699--4606 562-8827 3027-38 -3931--2697 6848--9144 -2420--3087 3313-8328 -557--5586 -1242--3458 9287--4820 7012--3277 -1748-1204 205--2869 6701--5031 -3900--4235 3407-3522 7356-880 -8624--4157 -4327--5808 4163--1099 -4424-8098 5571-5330 -3250--268 -6319-8587 3007-7762 -4547--7374 1275--6736 -4286--5850 -634-2649 3410--3651 -3766--2628 -5647--4079 -2874--288 -8701-7506 3854-4104 3323--4029 -3844-150 1726-5468 -7480--6554 -4767-7621 2793-5211 8088--2626 3142-1262 -2434-9427 178--6795 7047-4285 -5613--5830 7966-1958 1092-5994 -7461-7251 701-2098 -7782--6211 5731-6450 -5764--5853 755--3392 2839-8091 -576--1382 421--1752 6200-1657 -7036-5997 -4754-6860 -4464--9022 -3232-1193 6935-3764 421-7594 -31-868 -2887--69 -8261-2528 7535--3109 6305--2497 5147-6503 7461--1478 4510--5489 557--9718 2093--5107 184--518 -2529-3870 5072-7730 -6090--5884 -3533--5823 6493--3635 7057-5776 21-2398 -8900--7308 -1219-5122 235-5664 5899-5111 1666--8828 4438--4620 692-160 9893--6126 7270-6055 -3-2020 849--8476 3816--6712 -4412-6224 4137-2175 -9078-6490 2212--792 -1332--6941 -3100--2331 -8638-137 -7144-2591 -7415-9328 -1164-8943 -649--6250 -3411--1295 -2507-3320 -1282-293 -4388--2469 -3478--8252 5325--2924 8314-2484 8402-4758 -882--5932 -4146--7715 6109-834 1708--6272 2890--6710 3336--4506 6135--2323 -379-3339 4411--665 2691--2870 7225-3687 -2072-1773 1703-750 -9314-6894 -457-353 -2641-4268 -4970--9353 -644--6794 4362--1506 7151--1344 -1486-7472 -6543--8453 -4902--2320 -6921-6176 5854-7763 -3374-3015 -6021--852 5811-6856 -1728--2633 -3822-3037 -3687--4997 -3186--2930 3476-706 7993--4262 -6283-1099 -8179-7775 -5653--655 -457-464 -1721--888 8327--6973 1048-8043 -3932-1283 -4480-8640 3665--6118 -4991--7252 -3438-4747 6563-1964 -4833--8103 -2009-9286 203--2138 7788--500 -2952-6373 307-8081 -3672-3753 7523--404 -4957--1700 6911--6590 -3383--4642 2260-970 -9603-2067 -142--6887 -886-4500 -8168-5523 -6437-7739 2728-1947 -1771--2991 -5133-375 746--6428 4864-4871 -3217-2711 -6082--6964 4347--4574 1920-6406 423-1212 4616-4593 -2567--5150 3589--5179 7432--3457 1203-6739 -2172-4446 6410--2224 3795--5166 -636--4884 7849-1778 -6395--6864 -6174--3247 -8533-4290 -2585-3028 6644-4756 -3821--6551 314-8075 -3045--851 -4764-2561 3838--1961 181-776 8067--4451 -3681-8147 -5780--7394 -6259-7187 -4029--6306 -6590--5716 -3623-2191 5908--2214 5188-3209 -9466-3177 2635-137 -6777-2018 -9434-8527 -1036-7046 -2015-1480 5499--968 5518-7685 1310-3270 -7617--4302 -4225-9950 -154--6908 -5306--1634 -2128-4345 1684--5220 4456-5293 7658--6681 -3134-8035 -3881--3885 -6697-2749 -1934-6582 -227-3262 -342--1612 4812-8179 -2614-6835 -4063-8455 3699--3134 5676-194 6081-3762 7241-5382 5232--6209 5114--6316 -6664--4182 -4208-3143 -4127--2222 -8373--3012 -806-6673 -2544--8434 2598-3180 -7068--4063 -5336--6872 455--2034 -6214--5581 7342--9667 2012-3755 5327-4826 3369--9531 -2436-2699 -8473--830 -1764-5179 3063--4247 -8139--6893 5155--8258 -1914-147 -9712-5087 3664-6850 3619-5886 -6439--3227 -6485--3439 -4261--11 -2638--3290 2537-2814 9136--5103 -1575-820 -2026--2995 -610-4743 -3557-6228 5586--1740 6206--9659 661-134 2774--2549 -8426-1337 -4257-2332 -7124--6786 -2086--1516 8695-6518 4776--2356 -6321--5954 -7979--8414 2386-2193 1591--7453 111--3522 -1107-4207 -3965--6850 6881-5220 1576-121 5023--2283 -7893-2009 2419--8446 -3051-1798 2490--1387 -5639-5620 3255-4339 -4775-2283 3224--9583 -1883-5017 -362-2996 7757--587 -1409--5283 4161--9966 -709--8949 3902--8453 -5017--913 -6820--5776 3655--8967 -2889-2965 6815--6842 5797-7693 -5753-6875 -3968--3666 -3413-3634 -5871-155 5604-6235 -1176-64 2414--5369 -8394--5943 -5412--3556 -4637-399 -1807--3304 6743--2958 2434-2425 7821-4853 -4090--8637 3218--359 9289-1514 6337--3940 -4165-7480 -327-2444 -5023-1918 5346--1166 -6332--6439 -7287-3720 -4736-6811 2006--2466 7040--570 7244--8050 5088--5165 3165-1601 -7503--4914 -8301-1518 1980-6927 -1649--1081 -8144-3933 -2658-2313 3768--6811 1614-7571 5045-6648 5466--6361 -26-440 2481-6161 -6383-2863 -3407-4633 -4652-2169 3183-7169 5989-1366 -6050--7915 -171--7672 6412-7301 5825--4425 7147-579 1276-8667 132--2893 3933--5064 -6229--2926 6260--5488 7398--2642 7347--3391 -4986-4859 -6171-859 -3231-7667 3748-907 6285-5797 -4668-2994 -8221-2999 1843--543 8259--1672 -4571-3412 -1044--2760 4780-31 -7542-2175 -3446--888 7916-1334 9319-2739 -6136--4174 -764--1781 -5604-148 4918--1689 1700--2406 8447--137 8922-6001 7288-3670 -2066-2496 -7156-7435 -1962-1006 5960-5971 -653--2345 -7155-7476 5967--912 -1652-298 -7317--7598 -3046-2671 -172--5986 3689-5296 -1629-8831 33-5579 181--353 -4209-1683 -5930-2463 -4197-6996 -2499-152 -5437--3900 -2852-6248 3940-2272 -9690--4724 850-2 6373--4729 -2686--7254 391-3664 8877--7603 -6442--4047 -3534--2439 6362-6394 -7270-1937 -3355-3091 -5796-1871 -91--5273 523-2830 -7474-5933 3523-4236 -1932--4784 4570-3038 -2096--7392 -1083--4457 4552-2876 3566--5225 -6280--3292 4551--6950 -4388-6039 6371-2299 1018-3238 3509-5240 -5189--5219 4996--9692 -3-1572 2002-2604 7720-4654 -7487-966 1832--2276 1385-4083 3577--8667 -4036-2486 -3797--21 8764-1606 5263-781 5207-3562 -6102-2766 -7--938 -2657-2085 8945-2801 -1426-5999 2398--6212 -3871--960 3770--3680 2696--4316 384--1096 -5807--3503 288--7895 5279-472 5548--316 -8129--350 -802-2454 5129--2801 -7210--3516 3096--6470 -3076--2159 -2152-4089 -7580-1052 -3614--1603 -2505--9563 2787-5541 4491-4657 1292-1356 2108--7524 6128-861 -2153-3670 6498-8593 -1058--1740 2706-5458 5604-8179 -1904-6744 -4603--2584 -8671-3865 7671--6781 -6639-867 6750--5073 1171--2306 -9669--2097 1502-1549 1640-6472 -845-3414 -6219-235 -8448--2206 1548-6847 -2715-6646 976--3822 3435--3585 -2269--8869 1770-5072 -5830-4094 166--7087 3877-6256 199--7191 -5900--2944 3616-1595 2170-3313 -8348-1179 -6832-3896 6031--3123 -8318--4738 -5502-8355 108--1406 -4116--1984 8704--2264 -2112--6427 6586--2521 4546-3915 -929--3466 -2688-3886 4830--2346 5572-5926 -6708--9287 -1339--1422 9516-6074 -3920--4052 3669--2046 8945--5139 -7541-1885 7991--984 5234-4082 -8420-2238 -7995-9331 534-2990 7885--6398 -968-8511 -4186-4291 3460--2528 2307--847 -4926--7273 634--852 432--1845 -1448-903 -5275-3974 -4102-3193 -9137-7909 4744-1178 -9075-7234 -5251--612 -5390--3094 8088-2110 2881--610 -3610--5561 4108-8535 -3604--1103 -9491--3274 2741-3542 -8232-179 4688--3493 319--7973 -110-1556 -562--4888 -8536-6784 -6201--579 8418-5016 -8175-5662 -1285-9364 979--2402 -3177--2546 7334-4511 600--27 -5490--4591 2041-2276 7812-2543 -6906--5306 -5791-145 2339-2784 -8216-1130 -6568-4236 4309-3759 -9119-8596 4512-1000--1130 -6466-9370 -1179--4512 6313-3937 -4301-114 -3516--2952 -7540-1132 44--562 -6297--249 709-0 -4274--4225 5658--5082 4389-24 -303--8757 -1101--7685 -4856-5402 1845--4249 -2977--2572 -430--5473 3339--4040 950-6064 5782--8327 -2886--4088 6304--4840 5701--4243 -2913-7866 3704--51 -3746-5974 -5238--9481 -1796-1145 -2423-1615 -4254-3526 424--3638 -1766-8204 -385-6297 5048--4590 3846--1977 -3509--18 -3118-5445 2707--4977 7368--6869 2564--1759 5270--1846 5634-5548 -1277--2653 3048--402 3815-7554 1498-7885 3635--7174 1047-3912 2404--2652 9053-4343 6302-6566 1544-2691 -6179--1928 -9383--8505 -1879--3947 -6911-3984 5293--3175 8633--2046 2145-6866 3453--6930 -1256-4720 -4851-8925 -2374--3268 -7484--3685 -1189--8022 2624--5876 281--3653 7821-7977 5305-364 9080-680 5309--3604 -5101-1407 3210--6087 2253-2665 -9216--750 -5089--2585 -8352--3139 -6372-2106 -4893--8943 1600--3471 -2218-1034 -2870-5368 -357--9210 -2854--2324 -3219-4452 -5643-5048 8414--958 8289--4065 -3983-1594 5271-628 3251--7082 423--6886 6949-6625 2814-1184 7266-8229 -3264-2582 -6603--3619 -2934--3211 3694--1062 -7434--6409 4107-6248 -4109-3750 -4350--1141 4900-1604 92-944 3851-8162 -460--5879 4394-7751 -4189--5944 3257--5118 4601--9167 538-7702 -2425-1713 7201-3948 -7992--1874 -6205-8473 -222-6369 -4560-2187 9515--7205 1914--6317 -6934-2223 4200--4349 3597--6653 3064--2403 -3276--4900 8710-40 -3976-5757 7280--3846 7725--3003 -9500-3589 1793-2141 -1633--5030 -936--400 -8698-1784 676-6942 -7118--528 -362-782 9948-57 33-6346 -911--3319 -5097--5237 1986--4230 7634--8022 4045-6569 -2521-2465 -3206--3123 -3186-3239 7807-8548 -5133-5397 3747-7537 3314--174 822--832 -6158-6033 332--5484 -5114-5952 4655-4113 -7725-269 7442-6293 1229--1481 -8012-1579 -646--956 5105-5522 -6045-5106 -3960--2785 -6424-4810 -3016--7366 -5935-7846 255--6663 -3189--3026 4053-1312 -9290-3526 22-6375 -5746--2265 6474-91 -7650-942 -2487--5639 -1982--842 8732--5358 3779-526 2466-3622 -1234-3837 -8324--3056 4033--5390 -7534--1672 -7538--1404 -3887-5513 6806-7096 -3048-4085 5407--4030 3151--2553 8434-492 5054--4634 -955--4369 3151--7 5836--2620 -4394-6895 -4216-2594 -5914--124 6281-1054 2373-5964 -3834-963 8658-6047 371--9011 -325--6273 188--23 3521-6507 3028--4680 -2364-2826 4193-4790 -4359-5600 5922-5546 3354--5334 6861--6797 -6922-2582 7687-3681 4702-9259 3083--4138 -2476--145 7525-7779 625--7047 1608-5201 -8250--5908 6795--1976 -922-4980 4106--5841 5167-4369 -1094--3003 -4433-7767 3590--3591 -2122--7781 3689-781 -1021--343 3002--1709 8118--6131 159--5210 -6106--3262 -8487--3791 439-3027 3830--256 -8528-1268 -5038--1573 7661-7585 -3463--3367 -9328--2971 -675--6599 4574--5453 -1007--7669 -1404-7367 4822-5123 -7799-5177 -1117-4760 1140-7952 -772--9447 -1155-3001 -200--3967 4874-6811 4702--4994 -4419-4079 7372-8285 2766--1072 9666-9408 2296-5805 -6337-7703 -4994-5761 5427-7555 5175--2698 -8924--1358 -1115-942 -3476-5135 3315--1609 3457-5393 4063-1754 -7338-1969 6259-408 -5708--7713 2078-8826 -678--2343 -1254--693 -9835--1376 7998-2660 -5633-3364 -7755--3060 3130-4659 -8753-7389 168-7506 6380-4592 867-1715 1919--254 1636--1870 1722-4429 -7047-5473 -4578--4234 -7099-218 7313--8393 4895-5007 2112--9662 656-3546 4015--4716 -3536-806 -941--3179 6313-4041 5726-5916 2836-681 3930--6191 -1915-2030 8879-2754 2071--7314 6102--9189 34--779 -3879-3396 7845-1402 -3128--6610 -700--652 7920-3735 -6084-5655 7295--5399 4664-9900 -998--2349 -5952--8801 2847-2848 3489-5699 8141--9355 -1907-1162 7179--5672 7742-5538 280--5262 -492--3522 -6599--1690 -6560-1684 -8270--1602 -9264--4852 6895--817 8340-7205 3574--5724 -4022-3704 -2623-3600 -2354-1025 3304--8676 -3996-3222 8087--9394 3050--7758 -2182-4815 -6045--8014 -2562-1308 -60-7732 -407--3013 -1829--3456 9376--2543 1039--635 9476-297 7155--2212 -2674--4427 5394--3676 -7441-84 7441--3206 5025--1395 -7317--1273 5699--8164 -4630--2528 -2439-3193 -7796-769 8064-4866 7644-5871 7655--6410 4877-5101 -8086--1816 -3333--3922 -189--9262 690--6996 5568--7705 -226-3402 8219-7087 1561-4126 2095--8004 5288--1585 5047--435 3449--5138 6040--272 -9035--2731 6351--266 -7117-3897 854-3980 -5925-9808 1867--2601 -2057--820 1338-4297 8738--5345 2638-4653 3076--6543 -3641-9118 3118-3688 -1084--1076 559-2437 -8420--748 9290-1819 -8381-5365 4534-1520 -719-2958 4805-6217 2482--7985 -4044--6300 2688-7078 1566-5378 -1126--3310 -8264-5278 -1948--3648 7151-4756 5895-6076 2150--1397 5078-3879 -7106-781 1650-1107 1413-1055 -7226--5404 -3983--3786 8437-1882 229-2602 -2595-4529 567--4125 7665-6348 -2768--6334 -5293-8181 4335--5538 -1743-1266 -8092--3503 6089--7678 -3916-8238 2080--2472 -8230--5528 -778-5511 -6290-3701 -1442-3074 4336--1059 -2112-2915 7892-8014 961--2961 -5104-3821 5799-5882 965-3356 -1336--5638 1644-1354 -4460-3562 9078--1717 2328-7781 4357-4165 4251-3819 -4260-3600 1934-3724 153--2236 -1389--280 -8410-9511 386--6181 -6234--5079 -3542--3115 7448-4601 4079-9749 1329--3661 -4212--1882 1400--3441 -3142-6886 975--2036 -7344-6750 2157-1194 9551-1568 -6773-6299 7366-9395 1879-2518 -9557--47 6257-8011 -3647--5550 8237--7803 -687-6520 -6632-72 3437-9684 238-4899 -5241--963 -6758--6167 1587-2618 6188-7441 -401-5575 -1191--2862 3451--1507 7061--3224 -1889--1146 -5027-2038 8058-4708 4703-3453 -3046-2324 8326-4489 -7333--5662 -6403-927 5810-6662 -4426-1183 -314-7121 3721--8571 4705--1547 7232--3846 -653--3127 5398-2288 3701--89 -7327--2576 -4314--1565 3183--6158 -3007-3606 1333-6275 1435--3586 207-3383 9295-5622 495--3916 4571--449 1095-4937 -2215-9314 2786-353 -89-3029 4121-6903 3334--3827 -2445-7781 1759--7227 6862-7929 1747--1055 -5311--4892 1174-6692 773--5125 -7681--8713 -915--687 4528--9196 -1612-4545 -1516-2309 6146--1257 3066--6547 2626--3477 3183--5800 -1647-4394 3431-4669 -5111--7379 4066-7333 3119-1486 -291--6315 5686-6567 6670-9345 810--3007 9189-2168 6393--8580 -516-137 -2376--9445 -316-4846 3520-276 971--7783 1874--1019 4539--1378 -4013-803 8625--4881 -4576--1890 5781-6282 7645-2017 46--2372 -4020-2062 3841-6500 -1979--4830 -6741-1317 -2526-5248 3632-5895 -1062--3292 9364--1712 -1517-7985 1056-297 -9733--2268 5648--6596 652--1892 -1391-4705 5658--767 160-4354 6244-1491 6774--3405 2034-3816 -5847-7232 4271--8925 -454--970 -1761-84 -2815-2985 3609-8202 3792-2886 -1298--9870 -852-9572 -2557-7272 5850--4299 -1485--1856 -536--3335 2490-4853 -8509--2057 -2256--1565 -1161--3404 -2991--5433 7323-2063 -1545-1076 -4467--1502 6251-752 8223-514 4889--6751 -3159-1046 -1648-3120 308--819 -9047--4085 3452--1923 3808-4711 -6985-823 -2425-7974 3597--1088 -8279--5332 1424-728 -5800-3853 -8143--5649 -3333-5691 5371--1417 -1759-2555 -2190--4957 506--7686 -2804--3761 4435-1941 -169-948 -1066-6419 420-2465 -7542-3736 -3037--4824 1058--6864 -2238--7994 -2041-937 2631-270 4798--2472 -7331-5367 -1801-1466 -7341-588 -8597--5638 7349--9127 -858--4542 6170--2142 8077-926 8077-3695 604--6254 -3124-1346 9758--9040 -2825--7861 -2808--5520 -7022--5464 4532--5237 1346-8457 -2985--3715 8677--4711 -4072-5435 8077--2419 -567-308 5305--2453 7344--1484 1879--1360 9124-2623 408--2421 -7382-5340 -5903--2511 -3541-1624 4654--9128 3589-1031 -1662-3108 7828--2306 2248--5441 7439--6065 2801--2372 1639--4038 6571-1743 701-7426 2912-8825 -3728--2874 -6506-6677 7171-5157 7202-6494 -1340-7068 -4663-8450 1814-3383 1249-6802 4515--1354 1042-180 9725--1268 -2333-2863 -9489-8713 3872--2392 -993-2560 1407--1000 -5687-9608 -215--9606 497-5086 1685--1662 2109--5129 146--4969 -4019--6805 -5294-2750 -2140--6784 -3912-7822 2263-3113 7546--4707 -3964-2915 -464--5386 789--6449 -5717--3790 -2463--337 -5352-2966 -5997--2759 1147-9029 2212--3864 8651--1411 4316-7465 3580-1200 -2604-2074 -5732-6003 7207--6827 -6739-6746 -2977-8382 4574--8621 -1191--4349 1045-5343 5621-1092 -8722-2217 469--3172 2159-4673 5616-5130 -4044--4461 2931--6357 -3600--1475 963-5657 7746-2630 1959--111 -5261-2949 -7808--6226 -3507-4790 -1415--6586 -1825-5241 3941-1907 3882--248 9678-8565 -1359--2193 -6989--877 -7327-1320 -9672-1438 7225--4492 -8294-2654 991-9710 -500-1180 -9828--3309 8879-8756 385-1624 4810--9496 2001--7800 1779--895 8243-91 -2377-8455 -1451--3694 6117--8060 -4015--3780 -7139-4341 -4503-2222 -3377--4576 4298--4196 6005-3577 -2405-1067 3795-1038 -8038-6558 -3349--3023 215--3291 2338-5352 -529-6723 -3943--3689 -2584--8256 -2451--8085 4886--3506 8135--615 5681-1385 -317--5516 8335-9855 -1248--1365 -663--3092 -1272--9149 1137-5069 1178-7791 -1891--3394 -2485--4623 6380-274 6826-3598 1669--1018 4080--8072 -2066-4994 677-37 -1535-6267 -2023-4086 -2151-2247 -2255-6356 -6866--2253 -1832--4090 6838--8659 2532-2062 3223-5701 2119-1495 -6667-1540 -5023--621 3774--5173 1011-459 -6441--3605 -6627-3005 -7039-2793 6885--84 -5683--5401 1570--5090 -2932-8167 4475-7826 2606--3927 -8363--5308 -664-6280 -1544--2425 8473-5442 93-5126 8574--7911 -4637-7837 5369--2525 5175-5287 5715-7738 -1662-3959 418--4405 6788-4267 -880--3063 -3111-4790 -1408--6473 -6004-9490 1647--4898 -5499-334 -7482--2353 -4895-4866 7384--611 4761--312 -6438-5783 4677--6276 -6279-2185 -4268--6639 -5732--918 5733--3888 2989--2995 -7311-9789 -222-3455 5712--4516 -7675--3091 -1708--5098 -1977--3148 -3432--1245 1942--3104 1247--743 -7957-3774 -8220-1821 5621-3904 5021--6584 1525-1865 -4638-3858 -8259--6179 7705-5453 -1005-5045 3865--5148 3919-5273 -6670-1838 -6916-8155 -5242--1228 3082--4003 7320-577 -9980-7930 5945--399 -8517--8457 -778--6859 -5465--1593 1779--5119 -5479-5123 -2357-6676 -3859-6569 2829-3443 6886-1042 1062-382 1679-2480 -9471-5800 7317--1647 -4525--4595 100--1711 -375--6001 -1030--1645 7706-8428 3169-524 -5895-3963 6660--1399 1219--3311 2987-1285 -2302--8503 -1677-226 -6661-2712 5576-4348 5160-1907 -6903-11 -5070-2849 -9353-3417 -3428-3697 -3386-486 3533-5214 -5814-6264 3247--2943 2265--5003 -3795-6279 -4336--4020 -5632--832 -5201--3250 9279--731 7786--7073 -5393-5833 2973-5140 -7831--4742 51--8594 -1298--2689 -7348--8525 1483-3546 -4944--9136 1961-7505 5933--1790 -6435--3338 -1968-5520 3222-5179 -1733--1261 -4709--320 -5868-7026 -3779--13 7838--3018 -9199--3435 -2084--1603 -5260--3477 -4340-6771 713-33 4949--487 -4967--4917 -5789--8462 1082--894 1782-6638 -6319-5418 8166-1757 -4853-2937 6731-6822 5575-273 -297--5601 -6649-2580 -17--1910 7353--1987 1800--4176 -1275-7473 2116--7084 -2944-609 7712--5535 -1374-2136 2035--3936 8276-2388 -7906--6601 3120-4916 1328-947 9127--4909 -6969-8603 -1922--5750 4939-5165 -685--3621 -522--617 -8022--6193 7018-1666 -6354-270 -4706--1907 1966--3489 -763--285 -9483-3783 -4130-8592 1584-6175 4939--3262 -5614-6014 2364-4058 1671--5062 -2351-514 -5958-1810 8554-2711 1825--5487 -3294--8433 -426--1334 3873-6034 -15--4275 1778-800 8940-7449 2389-1680 -7646-7615 -4283-156 -1071--4536 -5125-3453 4418-2625 -5144--6869 2789-4742 -1447--5421 4938--9381 2649-8119 5476-1000-9485 2563--4541 4897--7856 -3725-6653 -7241-79 -669-5730 2564-6609 -4886-5214 5316-9623 1209--5483 -1363-5957 4977--452 8827-585 -5720--2230 -8944-8261 352--985 -6990-2465 -2182--999 9642--5329 -4911--7431 4743--2201 -6825-7292 6420-2321 -1814-9589 -806--194 -3675--4727 -5859--4810 7825--6838 -5855--4613 3216--5939 6153-8123 2003--7401 2432-7209 -4608--5085 6568--4802 7730--2460 5771-7357 -6078--2887 7342--6169 -3811-3206 -6950--8745 -2171-4473 -2397--1676 -7647--3967 1472--6630 -3555-7981 -2927-2130 1332-5195 3334--8110 2702-7411 6513--929 -7096-6228 -2206--6188 -2407-3714 2994-5913 3412-4432 6997--1742 9029--2178 -2385--76 -5774-3071 -4050--4122 -1695-3133 3406-1357 -174-1909 -3888-3258 -1351-9154 1262--6500 -2430-5729 -6511--3113 9358--7939 1566--7018 4501-7921 3926--1911 7751-3235 -1612-2980 1403-39 9797-9625 -1593--4290 -397-632 -4347-6327 6095-1210 543-4397 -5314-3320 -608-2187 1923--4932 4365--2871 3456--761 1758-7847 -1552--3274 -7128-7682 -2435-5487 144-5131 6141-5068 -3941--3644 -5593--1101 -6781-5906 -6138--3354 -4546--9151 -1495-7990 -2050-8708 -2151-2942 5306--1177 -2149--4815 -4319-7909 923--3811 -4904--2339 9503-1931 -1477-1481 5598--8001 -320--6945 -2695--2822 2324-3815 7787--2642 -2967-1456 -6817--2049 -3875--4870 -4855-2555 1586--7368 5139--8753 4631--1084 1134-402 7229-3682 8975--7263 -1654--3170 1126--1492 5773--6384 5573--1972 -9139-2271 7742--206 -7291--4 8446--7857 -3785--5730 4467--6241 2695--6696 -6775--1681 1236--7172 -6301--2042 8006-3898 -993-8156 -1053--2323 8593-3765 1822-3151 8611--26 -5996-1716 2051--8400 -2592--5916 1076--2937 5871-8190 -4908--9034 -4178-7637 -5630--3193 -8562-3809 -1193-7415 1613--8296 1197-7429 -5519-3730 5773--7005 -2846-1495 7276--2441 7343-4323 2928-1425 9015-8206 -5690--8320 -3319--2473 4630-4519 8463--4512 -2779-1881 2277--5124 -5314-4050 3738--2530 -7777-6117 -5719--8154 -1632--6428 -3006--2207 9712-1848 -4260--9104 680--260 8291--1021 -5394--3397 8712-1995 -6901--1989 -1848-5016 -7754--4791 -204-7353 -3353-314 9145-1775 -8087-5575 4346--596 4222--5596 -8000-8579 -3154-3345 -9299--4024 -6519--6579 2109-6012 -7817--1746 -9833--4532 3707--4709 -6121-127 726--4751 -6011-6736 -443-820 -2479-5380 1532--1703 -5606--9658 894-4341 -356-8408 -302-6636 2152-1492 -2117-5925 -5187--7370 1888-3737 2247-712 -3962-360 2877-2684 1219--1284 5053--5336 7511-1635 2431-4114 7285-6737 -6028-1826 -6146--2975 -2512-6384 904-1809 -8643--1855 4589-4912 -1741-2595 -6067-4367 4202-5442 -181--2199 -6380--2185 -3522--2276 3877--1004 -7934-1080 -5811--4304 6466-2008 5519--6507 5841--5858 -2529-150 3328--2319 -5745--5389 7692--3786 3385--5492 -349--8614 4764--4400 -628-5150 -7261--4827 2003--1888 686--829 7935--209 -7826--2057 9164-6756 3171-456 8097--7328 3841--1700 7021--1620 -6453--7568 -6143--4062 -3746--3098 3544-7970 -2595--1045 4284--2151 761--679 -1027--4149 1121--1206 4762-2290 -7317--4770 8260--6740 2334-2787 7565--8393 3871-697 5974--7848 -5273--3806 2178-3438 9177--8081 267-6753 5052--805 3818--1236 -1690--5886 3960-1555 -9332-9150 -1390--7702 91-3584 7380--3182 -6338-5251 5389--1172 -9655--7207 1267--2673 -8079--7263 -6760-3412 8256--2154 8215--1643 -1481--1315 -7267--865 -3107--4142 -7193--8394 1654--649 -4830-4506 -525-1678 8440--7465 6035--7152 4019-1269 452-6894 -1278--1795 -2267--2732 -4101-991 9579-2359 3881--1977 670-4604 -3640-3723 -2197-3059 6746-4803 2324-791 -2180-4605 -7567-3116 -3436-6000 5829-1695 -998-3781 -3128--6673 7323--8386 -1818--2093 2490-9194 -2474-3923 2184-2038 1596-6580 2766--4491 926-7605 2601-9507 -1799-7614 -5606--3140 290-6616 5654-2643 -3477-6043 3108--1790 -9818--3564 4491--1701 3143-8803 -3668--938 -6426--775 9164-143 -8516--254 -7248-633 4804-2976 8518--3639 -6418-566 -133--172 -2041-6246 -6170-5817 950-5655 -4877-4290 6720--132 -3734-8074 5540-5563 -1173--389 7323--470 7341--2796 -5364--2277 9245-4099 6247--7191 -3205--4926 -5260-6244 1058-1155 8575-4713 3967-1300 8626--8112 -1071--3139 370-1287 -8652--8591 -4255-8037 4779-2922 3667--7146 42-8929 294--7380 2930--6086 -589-4646 -3945-2358 2337--1498 7577-1111 8562-5248 6163-2791 -1419-3805 -1554--8627 1326-6552 56--6040 7073--6904 2195-3283 -2234-3748 -1175--3491 -5584--4035 -3916--5086 -4313--5185 -647--5345 -7481-5476 -830-3144 -6077-2564 -1651--925 679--482 -9841-2859 5833-1042 -374-8095 444-4557 2402-3145 -8263--1247 -8908-1350 6748-1926 388-7273 -4928--7539 1642--2031 -2197--5057 -391--3036 -6803--7949 -5712--2127 -5256-6376 2361--817 -634--857 179-1403 -4767--319 -2365--7593 -4365--5355 -3583-868 36-219 -810-6649 6067-491 -5115-794 -8917--9109 3640-4972 -2596--4816 1025-755 -1581--4651 8192--2034 1169-1091 4976--4247 -298--1987 -4157-5721 -5046-181 -1810--9144 -1003--4096 6048-1404 -1569--8071 3065-1121 4333-1384 -6760-8218 -15-4256 1694--2551 1084--2605 -5027--2011 7601--2457 -7826--5914 6577-676 6645-6657 -3043-1804 -2889-176 -3557-4425 -2677--5614 6498--8437 4758--9656 1655-3923 -7310--3236 2404-1408 2330--4480 3241--3636 -2896-5784 -3748--6364 -7283--2233 -1764--5841 6950-2934 4853--122 -3625-105 -8885--2546 7468-8871 -2655--4721 6807--6220 -2858--6666 -4742-2869 7501-7646 5105--1984 -3106-747 482--4092 -5142--3575 -9211-2340 9080-4179 1485--1134 -6029--7697 2995-106 2771--5191 5774-6876 -5558-3855 6871-5640 7474--9481 1798-7104 -2403-2951 6522--5130 1382--2590 -3832-1145 1698--3823 -4424-7914 -889-3939 7829-7495 5949--7971 1257--8427 5202-8100 -367--4247 7204-7122 -2331-865 -6489--8738 4321--6309 -3777--1874 -7231-8824 4442--8544 -2774--9675 -2023-1280 -4907-1478 -6800-6100 5214-6378 -6943--2281 -5572--3529 -4628--1159 9862--5268 1594--8119 4328-7415 -1447-7248 -5559-6617 -1161-1900 4403-7608 2262--4581 -377--3147 3378--8133 1645--9271 2053-9645 1007-8682 -3652-3385 -33-9015 3566--7190 -6379-9351 -2917--1145 2033--5062 5627--1742 -2902--962 1096-2562 -4490--4722 8662-2639 4226--184 -632--3626 5897-5984 4322-5478 -4229--2611 3280--3201 5998-5658 -7144-6830 -1948--6595 4438-6751 -4075--5500 6061-5421 3482-2417 4040-4637 -2911--5012 -6163-2867 -3216--2569 9077-1078 -3439-4793 1616-6015 -1538--5087 -8037-7501 3127-4974 -6474--3408 -4592-1352 8795--4126 -2869--2890 566-5086 -4401--1608 -6876--8499 -1006--3533 -7555-3495 8840-7065 6337--809 -7601-2136 -2514-9024 -1552-3259 7092--3200 -2969-1122 4213-2467 6261-4802 -766--2588 3269--3003 6001-1013 4408-1101 7861-1705 3975--4597 -7344--5399 -2045-4806 2349--6383 -2315-303 -3546--8875 3271-3460 5104-4277 7180--2380 -3070-6359 -1013-5185 1510--6091 7781--4116 7232--2008 915--5400 6939-3635 -8167-3335 -8630--5076 -2039-6983 3268--2412 6545--4650 -6718--8687 4551--7340 1076--2826 -3947--8335 490-5110 4913--4012 -2854-1038 3767-94 -2728--2051 4568-6587 -3386--7438 -4279-2183 -1623--4576 -1923-4616 7857-2897 -7687-4056 1227--3157 -5193--4324 -4584-4899 -7172--345 1487--5722 -1597--3714 -944-2958 -8782--1078 -1671-2862 -5979-4307 -86-4276 6883--850 -6982--129 -1159-813 -7519-1276 -4267--5521 3779-361 4650-1591 -8902--5818 404--7188 -3518-6540 -4593--7923 -5473-545 7417--4997 -4557--8195 110--5022 4460-2375 6830--4417 -2873-1429 7139-5585 1041-8636 -770-755 7392-4544 5370-6088 -4137--4612 -1881-1039 4033-2361 8151--1616 -7546--2214 3484--1051 -6607--3884 1958--6848 -1711-4731 -4443-5931 2487--3716 2478-9126 -3411-2785 -585--7454 -1433-6811 -6678--3532 1542-1056 4963-1561 6291--44 8123--5813 -2738--407 -7949--2755 6796-5354 7200--1366 -5641--2896 8651-441 -9082-1054 84-5140 920--3685 720-4596 -4341--71 -3679--4480 803--7860 473-6240 1722-523 -6751--3270 6450--1023 -9366-7147 -1911--7038 6603-1630 -1257-8108 2253-4250 1334--1359 -7096--6698 4181-3498 -2702-2436 5304-2577 3293--7585 6150--5390 -4169--2128 -3328--5689 3256--6807 3363--1559 9079-2192 -5554--4344 5758--5803 -2409--94 4820-1663 3726-9119 1453-7087 -5553--3787 3054-4813 -4817-4485 -2189--2992 289-235 4997-8568 -3822-9358 422-1942 4021--1221 -5921--4530 2058--2159 -208--1650 7730--8743 -3397--2593 -5376--5482 1423--124 9469--5059 -7783--6443 2671-7782 5954--5935 -5403--7007 6709-6967 4799-8590 1448-4235 5326--6464 2701--7528 -5108-513 504-1307 4138--6840 -4422-1275 9889-4644 -6588-2592 -8690-517 1117--6758 -2894--7382 1638-6580 6407-1951 1459--5003 -3128--6403 -3248--3929 3909-3763 3607--6162 7341-3198 -7930--7313 -2105--5277 5423-7328 -6300--1556 -9164--7096 -327-3088 6299-5906 -3020--6954 1494-355 7700-3495 4322--8131 4420-6291 6911--5863 1417--7342 -5442--4567 5068--2468 817--3345 7112-278 7262--1029 8194--2022 -985-1814 7810-1034 -5361--1939 -5783--1442 -3801--7907 101-8378 -2387-7578 5861-450 2926--3502 6644--7194 -1912-4853 -571-3055 -3386--2250 -5493--1001 -6643-1560 9277--239 6428-8423 1080-1254 -7468--8505 4712--7906 -5247--2919 -8738-4058 3640-7711 -5573--1103 -1165--7379 -5266--1813 -1745--8864 1416--5831 -7772-5858 487--5265 7684-9883 3--1212 8663-6562 1755--3504 -1305--336 3122-3742 -7632-6435 -6528-3354 -4122--230 2773-5153 -1481--2854 -5603--2211 3782-549 -4136--6193 -6046--5393 -1774--2499 5364--1261 8344--5512 228-6739 -3937--4128 305--8111 -5414--3140 -8065-2805 -4293-6313 7321-1399 5070--2316 1076-4136 -6886-704 -2890--2150 1689--8132 2017--883 -9944--7292 1171--7980 -940--7621 -1680--6238 -3316-435 -2471--1565 -8503-130 -8397-4326 -2217--6278 4905-3588 5253--7207 -859-7427 6212--6175 7812-5745 4112-7742 -871-8138 -4840--5926 -4303-9709 2179-1424 5164-8705 -302-9225 3035--5210 -4653--4809 -6454-5833 7605--9716 255--2374 -3735-539 6883-7327 2847-1924 3998-4977 -3289-5038 -806--2927 -5763--8912 -1881-7958 3155--4905 -114-2921 5310-5120 -4714--1884 2420--842 9190--2877 827--1718 607-5256 -536-892 1143-2760 -1059-1758 5879--1345 -5424--2325 -1794-4039 -937--2321 -794--1805 -3187-3088 -6676-1267 -9463--7913 4270--1505 4876-7829 -1262-6273 -7578--1578 8931-5642 -2836--937 8149-7910 -395--9233 214--1726 -7665-688 1999--1393 2831--9593 198-3473 -7144--3341 -3066-748 -5311-513 5464-6037 -5911--6165 4235--7012 -5405-1674 9294--1965 -8944--4009 -5325-8506 3791-3046 -5823-4300 858-3731 5059-3270 4183--973 -343-2183 4751-5074 -2119-4949 -6582--1098 -9536--958 7271-8508 2120-5686 4526-623 -6871-5433 3357-3085 -1070-4887 2018--365 2677-2526 -6608-1618 7309-3466 7150-2703 3682-3109 3488--6406 2579--6593 -392-2794 -643--3081 -2179-6058 -7237-4915 1534-413 -1743--5332 1117--2941 7613-2706 -5827-6809 6768-5212 -1036--1778 6186-5882 3286--541 -2482--4425 -5562-9020 550-5491 -1253--7097 3323--1234 -4903--2650 -62-6172 5237-4228 -1795--6830 -1936--6665 -5577--683 5899-8487 -3367-420 6714--2180 93-4226 8659--5428 -1464--1367 8945--8345 938--5415 -1042-6377 -4038-3544 7913-2494 -6553--5173 5632--1971 9366-8934 -3764-1681 -8918--752 -6277-5969 -4335-5158 -4784-6045 -166-1976 -9056--2625 -8934-1102 2648--5541 -1959-1267 -3882--8382 -163-3072 -3235--5650 4209-5702 2455-175 -1278-3380 -7308--3957 -6505-5963 -2269-3099 -5399-207 22-7123 1725-7122 6638--9148 3966-1000-2150 4978--7561 2465--3574 3887--5840 -7731-2602 -5577--966 2562-3684 4281--9101 2482--4584 -6527-6968 1608--5563 -7386-2478 1001-2829 8941-5687 -5482-9293 1465-1783 -7685-3654 -6461-5322 6487-2491 -8847-6949 -2035-1798 1244-2396 -6066-7389 -6372-1152 6963-1729 -9016--8306 -3310--4072 -8017-755 2289--504 -6557-9932 367--1375 -8690-1344 2101--229 -5197-3661 -7323--6952 3608--615 3399--6342 6078-6318 1295-8015 141-3229 9132--3126 1368-4790 -2936--5854 3051-395 -6196-1279 -575--4863 2463--4313 2894--2935 1166--6265 953-517 -8696-5655 -463--6272 5803--6471 2430--31 9968-1383 2354--7423 3906--2623 -8081-3780 -6584-3102 -4202-5016 -5575-1272 -4949--925 -8857-5621 -97--1908 1366--9729 -71-1208 -9242--2868 1793--1107 9151--5428 2433-2453 -1931--1920 4796-9175 -3271--5902 29--8688 1127-4240 -8813-2790 -3836-258 -9570-4200 5145--3385 -3714-3554 7551-4964 -8335--1788 -334-735 9792-1277 1962--882 5449-2237 7045-1914 5232-2018 6750--7432 3956--5561 -3320--4405 -3717-1919 -8974-7330 2517--9682 114-2832 -1976-5069 2555-6328 3068--5697 3496--1211 -3292--2255 5310-6651 2985--3051 -8227-8963 -1021-2463 -5684-1934 7069--5637 6406--341 3445-1629 5417-5173 -8329-8605 -2127-4856 -4567--4485 -6901-916 -3796-2898 -7008-2874 -1940-3841 -7059-2843 -5720--4756 -5696-6474 -4567--526 -5350-2002 -1266--3393 -467--3816 6023--5863 3832-6252 7078--8191 -3155-2691 1793-2539 2084-5971 1173--4130 -2574--5330 -4077-3109 536--4730 5817--5579 8043-5098 -5830-6442 -4286-1219 2661-5503 82-5100 849--5559 6026-2034 -7179--6194 382--4776 7780--3302 4772-6868 2741-5521 7082-7320 -4480-4930 3952--4729 5917--4046 4097-5102 -7152-1633 1490--486 2287--4887 1684--5277 -7320--1815 339-6146 6511--3073 9010-8593 1684-4101 772--4524 5078-5351 -575--2011 -509--4780 2842--9286 -952-2730 1949--3973 2903-8218 4439--3068 -5504-5114 5885-7009 1649--5226 -1157-269 6643--566 6651-2122 -8651-3250 -1686--6529 5971-6180 4372-744 8864--8801 -3145-7682 -5489-5722 2117--15 4665-3509 3809-313 6951--6978 4128-1899 4922--6146 4135--5224 628--3968 -7587--1002 -7379--5920 2142--3589 -5465--9167 3147--3119 9001--3791 7169--1538 8040--7276 4606--2683 5616--3805 -4845-2600 -5796--3910 4465-4173 8733--2105 7888--45 2044-4288 -4207-3734 4672--4956 -3803-7435 -175--7892 5441-5453 -4928--6585 6985-2482 -8276-2230 7167--6961 3650-5844 -3310--3116 5923-6182 -5132-4940 -1807-1873 -2734-1776 5320--683 -3085-5432 7364--8505 2600--132 -5202-1828 -8048--6791 5044--3682 4834-1246 -1411-4894 -982-783 3852--4077 1463--5701 -2738--5372 -7175-3977 7111--1326 165--2685 -4506-2808 -6358-3755 4792--177 2290--6762 4690-3218 -1836--6377 5022-6946 2015-413 -8805--5989 428-888 7166--8318 -759--458 -9183--1016 470--4397 -478-6538 247--6606 -1977-3816 2560--2727 -6208-1018 -5000--3237 7244--5582 -1987-8452 2711--2959 6808-6052 2962-1531 5567--2946 6642--1140 1779-1731 -8928-3049 -7477--2423 8026-4082 3028--5185 -1385-3881 -4446-5699 -4775--1824 -2790--9010 1087--4919 7266-9172 2696--4450 -5952-239 -8697--5177 4733-4651 -3355-2259 -3359--6531 -5580--5070 -8338--4618 5385-4876 -7141--3170 8125--5449 5794--1011 -2264-9626 -808-1528 -1488-6470 -2177-6915 -6979-9009 1735--34 8193-2107 -3285-5180 -382-729 4383--2196 5132-852 -6973-973 8772--3841 -2139--3841 2261--6399 -6871-9515 -2084--208 -4051-8139 -3245-2814 3318-1562 -8581--2938 8936-6167 6461-884 -297--1736 -6229--8266 4338-9195 2751-2778 -4285-7130 -1799--520 -8757--6580 -6342--1929 391--1041 -425-6836 3568-3517 -8729--7875 1293--8854 4016-6247 -7481--3058 5421--6300 6893-5235 318-5248 -1153-4741 1363--7125 2699--5182 -5048-3612 -7452--972 -479-946 -5486--5129 -6599-1647 613-2628 8455--8429 4193-9281 1783--603 592--4372 -2643-5434 5212--9338 1991-1901 -7920-5936 3455--1406 -3098-4722 -1088--3209 5670--7658 -3361-6318 7568--2747 5444--5475 5361-1090 253-9291 -3546-2306 6378-1685 -1355--952 5431-1390 -7343-5620 3714-7964 -3061-481 4199-171 -701--6672 -3220--2690 -6726--4578 2996-5676 -1452-4602 1107--8460 -1551-2059 2002-4088 -6640-2294 1030--3716 4551--2685 -3277--6699 -6029--3947 694-4820 -8319-280 -6178--6848 1200--5682 7966-2592 -8394-2429 18-3633 3280--7837 4396-8521 -2055-2824 3666--1098 748-2983 4633-2799 -898--5893 5741-7160 6547-8482 -4774-3533 -5318-507 -6460--1119 8150-1352 -89-8904 1871--6010 6875-7367 -4439-9188 -1781-1530 4062-7884 1288-3720 -4810-3224 -637-315 2989--125 8943-6295 3206--5529 955--8061 5485--239 -5470--946 1844--3461 -5721--6397 -1663--7179 3881-2217 7493-7792 2771--1822 -8353-8016 -2058--343 -2309--1731 3959--3858 3327-1034 -72-6451 -7435--7619 -4122--603 -5492-9134 2351--3531 -4011--2818 -7335-4399 -3444--118 3490-8072 3538-96 910--4701 -4049-7225 248--673 3840-1711 -1691--5635 -2643-3222 -2300--2039 -8738-2204 -9258--7839 2565-1965 -7887--7064 6601-3392 3382--4061 -7728-7291 841-2600 9545-166 -5749--4855 3801--3463 -7793--24 4979-109 7634-8443 757--4795 877--427 -4283--4089 -8515-3713 -2253-3557 4639--3129 4976--1090 -4852--3445 1740--8515 -4963-784 1732--7637 -2240--3050 6936--2356 9186-8539 -814-4454 8360-9639 -1568-6274 -258-6537 4607-1050 -8873-5678 4672-3900 -2984--3418 5939-7537 -727--2005 -3960--5303 -6137-4852 7681--1346 3945-2380 -4459--574 3417--4136 -2436--5216 -998--1830 -7855--1387 8137--4807 1671-5220 4185-1028 1591--4923 -6822--6947 -1270--7792 5--403 2882--4540 2645--3976 -5149--2810 -8202--1922 -9604-6921 898-1268 4654-2446 -6083--2539 7054--9461 2903--2788 5363-7428 3784--2401 -8498--4258 6623--7204 1709-7138 4191-3612 -2844--2289 8716--2672 -3959--2738 -4098-8593 -3006-9216 303-5478 534--5872 -2055--2051 -2264-1857 -5229-2047 641-3926 -2231-4357 -234--5805 7089-4325 -1355--2168 -1884-1329 -7614--7542 1987--6762 21--8526 1938-1047 978-533 8848-3193 1150--1134 -6682--419 6032--2165 -8078--5093 4814--7061 -1167--7638 -5374--6032 6551--2517 2666-3298 -3632-1810 8695-197 6763--2073 540-3150 5754-56 -8853--468 -6797--6146 5150--7315 -4298--6291 1205--6418 3824--1279 7233-5215 3883-5222 2057--460 -6314--4554 -2965--2238 -3300-3607 -7604-1705 5667--3726 1772-2712 -2271-4022 -900--1026 8335-6988 -500--9541 -2760--9523 -1011--2298 7563--2304 7193-3831 -835-5578 -8106--989 302-5758 -2282-2861 -1655-36 -1081--2439 -1672-2990 -5715--1579 -750-331 -5797--8634 -4367--2649 -4710--8799 -333--2264 -6791-3353 1160-2260 4907--2507 3548-9078 -3319--3365 5401-5435 -3756--6885 4832-1096 -6873-978 2081-338 3091--4709 -5166--7222 -3944--104 8717-9651 1290-6428 4418-954 1507--1879 -9016--4705 -1851-7437 -503--7529 -3159--4253 7332--1464 -2779--1067 -5711--4681 -2246-1009 -4819-3304 8023-1360 1312-184 8147-1045 -4848--5670 -8174-8112 -280--1552 -8433--1386 -1702-6463 -992-308 -5560--1943 1205--8613 5026--5121 7458--1312 -767--541 -2358--5492 2263-3737 982--8282 -5500--4724 -2282-58 1107--1822 -7406-888 39--4024 789--7815 -5937-1358 8370--3691 -8835-9134 274-1194 279-6221 -4319-5063 -3777--5289 -6181-3245 -1889--701 7456-591 -5365-408 -8305-5560 -4980-3938 7562-3874 8598--5379 -716-625 791-4935 5268-642 7709-32 -1355-1480 9525--1447 8494--3257 8855--1487 -5134-3944 -7334-5323 -7493-4784 7481--4480 -6120-9590 -2189--3554 797-4871 -3922-8012 -5122--887 7891-879 7546--5688 -3013-4283 -6831-6391 -769--165 -9430-3393 8663--1450 -3401--6939 5013-6932 4154-1855 -2812-7342 -4053--1314 7791-1878 8735-1986 3354--8526 3858--20 8098--1776 6309-489 5132--2896 4895--3554 -3163-5908 3135-456 -3316--959 -4372--5251 1486-3624 2761-4238 -6157--9161 3932--7009 -687-3870 -2592-3550 -1245--4852 7369-3734 -3417-5059 -3614--2921 -4632--6205 6251-6125 -671-7075 2007--3616 -200--1002 6948-151 -7904--4473 5675-4467 -8425--2382 -3352-6547 -6718-4726 7140-549 -9045--8823 -3457-1721 8493--2000 -4959-691 5289--1892 -7569-5913 -3604--1011 3182-5435 -259-1977 5161--7668 -432--637 -9479--1991 1302-8020 808--8954 -1431-2463 -3736-268 -7535-6203 6475-1558 2660-2671 5046--1645 9555-6560 1138--5218 7860-4197 3921-5704 220-2421 -3752-2130 -1981-2243 -3174--3339 2825--6060 -1745--1766 8628-334 -4336-6525 -259--7361 2458--1686 -8319-1709 7536-650 1478-6637 7145--5192 -72--5086 5684-1320 -4675--2408 1934-4760 -3364--9024 -2653--5318 2216--4562 -4599-6024 2068-3557 -8378--3628 -1152-3788 7401-6019 -7464-8231 -3479--2648 7727-4879 -554-2880 -8065--125 -6137--979 -6715--2584 4449-7081 3961--2003 -4594-7077 -125--4901 7882-739 -4721-5681 -6601--9262 -2108-2054 6128-2256 -6702-1094 7909--5627 -7876-320 -9075-2701 -182-7618 5713-6152 7561-1111 1588-6575 -6413-586 8939-384 -1885--7110 -6306-3534 4475--5773 805-1674 -9009-1061 -805--520 -9635--1272 -8109--1072 -3664--5333 -7450-501 -2122--3295 -6886-2796 8129-1345 -6945--2531 3275-1490 -6248-2371 8922-1548 -9051-1453 1638--7211 -6299--1159 -5889--3874 5284-753 -5640-3763 -6767-1886 4423-208 -250-4930 658--2558 6207-2275 -4522--8918 2387-5133 2023--2345 -928-2963 -343--3755 7338-6281 3828--154 -6255-4796 -6166--1915 9760-9489 1316--2803 2993--8701 -2080-3030 -8375--2795 4388-9002 -94--3234 9213--4601 -7021-2694 4320--476 -9945--4267 5646-2462 -2538--1173 5373-1174 633--4700 -769-1307 -2703--8028 -1049-2526 -6456-7000 -5403--4235 1093--5075 -8073--6466 -6654-9807 -250--3526 683--4109 -4660--390 -7573--244 -1971-5316 -2973-6134 -5748-271 6387-5407 6513--5564 -7381-749 6787-1125 1121-4956 2947-4724 4329-4844 7960--2650 -7338--926 692--1182 4347-3905 5907--2918 583--6532 -5552--5411 4199-1836 571-3087 9366-931 3098--6311 3214-1509 -5253--4904 5278-1829 -734-8190 1495--7863 -827--7263 4969--8394 5086--3487 -4238--1546 3035-3403 2162--3621 -2925-2821 -1906-2337 8765-7050 1324--6172 4206-4934 -7338-1841 -3012-5693 -6675--204 -6210--1498 -6732--8089 -1963-4441 3309-7159 -1356--4955 4936--1560 -9114-7176 850-2852 -7025-7840 -3668--9076 126-3250 3972--5279 6606-1645 -7359-75 -5904--537 -3161-7807 4932-2447 -7451--3101 6231--8172 956-3162 4295--1870 3633-3487 -4055--9138 4004-1292 2963--5221 7682--9682 484-1239 -1006--6836 536--5228 -396--2296 7900-2463 4055--581 -951-5012 -5227--7135 -2303-6394 4452-8618 3961--6402 2596-7583 4211-8862 -4155--9590 -1723-3518 122--4339 4866-2682 -288-5033 1159--1083 4392-2915 7572--6904 751--3623 8630-229 -7738--3667 6949--1967 8344--2081 8269--5677 2932-828 -6314-2893 -9222--6437 -2358--6939 -2290-1232 8449-2219 -1712-3866 -4371-6775 -7036-7044 -6930-418 2718--8537 -2077-1648 -5682--6440 -400--1923 487--6435 -7103-2973 3756-1830 -7738-2514 -3792-7923 5712-6107 -6247-8243 -3241--3312 -5388--2190 -8195--9391 1189-8166 2737-9395 3117-5085 775-7543 -6428-2432 -2641-4320 -3861--2421 -2054-3698 3552--1367 8118-1339 -9654-1285 9790--1046 3579-3872 -335--5468 -4789--8617 341--1284 3357--3646 -2750--3118 7625-6886 -835--7262 3645--151 -7700--2252 9416--2469 -554-5536 -4791--7003 1936-1429 -9738--1758 3292-6754 5289--6804 -3488-44 7980--1605 1891-3378 3083--212 2624--6064 -3460--5704 939--8963 -1564-0 0-1 0-2-2 1-2 -1-1 0-0 0-2-2 1-2 -1
− examples/BAPC2012/G.out
@@ -1,49 +0,0 @@-8001.941-1.000-1.414-2.828-1.414-1.414-2.828-1.414-1.000-1.000-1.000-1.000-2.000-2.236-IMPOSSIBLE-2.236-IMPOSSIBLE-1.000-IMPOSSIBLE-IMPOSSIBLE-IMPOSSIBLE-28284.271-40000.000-1415.628-1415.628-1415.628-20005.304-IMPOSSIBLE-IMPOSSIBLE-IMPOSSIBLE-IMPOSSIBLE-IMPOSSIBLE-IMPOSSIBLE-24139.577-9754.896-IMPOSSIBLE-IMPOSSIBLE-IMPOSSIBLE-IMPOSSIBLE-IMPOSSIBLE-IMPOSSIBLE-IMPOSSIBLE-9118.184-IMPOSSIBLE-IMPOSSIBLE-IMPOSSIBLE-IMPOSSIBLE-1.000-1.000
− examples/BAPC2012/Gunslinger.hs
@@ -1,147 +0,0 @@-module BAPC2012.Gunslinger where--import           Algorithms.Geometry.ConvexHull.GrahamScan-import           Control.Lens-import qualified Data.CircularSeq as C-import           Data.Ext-import           Data.Fixed-import qualified Data.Foldable as F-import           Data.Geometry.Point-import           Data.Geometry.Polygon-import           Data.Geometry.Polygon.Convex-import qualified Data.List as L-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Maybe-import           Linear.Affine (distanceA)--{---Credits: http://2012.bapc.eu/--Problem Statement-=================--The quickly shooting, maiden saving, gunslinging cowboy Luke finds himself in-the den of his archenemy: the Dalton gang. He is trying to escape but is in-constant danger of being shot. Fortunately his excellent marksmanship and quick-reflexes give him the upper hand in a firefight: the gang members are all too-scared to move, let alone draw their guns. That is, as long as Luke can see-them. If he cannot see one of the thugs, then that Dalton will immediately fire-upon Luke and kill the cowboy without fear of retaliation. Luke’s amazing-eyesight allows him to cover a field of view of 180 degrees all the time. While-doing so he can move around freely, even walking backward if necessary.  Luke’s-goal is to walk to the escape hatch in the den while turning in such a way that-he will not be shot. He does not want to shoot any of the Daltons because that-will surely result in a big fire fight. The Daltons all have varying heights,-but you may assume that all the people and the hatch are of infinitesimal size.--Input--------On the first line one positive number: the number of test cases, at most-100. After that per test case:--* one line with two space-separated integers xL and yL: Luke’s starting position.-* one line with two space-separated integers xE and yE : the position of the escape hatch.-* one line with an integer n (1 <= n <= 1 000): the number of Dalton gang members.-* n lines with two space-separated integers xi and yi: the position of the i-th Dalton.--All x and y are in the range −10000 <= x,y <= 10000. Luke, the escape hatch and-all Daltons all have distinct positions.--Output--------Per test case:--* one line with the length of the shortest path Luke can take to the escape-hatch without dying, rounded to three decimal places, or “IMPOSSIBLE” if no-such path exists.  The test cases are such that an absolute error of at most-10^−6 in the final answer does not influence the result of the rounding.---Solution-========--Compute the convex hull of Luke, the hatch, and the daltons. If luke and the-hatch are on the convex hull, Luke can safely reach it. The length of the-shortest path is the lenght of walking along the convex hull (in one of the two-directions). If luke or the hatch is not on the Convex Hull, escaping is-impossible.--Running time: O(n log n)---}--data Answer = Possible Double | Impossible deriving (Eq,Ord)--instance Show Answer where-  show Impossible   = "IMPOSSIBLE"-  show (Possible l) = showFixed False  . roundToMili $ l-    where-      roundToMili :: Real a => a -> Milli-      roundToMili = realToFrac---data Kind = Luke | Hatch | Dalton deriving (Show,Eq)----data Input = Input { _luke  :: Point 2 Int-                   , _hatch :: Point 2 Int-                   , _daltons :: [Point 2 Int]-                   } deriving (Show,Eq)---- TODO: THis only works if there are no colinear points. I.e. if Luke or the--- hatch lie on the hull, but in the interior of some edge, they are not--- contained in the hull.-escape                :: Input -> Answer-escape (Input l h ds) = case convexHull . NonEmpty.fromList $-                               (l :+ Luke) : (h :+ Hatch) : map (:+ Dalton) ds of-    -- all positions are distinct, so the hull has at least two elements-    ConvexPolygon poly -> case C.findRotateTo (\p -> p^.extra == Luke) $-                                 poly^.outerBoundary of-      Nothing -> Impossible-      Just h  -> (distanceToHatch $ C.leftElements h)-                 `min`-                 (distanceToHatch $ C.rightElements h)---toHatch    :: [p :+ Kind] -> Maybe [p :+ Kind]-toHatch xs = let (ys,rest) = L.break (\p -> p^.extra == Hatch) xs-             in case rest of-               []    -> Nothing-               (h:_) -> Just $ ys ++ [h]---distanceAlong     :: [Point 2 Int :+ k] -> Double-distanceAlong xs' = sum $ zipWith distanceA xs (tail xs)-  where-    xs = map (fmap fromIntegral . (^.core)) xs'----- Distance from luke, at the head of the list, to the hatch while walking--- along the points in the list.-distanceToHatch :: Foldable f => f (Point 2 Int :+ Kind) -> Answer-distanceToHatch = maybe Impossible (Possible . distanceAlong) . toHatch . F.toList---readPoint   :: String -> Point 2 Int-readPoint s = let [x,y] = map read . words $ s in point2 x y---readInput                 :: [String] -> [Input]-readInput []              = []-readInput (ls:hs:ns:rest) = let n            = read ns-                                (daltons,ys) = L.splitAt n rest-                            in Input (readPoint ls)-                                     (readPoint hs)-                                     (map readPoint daltons)-                               : readInput ys---gunslinger :: String -> String-gunslinger = unlines . map (show . escape) . readInput . tail . lines--main :: IO ()-main = interact gunslinger
− examples/BAPC2012/sampleG.in
@@ -1,12 +0,0 @@-2-0 0-2 0-2-1 1-1 -2-0 0-2 0-3-1 1-1 -2--1 0
− examples/BAPC2012/sampleG.out
@@ -1,2 +0,0 @@-2.828-IMPOSSIBLE
− examples/BAPC2014/Armybase.lhs
@@ -1,299 +0,0 @@-----title: Army Base with Ternary Search-author: Frank Staals-@EXPECTED_RESULTS@: CORRECT------Army Base with Ternary Search-=============================--$O(n^2 \log n)$ solution.----> {-# LANGUAGE GeneralizedNewtypeDeriving #-}-> module BAPC2014.Armybase where---> import Control.Lens((^.))-> import Data.Ix-> import Data.Ext-> import Data.Geometry.Triangle-> import Data.Geometry.Point-> import Data.Geometry.Polygon-> import Data.Geometry.Polygon.Convex-> import Algorithms.Geometry.ConvexHull.GrahamScan-> import qualified Data.Array   as A-> import qualified Data.Foldable as F-> import qualified Data.List     as L-> import qualified Data.List.NonEmpty as NonEmpty--Preliminaries-----------------> type PointSet = [Point 2 Int]---A value of type Half should still be halved. I.e. 'Half 2x = x'--> newtype Half = Half Int->                        deriving (Show,Eq,Ord)--> instance Num Half where->   (Half a) + (Half b) = Half $ a + b->   (Half a) - (Half b) = Half $ a - b->   (Half a) * (Half b) = Half $ a * b->   abs (Half a) = Half $ abs a->   signum (Half a) = Half $ 2 * signum a->   fromInteger a = Half $ 2 * fromInteger a--> showValue :: Half -> String-> showValue (Half i) = concat [ show $ i `div` 2->                             , if odd i then ".5" else ""->                             ]->   where->     odd x = x `mod` 2 /= 0---> type Area = Half----> triangArea :: Triangle 2 p Int -> Half-> triangArea = Half . doubleArea-----TODO: Discuss degenerate cases here---Let $V(Q)$ denote the vertices of polygon $Q$, and let $\mathcal{CH}(P)$ denote-the convex hull of the set of points $P$.---<div class="lemma">-There is an maximum area quadrangle $Q^*$, such that $V(Q^*) \subseteq-V(\mathcal{CH}(P))$.-</div>--<div class="proof">-TODO-</div>---Main Algorithm------------------> maxBaseArea    :: PointSet -> Area-> maxBaseArea [] = 0-> maxBaseArea p  = case convexHull . NonEmpty.fromList $ map ext p of->     ch@(ConvexPolygon h) -> case F.toList $ h ^. outerBoundary of->                               [_,_]   -> 0->                               [a,b,c] -> triangArea $ Triangle a b c->                               _       -> maxAreaQuadrangle ch---<div class="observation">-Left an Right chains are independent-</div>--Main idea: Pick two non-adjacent vertices $p$ and $q$ of the convex hull as the-diagonals of our quadrangle. This splits the problem into two independent-subproblems, in both of which we have to find the largest triangle that has $p$-and $q$ as vertices.--> maxAreaQuadrangle :: ConvexPolygon () Int -> Area-> maxAreaQuadrangle = maximum' . map (uncurry3 maxAreaQuadrangleWith) . allChains->   where->     uncurry3 f (a,b,c) = f a b c->     maximum' = L.foldl1' max -- saves memory :)--the function `allChains` finds all alowed pairs $p$ and $q$, and the chains of-vertices (along the convex hull) connecting $p$ to $q$ and $q$ to $p$.--> type Chain = Array Int (Point 2 Int)--> allChains                 :: ConvexPolygon () Int->                           -> [(Point 2 Int, Point 2 Int, (Chain,Chain))]-> allChains (ConvexPolygon ch) =->     [ (chA ! i, chA ! j, chains chA i j) | i <- [1..n-2], j <- rest i ]->   where->     n   = F.length $ ch^.outerBoundary->     chA = listArray (1,n) . map (^.core) . F.toList $ ch^.outerBoundary->     rest i = [i+2.. if i == 1 then n - 1 else n ]--we make sure that we only select non-neighbouring pairs. Hence the i+2 in rest-i. Then also the last valid start-point p is the one with index n-2.--To make sure `allChains` runs in $O(n^2)$ time we build an Array representing-our convex hull vertices. All individiual chains are then views of this underlying array:--> chains          :: Array Int a -> Int -> Int -> (Array Int a, Array Int a)-> chains a pi qi = (ixSubMap (1,qi-pi-1) fu a, ixSubMap (1,r + pi - 1) fv a)->   where->     n    = rangeSize . bounds $ a->     r    = n - qi->     fu i = pi + i->     fv i = if i <= r then qi + i->                      else i - r--We then use `maxAreaQuadrangleWith` to find the largest quadrangle given its-diagonals $p$ and $q$ (and the chains connecting $p$ and $q$).--> maxAreaQuadrangleWith             :: Point 2 Int -> Point 2 Int -> (Chain,Chain) -> Area-> maxAreaQuadrangleWith p q (us,vs) = let pqu = findLargestTriang p q (Unimodal us)->                                         pqv = findLargestTriang q p (Unimodal vs)->                                     in (pqu `seq` triangArea pqu)->                                      + (pqv `seq` triangArea pqv)---To efficiently find the largest triangle we use that the area is a unimodal-function along the convex hull. We prove this in the following lemmas.--<div class="lemma">-Let $p$ and $q$ be points on the convex hull $\mathcal{CH}(P)$, and let-$\mathcal{C}$ denote the portion of $\partial$\mathcal{CH}(P)$ between $p$ and-$q$. The area $a(v)$ of the triangle $\Delta pqv$, with $v \in \mathcal{C}$-depends only on the (Euclidean) distance $d(v)$ between $v$ and the line-segment $\overline{pq}$. More specifically, we have $a(v) = cd(v)$, for some-constant $c$.-</div>--<div class="proof">-TODO-</div>--<div class="observation">-Let $p$ and $q$ be points on the convex hull $\mathcal{CH}(P)$, let-$\mathcal{C}$ denote the portion of $\partial$\mathcal{CH}(P)$ between $p$ and-$q$, and let $v(t)$, with $t \in [0,1]$ denote the position along-$\mathcal{C}$. The function $d(t)$ expressing the (Euclidean) distance between-$v(t)$ and line segment $\overline{pq}$ is unimodal.-</div>--<div class="lemma">-Let $p$ and $q$ be points on the convex hull $\mathcal{CH}(P)$, let-$\mathcal{C}$ denote the portion of $\partial$\mathcal{CH}(P)$ between $p$ and-$q$, and let $v(t)$, with $t \in [0,1]$ denote the position along-$\mathcal{C}$. The function $a(t)$ expressing the area of the triangle $\Delta pqv(t)$ is unimodal.-</div>--<div class="proof">-Directly from previous lemma and observation.-</div>--This means we can find the triangle $\Delta pqv_i$ in $O(\log n)$ time using a-ternary search.---> newtype Unimodal s a = Unimodal { unU :: s a }->                      deriving (Show,Eq,Ord,Read,Functor)---> findLargestTriang        :: Point 2 Int -> Point 2 Int->                          -> Unimodal (Array Int) (Point 2 Int) -> Triangle 2 () Int-> findLargestTriang p q us = triang . ternarySearchArray area' $ us->   where->     triang v = Triangle (ext p) (ext q) (ext v)->     area' = triangArea . triang---Ternary Search-----------------> ternarySearchArray            :: (Ix i, Integral i, Ord b)->                               => (a -> b) -> Unimodal (Array i) a -> a-> ternarySearchArray f (Unimodal a)->   | rangeSize (bounds a) == 0 = error "empty array"->   | otherwise                 = let (l,u) = bounds a->                                     i     = ternarySearch (\i -> f $ a ! i) (pred l) (succ u)->                                 in a ! i--Given a function $f$, a lowerbound $\ell$, and a n upperbound $u$ find the-value $i \in (\ell,u)$ such that $f i$ is maximal.--> ternarySearch          :: (Integral r, Ord a) => (r -> a) -> r -> r -> r-> ternarySearch f l u-->   | u - l < 2  = error "ternarySearch: l and u too close"->   | u - l == 2 = l + 1->   | otherwise  = let t = (u - l) `div` 3->                      n = l + t->                      m = l + 2*t->                  in if f n > f m then ternarySearch f l m->                                  else ternarySearch f n u---Input & Output-----------------> readPointSet :: [String] -> PointSet-> readPointSet = map readPoint->   where->     readPoint s = let [x,y] = map read . words $ s in point2 x y--> readInput           :: [String] -> [PointSet]-> readInput []        = []-> readInput (ns:rest) = let n       = read ns->                           (xs,ys) = L.splitAt n rest->                       in readPointSet xs : readInput ys---> armybase :: String -> String-> armybase = unlines . map (showValue . maxBaseArea) . readInput . tail . lines---> main :: IO ()-> main = interact armybase---> show' (p,q,(a,b)) = (p,q,elems a, elems b)--Array Stuff--------------> data Array i a = Array { bounds       :: (i,i)->                        , accessTransf :: i -> i->                        , arrayData    :: A.Array i a->                        }--> instance Ix i => Functor (Array i) where->   fmap f (Array b g a) = Array b g (fmap f a)--> instance (Show i, Show a, A.Ix i) => Show (Array i a) where->   show a@(Array bs g _) = concat [ "Array "->                                  , show bs->                                  , " "->                                  , show $ assocs a->                                  ]---> (!) :: Ix i => Array i a -> i -> a-> (Array _ g a) ! i = a A.! (g i)--> elems                   :: Ix i => Array i a -> [a]-> elems a = [ a ! i | i <- A.range $ bounds a ]--> listArray   :: Ix i => (i,i) -> [a] -> Array i a-> listArray b = Array b id . A.listArray b--> assocs :: A.Ix i => Array i a -> [(i,a)]-> assocs (Array _ g a) = (\(k,v) -> (g k, v)) <$> A.assocs a--> ixSubMap :: Ix i => (i,i) -> (i -> i) -> Array i a -> Array i a-> ixSubMap bs f (Array obs g a) = Array bs (g . f) a----Testing stuff------------------ > testPs :: PointSet--- > testPs = [Point (0,0), Point (2,2), Point (4,1), Point (5,0), Point (3,-1)]---- > test2 = [Point (0,0), Point (-2,-2), Point (3,-2), Point (0,1), Point (0,3)]----- > testPs3 = [Point (-16,0), Point (16,16), Point (16,-16), Point (-16,16), Point (-16,-16)]
− examples/BAPC2014/sample.in
@@ -1,25 +0,0 @@-3-6-0 0-3 7-10 0-11 6-0 10-10 10-5-0 0--2 -2-3 -2-0 1-0 3-10-3 1-4 1-5 9-2 6-5 3-5 8-9 7-9 3-2 3-8 4
− examples/BAPC2014/sample.out
@@ -1,3 +0,0 @@-100-12.5-31
− examples/BAPC2014/testdata.in
@@ -1,66406 +0,0 @@-78-1000--4853 -3443-1905 -6863-2021 6184--5801 -1982-6622 1440-6910 -1931-1827 6277--5033 4273--2930 -5333--5738 3246--1436 6734-2959 -6561-4456 -5600--6402 570-6483 1753--1331 6753-5696 3053--5811 3116-4383 4527-1418 6446-5966 2658--2518 6369-6235 -3558-6222 2239-4517 -5548--1793 -6077-6720 1183--3443 5805--6304 1750--5653 3391-4064 -5907--5444 3722-6802 924-6078 2480-5654 -4375--4659 -3682-4527 4387-1608 6373--1400 -6286-1520 -6920--5881 -1815-3207 5481--5888 2969--6143 2382--4527 4841--2458 -5673--4967 -3298--1540 6713--4638 4725-1112 -6933-1299 6488--2926 -5336-288 6749--6181 -1026-5515 -4541--1343 -6314--6124 -1212--4974 -3289--5359 3844-2835 -6618-5417 -4652-5449 -4616--3809 -4584-5932 -4014-7003 -1265-594 6688-1511 6411--6295 -570-6638 1400-1964 6212--6344 -318--907 6817-1742 6316--6274 1902--5507 -2500-6556 -2977-6809 899-1762 6307-493 -6875-1758 -6887--5906 2934-6397 1931-5331 3518--6372 -57--6254 1995--6179 -1033-2191 6098--4228 -4162--4218 5150-6740 -2553--3 -6783-888 -6919--5637 3418-5743 2988--3220 -5109-6683 1283-323 6743--6020 2696--1217 6772--5311 3912-6891 576-5124 3763--2315 -5766-3897 4961-3665 -6176-7015 -1067-5630 -4404-7014 -1092-4584 4331--3044 6074--5299 -2832--6125 -1209--5978 -1596-7019 -516--1849 -6045--5862 -1855-6999 -1309-2631 5849-5940 2699--3428 5816-2239 6072-6800 931--5718 -2138--1573 6706-6599 1494-1377 6461-6980 -1487-5387 3449-6221 -3581-2531 -6726-2231 -6800--930 6814--4474 4895-7021 -894--2010 -5951--6105 -1268-4671 -5411--1840 6643-159 -6819-5057 3838--320 6821-6831 -2273-2740 5784--470 6830-5778 -4220-7018 -990--6119 2451--73 -6766-907 6608--6398 859--3754 5566--1910 6624-998 -6927-6921 446--1121 -6418--3076 -5222--3231 -5100--2338 6459-1916 6235--5601 -2341--5457 -2582--4077 -4317-4849 4060-4245 -5772-5673 -4352-443 6721-1314 -6939--491 6831-6104 -3766--6307 1733--6354 -233--6327 -416--5600 3479--4050 5309-333 -6851--209 6812-2923 -6578-6696 1248--1675 -6143-5259 -4827-6987 14-2204 6091-3909 -6018-204 6762--890 -6513-3488 -6280--4465 -3908--6076 2565-1401 -6934-1192 -6936-3551 5231-6878 -2084--6103 2495-6509 -3071--5052 4250--1141 -6409--5777 -2031-1897 6244-3547 5234--780 6832--5157 4118--6393 274--6001 -1542--6289 1829-6467 -3152--2162 6539-624 6681-6895 -2004--2613 6319--6359 1385-6965 216--6342 -333-6859 -2166-1461 -6927--3184 5986-6965 -1603-5801 -4190--6168 -1071-4375 -5668-3170 -6455-5596 -4445--4352 5019--6386 1107--5504 -2505--3132 -5179--1570 -6200--5027 -3220-5905 2753--5662 -2236-5588 3196-7023 -672-1911 -6862--987 -6475--6208 2178--3848 5487-3505 5265-4014 4862-6959 -1646--739 -6569--267 6817-6764 -2484--1009 -6466-1786 6296-6891 -2023-7010 -286--6140 -1162-3942 -5995-38 6785--3526 -4846-6169 2329--5846 3050--5009 4302--58 6797--3689 5619-2622 -6700-1952 -6855--6275 -657-7017 -449--6010 -1520-4128 -5860-5226 3645--5310 -2815--4736 4617-3303 -6384-6932 -1812-3063 5582--4124 -4269-2666 -6686--6213 2160--6130 2420--3624 5670--5222 -2948-4740 -5347--6386 127-61 6782-1152 6536-2641 -6694-2442 -6750-14 -6787-653 -6896--4415 4955--6043 -1435--5634 3423--5991 2758-2783 -6641-7022 -858--1619 6696--4575 -3782--5830 -1922--6402 709--6099 -1285--4914 -3366--5554 3553-3987 -5963-6842 774-397 6730--5345 -2760--3987 5366--6378 1207--1892 -6020-3443 -6306-7000 -125-5834 2859--4351 5020-4236 4663-183 -6824--3356 -4996--2579 -5588-6641 -2798--5180 4088--6381 52-7007 -229-6055 2517-3852 4998--3321 5893-6827 832--5199 4063-2194 -6808-7002 -154--840 6825-2296 -6785--3906 -4489-6794 -2392-6876 638--6366 -116--6390 1042--692 6837-740 -6906-1718 -6893-5242 -4845-657 6673-269 -6840-3524 5251-5505 3302--1295 -6337-6024 -3883--1162 6781-5434 -4633--5763 3202-4400 4511--440 -6666--119 6804-4726 -5360-5864 2815--6239 -805-607 6685-6119 -3743--3402 5835--6396 914--5319 -2801--5089 -3136--6110 2476-6569 -2950-2098 -6828-1551 -6916-3697 5120--2598 6327--6221 -876-1630 6364--4894 4439--6373 -46--3507 5758--1704 -6127-4049 -5918-3390 5349-5474 3341--1514 -6229--5567 -2399-2208 -6805--1988 6602-3071 -6506-2936 5664--1957 -5982-509 6707-3873 -6043--6397 888--3373 5856-6994 -56-2444 5958--3810 5519--899 6818--5434 -2619--6403 641--4903 -3380--4164 5202-2542 -6723-7019 -961--2643 -5542-5183 -4907-298 -6845-6188 2297--6379 23-6923 -1863-5648 3118--4813 4531--4887 4447-417 -6864--5231 4020--1610 6698-5036 -5057--6008 -1525--6149 -1133--6062 -1385--4939 4386-6940 -1765-694 6664--6393 990--4562 4805--36 -6775--5112 4176-4471 4442--3903 5440-5997 2609--6382 1163-1237 6509-3541 -6249-3870 -6045-6065 -3824-6999 -112-6686 1275--6017 -1502-2697 5810-1844 6269--2549 6353-6985 -1444-6344 -3374-560 -6884--5213 -2961--5116 4171-352 6738--3029 -5258-6896 555-2041 -6839--2442 -5684-6713 1202-6903 525--1284 6761--1738 -6108-6992 -1377-6125 2403-462 6717--5913 -1747-7013 -1111-7024 -741-6258 -3520--1821 6648--2867 6178-3106 -6488-5086 3806--6280 1873-7014 -376-5026 3872--6188 -1001--2042 6585-4973 -5121--5319 3901--6353 1434-1717 6327-1240 6508-6982 63--377 6825-6875 -2097-3438 5314-3650 5156--1206 -6379--1747 6666--960 -6486--3615 -4765--3779 -4613--5749 -2082--1921 6621-6928 -1835-2368 -6768-1135 -6934-2161 -6815--286 -6710-89 -6804-4106 4781--3252 5941-438 6722-3753 5077--5776 -2033--6371 1275-1256 -6938-853 -6916-2609 -6704-6398 -3279-3364 -6351-4816 4094-3886 -6034--2076 -5912-3604 -6212-364 -6856-532 6702--6387 145-5827 2869--1276 -6346--6025 2685-6213 -3594-2663 -6687--619 -6610--3270 -5068--2884 -5367-3891 4966--1477 6726--5639 -2276--6401 756-2438 -6751-6511 1694--5403 3781-2732 -6663-830 -6914--6317 -467-5508 -4549-4077 4807--1033 6800--6049 2631--4828 4514--591 -6619-6534 1645-6670 -2733--3249 5943--4503 -3865-3994 -5958--6399 448-796 -6911--6394 965-6149 -3696-6919 -1884-4978 3924--3694 5615--6232 2089--2485 6386-7021 -585--3896 5446--6319 1663-941 -6923-1751 6312--968 6809-3079 5571--2754 6243--5548 -2431-6274 -3493-1223 -6937--3154 -5162--678 -6590--3163 -5155-464 -6871-5601 -4439-6916 468--6210 2171--6337 -364--1066 -6442--3918 5427-6853 -2191-6580 -2927--6238 2064-3264 5440--4605 -3747-2325 6025--1290 6760--4653 4709-4660 -5421-5686 -4336--6255 -740--2319 6468--4255 -4134-4647 4267--3137 6017--5723 -2129-7007 -1209--2020 6592-6821 -2307--2214 6516--5577 -2382--2193 -5841-4915 3991-6763 -2487--4161 -4231-3775 5060-5215 3658-2461 -6745--5697 -2175--4405 -3974--2071 -5915-1783 -6883-1654 -6902-5980 -3946-1212 6517--3762 -4629--2682 6282-6751 -2522--4667 4694-6570 1562-5095 -4997--3337 -5012-6746 1107--5284 -2855-6370 1980--877 -6518-3135 5532-2891 -6593-5737 -4273-1061 6564-1091 -6932--5117 -3097-6422 1880-80 -6802-5626 3147-1123 6545--6067 2588--2903 -5353-3476 -6287-7011 -1144--4562 -3797-6781 -2432--5948 2848-4904 -5189--2920 6147-6951 -1700--5122 -3090--6403 639-6283 2134--2704 -5498-4524 -5542-6834 -2262--4119 5245--187 -6737--6206 -934-6993 -45-5788 -4207-6745 1110-6664 1333-6198 2280--6401 526-3200 5486-6724 -2597--6385 111--6384 1136-6948 314--2001 6598-2057 -6836--6270 1921-5843 2846--616 -6611--693 6837-5524 3278--1420 6737--5483 3664--5065 4234--5935 2875--1583 -6193-1581 6384--6302 1761-7005 -1238-5560 -4488-4431 -5621-2881 5698-5015 3884--6304 -529-7015 -400--5920 -1731--4436 -3940--1104 6790--3835 5498-6099 2446-128 6773-6829 -2280-5535 3264-471 -6872-6761 1060-6255 -3525--531 -6638--6396 347--412 6827-2240 -6798-2513 5918-1360 6467--32 6794-1033 -6929-6859 707--4283 5087-6260 2174-5148 -4943--2260 -5800-2578 5880--6338 1544-6646 -2787--2817 -5416--3265 5932--5682 3342-7012 -329-3234 -6421--4594 -3760-5738 2995-6789 969--6042 2647--136 -6750--4496 -3873-6726 1166-6451 1820--3572 5710--5723 3272--756 -6563--6392 1009-4430 4482--4796 4550--4766 -3551--2450 6404-4876 4032--1618 -6174--1223 -6371-6958 262--6231 2093--354 -6691-6102 -3769--1467 -6253--6394 298-7002 -1277-6612 -2860-2359 6006-257 6754-6398 1929-2692 5813-4539 -5529--6311 1710--4975 4343--6052 2624--5949 -1664-1336 -6938--4693 4665-6303 -3444-27 -6790-5314 -4767--4446 -3929--2302 6476-2940 -6570-4310 -5721--4276 -4112-7020 -550--5777 3177-3977 4894--5481 3667--5254 3989--5417 -2646-2814 5739--3276 -5063--5376 -2711-6957 268--1370 6746--3000 -5280-3784 5053-6952 -1694-4299 4605-541 6700-4469 -5589--2170 -5855--4820 -3484--5159 -3038-6502 1713-6982 -1470--2586 -5583--6270 -678--4884 -3404--2514 -5634-5280 3580-2142 -6819-6480 -3127--1097 6791-1020 6576--5498 3641-112 -6809-6963 231--4189 5178--4039 5319-7024 -743-6359 -3348--4980 4337--6344 1501-3014 5614-6731 -2578-1498 6416--4394 -3986-6770 1031-6344 2027-2470 5943-3958 4910-2296 6041-6688 -2690-6686 -2695-6969 185--1130 -6414--2983 6110-4350 4558-3325 5396-6631 1418--3678 -4707--1021 -6461--602 6835-3587 -6222--4311 -4075--3729 -4660--6361 1368-5875 -4091--224 -6727-6663 -2749-4785 -5304--1823 -6060--6331 1592--175 6809-2791 5753--3850 -4544--5206 -2971-808 6635--6238 -809--4294 -4093--1692 6679--2045 6584--4195 -4196-2088 6151--4621 4743-150 6770--6160 2330--6065 2593-4315 -5717--6300 -548-2414 5975-224 -6832--6092 -1304-6852 -2195-4214 -5796-1687 6340--2743 6249--2350 -5744--399 -6678-6128 2398--393 6826--5614 3456-1528 -6919--4710 -3620-4147 4744--4105 5258-178 -6823--3964 -4432--3593 5694-1725 -6892-4972 -5122--1817 6649-3758 -6119--6400 483-6901 -1975--6257 1982-6629 1423-5274 -4811--6389 184--3963 -4433-5288 -4796-1642 6359--6181 2265--2111 6561-6860 703--1165 -6398-6975 131-7008 -247--797 -6548-2971 5642-4608 -5468-2313 -6781-7023 -811--571 6834--3366 5861--2855 6185--6403 640-3375 -6345-6909 -1936-1014 -6928-4839 -5252-5852 -4122-5918 -4033-679 -6899-6938 365--6336 -370-3219 -6429--3393 -4964--2119 -5886-6974 -1536-2135 6127--6378 10--6361 -165-5940 -4003-4810 -5280--5959 2825-6432 -3218-3621 5178--6381 1175-5595 3187-1991 -6848-6925 427-5920 2730-6673 -2726--2966 6120-7024 -742-7006 -213--6348 -287--5890 -1796-975 6589-5357 -4719--5075 -3155--6173 2290-3841 5007--3485 -4883-757 6648-6384 -3304-6175 -3655--5859 3025--6200 2205--6391 227-6971 168--1521 6717--6282 -627--6075 -1350--502 -6647-6802 -2367--5592 3492-1313 -6939-845 6625-4023 -5937--5528 3594-4193 -5812--3288 5916-3698 -6156-4585 4330--1675 6683--6350 -270--514 6832-6527 -3036-3092 5562--6288 1834-1469 6427-583 -6887-7022 -628-4745 4167--4026 -4369-4201 4695-5183 3695--5243 -2917--3456 -4909--6364 1342-5117 3771-5196 3680-6541 1629-6339 2036--2393 -5716--2822 6204-6925 -1852-5067 3827--848 -6529-5710 3034--2391 6433-3012 -6535-6038 2544-4698 4215--4357 -4026--5167 4105-3805 -6088-4782 4129-6318 2073-5780 2936--2471 -5664--2769 -5451-6697 -2667--5005 -3249--715 6836-4897 4010-7017 -1016-157 6769--2270 6491-5931 2713--6398 414--6330 1598-1838 -6874--5297 3931--6298 1782--1096 -6429--232 6814--3077 6054-3139 -6471--1137 6785--635 6836--6065 -1377--5478 -2548-5733 -4278-1589 -6911-5820 -4165--6400 792--3580 -4797-5441 3382--1587 6703-4932 3973--6142 2385-1000-1647 4095--6681 -1072--3060 3697--3173 3625--79 -8770--1099 4505--6637 -2621-4515 -6640--1440 -8484--1826 -8326--4887 -5924--5705 -4778--6725 -1799--4499 2595-5531 539--5271 -5420-3965 2510--3573 -7254--4176 2881--2318 4115--2327 -8083-4738 -6409--6727 -1670-5421 711-4367 2086--5359 -5298-5921 -4764-3021 3317-4070 2407-5035 -6083--2433 4056--6700 -2230--5970 -4332--4816 -6008--971 -8632--1918 4293--1064 4509--6720 -1958--3429 3452-4789 1591-6012 -316-3362 -7604--2098 4216-4305 -6840-5115 -5986--3473 -7336--5622 1332--6567 -554-3160 -7746--6710 -2123-876 -8741--1295 -8538--1312 -8532--5893 -4467--4639 -6212--6561 -534--3245 3578-6548 -2561--2695 -7883--214 -8762--5156 -5576--6183 372-5434 691--6013 -4253--1554 -8440-6503 -3152--2051 -8223-5834 22--655 -8701--6673 -1017-3733 2730--4229 2836-6347 -1190--3028 -7669-3752 -7312-4919 -6214-476 4470--3816 -7046--6305 112-1652 -8559--6376 -3488--6604 -2762--3744 3225-740 -8754-334 4496-6264 -4024--6623 -769-6346 -3802--6146 444--6416 -142-4 -8773-6535 -2162-4177 2293--6705 -1290--6260 210-219 4515--6682 -1079--6628 -791-5389 760--6483 -313-3798 -7275--6129 -4035-6514 -3068-4637 1777--1191 -8572-5936 -4735--530 -8724--6038 -4207-4614 1804--351 4546--2211 4165--6678 -2393--6706 -2170-5047 -6069--3346 -7438--4546 -6317-3965 -7139-1701 4071--2521 -7981--1218 4488--2888 3803-6513 -3076--4387 2698-5791 101-2881 -7928--1239 -8557-5715 -5133-6301 -1044-4852 -6288-6521 -2001--5667 1264-1076 -8712-1543 4140--5081 -5675--6314 92-3744 2720-793 -8749--4316 -6567--3237 -7521-6110 -4378--2304 -8095-1311 -8657--6653 -909-5649 -5241--6692 -1155--6649 -2562-1819 4017-3997 -7112--3001 3734--1186 4493--5665 -4841-845 -8744-5127 1141--6192 -3913-1765 4042--3977 3044--3647 -7192-4250 -6891-5892 -4820--6550 -2960-1055 -8716--6727 -1669--698 -8693-6547 -2590--1421 4443--4914 -5891--2965 -7711--6597 -664-2447 3692--6635 -823--6716 -1434-1110 -8705--5828 1010--3936 3077-293 4503-6038 -370-6537 -2195-1776 4037--345 -8751-5878 -59--4799 -6028-6541 -2273--1758 4352-2342 3750--5610 1349-412 -8774-6210 -4153-6381 -3700-6412 -3590--690 4538--1949 4280-4676 1731--3200 -7548-3488 2944--1649 4384--6717 -1452--4968 -5822--4742 -6094--3674 -7169--6095 -4100--6289 -3705--2748 3884-1770 -8511--3548 3368-1681 4080-3183 -7730-1437 -8624--2754 -7846-112 4525--6703 -2204--1682 -8388-6510 -1913-166 4520-4393 2057--4901 -5907--6697 -1198--5894 902--6711 -1365--809 -8670--5613 -4922-4387 -6763--1607 -8419--1487 -8466-1579 -8583--6621 -2692-5426 -5587-2440 3696-3167 3207-5353 -5686-2709 -8034--6604 -691--6721 -1527--4144 2908-2453 -8180-5275 -5786--857 -8659-6494 -3214--2764 3875--5225 -5483--1097 -8599-4568 -6586--6587 -2826-6522 -2990-6442 -1539-5218 -5858-1535 -8596--919 4523-4250 2214-6505 -3137--3605 3327--3339 3515-6437 -3491-6430 -1488--5955 -4359-630 4439--1236 -8558-5656 334-2699 3536-5839 -4919-1995 -8413--906 4524--4484 2609--1944 -8273--6714 -2069--6336 43--6311 -3653-4894 -6242--1880 -8302--1360 4458-2418 -8199-6183 -4215--743 4535-3307 -7643-6405 -3616-6489 -3245-5173 1077-2908 3397--5974 766--398 -8746-843 4388--6366 -3515-5557 -5388-5526 547-5389 -5638--6443 -207-1470 -8615--1166 4496-6518 -3033-5916 -131-3039 3304--1714 4365-1739 -8524-5046 1252--5976 -4321--6234 -3825--479 4546-1308 4235-5189 1054-4600 -6553--4099 -6784--6698 -2247--6713 -2083-5528 -5434-64 4529--528 4545-6159 -644-4700 -6449--5128 -5613--756 -8682--2597 3968-1631 4102--2560 3988-4628 -6524--6693 -1163-4118 -7009--5490 -5107--5916 865-2137 -8347-4708 1693--6106 -4079-3920 2553-5683 -5186--4356 -6524-3704 2756--6726 -1736--6657 -2521--1616 4393--4418 -6457--5576 1396-2783 -7989-5362 801-3116 3247--3510 3395-3891 -7200-6431 -1492--1642 4386-727 -8755--5023 -5751--3362 3499-5967 -4675--6652 -904-6237 -4089--3824 -7039--3579 -7249--4882 -5930-2643 -8073--1773 -8349-564 -8766--2814 -7808-2916 -7906--4644 2458-4141 -6989-5927 -152--4793 -6035--2687 -7888--6296 -3689-1820 -8490--6499 -3128--6340 34-6361 -3759--6507 -3103-6547 -2495--4297 2778--810 4531--5346 1691--5098 1983--2594 -7941--3917 3092--305 4545--1999 4259-5606 -5310-3147 -7755--2057 4234--4566 2532--6057 -4172--5970 773-1375 4209--5605 1356-3066 -7809-5241 -5829-5983 -4644--5751 -4704-6502 -3159--5031 2057--3802 3181-3241 3148-1181 -8689-1370 -8642-1996 3930-2569 -8115-4376 2076-4977 1345--6689 -2318--5397 -5243--6680 -2380--5959 -4352--81 4538-4137 2336--5042 2045-3942 -7158--4320 2758-3495 2938-5791 -5004-3865 -7221-6275 -964-3058 3290--1234 4485--6523 -3051-4320 -6826-5564 486-5659 329-928 -8735-6544 -2341-2516 3652--5294 1755-6382 -1310-2786 3480-979 4351--5013 -5764--4249 -6638-1116 4307-5776 128-4489 1948-6532 -2866-6499 -1838-6548 -2562-3738 -7323-3678 2779--6018 688-6161 -4265-5135 1130-6089 -480--6727 -1671--5707 1203--6525 -429-81 -8775-6388 -3677--1810 -8333-1423 4190-3337 3070-1851 4002-3394 3023--3327 -7453-2812 3463--3516 -7301--4918 -5886-4782 1600--6240 -3812--590 -8713--1955 -8268-6382 -3697-1164 -8693-4720 -6428-4465 -6689--4899 2197-6485 -3266-1060 4326-1984 -8418-920 -8736--6217 -3861-6216 -795-6263 -929--4429 2660--100 4539-577 4451--6664 -965-6455 -1596-1007 -8724--3748 3222-6501 -1851--3634 -7203--4397 2689-6539 -2232-287 4504-2508 3657--5214 1852-6531 -2108-2194 -8318--2921 3783-4735 1660--2280 4133-1878 -8465-767 4407-4857 1503--6003 715-1722 -8531-5171 -5917--2163 4187-4516 -6639--2991 -7694--3993 -6885-6004 -4603-6081 -4441--751 -8683--5221 1844--6710 -1352-6408 -1405-3250 -7683-2575 3615-1242 -8674--4807 2293--3210 3601--6634 -2635-6025 -4560--2240 -8128--1862 4316--5736 1157--6318 -3636-2742 -8014--5155 1919--5443 -5176--3883 -6987--6115 504-5962 -219--217 4543-2814 -7970-5780 121-2277 -8275--6031 664-6542 -2704--6614 -2722--513 -8727-3761 2704-6524 -2027--2174 4182--3823 3165-4239 2226--5622 -4908-5887 -76--1055 4510--5532 1455-511 -8769--2459 -8014-4069 2408-5343 829--6469 -3221--2275 -8110--2993 3739--291 -8756-5443 677--6361 -3528-918 4368-4218 -6920-1683 -8547-6458 -1610-6470 -1669--4855 -5962-2635 3577--6526 -3041--6391 -3447--57 -8771-35 4531--634 4541-3683 -7366-3031 -7832-5859 -24-5322 -5726--3739 -7113--3415 -7383--412 4547-6489 -1777--4248 -6639--1107 4504--6327 -3614--4081 2960-907 4371-5329 -5717-2415 3710-6546 -2432--2822 3842--1024 4513-6548 -2560-1617 -8571-2927 -7899-2650 -8069-3560 2882--6668 -2454-4968 -6159--6066 -4155-6328 -1128-411 4482--5350 1686-6534 -2148--2030 -8233-2139 -8346-5852 -4895-3369 -7599-6322 -3869--6299 -3682-4844 1520-5397 -5627--3218 -7535--3292 3547-2528 -8138-5833 -4930-2714 -8031--6338 -3587-3148 3222-5488 -5495-708 4421-994 -8726--6720 -1508-6538 -2779-6334 -1147--472 -8734--3670 3280--2316 4116-4902 1444-6527 -2061--5929 843-678 4428-6518 -1976--5551 1430-1428 4188--2497 4022-1503 4157-5624 387--1158 -8582-5264 945--1490 4426--6565 -547-1477 4168-4304 2155--6609 -2743--4779 2322--2406 4070--1796 4340--6442 -3302--6204 329--5454 1555-6456 -3408--6724 -1856--5508 1486--6718 -1999-6425 -1469--6012 699-2969 3354--6454 -3267-6148 -617--2962 3758-2215 3817-3116 -7776-455 -8772-3855 2615-3491 -7511--6537 -3004-6061 -419--4302 -6582-5311 876--280 -8757--3106 3668--6717 -2019--5397 1627--1793 4341-6078 -456-5167 -5922-2096 3879-6013 -318-3331 -7626--2917 -7742--6480 -3187-6478 -1710--3667 -7175-4496 1940-6386 -3684-3645 2808-5042 -6075--5710 -4770--1374 -8509--5743 -4717--5314 -5361-4208 -6929--1086 -8602-6545 -2375-3565 -7456--6561 -2921--3295 3545--6355 0-3426 -7558-6541 -2723-6358 -1227--5838 -4560-6117 -542--4429 -6445--3148 -7585--1115 -8594--260 4544--4034 -6846-3113 -7778-6418 -3567-5750 -5074--6362 -16-172 -8777--6668 -986-349 -8776--6688 -2325-1614 -8572-5595 435-5797 90-1133 4301--972 4518--6568 -2896-6135 -4323--6726 -1641-4030 -7084--5878 -4493--4555 -6307-2462 -8175--413 4547--4580 -6279-3310 3092-101 4526--3931 3081-3294 3105--5568 -4991--6723 -1890-5431 -5580-3723 2739--2106 -8196-3695 2764--1901 4300--3087 -7628--946 -8638--6257 -3775--153 -8766--1022 -8619-6435 -1509-6537 -2797-4679 -6471-6389 -1335-4000 2476--3857 -7010--4044 2990--4747 2355-5150 -5943-4620 1797-4336 2120--5624 1329-2994 -7856-6182 -703--243 -8760--1602 -8421-1039 -8719-1872 3992-6120 -549--3912 -6961--879 4526--4668 -6179-5977 -248-3400 3018--5916 -4427--2394 -8048--6156 -3983-5372 -5661--3862 3135-6474 -3322-4739 1655-3522 -7488--6412 -3389-3455 2972--3486 3412-4401 2048-6449 -3440-6444 -3462--1173 4495--6591 -641--4572 -6288--4917 2178--4290 2784--2707 3907--6540 -472--6162 413--5073 2011-6304 -3918--6716 -2036--4961 -5831--4879 2218--6684 -1094-6197 -743--5539 -5035--6235 264--1983 -8255--4694 2409--6182 374--5368 -5285--4970 2122--5862 955--2641 3944-1057 4327--1312 4469--3207 -7543-3468 2961--2626 -7923--5329 1712-519 4462-1465 4173-987 -8727--2574 -7952--6431 -3334-2227 -8301-4050 -7067-6538 -2212-6187 -716--2829 3838-4791 -6353-5737 196--4695 2408-5218 1012-2849 3438-2101 -8364--6724 -1586-2032 -8396-4976 -6150--5352 -5308--6513 -3084--1549 4411-1463 -8617--5306 -5372-5540 -5415-3623 -7412-5714 236--4515 -6351-3674 -7373--2175 -8161-6545 -2645-300 -8777-3644 -7396-3598 2849-5579 -5353--3902 -6970--2456 4044--6389 -78--6458 -245--4483 -6386--5245 1815--5719 1184-126 -8776--4121 2927-6425 -3540-6473 -3327--5226 1838--5420 1598-5180 1067-2585 -8106-885 -8740--6697 -2255-2125 3864--98 -8769--5501 1495-5445 -5560-3569 -7453-1927 3965--1255 4481-6290 -1010--3701 3257-5066 -6046--3923 -6951-1919 -8447-6003 -4605-6055 -406-1012 4341--6616 -740-6320 -1103--6071 589--2803 -7815-4439 -6714-6157 -4274-4563 1863-631 -8762-1261 4253-5092 1189-1804 4024--6289 147--6191 -3915--6646 -875--5036 -5734-936 4363-6519 -1984-4834 1533--5600 -4942-6139 -595--5774 -4666--3874 -6995--1831 4328--5835 -4565-3902 -7191-2148 3852--591 4543--6395 -3436--2619 -7927-5572 473-2254 -8287--6046 636--122 4540--6100 533-2381 -8219-5027 1278--1860 -8311-4460 1981--5541 -5032-6467 -3356--6141 -4012--4709 -6132--1343 4462-233 -8778-6212 -784--3489 -7323-4703 1699--1644 -8404-2061 3897--1998 -8248-5699 262--1656 -8399-4949 1382--466 -8735-6526 -2941--5785 1079--3295 -7478--6268 -3751-4863 -6276--6560 -531-6252 -897--5147 1928-351 4493-2395 3721-6233 -842--2373 4087-6175 -685-1594 4118-234 -8778-6371 -1271-2624 3584--3541 3373-4111 -7015-3814 2654--3777 -7080-2318 -8253-6344 -1180--2878 -7767--3940 -6935--2632 3949--4675 -6171--4179 -6707-4722 1676--5206 -5509-5486 610--1289 4474--5758 1122--1722 -8371--6501 -362-6110 -526-572 4452--3326 3524-2738 3511-5360 804-2280 3783-6531 -2879-5443 -5563--3420 -7379-3236 3152--5803 -4618-3757 -7308--4858 2240-5795 -4997-6132 -578-4123 2351--5522 -5060-1195 4278--6584 -615--6610 -2739--3853 3142--4618 2483-792 4401--3095 3675-6279 -3986-38 -8774-5867 -4867-6176 -4231--2893 3800-2822 -7965-700 -8757-3028 3312-5824 -4946--26 4535--4144 -6741--6354 -3546--183 4542-3637 2815-6056 -4495--4070 2969-5950 -196--4209 2853-6126 -4343-5737 -5096--6701 -1241--887 -8652-6509 -1906--5568 1407-4530 1901-1133 -8700-1000-7839 1831--5326 -1240--5369 -12-4056 5978-2148 -6959-4571 -5761-716 6592--3305 3935-2090 -6975--2271 4963-7840 -1642-800 6614-6026 -4398-5397 -5042--4497 2390-5544 4919-2769 6544-1707 6709-5943 -4487--5384 -189-3624 -6366-2282 -6920--2162 -5779--3868 3280-1989 6694-1165 -7098-6886 3523-2727 6557--5285 456-1892 -7024-1924 -7017--5106 1108--406 6191--2347 4895-7522 2501-6777 3658--1676 5451--1429 5619--5212 -1748-162 6419--236 -6842--1103 5824--2208 5019--1789 -6045-4184 5905--4681 -2985-8139 720--1393 -6292-7767 -1821--5253 596--46 -6909--2390 4856-8074 -852-22 -6931-8044 -983-5294 -5139-7661 2222-2621 6587-192 6430-7639 2267-8023 -1072-6977 -3249-8185 196--2763 4503-6137 4366-8107 910-8027 1276--902 -6555--277 6247-8147 664-7347 -2676-1231 6689-7482 2579-4200 -6019-7313 -2735-7985 1417-643 6572--3476 3742--5351 -1087-7043 3317--1610 5498-4773 5524-7073 3276-415 -7029--5197 813-5827 4668--522 6139--3855 3296-1619 -7069--4438 -3418--1378 5652-1574 6710--4276 2731--3735 3440-1009 6658--4901 -2545--2233 -5726--2642 -5399--2512 -5505--5194 -1804--539 6131-5109 -5308--2955 -5130-7582 2383-8106 -696--4855 1707--4847 1724-6421 4067--2503 4752--1600 -6167--2318 4921-5034 -5375--5080 -2134-8092 994--2097 5116--1579 -6180-1991 -7001--5232 685--2395 -5599-6250 4250--3656 3533-2747 -6762--3780 -4287-7961 -1294-5354 5077--3058 -5034-5049 5320--4370 -3528-3223 6380-5247 5163-5751 -4688-5303 5118-5606 -4837--2753 -5306-100 6396-6447 -3920--263 -6832-5781 4711--5282 -1476-7540 -2313--4036 3067--4672 -3002--5238 660--3953 3173-6400 -3975-239 6447--5283 465--4607 2198-7268 2964-2227 6667--2182 5042-6622 -3712-5309 -5125-2294 6656--791 6002-6715 3732--1898 -5970-6313 -4076-2951 6483--971 -6521--329 6225--3924 -4119-256 -6996--2936 -5147-7541 -2311-8172 -253-6875 3537-8016 1317--4372 2588--1268 5722-4779 -5594-4791 5511-4293 5840-6864 -3404-2501 6617-3120 -6612-3244 -6557-1217 -7097--5225 -1704--5368 -4--4118 2956--5315 309-3880 6073-951 6648-4288 5843--5348 -1107--1721 5418-1491 -7084-7291 -2772-2376 6642-7288 -2777--5386 -232-5239 -5190--2586 4674-8159 -383--3248 3997-6655 -3672-7324 -2716-8177 347--5395 -559--5386 -734-8083 -810-7549 2448--2112 5103--2104 -5822-7364 -2646--1882 5293-6383 4108--3609 3588-2586 6596--1265 -6365-8159 564-7837 1836-3264 6363-7971 1460-3330 -6518--4772 1879--1908 5272-5892 -4541--4792 -2768--2579 -5451--5288 442-4742 5546--5148 979--1776 5377--4622 -3095--4477 -3351-1382 6703--605 6099--4294 -3646-6107 -4310--4041 -3978--4793 1836-8186 174--4750 1924--4993 1393-4849 -5536-7876 -1551--3429 3796--3121 4133-7404 -2574--5383 -777-7755 2024--4691 -2966--1561 -6191--3019 4240--1929 5255-4059 -6109-3553 6236--973 -6520--2857 4407-4903 -5490-8182 -38--3459 -4637--5275 -1508-4512 -5805-8096 -747--5157 -1917-4286 -5963-4580 -5754-4391 5780-5438 -5003--1035 5865-8165 -333-2599 -6817-308 -7008-1172 6682--5219 -1725--5383 -169--3630 -4454-499 6530-2436 -6872--2607 -5428-8167 -316--5373 -898-5986 -4441-5398 5041-2629 -6806-6167 -4243-8186 173--3986 -4045-5809 4685-1421 6705-7897 -1495-2417 6634--2672 4592-8023 1291-7890 -1514-5554 -4890--1502 -6227-7681 -2017-8048 1196-3912 6056--3662 -4419-5961 4539-4973 -5429-1050 -7095-7190 3095-3352 6326-300 6467--5350 -1094-8150 642--79 6327-5919 4580-7484 -2423-576 6553--3751 -4320--4002 3111-4220 -6006-8130 -570-4647 5612-8164 511-444 -7034--2337 4904--3972 -4062--2877 -5199-7509 -2374--5249 -1614-6744 -3560--5379 -103-5079 5297--5170 907--4560 2282-7111 -3053-8013 1328--5046 -2223-7328 2860--4921 1561-3087 -6626--4282 -3663--26 6348-355 6485-8156 -405-7195 -2926--1629 -6149--3496 -4598-3642 6193-2928 -6691--4963 1465-7210 -2903--1004 5883--2893 4370-8169 -297--3728 -4346-6702 -3613--3347 -4752-3494 6264-5553 -4891-1945 -7012-946 6647-4720 -5642-2788 6538-7087 3256--1982 -5911-5849 4647--3376 3856-64 -6944--146 -6875-8171 -269--5271 518-8131 -564-8170 -284--2229 -5729-4493 -5819-7351 -2669-2990 -6666--3592 -4495-1118 6675-8064 1130--1149 -6428--4970 -2398-404 6501--4707 -2935-3762 6134-2101 -6972-7163 -2975--5394 -583-4612 -5729--1320 5689-2837 6522-7020 -3187--3831 3325-2760 -6757--5180 -1847-6526 -3827--3703 -4374--1216 -6392-1741 6708-7692 2158-5181 -5243--2243 4988--5129 1040-2726 -6770-7149 3160--3235 4011--3799 -4265--3316 3923-1680 -7061-2071 6687-8168 468-1111 6674-4567 -5764--4073 3017-7430 2677-1350 -7093--5393 -420-3145 -6601-7638 -2111--5337 -1176-4474 5727-3765 -6287--2606 4655-65 6383-846 6625-3525 -6419-4018 -6135--4583 -3165-2358 -6897--5000 1376--4419 2516--4503 -3306-7146 -3001--3855 -4200-7939 -1366--2062 -5853-7754 -1852--4404 2539--3018 -5072-7337 2844--2815 4450-975 -7092-1070 6668-2075 -6979--5222 -1715-2131 6680-4401 -5885-4888 -5503-564 -7054--4181 2869-7920 -1427-8117 853--5305 360-802 -7081-7441 -2506-3827 6101--5338 -1170-4895 5435--1495 5576-3054 6445--4448 -3401-7712 -1948--3215 -4882--5387 -718--3346 -4753--5257 -1583-4007 6005-7814 1893--889 5948-8007 -1132-6499 -3859-6590 3878-7973 -1253--5376 -71-7954 -1317-3313 -6526-1259 -7096-5831 -4605-2535 6609--4168 2887--4822 -2707--667 -6667--5102 1119-7662 -2059-6909 -3343--453 6170-6287 4211--2707 -5345--5105 -2065-1021 -7094-6583 -3759--4838 1743--4500 2385--4930 -2484-7226 3036-6646 -3683-7761 2011-5062 -5350--4399 -3482--4546 -3231-3483 6269--5076 1187--2258 -5707-6954 3435--5390 -323--5216 745-5928 -4503--5391 -648-5643 4834--5004 -2323--3864 3285--568 -6710-4226 5880-4352 5804-3458 -6454--2703 4562--4533 2329--607 6098--4472 2431-446 6514--4126 -3870-3012 -6657-1949 6697-7374 2778--1543 5544-5494 -4949--4277 -3670-7784 -1780-3957 -6173-3680 -6335--3128 -4967-2347 6647--5266 540--1975 -5916-6247 -4152-2908 6498--5378 -90-2531 6610--160 -6870-5498 4958-260 -6997-1673 -7062--5377 -80-7068 3283-4602 5643-741 -7076-8184 33-8057 -927--4870 -2609--734 6032-7925 1596-4802 -5575--473 -6750--5395 -561-8128 789--117 -6885--5048 -2218-5668 4812-7646 -2094-7498 2548--3761 3409-660 -7067--562 6120-7867 -1574--4718 1987--1036 -6488-205 -6983-6972 -3256-4121 5942-4580 5658-6396 4094-105 -6956-3795 -6270--2762 4504--5134 -1983-8062 -905-7463 2615-4853 5466-44 6375-5024 5339--5323 268-1915 -7019-87 -6951--804 5995-6849 3570--432 -6767--561 -6713--3522 3689--4939 -2465-5620 4854-6069 4433-3897 6064-2215 -6940--4163 -3822--4009 3102-8182 261--2829 -5241--974 5900-7067 -3118--4976 1434-2345 -6901--4537 -3247--5350 116-4855 -5531--2064 5144-5138 -5282--4573 2259-8177 -155-1441 6706--1106 -6451-3068 -6634-2170 6675-8151 -439-8073 1089-7730 2078-3162 6404--3335 3902--3907 -4139-3582 -6389--5028 1307--4899 1610-6571 3900--5269 -1534-2840 6521--5355 85-5727 4760-6220 -4183--3036 -5055-2937 6488-5648 -4794--3603 3595--4426 2505--2456 -5550--1951 -5933-8175 376-6138 4365-7263 -2818-8175 -198--2448 4803--137 6304-7791 -1763--4871 1672-3764 6133-7245 -2847--5392 -384--2518 4738-7919 1613-5746 4743-6006 4495--1780 5374-7239 3014-3894 -6211-8183 -3--1811 -6030--4791 -2770--3137 4116--5356 -1051--4693 2036-8076 -843-690 6585-8079 -829--4355 2614--5055 -2200-8015 -1103-1323 6699-5132 5255-374 -7021-6959 -3274-6096 -4322--5384 -763-2704 6564-4467 -5838-2387 -6888-1626 6711--5232 -1678-1300 6697-7413 2708--5380 -118--5292 423-2123 6681-1902 6700-7115 3213-2981 6472-7584 -2223--4435 -3423-7721 2097--5273 -1517--3404 -4694--4320 2666--4964 -2411--5390 -668-8114 -655--5023 -2280-8142 700-5794 4699--2563 -5464-2062 6688--3708 3472-6126 -4289-7563 -2266-7893 -1506--5236 -1663-1671 6710-6338 -4047-4334 -5931--5085 1164--2990 -5098-1326 -7094-2292 -6917-5358 -5079-4456 -5846--1683 -6114-7274 -2800-7731 -1905-7782 1965-3319 6340--3101 4154--762 -6623-1782 -7045--1409 5632-7871 1747--4758 -2835-4999 -5406--3040 4218--1786 -6047--1720 -6090--3170 -4926--2567 4692--1702 5432-6195 4307--605 -6694-1532 6709-842 -7084-7472 2598-3396 -6486-8087 1020-2050 6689-5463 -4979--667 6067-1084 -7096--4404 -3474-7988 -1200-2483 6621--692 -6656--851 -6580-7795 1936--5367 -960--5378 -843-1465 6707--774 6011--5049 1255--4650 2119--5128 -2000--5360 52-8186 172-1625 6711--1521 5559--5204 -1773--4826 1768--1166 5786--5394 -489-3398 -6485--5099 1127-1560 -7076-8146 -472-3353 -6507-4111 -6076-1796 6706-1120 -7097-1816 6705--3195 4054--5182 866-4370 5793--2288 -5684-7819 -1694-6453 4032-8169 456-6698 3752-8003 1361--2341 -5642--1121 -6443--4186 2862--4940 1518--4639 -3064--4991 -2352-3134 6415-1869 6702-170 -6974-3693 6168--1789 5367-5613 4860--5224 716-668 -7068--1941 -5940-3565 -6398-6552 -3796--3551 -4539-290 -7004-1147 6679-3 -6925-1468 -7086-3742 -6300-31 6370--2960 4301--703 -6651--1330 -6329--818 -6596--4556 2289-6758 3681-922 -7089-6763 3675-8160 -375-7617 -2155-1003 6657-1788 -7044-1840 -7035-8181 281-2691 -6783-7995 1386-433 6510-7040 3321-7583 2381--3967 -4068--5374 -54-6778 -3517-8104 927--1227 5748--5359 -1029--2822 -5247-995 -7093--3003 -5086--4095 -3910--1856 -5999--1435 -6267--221 6270-5684 -4757-7896 1678--4890 1630--190 -6859-8129 783-497 -7043--371 -6791-6991 3386-729 -7075-7085 3259--4324 -3600-7161 3141-685 -7070--4660 2100-4420 5762--833 5979-5912 -4520-8127 -586--4252 -3704--5395 -560--1089 -6460-5370 5064-509 6533--3547 3660-8066 1121-6342 4152-5186 5212--3278 -4820-4699 -5659-2106 6683--2993 4267--5316 -1297-6800 -3489--1497 -6230-1721 -7055-6267 -4129-7858 1782-8181 -64-6039 -4384-867 6630-1409 -7090-6519 3959--4229 2800-6793 -3498-2686 6569-4577 5660-5810 -4627-4953 5392--2647 4616--4058 -3957--2852 -5221-1166 -7098--5340 177-2014 -6995-5020 5342-7195 3087-4732 5553--528 -6727-2491 -6854-7398 -2585-5433 5012-6394 -3982-7948 1530-3197 -6578-7294 2919-4312 -5946-889 -7087--5339 183-8141 -503--1988 5207-8178 331-876 6632-4309 -5948-6300 -4091-4689 5583-6827 -3454-3027 6455--2000 -5898--2011 5188-6659 -3667--5391 -349--5377 -855-7613 2320-8180 -87-3826 -6252--5313 -1314--4200 -3773--5368 -951--4358 -3547--1518 5561-3940 6041--5163 930-1370 -7092-7217 -2892-2870 -6714--330 -6807--3605 -4481--4249 -3708-303 -7007--4522 2348-4673 -5680-7846 1813--3152 4100-8168 -307--3911 3226--343 -6802--4749 1926-3595 -6382-5377 -5061--1665 5459--3792 3372-6832 3591-701 6588-7451 -2487-5784 -4654-1845 -7034--5301 -1381-1644 -7066-6494 3987-3609 6209--4454 2460-5128 -5291--5381 -134--3509 3704-3121 6420-899 6637--5389 -300--5365 18-6917 3483--49 -6908-8029 -1047--3456 3765--5067 -2169-621 -7062--354 6214-2552 -6834--199 6279-6542 3933-8174 390-1770 6707-4766 5529-8158 573-2488 6620-2817 -6735--2058 5149-4511 5703-7690 -1997--4296 -3643-720 -7074-8010 1338--5336 199--4848 -2654--4731 -2888-8174 -218--5296 -1407-7229 3031-8141 707-7629 -2130-4169 -6039-4183 -6030--296 6239-8060 1147-777 6608--4084 -3924-3396 6307-8040 1227--951 5913--4613 2187--4483 2413-8185 102--3987 3130-6646 3813--1821 5342-3458 6280--1392 5643-3359 6323-1000--1712 -3044--6158 -847-106 9712--7779 5066-4747 1374--608 9820-1621 8996-4487 6195--5049 8297--4293 -2352-5044 2075-1673 -1878--50 9746--8168 2709-3399 7508--1950 9723--4513 8677--8144 2484-1419 9128--8145 3836-4710 1306--4997 -1854--4564 -2173--3510 9241--4320 8804--7993 4465--5543 7908--1851 -3050--7929 4667-394 -2572-2584 -1203--7846 1415-4157 6659--351 9795--4405 -2280--5588 -1369-1226 -2162--5150 -1733--7180 313--2726 9535--6351 -652-4067 332--7356 5866--7830 1381--7712 5222--4271 8835-4464 882-446 9600-3782 -24-1690 8949-5239 4493-5249 4431-4845 1570-545 -2507--8161 3722--4107 8934--7621 5402--1676 -3042-5316 3685--708 -2905-4306 6463-3444 7462--7238 396--6740 -235--5458 7979--6131 7375-3417 -434--7665 5318-1074 9324-1173 -2192-4322 676-5086 5075-5280 3000-5249 2816--6291 7210--4082 -2477--4195 -2412--7443 5719-5316 3560--101 -2745--2013 9712-2340 8458-5305 3246-4956 5395--2773 9521--7584 5470-4211 6590-2714 8145--6083 -920-4931 1772-5214 2657-3112 7788--8191 3154--2266 -3044-4588 1090--8179 3530--3273 9346-3358 -497--3893 9052-5023 5244--7765 1256-5078 5098--4458 -2245--8167 3671--6052 -950--8094 2185--5956 7541-5124 4964-4235 557--8186 3386--8031 1923--6503 6977-4825 1526--4634 8595-2605 8239--3197 9374--4381 8764-5317 3624--4731 8528--8183 2933-5227 4557-5157 4853--148 -2759--533 9815--2998 9446--1985 9717--7320 519--3968 9012-2835 -989--8123 3960--8060 4235-1859 8830--7860 4862--7972 4532-4168 6645-2977 -862--3114 -2898-4556 6089-3827 29-167 9695--728 9826-5287 3054--3041 -2919--3744 9128-5024 2018-5043 2072--8043 1967-3 9735-980 -2296--8154 3776-213 -2638--7952 1678--5802 7682--7539 858--7419 670-5313 3764--1162 9820--1691 9765--8116 3993--7771 5085-939 -2317-5166 2468-1072 9325--7795 1313--6472 7012-1208 9253--3164 -2881-780 -2396--8171 2746--4373 -2301-962 9379--7704 1144--3948 -2548--7960 1701--571 9818-4086 357--4342 -2321--6318 -686-4177 479--6686 -296--5884 -1106-3533 7370--6526 6951--496 -2857--8190 3216--3883 -2580-5183 2530-5300 3990--7723 1178--6248 7256--5344 8070--7277 454--4516 8675-12 -2709-5270 4292--8157 2587-4768 1414--2332 9644--7092 195-4687 5881--2539 9589--7388 5813-4957 5393--8182 3475-1097 9312--7921 1593-5298 4017-5165 4824--7850 1424-4634 1171--7109 6219-1446 -2028--5641 7824-4508 6163-5297 4030-4283 6495-4403 6322-3791 7095--2883 9486-4921 5463--2456 -3027--2980 -2936--7699 5250-1279 -2131--2208 -3047--8035 4326--8088 4119-3935 162-1184 9266--5504 7941--8191 3153-5282 4198--7916 1580--6888 6513--7892 4775--8135 3899--3450 9269-2810 -1011-375 -2579-3970 6891-5312 3390--3693 9153-5293 3105-879 9419-1366 -2078-2703 -1103--2981 9452--5577 7879--8187 3359-5203 4671--8030 4343-1103 -2231--5642 -1322--6545 -449--936 9828-3949 6916--2341 -3039--667 -2896-4986 1914-636 -2465--5479 -1463-5195 4706-4687 1265--6824 6595-3930 6938-2825 8048-3178 7726-4252 580--5423 -1510--7487 5642--4733 -2054-3866 7011-240 9674--5044 -1817-5081 2190--6665 -319-3284 7623--1198 9818-1361 9164--2531 -3018--741 -2912--861 -2936-3990 232--5986 -1012--525 -2864--8185 3411-2476 8347-4014 263--1551 -3033--2546 9587--4606 8614--3637 -2695--8134 2414--343 9794-3975 6885--8136 3893-3196 -658--2133 9688--2523 -3019--7931 1620-4940 1794-4514 963--2397 9628-5307 3878--6453 -546--6437 7051-5313 3417--4102 -2466--3576 -2722--7459 732-4482 910--2071 9701--5773 7708-5156 2433-5260 4362--6002 -997-1426 -2041-2175 -1521--4741 8521--7051 6297-2878 8001--8173 3611-1118 9301--8101 2219--2604 -3008-1866 8825-4100 6731--4798 -2007--262 -2792--7998 1812-494 -2530--2709 9540-4294 6480--1321 -3009--3836 -2603-1507 -1988--7201 6093--6960 6419--2650 -3001-5282 3015--1230 -2996--6221 -785-421 -2561--1323 9809-2630 -1165--4100 8938--3946 -2549-3257 -599-2649 -1149-4844 5607--1812 9746-399 -2570--542 -2868--4125 -2453-1584 9021--6494 -503--834 9830--2612 9568--7126 6196--2207 9672-4804 1483--6035 -966--5584 7873--7552 5527--2886 9485--1885 9734--4928 -1908--6000 7500-3161 7742-5242 2783-3697 -123--8149 2521--1415 -3021-5186 4743--7774 1273-516 9573-4619 5991-5150 4878--7868 1465-3898 116--7248 6026--270 9784-3477 7428-2925 7959-5097 5043-2353 -1385-2054 8684-2000 -1650--6367 7128-5304 3927--2285 -3043--7168 296--5373 8047--2819 9507-5028 5232-724 -2423--7031 117-1924 8783-4364 6380-1019 -2276-1009 9356-3579 7322--6777 -193-4374 750--4547 8654--7042 131-1531 9056--8190 3091-636 9526-1321 9188--5913 7581--7500 796-619 9533-4325 6436--1405 -3020--6772 6660-342 9639--8169 3652-4626 5980-2126 -1558--8069 2070-2070 -1599-5136 2366-5292 3096-4891 5520-4779 1435--3598 9199-2710 -1097-4926 1760--3359 9310--6997 74-4585 6044-5143 4902--3268 9348--7561 895-5289 4126--181 9770-1732 -1838--8184 3434--5330 8081-4665 5918-1348 9172-3598 -236-648 9521-3724 7168-4545 6106-3244 7662-2956 7931-4417 812--3062 9423--1553 9785--6232 7273--413 -2835-894 9412--6598 -392--5692 7780--2166 9681--1617 -3038--3916 9040--7430 687-4040 6806--3550 9222--2409 -3032--6610 -379--8166 3680-5125 4961-4972 5361-3126 -724-5186 2541--5281 -1628-5161 2450-2456 -1305--2040 -3054--5699 -1272--599 -2881--3654 9172-4351 6399--4981 8348-3759 7130--4285 -2357--2671 9551--6273 -732--3971 -2536--175 9769--6804 -162--7784 1292-2237 8540-4900 5503-1258 9225--6864 6544--8172 3623-5004 5288--5523 7925-5262 2883--3707 -2664--2378 9633--6941 6444--2275 9657-5308 3301-4576 6058--3291 -2835--7007 6356--6849 -109-2123 8630--55 -2731--2699 -2993--2097 -3052--7918 4701--165 -2764-4838 1554--8189 3059-5271 2940--1098 9823--7708 5231--7878 1488--1183 9819-5283 4189--6220 -786-4286 6491-227 9678-356 9634--6898 6500--5498 7946--4495 -2220--4879 -1946--4718 8537--402 -2832--6844 -115--6175 7332--7823 4959--3935 9030-2558 -1224-1074 -2247-4367 740--8010 4410--7199 340--7924 1601--3753 -2643--3419 9283-3010 7882-4401 6325-763 9471--7999 1815--2961 9459--7275 451--140 9763--3134 9397-2401 -1348-4722 5822--3510 -2750--1744 9757--3522 -2745-4869 5561--6656 6800--1023 9826-3832 35--8184 2952-3507 7397-3736 7155-87 -2683--7904 1549--7971 1733--8057 4246--7814 4982--477 -2852--5684 7787-3671 7225--8103 4052-3665 -160-1958 8758-3209 7696-5098 2244-3655 7242-3301 -556--2734 -2987-5229 2724--3295 9337-1094 -2236-1844 -1761--7338 5894-3864 74-3812 7072-3504 -340--8109 2260-4849 5598-4446 6257--7382 613--5000 8334--7679 5291--7653 5341-5277 4240--7695 1128--8105 4043-5310 3824-1397 -2059--8162 2639--4944 8375--7719 5206-3620 7279--7627 1008--6118 -886--1516 -3030--7664 1073--224 9777-5299 3165--8164 3697--1050 9825-5309 3843--7225 377--5933 -1061--5851 7638-3939 167--3493 -2757--8174 3598-5055 2109-4897 1691-5220 4591-1233 -2158-1776 -1808--7450 718--6974 45--6627 6834-4678 1249--8088 2156--7800 5016--7405 5784--7642 5362--7016 98--4758 -2036--7085 186-188 -2647-844 9435--4132 -2449-1587 9019--3527 9233-5110 5005--7678 5293-5279 2993--1824 -3049-4805 1485--5709 7765-3535 -306--7984 1771--2461 9611-5266 2908-5030 5227-4024 276--5350 -1571--2819 -2971-2928 -906-2297 -1428-4830 5632--7831 1383-1061 -2254--2472 9608--7897 1532-3493 -352-4757 5761--7157 281-4133 420--4235 -2388-1867 -1745-576 -2493-3039 -805-4949 1817--8172 2759--6571 6899-4613 1134--4983 -1865-1735 8918--7718 1169--7493 785--203 -2775--2693 -2994-2499 -1271-5317 3622--418 9803--1776 -3047--1938 -3052--1392 9803--8074 4178-107 -2676-4821 5648-2669 -1132-4791 1458--1358 9806--4461 -2243--7361 581--2877 -2959-4647 1194-5266 4321-5057 5156-1539 -1967-49 9725--3390 -2797--3718 -2659--3216 -2863--2002 9714--5799 -1183-3444 -405--7508 5605--2303 -3042--2824 -2970-4123 6702--3230 -2858--3948 9023--6813 6609-4218 6581-1499 9077-5310 3342--1617 9776--5752 -1225--4240 8854--8140 2455--7948 4608-5275 4255-3652 -175-5261 2877--1459 9797-4834 1545-485 -2534-2170 8593--465 9808--7902 1544--7196 6100--1482 -3027--835 9830--5171 8204-5311 3365-1042 -2264--989 -2958-2276 8509-872 -2351--5275 8124-1228 9242--2349 9640--2773 -2980-4073 6765--304 9789--8140 3868--7743 1215--6174 7333-3989 6868--589 9819-5312 3785--2146 -3050-4569 1057--4047 8968-3431 -419--8077 2105--6070 7434--7840 4915-4905 1710--7561 5511--8060 2033--2039 -3054--3746 9127-2624 -1170--7596 954--5321 -1595--7462 5686--4448 8720-417 9611-3374 -480-2447 8371-5050 5175--8178 2849--1257 9814--890 9829--1130 -2981--7748 5139-4966 1861--777 9828-5119 2311-1760 -1819--924 -2947-653 -2457-2899 -932--1111 -2978--1763 9754-676 -2446--1257 -3000--4650 8584-290 9657-4993 1933--8163 2650--2912 9476--3977 9007--3421 -2785--7867 4843-3053 -792--6305 7195--872 -2938--8123 2345-1574 -1944-124 -2670-1884 8812--995 -2959--1183 -2989--3813 9093--803 -2925--8174 2786--3196 -2870--8114 2289--6529 -466--8186 2991--4805 8476--4176 8893--6381 -621--8156 3761-4753 5768--8040 4308-1800 8872--4832 -1982-1468 9097-3629 -201--8153 3783--6431 -569-2549 8286--335 -2813-1411 9133--6633 -354-833 9440--6809 6614-2563 -1220--5437 7996-3563 -275--7160 285-3903 6969-5042 5196-3873 85-3072 7825--7120 232-3082 -765--750 9827--6947 11--8039 1952-5317 3623-614 9535--7521 5582--1062 -2970-5214 4620--6863 -92--8189 3272-322 9646--5124 8240--3249 9355--7631 1015--8156 2578-323 -2598--1644 9772-5314 3459-5020 5251-5231 2733--8187 3012--8017 1874--6823 -140--1984 -3053--6318 7181--4300 8817--5227 8161--666 9823-38 -2700--7241 6036--3488 -2759--6409 7082--2901 -2954-5300 3178--5432 8000--3463 9263-5308 3861--8188 3317-5288 4137-3950 181-870 -2352-2482 8342--7894 1525--3768 -2636--7340 5891--6701 6747--6031 7471-1642 -1899-2250 -1464-2005 8722-5315 3504--8151 2536--5214 -1682--7291 5964-5074 2168-3346 7562--4058 -2490-3059 7837-2407 8404--7805 5004-4212 526-2818 -1004-589 -2487--3992 -2525-1251 9229-4874 1637-819 -2377--4609 -2142-5169 4809-4910 5484--7086 6250--1076 9824-5235 4516-4327 683-4301 647-4994 5311--7898 4758--889 -2941-547 9561-5295 3124--2923 -2949--5830 -1155--6539 6936--1893 -3051--3854 9072-2655 8196--7955 4586--6378 7116-3753 -58--1510 9791-5315 3717-5047 5183--981 9827--55 9747-4466 885-3557 7345-5290 3079--6407 -594--3368 9306-4142 6678--6914 -30-27 9730-5177 4778--8113 2283--4413 8743--68 -2735-260 -2621-4976 5352--5529 -1420--1364 -3015--3087 9414-2107 -1572--8191 3152--4222 -2396-4790 5703--8181 2898-2768 8098-4531 992--8024 1898-3300 -557-3347 7561-5200 2598--3101 -2902--4874 8426--8182 2915-702 9498-5018 2001--328 -2811--1469 9796--1798 -3048--5078 8275--5356 -1566-3128 7773-1931 -1700--1879 9735-2767 -1048-9 -2710--4153 8907-4246 6544--2124 -3051-1302 -2117-1857 -1752-5294 4067-1639 -1901-2109 8641--4740 -2049--2570 -3013--2806 9511--5927 7568--6747 6691-3157 -695-2470 -1294-2204 -1499--7917 4704--1691 -3043--8051 1998--6706 6741--7175 6129--5111 -1764-5298 3153--5946 -1049--101 9756--4674 -2096-5240 4487--3320 -2824--6738 6702-1000--4307 -2360-8679 1526-8686 -844-5498 -5288--2941 -4304-8812 36-2151 7227-1036 7146--246 -6302-8754 -494--4873 427--1038 6156--3948 -3021-8818 504-3087 7093-5805 -5012-5897 -4926-8811 631--1694 5619-7090 4517-1164 7169--3466 3740-4262 -6186-3345 7036-2548 7185--3937 -3039-2383 7205--4834 -544--4059 -2831-7404 -3291-4324 -6149--404 6587-8306 2679-2635 -6741--3676 3475-5720 5832-5715 5836-8757 1093--4414 2340--2751 4581-302 -6512-6962 4662-8780 934-8277 2742-3092 7092--4851 666-8697 1433--4829 849--4630 1755--4442 2279-7194 4397--4655 -1440-5671 -5135--4401 -2155--2131 -5092-6131 -4702-3310 7044-7967 3333-8608 -1160-5049 6300-8164 2972--2718 4617-7150 -3597--4885 101-1673 -6768--1359 5907-8801 764-4554 -6003-8693 -812--4819 -644-8592 -1219--2402 4944-8535 2090--1849 -5329--3580 -3548-8514 2152--1152 6072--4787 1107--945 -5952-7550 -3109--2057 5282--3917 3149--4770 -926--721 -6078--4339 -2293--4701 -1268-7020 -3752--70 -6376-8544 -1390--3745 -3322-8353 -1889--4748 1293-7416 4127-3839 -6403--1753 -5406--4798 -773--4786 1112-3542 -6523--3965 -2993-2418 7201-8736 1222-6668 -4155--4654 1668--3334 -3855--4550 -1776--375 -6245-6017 -4812-8425 -1723-4436 6637--2282 5064--4422 2323-2087 -6793--2523 -4734--3809 -3231--4681 -1344-2664 -6737-5381 6079-6340 -4495--1622 -5503--3952 3099-5381 -5388-8661 -952-8815 79-3352 -6584-3162 7077--2741 4592-813 -6636-949 -6663--4640 -1493-1520 -6752--4882 -6-6823 4814--3015 -4223--205 6701--307 6645-6953 4672-6889 -3905-5332 -5429-8195 -2173--616 6452-347 6954-759 7082-1049 -6682--3211 -4000-8808 -18--4723 1401--1713 -5436--3155 4114-6689 -4132-2822 -6712-4446 -6073-8661 1616-4646 -5940--4478 2195--4816 943-2511 7190-1635 7226--1782 -5383-1413 7204-1555 -6756-504 7008-7710 3733--2647 4692-6993 -3784-8781 -286--4879 -76-4741 6483--4597 -1641-7855 -2700--1100 -5858-4143 -6252-3888 6873-2799 -6716-4838 -5806--4866 518-8058 -2397-2265 7217--1348 5916--4131 -2701--1649 5659-2846 7139--2491 -4765-2907 -6696-6166 -4668-4945 6364--4487 2172-1261 -6718-7813 3582-6070 -4761-7886 3470--3999 3030-3686 -6468--1740 -5416-8804 -69-6220 -4615-3663 6953--3873 -3136--4303 2543--3010 4286--2124 -5098--527 -6174-6808 -3998-2756 7155-6559 5087--4858 600--4053 2950-4770 6467-8501 -1517-6890 4741-8549 -1373-5678 5865--4103 2873-8128 -2284-1325 -6727--3727 -3347--2182 -5048-6675 4969--4605 1842--1195 -5797-533 7017--1733 5584-1130 -6697-8366 -1861-5121 -5599-2942 7121-7186 -3554-8666 1592--1523 -5574-6462 -4370-6656 -4168-2460 -6762-7770 3646--4879 341-8760 -453-7353 -3353--1988 -5213-192 -6476-3314 -6595-1208 7176--152 6729--4828 857--4612 -1591--3612 3558-1116 7161-8222 -2127--4163 -2642--4873 -182-4176 -6234-8638 1721-8726 1278--4692 -1303--2132 5210--1105 6107-5587 -5210--1998 5338--1959 5375-4976 -5707--3129 4145-7818 -2752--1353 -5692-8775 -335-8446 2337--607 -6135--3082 4201-4883 6401-5936 -4889-918 -6657--4029 -2884-8380 2506-8724 -663-4728 6490--1675 5636--4201 2715--4257 2622-2990 -6679--4508 -1888-6879 4753-8783 911-3487 7001--832 -6018-4491 -6044--3503 3695--4339 2478-8807 692-3919 6861-8277 -2029-3497 -6539-6062 5547--4194 -2584--364 -6250-6869 -3928--324 6635--1860 -5320-6776 4864--1215 6023-1139 7165-275 -6504-3428 7016--4674 -1370-5448 -5331--4670 1609-8507 2172--2304 -4940--457 6554-8822 285--1279 5972-3756 -6439--1305 5951-7301 -3416-8817 525-6717 4926-3358 7033--2813 4512--4082 -2790-3253 7057-2254 7218--1283 -5739-4241 6726--3880 3201-4528 -6020--4750 -1031-5221 6188--3786 3330--4845 -462-8596 1878--1777 -5387-586 7033-7724 -2881--4874 413-4551 -6005-799 7093-6618 5027-6560 5086-8761 -446-8029 -2443-3042 -6668-7226 4359--3809 3299-8669 -919--3256 -3948--4120 2846-2989 7112-5691 5855-4822 6437-8460 -1630-7937 -2581--4759 -984-7495 4027--3783 3334-5133 6246-1940 7242--3875 -3133-7557 3945-5090 -5623--3288 -3910--1388 -5668-4073 6798--4716 -1200-8198 2905--4876 -131-4361 6672-7890 -2650-3896 6870-7616 3864--970 6205-8643 -1025--1802 5521-6374 5267-1998 -6793-2724 7160-7441 -3246-8630 1752--4564 -1737--2779 -4477-2359 -6772--2838 -4415--2952 -4292--4347 -2276-396 6972-896 7117-7813 -2759--2951 4354-3970 -6341--449 6559--4569 -1723-8227 2846-5865 5713-8789 -217--355 -6254--4870 467-8799 781-8619 1793-7747 3680--4611 1822-8796 -151-4302 6699-7412 4132-5661 -5144-3880 -6384--4812 970-5866 -4955--2228 5117-8742 1187-624 7044-2380 -6770--3559 3626--613 6454-451 -6552-4598 6558--3605 -3515--839 -6014-7747 -2850-3604 -6500--4442 -2057-8742 -568-1057 7150--199 -6322-8444 -1673--3772 -3284-8101 3091-1787 -6778--3104 -4123-1303 7190-8578 1942-3939 -6356-1494 -6749-90 6848--1040 -5895-4342 -6138-5787 5778-8245 2809-5601 5922--3309 3930-6494 5151-7334 4229--2737 -4520--4875 -149-691 7063-8791 848-8708 1375-50 -6424-8406 2442--2622 -4637-5326 -5434--2370 -4881-8820 174-1982 7240-1877 7243-8821 425-6003 5597--4736 1346--4576 -1703--4020 2999--3619 -3496-7665 3796-170 6883-441 6988--1394 5878--3339 -3849--2193 5151-8773 986-825 7100-1342 7195--1068 -5878-5682 5862--1388 5883-5043 -5658-6180 5444-8822 394--423 -6223--1 6805--590 6469-1593 -6760-3746 6925--3396 -3780-2889 7131-7991 -2501-5740 -5072-8823 348--3478 -3678-7577 -3074--3152 -4068-1427 -6741--945 6223--4190 2733-3768 -6434-7247 -3481-8667 1587-5560 5952-7875 3488--386 6598-7656 -2971-3405 -6568-4978 6344--2451 4894--1007 -5915-2785 7150-8792 840--4681 1567-4395 -6105--1867 5461-3113 -6651-3179 -6633--3382 -3797-8170 -2215-8368 2535--3649 -3455-2345 7209-8502 2186--1560 5737-7997 3280--3415 3802-5632 -5170--660 -6109-8733 1239-3139 -6644-6327 5312--803 -6034--3581 3598-593 -6587--3212 4046-7678 -2942-5222 -5519-8737 -595-7277 4298--3875 3208--3066 -4166-2198 -6786--4853 -399--498 -6188-7721 -2885--3509 -3639-3715 6936-115 -6448--4760 1238-8340 -1914-1767 7237-5159 6229--1840 5486-5085 6277--3630 -3481-5537 -5254-7447 4088-8725 -658--1632 5674-1405 7203-4708 -5897-3648 -6483-7688 3764-716 -6615--1147 -5828-8101 -2328-3109 -6652-6308 5330--3918 -3068--4284 2576--3055 4233-6069 5541-8416 -1746-6289 -4547--4606 1839-8823 349-8674 -897-3548 6985--3262 -3941-6585 -4243-8814 580-8329 2627--4468 -1993-8339 2604--4788 -829--2666 4672--1284 5968--2857 -4395-3952 6848-182 6888--4843 735--3718 3420--4883 24-1693 7231--4884 55--4096 -2765-1974 -6792-5995 -4833-8823 350--833 6302--4885 100--4171 2764-5514 5985-8746 1162-390 -6536-8803 741-5153 -5574-7811 3585-3247 -6614--2524 4819--135 -6349-3798 -6421-7568 3930-8139 -2266-99 6852--4796 1060--4635 1737-4781 -5846-19 -6412--1456 -5621-5112 -5606-776 -6628-6242 5389-982 7135-4137 6771-2303 -6777-810 7096-3307 -6597-8520 -1461-5394 6070-4883 -5774--4863 -315-3222 7064--4489 -1938--4582 1910--4163 2777--1466 -5614-334 6949-58 6833-5570 -5225--3429 -3739-2142 -6790--4428 2310-7272 4304--3574 3607--4091 2892-1956 -6791-5651 5885--3968 -2988--3474 -3683-8688 1480-8821 224-4387 -6110-1182 -6706-4184 6751-8819 140-2902 -6697-8639 1717--3089 -4140-4245 -6196--4563 1966--1927 -5264--2491 4853-5461 6023--2351 4996--4837 784--4368 -2230-8619 -1118-8360 -1874-8705 -756-5086 -5626--4741 -1077-7736 3696-8109 -2315-8741 1193-1579 7221--4795 -790-3823 6897-829 7101--3304 3936-6810 4828--4723 -1167-628 -6595--4869 -243--3639 3523-4579 -5986-2210 -6785-1031 7145-3583 -6508--641 6435-1796 7239-7929 3398-7497 -3177--4864 539--34 6789-1507 7214-3434 -6559-3125 7085-8069 3150--4415 2338--1111 -5851-6558 -4271--2680 -4578--1443 -5630-2677 7167-7149 4449--4430 -2086-8534 2093-7958 -2550-8612 1819-3782 6912-1895 -6787--4767 1205--708 6389-7867 -2683-5291 6141--101 6755-8772 993--553 6493-5414 -5360-444 6989-5217 -5523--4880 -55--3363 3865-7242 -3487-2245 -6782--4731 1368--3550 -3587-8285 2725-3591 -6505-1214 -6711-156 -6463--2160 -5067-8712 -722-8020 3239--1744 -5413-4545 6584--4827 -591-145 -6459--4804 -738-5798 5769-5038 6307--303 -6277--3005 -4234-8352 -1891--3248 4003-7042 4572-5778 -5037--4402 2363-42 -6421-8466 2284--4696 1509-8041 -2424-3793 6908-5613 -5187--1576 -5536--3832 -3197-4090 -6280-6120 5497--4835 -537-8573 -1288-8241 -2094-8593 1889-6943 4683-1846 -6783-8766 -408--4842 -485--4881 309-5692 -5116--1174 6055--2931 4377-2444 7198--1765 5555-8561 2002-7367 4188-7784 -2799-6679 -4143--3024 -4213-4156 -6245-7027 4589--4623 -1553-4348 6678-4496 6608-8813 598--2730 4604-948 7128-7543 3964-8811 22-996 -6672-6461 5183-8802 -90-8820 455--4470 2214--4882 275-2808 7146-4659 6527-7512 -3158--2350 4997-2171 -6788-2374 7206--3846 3248-8034 3214--4596 -1644-2431 -6765-5243 -5502-6389 -4445--14 -6399-7067 -3696-8644 -1021-326 -6519-1478 7211--4883 225-290 6932-8132 3033--2242 -4995-4777 6463-8545 2057-8765 1040-8380 -1830-8767 -400-1684 -6769-2061 -6794-2533 -6754--4466 -1998-6751 -4063--2079 5261--4055 2947-6288 -4548--508 6522-2613 7176--4604 -1618--1599 5703-8817 108--2556 -4702-3612 6968--4226 -2523--4705 1474--4391 -2178-8404 2447-252 6917--1221 -5780-5019 6319--4398 -2162-4313 6694-846 -6643-8427 2387--3750 -3315-3972 -6340-8488 2225-7906 3437-1740 7235-2525 -6755--4700 -1272--4232 2664--3557 -3578--900 6255-2956 -6686-2209 7222--3678 -3415-1274 7186-3636 6961-4039 -6306-8550 2040-8634 -1060-8721 1305--481 -6196--218 6694-5297 -5458--1723 5593-8568 -1306-7856 3517--4540 2030--238 6683--4522 2079--4884 164-7320 4246--4658 -1429-8654 1649--2007 -5197-6098 5516-7587 3904-1564 -6757-7472 -3208-8734 -611--3991 -2949--4799 1044-4419 6645--4367 2427--4877 370--3798 -3247-7519 -3149--1754 5565--1443 5837-2286 7215-6795 4844--4880 326--1928 5404--1510 5780-1729 -6773-8478 -1581-2060 -6794-4293 6703--2589 4752-2671 -6736-1851 7242-7903 3442-1267 7185-1652 -6766--410 -6229-3128 -6647-8543 -1393--2872 -4379-5326 6117-7683 3771-7093 -3665-2092 7232--558 -6159-8698 -789--4804 1017--3981 -2966-8818 123-7919 3415-580 -6584-4771 -5853--1081 -5870-7004 4615--1183 6048--1663 -5473--4885 99--2621 -4638--843 6295--1476 5809--32 6790--4289 -2397--4260 -2456-2730 -6727-7200 4390--3929 3132--4823 895-1878 7243--4774 1171-6429 5214-8750 -521--4808 -713-8336 2611-6429 -4404-5404 6063-6604 -4223-1558 7219--2870 4447-7518 3997-5455 -5325--4861 -332-3494 -6540-355 6957-2596 -6746-8408 -1765-5006 6327-851 -6644--1148 6075--4854 -391--884 -5988-6948 -3837--4706 1470--4755 1261--4506 2122-874 7112--2885 -4365-3848 -6399-140 6870-1390 -6736--2620 4720-2774 -6720-7614 -3026-5286 -5467-8542 2067-3064 -6663--4803 -744-2043 7236--1517 5774--4865 -292-3020 7106-1728 7234-631 7046--4607 -1608-5926 5662-4008 6825-4465 6623-1964 7241-7488 4036-2881 -6701--2389 -4863-1153 -6701-4908 -5756--2436 -4818--4822 902-685 -6608-5945 5646-1092 -6690-6527 -4303-5703 -5106-7993 -2498-510 -6567--4783 -856-8305 -1978--3740 3391--4728 -1143--4528 -1835--790 -6041--3534 3657-223 -6487--4729 -1138--2065 -5148--770 6346-1000-7359 5927--3173 5595-8995 1842--395 7790-5328 7709-6676 6617--489 -4416-7549 5700--5025 2741--2123 -3439--4442 3970--2745 6023-5073 7871--4697 3504-7144 6166--3683 -1933--2145 6568--1510 7068--3840 4846-3186 8523-1327 -4758--10 -4566-631 8240--389 -4454--4269 4259--4739 -244--5043 515-383 -4652-3831 8392--3227 -2439-7565 -1132-4276 -3928-1199 8416--4571 -586-8342 4501--4821 3242-8989 2682-7823 5346-1678 -4745-5669 -2982--3753 4953-292 8113-7566 5679-4227 -3955-8628 3911-2829 -4527--4029 4602--4516 -691--5033 486--4525 -674-7806 -828-7690 -978-568 -4687-8222 4726-7133 -1617--824 7535-7437 5836--475 7746--4994 375-4113 -4015-4641 -3708-1031 8367--2610 6152--4625 3642-5221 -3318--2308 -3286--4415 4016--1063 -4158-2767 8572--1076 7373-3009 -4471--5177 1193--1313 7210--805 7547--50 7962--4191 -1251-2500 -4621-7723 5478-5589 -3045--5162 2123-8496 4197-2829 8566-5697 7453--5132 840--332 -4474--4184 4388-5620 7509-3566 8452-1581 -4750-4880 7985-7843 -779-3410 -4332-4683 8086-1626 8513-8192 4779-5736 -2929-8949 2987--5145 2241-9006 1986-8820 3427--3561 -2078--18 7977-8824 1035--4808 3271-6190 -2541--4940 2967-5650 -2997-7899 5243--2543 6214-998 -4740-4518 8158-926 -4732-8481 4228--829 -4276-8008 5078-477 8185--955 7452--1574 7021-6837 6467-808 8298--4060 4560-6360 -2387-6501 -2255-6440 6835--3275 5488--3732 -1873-2103 -4701-456 -4666-1050 -4745-2819 8567-9005 2475--5016 2767--5199 1626--5195 1749--3296 -2371-1771 8537-8638 585-7219 6085--5093 2509--5186 1315-5253 7758--4150 4436-1317 8448-8045 5020--1135 7334--410 7782--5188 1352-4803 -3605--4770 -178-2218 -4681-8765 3576-8982 1727--3114 5656-6028 7195--4282 4238-8746 833-875 8319--2531 6225--757 7577-8961 2920-1127 -4751-3792 -4170-2746 8574--4392 4055-7639 5587-8070 -457--1462 7103--1436 -3931--1631 -3802-5009 7910-1540 -4752-1156 8404-4810 8023-3867 -4135--3944 4714--5067 592-8012 -545-8592 484--4679 -370-7967 -609-4087 8322--551 -4392--4516 3842--4202 -1234-5494 7598-259 8099-8112 4913-525 -4679-6776 6524-5940 7266--4630 -471--4335 4151-2661 -4577-2156 -4692-8324 -31-2926 -4497-8086 -432--2434 -3177--4574 3738-4709 -3665-8333 -15-9012 2334-7509 5749-2618 -4589--4175 4401-4622 -3720-7288 6008-6735 -2027-8811 1000-8782 924-1937 8556-8833 1060--649 7643-2004 -4716-5296 7730--3329 5430-6012 7208-7866 -748--3455 5293--5026 2738--533 -4399--512 7725-2590 8583-3933 -4104--4530 3817-1181 8411-7873 5279-8919 1353-8222 -206-6800 -1963-3249 8514-2360 8582-2477 -4627--3703 5012-7296 5999-9016 2202-2865 -4516--2845 -2803--3083 5688-8479 255--3620 -2009-7985 -584--2657 6108-8964 2901-8753 3607-9015 2147-4149 8301-5094 7858-8979 1704-529 8204-8713 3708-988 -4739-8298 4584-5986 7229-4893 -3546-407 8159-1445 8477-8800 971-6117 -2606--1940 -3581-8423 4345-8388 4413-4662 8096-1328 -4758-1714 8528--4546 -634-8994 1831--2198 6522-1695 -4744--225 7878-7272 -1466-8625 556--1696 -3758--5123 2373-8149 -329--1043 -4169-5190 7798-3186 -4413-1227 -4756--5090 669-9014 2280-7204 -1540-813 -4719-6375 6894-5273 7745--5135 856--4507 3858-8155 4841--5147 926--2464 6286-891 8324--1248 7256-7694 -973--4195 4372-4595 -3737--5134 2309-8091 -424-1160 -4753-3208 8520-4090 8321-189 -4612--1561 -3849--3073 -2589-8217 4735--5187 1870--3732 4978-8556 4071-2372 -4650-3148 8528-8843 1089-4427 8196-415 8162--1138 7332--227 7877--4706 -314--1404 7145-5821 7359-7784 -857--2373 6368--5192 1428-8448 4296--2983 5790--5176 2006-3761 -4184-4489 -3802-6284 6975-6125 7113--2130 6581-3762 8409-8984 2728--5044 518--4106 4497-8884 3235--4274 4251--4799 3291-105 -4594-1384 8464--4363 4104-9013 2096--3839 -1738-9008 2419--4257 -1147-3820 -4157--3953 -1589-4153 -3994-7549 -1151--3020 -2640--5169 2067-1273 -4757--203 -4516--1907 -3606--4783 3326-2290 -4667-6427 -2325--5102 2474-3619 -4246--5172 1145--3471 -2181-4574 -3750--133 7923-8793 3501--3606 5124-3983 -4080--5109 2441--4814 -77--1180 7303-3382 8489--2698 -2939-675 8255--3520 5222-4329 -3898--5182 1249-882 -4727-3733 8416-1082 -4748--296 7842--3798 -1791-7761 -887--196 -4518-4044 -4050-8259 -143-2139 8572--1422 7132-678 8256--3883 -1681-7980 5121-6900 -1861--3822 -1760--2859 -2790-8734 804-3976 8355-8842 1086--5164 2108-2786 -4540-6987 6322--3692 -1922--2300 6433--2467 -3148-631 -4696-8001 -561-2709 -4563-4530 -3777-251 -4625-3712 8421-7113 6198-8860 3312--2776 -2867--5197 1708--5178 1985-5598 -3038--3709 5005-669 -4701-7877 -733--3551 5187--581 7684-8910 1318--2062 6638-1353 8457-3898 8375-4398 -3857-7992 -574--2749 -2892--2857 5914-2935 8554--1743 -3725-133 8045--1737 6899-1527 8494--5189 1841-8686 693--2916 -2737--4075 -1426--336 7821--4983 2856-7657 -1019-1813 8543-1125 8395-4042 -4051--1197 -4080-1710 -4743-3288 -4377-8815 3441-1478 8484--5133 845-8969 1633--1079 -4149--5152 968--4049 4575--4994 2827--1192 -4083-3542 8457-1269 8435--5101 2478-8962 1586-7526 -1178-8600 501--1123 -4124-8874 1190-3429 8480--459 7755-7227 -1515-7615 5618--1456 -3918-7378 5905-2735 8575-7846 -775-1096 -4749-2433 -4637--1346 -3988--2623 -3008-4646 8103-7327 5964-8977 2790--1008 -4188-8994 2634--442 -4434-8931 3064-3470 -4309-4820 -3594-4056 8332-1876 8550--3411 -2248-4403 -3854--4896 119-8861 3309-6251 7004--3873 4805--4338 -1014--4298 -1081-4368 8219-128 -4599--1373 -3971--1852 6809--3258 5506--3316 5444--1691 6934-8729 792--397 -4451-2066 -4707-5513 7585--3967 4684--4997 2819--4664 -401--4662 3572-2107 8570-602 -4692--4948 251-7520 -1185-8523 4141-2721 8576--1880 -3626--1677 -3771-8891 1249--4794 -123--1597 7004--637 -4358-4955 -3505-5911 7289-435 -4662-1969 8559--755 -4308--4129 -1346-8046 -494-585 8224--4976 326--5071 605-2891 8559--4581 3725-5879 -2811-6126 -2598-5161 -3361-8850 3341-1143 -4752--3749 -1852-2023 8564-8209 -228-8951 1518-8675 3800-1720 8529-4350 8226-3684 -4218-6920 6387--2982 5791-1661 8519--672 7629-4212 -3963-2490 8585-1390 -4757-25 7997--2211 -3368-8907 3158--4606 -518--2558 -3067-3004 8546--5078 628-988 8354--4332 4156-4997 -3476-8152 -324-9016 2200-1794 -4737-8915 3129--1003 7421-2046 -4710-952 8343--4442 -830--3510 -2137-540 8208-8115 4908-1336 8453-4259 8261-6674 -2087-5935 7270-3689 8426-3277 -4381--4616 3659-8029 -520-8587 4005--5183 1263--5003 400-7892 5253-2427 8584-3827 8393-3950 -4096--3672 5048-9012 2078-5554 -3072-7611 5623-5448 7629-2249 -4675-8027 -523--2118 -3443-2657 8580-9004 1957-7700 5508-4020 8343--5182 1936-1340 8454--502 -4411-5414 -3177-796 -4717-8811 3452--3479 -2172-3949 8362--3877 4800-1941 -4723-3215 -4403-8616 536-3558 -4272-8952 2971-6733 6564--5153 2187-8290 4599--5074 2578--586 7681--14 -4565-8895 3199-8442 185-4843 -3579-4774 8042--986 7432--4295 -1086-4572 8135--1948 6733--1511 -3882-6562 -2196-8940 1454-55 -4582-4013 8345-388 -4653-7146 -1603--713 7604-8969 2859-1599 8508--3327 -2339-8631 3904-7112 6199--2808 5962-8926 1386--5152 2194--866 -4259--4056 -1452-198 8073--2548 -3076--4858 27--2281 -3309--4400 -908-7656 5565--610 -4369-8259 4657--3989 4655--4405 -899-7019 -1738--2235 -3348-8545 386--4917 3023-6990 -1768-108 8034-8135 -352-8074 4974-3139 -4429-8704 734-4322 -3902--3794 4903--3654 -1968-6662 6630-8970 1640-5724 7433--1821 -3669--5007 2792-4940 7951--1624 6984--5025 463-3232 -4397--3390 -2271-5279 -3276-2481 -4626-8950 2982-8447 4298-7709 -954--4965 2903-4772 -3625--132 -4535-6238 -2498-609 -4693--5140 884--5196 1518--116 7931-319 -4639-7337 -1395-7770 5416-9010 2047-6184 7062--1943 6737-8433 168--1803 -3682--4831 -37--1919 6756-3292 8506-4860 7996-4206 8281--4131 -1343-1457 -4755--5199 1625-9000 2564-8947 2996--2309 6425-2019 -4714-1071 -4747--3794 -1796-7476 -1236--4212 4347-8993 1821-1880 -4729--5199 1627--5198 1578-2048 8566--4405 4033-1568 8502-8180 -277-5065 -3429--5057 2637-3142 -4428-3525 -4286-7075 -1679-6147 7094--1479 -3903--2684 6082--1781 6865-748 8279--2034 -3509--4026 4606-84 -4589-6259 6997-4454 8185-8893 1256--976 -4205--1026 7406--5165 2100-3361 8493-6474 -2281-7771 -874-6625 -2135--4229 4321-6931 -1829-6859 -1903-7489 -1221-6292 -2449-9015 2249--3295 -2372-1751 8534-2548 -4608--3954 4701--4163 -1294--5050 537--3170 -2495-5962 -2741-2197 8575--2484 -3133-1931 -4724-7946 5173--5196 1731--5191 1408-1996 -4717-4952 -3507-5014 7907-2202 -4684-8842 3364-4896 7976--4728 3441-7948 5170--4869 3134--4912 3035--2259 6469-2277 8579-205 8076-5765 -2906--4228 -1193--2367 -3235--2094 -3462--4318 4179--4006 -1519-1848 -4732-7044 6266-1489 -4754-8232 -189-2674 8579-4306 8243--5195 1493-5378 7676-4825 8015--505 7729-3402 -4335--3410 5342--4375 -952--3466 5281-1108 8390-1830 8545--2169 -3402--4253 4284-5239 -3305-2776 -4543--4481 -757-6452 6824-8333 4518-8937 3039-8999 2578-6799 -1964-8515 325--4775 3343-3835 -4150-2464 -4630--166 7907-5851 7336-6098 7136-9014 2119-56 8011--81 -4548-602 8230--5098 698-2236 8577-2191 -4686-1041 8370-8768 3568--2635 -2997--2195 -3381-8999 1891--701 -4331--5144 907--2959 -2697-4292 -3919--4951 259-6348 -2398-8284 -100--5147 2228-8918 1349-3709 -4207-8019 5061-347 8136-8659 632-8957 2943--3542 -2100--1772 6872--270 -4495--5166 1090-4214 8278-8983 2737-8888 3222--5130 831-739 -4710-4793 8032-8981 1719-6593 6694--4473 -772-6566 6719-3628 8439-1798 8541--2330 -3267-2692 -4568--5120 788-3612 -4249-6515 6766--889 -4248-9003 2512-8398 102-7092 -1661-6039 7186-2636 -4584-4706 8075--2421 6325-8728 3671-8986 1760-7423 -1297--3103 -2560-2122 8571--5114 763-2942 -4492-7368 -1360--845 -4269--3892 4781-6301 6960--4631 -469--4168 4411--239 -4505--778 7564-6281 -2459-5391 -3194-9009 2399-6015 -2695--5076 2571-8386 80--2004 -3532--2475 6276-4466 -3816-8347 10--5198 1680-7228 6075--5047 2670-5757 7408--4210 4350-5560 7552--3748 4959-2328 8581-9013 2309-5760 -2910-5508 -3107-8757 860--5167 1099-1987 -4718-3340 -4358--4998 386--3042 5730--3387 5367--4885 92-1769 -4739--2007 6684-8363 4461-5163 7815--5197 1547-3434 8479-8099 -411--3659 5063-8702 3735-1886 8551-8937 1438--1833 6824-8867 3290--4929 2994-275 -4630-1615 8511-8611 3950-7611 -1076--5177 1996-9016 2201--993 -4196-2097 -4702--4842 3195--2442 -3170-7570 -1126-8391 89--957 -4215-5638 7496--5160 1037--4082 -1416--4936 220-1620 -4748-5130 -3383-2544 8584-5327 -3241-5824 -2857-3021 8544--3906 -1651-7500 5760-2489 8585-4319 8238--2222 -3359--1256 -4044-7207 6098--4467 3927--4911 156--5193 1780-4616 8116-5441 -3157-8864 1157-2339 -4657-8964 1599-8814 1008-5947 -2754-2690 8578--799 -4289--4811 -84-1821 8544-8563 423-7923 -670-7471 5795-6052 7175--3 7984-6890 6416-3069 -4452--3402 -2258-6365 6903--5120 2389-3498 8466-8514 323--1344 7188-6076 -2642-8648 3864--4746 3404--1277 -4031--4569 3747--3202 5565-7283 -1454--4887 3093-3078 8537--2918 5854--892 7492-3215 8519--273 -4494--159 -4528--4698 3502-1000-3333 -7799-7270 1522-7988 -2743-6874 -5015--5152 424--5183 292-8094 -2186--4110 -4532-3743 -7639--1584 4777--1592 4772-8089 -2217-6367 2637--3319 -5433--1806 -6800--5316 -2087--5228 78-3054 -7891-8011 -8-753 -8019-5552 3476-7949 182--399 5332--5213 -2532-5791 -6224-7992 -2724-6553 2428--3848 -4846-7432 -4182--3683 2993-5502 3523--4147 2411--688 -7501-2707 5329--3850 2795-7727 717-7776 -3480--1868 -6755--3576 -5153-830 5570--3792 2865-55 5458--5311 -381-7865 -3217-1786 5543-1866 5532--2939 3763--4978 -3144--2791 3894-3971 -7526-5139 -6768-3596 -7700-6312 2698-1070 -8067-8171 -1054-8167 -1533--4912 -3283--5201 208--299 5364--5243 -2426-7263 1532--1074 5065-7279 -4429--2361 4242--650 -7522-6617 -5340-2964 -7918--4616 1708--2652 -6094--5105 598--3637 3046-543 -7979-3479 4985-892 5575-8107 -429-7829 -3331--5165 372-5841 3197--1879 -6747-8142 -1819-3948 -7538--527 -7587-509 5534-4880 4072-7934 -2974-2643 5350-7495 1159--2054 -6615--1906 4567--5298 -299-3289 5085-534 5537-8129 -544--5321 -449--879 5154--5367 -1690-8162 -886-7908 295-362 -7931-1588 5566-1653 5559-5096 -6800--3630 3054-4613 -7140--5039 812-3609 4911--1217 -7191--4698 1566-4485 4363-7996 41--4250 -4352-4238 4529-1497 -8096-7786 -3453--799 -7438--5350 -1885-8164 -917--263 5375-7977 100-8115 -2045-7221 1591--3332 3381--5379 -1040-4809 -7006-3670 -7670--4911 -3285--5072 -2926-7788 587-6639 2330-2899 -7936-4542 -7186-8141 -631--2941 -5820-1771 -8097-6526 -5448--1822 4624-1899 5527--2554 4091-5842 3196-8158 -826-2850 -7949-4889 4065--5119 548--704 -7492--4926 -3254--4247 -4356-6952 1952-7882 -3161--5384 -1344-6024 -5999-148 -7866-8153 -759--5285 -221-8137 -1865--5231 -2470-5209 -6714--4501 1893-2564 -8008-7410 -4219--5272 -2301-1060 5582--3233 3483-3550 -7718--1751 -6839--5324 -471--396 5333--3880 -4809-4798 4135-5252 3754--620 5255--4753 1466-7803 -3405-3827 4784-1905 5526-8032 -2530-1817 5539-4132 4597-2248 5463--5320 -442--4187 -4435--1537 4806--3701 -5013-8148 -701-2429 5415-1668 -8099--1973 4521--4742 -3606-7880 369-6978 1919--2212 -6489-8033 -86-2477 5401--86 -7785--4196 2343-1899 -8091--556 5278--5373 -1599-8073 -2312-8130 -1927-2360 -8040-4972 3999-5935 3101--2711 -6039-5732 3304--1168 -7221-683 -8006-7527 -4013--4995 937-6364 -5634-7717 738-7817 519-4559 -7175-1020 5581-5730 -6279--5098 -2862--5168 359--2157 4392-2757 5312--4022 -4640-2257 -8053-7840 465--542 5283-8043 -2474--1036 -7300--2089 -6588--12 5444-7321 1448-2472 -8024--3540 3155--5165 -2678-6827 2107--4176 -4449-7304 -4390-5126 3867--3925 -4756--5343 -1938--4575 -3896--945 5126-7445 -4160--4102 2473--3121 3595-7128 1719--2267 -6442-2345 -8042-7959 -2875--2175 4379--5385 -1308--5229 -2477--2007 -6651--4773 1429-1124 5583-1961 -8086-6306 -5699-5259 -6675-4616 -7138--4601 -3854-8006 -2657-2321 5445--4315 2173--210 5391--3179 3538--4997 -3103--5130 -2776-3099 5174--4375 2085-8111 -2074-7898 -3107-8159 -840--2427 4191-7481 1184-4306 4485-4724 4191--4619 1703-945 -8051-8172 -1420-4845 4099--818 -7427--5130 507--3573 3118--3436 -5307-6049 2982-5443 3578-3921 -7552-3347 -7794-3187 -7849-2336 5441--4704 -3675--2681 3988-5278 -6660--5306 -349--5185 -2619--2237 4334-7896 -3114-7410 1307-3906 4737-4102 4616--4936 -3233--2318 -6398--3399 -5347--4686 -3707-7769 628-4018 -7501--1157 5022--5339 -589-925 -8048--5338 -1972--4064 2524--297 -7695--4513 1874--4851 1273-2124 5487-6068 -5954--4280 2224-7675 -3719--3180 3537--2461 -6270-1338 -8091--2844 -5913-2282 -8050--4598 -3859--4659 -3754-163 5480-3088 5179-3224 5116--1582 -6957-4542 4323--3660 -5059-7407 -4224-2803 -7960--4991 -3116-6123 -5897--5347 -660-1453 5575--5296 -2188-2736 -7974-7674 824-3818 -7604--4445 1979-7849 -3268-8175 -1274--250 -7716--4094 2484--3958 2661-538 -7978--5385 -1309-1138 -8075-6885 -5000--1341 -7113-355 -7929-2108 5490--591 -7554--4399 -4150--1180 5010-7236 -4495-7921 -3023--805 5184--1495 -7014-7371 1372--2545 -6193--1585 -6955--2558 -6181-7921 260-4264 -7361-227 5492--2622 4036-2789 -7963-2520 5388-6358 2647--4273 2234-7703 767-1523 5572--2181 -6515-7885 -3151-4872 -6962--525 -7588-431 5524-7071 -4740-3190 -7848-7564 -3945-8172 -1079-7292 -4409-4948 -6908-2397 5424-4923 -6926-2900 5260--4690 -3700-3410 5023-4720 4194-2633 -7995-6582 2395--2638 -6107-7642 -3789--4352 2119--4502 -4005--3886 -4802-827 -8032--5241 14-5109 3882--4963 1021--2305 4284-1268 -8088-1005 -8059--3841 -4854-6813 2124-2009 -8081--1751 4670--5341 -1953--1929 -6710-3490 -7741--699 5225-910 5576-4375 -7293--359 5345--5270 -137--5074 701--5058 752-4916 -6931--4819 -3464-968 5579-2812 -7958-2895 5262-3601 -7698-4697 -7083--5380 -1462--5305 -2144-5152 -6758--3374 -5374-4764 -7037-2181 5476-7570 1022-1799 -8096--5381 -1096-1193 -8081--1447 -7045-4662 -7107--3791 -4911-6138 -5881-6413 -5579--4530 -3964-2576 5371-470 -7961-3781 4811-7943 -2940-5675 -6328--759 5202--3225 -5533--3454 3250-5582 -6410--3489 3212--5382 -1411-992 5580-6421 -5570--121 -7771--3051 -5712-6016 3017-6641 -5311--3826 2824--4591 1749-2591 -8003-5802 -6214-7139 1704-455 -7957-5003 3973--5158 -2698--2468 4159-6749 -5177-8022 -46-4967 4003--5094 635-5221 3782--4809 1361-4067 4638-6104 -5917--182 -7745-7489 -4082-4221 -7386--4430 -4107-7209 -4536-8074 -266--1768 4659--3050 -5713-2436 5413-2011 5508-3245 5106--4036 -4623--5186 -2616--2487 4144-8168 -1516-7477 1191--5346 -651--4972 998-4978 3994-8176 -1208--2024 -6638-8112 -455-5263 3744-8171 -1453--1072 5066-4966 -6895--2125 4415-7610 948--2335 -6383-5173 3825--2744 -6008--454 -7622-1598 5565--937 -7358-1430 -8094-1862 -8093-517 -7973--2911 -5849--4985 964-6766 2181--1894 -6736-4908 4050-5349 3665-8168 -993--4488 1913-7641 888-6190 2831-5336 3677-3041 5200-997 -8058--259 -7712--5117 -2811-653 5551-8173 -1381-7843 -3287-8125 -523--5282 -204--2724 3952--1473 4845-7863 410-3495 4976-2 5447--5359 -1792-8150 -724-7450 1238--375 -7659-3240 -7831--5384 -1242--5091 645-8063 -215-886 -8042--5321 -2061-5218 -6707--5383 -1182-7956 162-3736 -7642--4850 -3404-6492 2497--4580 -3888--5371 -1630-6181 -5835-6583 -5381--2344 4255-34 -7828--3011 3698--4550 1815--4377 2082-6280 -5728-6819 -5087-8097 -2167--1311 -7132--1430 4870--4679 1600-5069 -6820-3863 -7582--1227 4985-8154 -771-2274 5457--1397 4889-5101 3889-5971 -6053-5592 3438-7603 961-6110 2917--3390 3319-271 -7904-7830 -3328--4779 -3538--5265 -110--5374 -1582-104 5468-4659 4239-6871 -5019--5376 -983-5298 3712-7943 199-4477 -7228--3110 -5652--2507 -6228-6426 2571--4795 1388-7680 -3708--3277 3438-4815 4122--1115 -7253--4884 1203--5220 -2508-7038 1840--449 5315--5378 -1018--5385 -1310--4348 -4220-7625 -3825-7702 769--5372 -927-4376 4439-7768 -3501-8019 -2594--4051 2541-446 5526--5152 -2715--3905 2728-1294 5580-6165 2858-7306 1470-6227 2791--4337 -4235--5332 -531-394 -7940-6985 1910--2278 4304-2687 -7984-1964 5516-1881 -8092--3976 2638--3313 3401-7544 -3982--1350 4916-5635 3397-5135 -6771--4693 1575-1543 -8097-6696 -5244--4780 1416-8102 -2135--4028 2571--4953 -3197-3411 -7771-8175 -1172--3635 -5087-1424 5576--5377 -1523-8034 -90-6855 -5040--5126 522-8052 -166-8020 -39--2081 4446-7293 1489--3347 3365-314 -7917-5912 -6111--3515 3183-5028 -6850-8165 -1564-2912 5255--2884 3812-6671 2293--5261 -2350--4479 -4038-3090 -7880-7392 1338-3166 5143-1721 5551--5352 -1868-5472 -6504--679 -7506-2074 -8074--2761 -5992-7703 -3656-5882 -6140--4472 -4048-8138 -1856--5038 815-3678 4871-5649 -6351-8158 -1648--5382 -1135-8163 -1589-6967 1933--5283 -2250-610 -7992-7106 -4689-7822 -3351-8176 -1206-5865 -6156-6901 2016-4383 -7288--3091 3624-5901 3136-319 5508-2038 5503-7917 -3038--5363 -1745-6893 -4989--4619 -3823-4328 -7322--810 5182--5181 301--4736 1497--4889 1192-1731 -8098-1823 -8095-1203 -8082-5702 3333-4446 -7248--2472 -6260--5334 -1993--5143 458-4418 4410--1478 4842-7143 -4635--2611 -6132--2117 -6566-4008 4675-7484 -4091--1276 -7154--4223 2305-3728 4842--766 -7457-717 5558-4773 4154-2198 -8060--3258 -5498-7754 -3537-929 5577--1614 -6935-6987 -4859--2310 -6405--4161 -4468-3865 -7581--3000 3708-6677 2286--2801 -5954--5026 -3035--5381 -1437--1130 5036--887 -7387--4747 1477--5252 -42--5000 -3096-2991 -7910-2877 5269-7972 -2817--4083 2499--952 5123-7791 580--487 5302--891 5149--5197 227-1463 -8095-6428 -5562-974 -8055-2138 -8067-8122 -1993-7571 -3932--5351 -697-1328 5579-8170 -1476--1120 -7250-1667 -8099--4204 -4413-1846 5535-7389 1343-6451 2543-7976 103-7718 -3622-6259 2756--4418 2020-3781 -7622-200 5487--498 -7601-2417 -8032-8087 -328-7952 -2905--21 5442--2176 -6519--5291 -256-3456 -7754--5351 -1877-7341 -4331--1262 4966--4654 1644--3205 -5554--3975 -4697-4269 -7358--5089 -2885--4194 -4426-6767 -5154--772 5197--5270 -2310-6484 2506--5242 -2430--1933 -6707-3441 5006--5358 -763-1361 5578-7190 1634-8096 -372-4053 -7482--2098 -6581-6938 -4927--2187 -6510--1285 4953-7743 -3563-3382 5038-2825 -7955-5571 3458--4288 -4301--5377 -1000-4341 -7314--2430 -6298--1027 5088-7763 -3514-5413 -6552-7168 -4598--5257 -2367-4597 4284--3735 2932--5380 -1063-1598 -8098-3316 5072-7533 1090-2628 -7996-8132 -563-7744 681-3911 4734--1063 -7284-1367 -8092-5996 3038-3470 4990--1627 -6926--5161 389--3693 -5022-215 -7887--3567 -5163--4812 -3477-782 5565--1686 4712-6331 -5671-780 -8024--5052 771--3622 3063-4076 -7469-3682 -7665--1388 -7083-1248 5581-4373 4441-8123 -1985--1515 -7001-7382 -4265-7079 1785--4515 -3986--4952 1047-7782 600-2823 5289-284 5502--4977 985--5303 -330--5363 -821--2348 4252-8174 -1334-3854 4768--5368 -1676--2780 -5974--5367 -868-1129 -8074--3762 -4944-593 5544-4141 -7432--2858 3835--200 5394-6632 2338--3144 -5617--4883 -3340-7910 -3064-4405 4419-8154 -1695--4927 1106--104 -7778--3074 3640-5058 3926--990 5106-8004 16-5781 3256--2382 -6341--59 5433--1825 4622-8061 -206--2132 4410-7014 -4821-1123 5583-7366 1380--990 -7327--433 -7632-6842 -5057--1871 4591-3278 -7818-8173 -1105-7470 -4116-158 5479--109 -7776-8076 -2295-202 -7883-8134 -578--3521 -5214--55 5434--51 -7798--5357 -1815-7045 -4777-3590 4922-4179 4567-8082 -2260-4188 -7405-3150 -7861--34 5439-5515 -6468-8165 -934-4670 4231-3001 -7907-5535 3492-7064 -4750--4080 2503-2842 5282-2253 5462--5215 141-7538 -3993--4089 -4558-3959 4705--4912 1140--5362 -1757-1193 5582-6995 1897-1794 5542--619 -7539-8112 -2067-7600 -3877-7956 -2888-6716 2240--2990 -5772-8149 -1753-7586 -3904--108 5420--665 5238-4685 4220-7889 346-8176 -1207--308 -7690-2589 5367--3468 -5272-8169 -1498-3050 5196--1655 4732-3318 5071--5205 -2557-5402 3616-5345 -6607-5970 -6054-8048 -149--4254 2261-6880 2042--5107 591-6474 -5509--5012 889--32 -7805-892 -8043--5331 -523-1662 5558-7166 -4601--5374 -952-8143 -648--5031 835-4286 4498--2418 4198-8056 -2406-6245 -5766-374 5516--4834 1309--1694 -6879-2846 -7950-2507 -8018--173 5402--1550 4798-84 -7845-3557 4941--1982 -6670-7974 -2808--4641 1666-5429 3591-667 -8003-2973 5229-8061 -2379-8142 -639--5049 -2981-3563 -7713--2018 4490-7041 1836-1000--2193 -7814--4375 -5478--1528 3779--4782 -4832-6343 -6276--3370 -6715--3970 1499-7142 -5226-1674 4506--5426 -1249--5488 -1657--1013 4078-3103 -8938-4180 3433--2169 3288--5402 -1137-7078 356-6289 1446-5314 -7351--5172 -392--5524 -2222-6898 638--254 4386--1331 3904-978 -9234-2227 -9203--4895 -4619-2508 -9147-995 -9235-910 -9229--3817 -6203-6639 -5914-7531 -528-3048 -8961-6410 1295--4902 190-3935 3594-6802 777-7787 -1215-7696 -930-7869 -3405-3219 4015-7928 -2976--3709 -6334--5505 -2703-5058 2733--5253 -3808--5496 -1732--5484 -1622-7717 -991--4933 132-1185 -9244-7824 -1348-2148 -9213--1551 -8271-6711 903-5115 -7538-2651 4269-7938 -2877-3372 3933-6160 -6483--5158 -4042-110 -9085--1901 3512-6008 1780-5517 -7153--5464 -1465-7816 -1317-7540 -4483--3911 1568--1432 3841-2450 -9161--2067 3374-4625 3106--5185 -3977-5853 1952-665 -9202-6621 -5937-5300 2510-2204 -9206-1713 4501-2177 4415-228 4498--5508 -1854-1630 4511--5439 -3156--4844 -4719--141 4421-7144 -5223-3609 3797-802 -9219--4710 518-4310 -8238-7443 -4690-3500 3861-3387 -8813--1272 3940-2816 4204-6146 1620-4918 2856--5045 -87-7214 124--2882 2643-872 -9226-3179 -8906-3983 3563--2261 -7757--2863 2661--5523 -2173--5519 -2496-7590 -4355-5260 -7402--3363 2162--5111 -232--4769 426-5989 -6669--804 -8714--3693 -6353--5488 -2858-7131 267-6649 987-5969 -6690-7685 -900-7477 -4621-7175 -5175-4648 -7956-5747 -6919-7201 -5134-4333 -8220--5038 -4317-7795 -1242-7508 -4556-5447 -7222--1087 4042-529 4528-7930 -1936-577 -9190--754 -8740-7882 -1606-2119 4429-7950 -2192-2097 4434-7191 164-7382 -4808-1604 -9249-7117 -5263-2686 -9094--85 -9025-5059 -7590--3397 2127-7346 -128-7938 -2016-6961 542--1362 -8391--5425 -3223--1891 -8044-1861 4481-7798 -3705--4072 -5884--4076 1371-7442 -4692-1790 4491-3071 4088-7411 -4752-7686 -4073--3766 -6265--4307 1077--5207 -494--154 -9001--2744 -7333-3845 -8561--3664 -6387--5511 -1901--4171 -5756--3547 -6521-7396 -4781-7365 -4840--4646 -5064--5478 -1573-3025 4110-7015 -5411--3524 -6547-7944 -2791--3206 2322--2868 -7218--1207 3978-7276 11-1522 4521-1712 -9245--3142 -6955--1122 4024--4774 418-7952 -2645--5514 -2582--5140 -4085--5422 -3236-6603 1048-2569 4299-5956 1839--1492 -8309--4514 799-7937 -2005-446 -9166--1413 3853--2362 -7671--2627 2882--1080 -8562--5511 -2628-5231 2574--1397 -8369-7825 -3606-4224 -8304--1499 3798--5448 -1361--4298 -5585-940 4543-2762 4226-6076 1702-7849 -1451--9 -9049-2106 -9218-7940 -2854-112 4480--5254 -635-4475 3225-2243 4398-1767 4494--612 -8809--1966 -7990-6544 -6035--5015 -4367-4046 3522-5696 -6971-7757 -3845--2307 3170-2051 -9224-7165 209-6848 711-2106 4432--4801 372--5446 -1350-5979 1813-3251 3998--4819 -4767-1346 4532--1763 3618-2274 4390--3996 1468--3341 -6746--2564 2940-7954 -2580-7956 -2486--4391 -5455--3888 -6116-28 4464-7951 -2670-3359 3940-3512 3854-4547 3170--754 4195-1146 4539--3788 1708-4172 -8342-2790 4215--353 -8925-3445 -8786-3864 -8549-6087 -6564--3147 2382--3114 -6984-1366 4531-1844 -9239-650 4534-1491 -9251-5574 2247-2708 -9087-7953 -2265-6730 877--3082 -7017--2693 -7380-2322 4377--5274 -3749-7949 -2709--3583 -6480-1102 4540--18 4453-7082 -5314--4503 -5290-6574 -5997--819 -8706-4895 2876-1432 -9250--5491 -1685--853 4152--1245 3956--4712 515-7896 -3243-7210 131--5520 -2063-5795 -6870-7038 421-4573 3149--345 4356-6437 1261-5086 -7565-7158 221-498 4526-7891 -1652-7942 -2066-3924 3601--5108 -225-2777 -9064--3209 -6885--5456 -1407-571 -9189-5964 1830-7833 -3575--5110 -4155-6739 -5785-3448 3891-3646 -8682-2339 4372--358 -8923--860 -8684--5328 -873--4320 1060-2586 4293-2695 4252-7917 -1827-381 4516-50 -9067-7315 -4933--4529 -5250-2349 4369--5472 -2974--5099 -4180-3186 4032-2517 4317-2173 4416--914 4124--5518 -2516-7586 -4366-7092 333-6402 -6207--1878 3530-6022 -6634--5363 -3466--4606 -5129-2951 4144--940 -8641-3292 3976--2935 2592-5191 -7467--2378 3108--2047 -7930--5207 -3924-7946 -2126-2382 4359-642 -9199-6049 -6605-1330 -9248--76 4439-2065 4441--3865 1621--5230 -562-1583 4516--5154 -342-7639 -784--5269 -681-7517 -4536-3587 -8715-3346 -8832-4443 -8129-7910 -3135-4552 3166-427 -9162-7930 -2957-7947 -2742--721 4209--2008 -7959--5351 -951--4986 -4429-4801 -7824-4116 3476--3644 -6410--203 4402-4972 2809-7248 -5054-7857 -1485-2606 -9119--5405 -1150--4563 -5197-7881 -1601-6529 1144--991 -8613--2654 2857--5387 -1079-1560 4518--5519 -2038--3421 -6660-4400 -8165--4336 1039--1236 -8469--276 4379--1325 -8414--2111 3337--5346 -934-6423 -6182-2635 -9110--4726 -4929-6946 -5507-6768 -5747-1379 -9249--593 -8818--5523 -2378-6349 -6269--3917 1561--3978 -6003-3519 -8750-6697 922--5437 -1303-7895 -1675--3655 1856--3845 1644-7505 -469-4601 -7996-5176 2625-2573 -9129--4099 1343--1085 4043-849 -9224-2173 -9210-6995 489-7950 -2692-719 -9209-793 -9218--5285 -3717--3830 1661-1159 -9243-4621 -7979-6249 1495--4253 1147-7955 -2535--4979 44--5158 -353--4279 -5611-2274 -9196-83 -9077-367 -9149-6779 809-1247 4536-3269 -8867-1492 -9251--5417 -3257-7293 -22-7328 -91--4112 1327--5286 -3714-3794 3683--2626 -7441--639 -8796--110 4430--2463 -7584-296 -9133--310 4368-2823 -9047--3666 1844-7269 -5017--3295 -6795--2336 3145-7755 -1110-7883 -3330-6478 1209--5485 -2881-3423 3905-4744 3006--5137 -298-2745 -9075-4810 -7816-6685 -5855--4518 -5267--3515 2005--2141 -7857--1344 3896-6692 -5846--4926 -4555-1963 -9232-3153 -8917-7738 -3908-4996 -7648--4370 -5485-6950 559--3857 -6154--1016 -8599--1485 3807--5521 -2443-284 4505--4005 -5969-6556 1109--4699 -4975-5343 2470-158 4488--5480 -2917--1740 3634--384 -8912-7837 -3558-1183 4538--756 -8739--4621 648--616 4253--4861 -4686-7470 -391--4124 -5817-5947 -6713--4416 -5419--2548 -7510--5515 -2566-5405 -7263-1903 -9236-4195 -8326-1273 4535-7334 -4898--4217 -5695--1981 -7979--5510 -2642-4355 3313-4682 -7927--4046 -5917-7280 -4997-152 4487--174 4411-3931 -8506-1437 4527-5663 2154-2885 -9024-1218 4537-3917 -8515--5008 -4382-4319 -8231-5387 2429--1618 3718-326 4510-7590 -666--5467 -1488--2906 2620-7774 -1172-2980 -8988-6987 -5450-4291 3358--2250 3219--1049 -8580--2216 3248-7858 -3459-6508 -6079--1614 -8230-5402 2415-3757 3706-2742 -9076--5436 -1298--4260 1138-2542 -9138-3829 3661-4050 -8426-2309 -9190--520 4291--453 4316--1462 -8328-1661 -9247--4914 -4580--4611 -5121-4917 -7720-2136 4425--5189 -441-6851 -5637--3231 -6862--5378 -3414--5323 -3598-7880 -3347-6807 770-512 -9179-7854 -1472--2011 3421-5455 2365-6752 -5768-7957 -2430--1503 -8302-6262 -6369--4142 1289--1032 4069--3991 1474-7810 -1294--5227 -3875--3465 -6612-5049 2741--4957 -4490--5060 -4268--2530 2971--3023 -7073-1384 4530-4962 -7679--5498 -1751--1270 -8448-4117 -8380-3960 -8487-7569 -4410--2068 -7914--3460 2062--3532 -6538-189 -9106--2955 -7137--4347 -5517-4398 3282-4980 2802--4116 1322--5128 -275-1997 -9229-5367 -7300-7906 -3166--5451 -1378-2785 4217--2369 3116-5130 -7524-1986 4458--2973 2555--671 4230-2853 4188--1685 3672--2617 -7449-335 -9142--5177 -406--3728 1775-123 4482-7916 -3086--5508 -2669--5393 -1102--548 4280--3714 -6328-941 4543-771 4539--3015 2514-259 -9124-7549 -569-3639 -8686-7662 -4146--4950 100-5638 -7030-7010 -5418-7604 -4316-5518 -7152-3776 -8604-5641 2177--3455 -6623--5384 -3391--1681 -8186-5125 2672-7899 -3220--5010 -16--703 -8765-7621 -4267--3444 -6635--2485 3012-7053 -5356--3590 1926--5384 -1068-4479 3222-4499 -8082-3481 3872--263 -8960--4660 -5041--2911 -7178--5085 -172-4113 3478-828 4541-1943 4467-2005 4454-1053 4541-5829 -6835-4543 -8045--1838 3561-7920 -1850-1920 4471-7542 -553-5295 -7369--4456 879--5306 -800--4689 -4992-3763 -8612-7358 -153--1792 3596-6141 1626-7663 -4143--2398 -7640--4425 -5406-3554 -8732-1639 4510-7260 42-4693 3049--5515 -1966--4816 346--3085 2445-435 4521--4097 -5852-7639 -4214--5459 -3056--4373 990-2385 -9176-6036 -6619-5727 2087--5463 -3033--4743 467-2475 -9155-750 -9213--4578 710-2900 4167--3537 1982--3935 -6057-3285 -8860--468 -8875-2619 -9115--2759 2759-7719 -3970-7706 -959--4896 -4617-3894 3620-6277 -6352-7609 -4302--1583 3742-6504 1176--787 -8723-897 -9228-7701 -4027-1249 -9246-7936 -2898--421 -8896--747 4198-5876 1927--565 -8831-720 4537--1068 -8569-6823 747--4759 -4872-2952 -8999-6471 -6124-6006 -6651-2404 -9172-7851 -3493--4039 1416--5073 -4239-7947 -2142-4830 2932-6888 -5587-6320 1408-7878 -3358--2486 -7564-42 4467-205 4495-7121 284--5117 -4139-7440 -326--1525 3781--5506 -1831-7418 -279-7659 -833-7943 -2807-158 -9098-6297 -6329-7206 -5126-4323 3336-2441 4341--1155 4007--5524 -2344--1164 4002--5011 -18-4768 -7853-6015 1772-7543 -4476--5525 -2278-7951 -2212-7952 -2234--4207 1206-4440 3251--4685 555--43 4447--5518 -2016-6896 -5576-7819 -3629-7043 413-6098 -6552--219 -8977-3188 4031--5512 -1917--837 4159-3677 -8664--1150 -8521--54 -9035-6646 991--5355 -3493--2189 3271--5449 -3107--2433 3059--2120 -7874-3517 -8751-7834 -3571-7860 -1499--5401 -1133--5474 -1542-1048 -9238-3704 -8648-3464 -8777-588 4531--5498 -2772-1110 -9241-3230 -8884-6548 -6030-6857 698--5250 -3816--2970 -7123--5525 -2277--3617 1897--971 -8624-6096 1679--137 -9007--927 -8648-4500 3206-1214 -9245--4733 -4917--3086 2444--391 4339-5513 2310-4238 3394--2540 -7517--4464 868-7834 -1389--4964 73-2390 -9175-489 -9175-5514 2309--3315 2211--5504 -1810--3574 1943--5525 -2279--5342 -3536-2862 4184-5897 1904--313 4367--4837 309--5278 -709--5392 -3360--1859 -8066-1554 -9250--955 4105-7923 -3023--5506 -2692-1782 -9242-878 4542-1066 -9239--2312 -7714--2043 -7933-7888 -3301-7447 -341-5338 -7328-3186 -8903--1923 -8021-7922 -1867--4189 1229--1887 3523--4848 289-7912 -1791-7920 -3051--2828 2694-1535 4520--519 -8852--798 4176-6198 1557--4555 742-5802 2007-5579 -7090-1322 4533-7718 -994-3957 -8489-2320 -9188-93 -9080--187 4407--5520 -2474-6125 1645--5490 -2841-4739 -7878-6805 -5698-4413 3271-1682 4505-4015 -8450-7251 59--1884 -8049-5887 1915--5325 -863--4727 492-7572 -623--4214 -5699--4883 225-7955 -2330-3582 3813--4466 -5346-6220 -6416-3668 3761-7889 -3295--4778 -4839-7868 -3410-2486 4327-7957 -2431--5402 -3319-3044 4101-47 4468--4828 -4750--430 -8892-7760 -3835--330 -8934--1684 -8184--2698 2816-326 -9140-3702 3740-259 4502--4419 929-758 -9214-3596 -8710-7389 -218-3236 4006--3081 -7018--1748 -8141--2115 -7878-2520 4316--4583 703--1806 -8102-6935 582--5450 -3102-7957 -2429-7327 -89-4316 3341--3576 -6488--5419 -1215-5892 -6770--5076 -152-7904 -1734-5773 2038--2683 2830-7233 -5080--5366 -1003-3403 3916-255 -9123-7940 -2039--88 -9024-1855 4482-6367 1349-7816 -3640-1086 -9240--5457 -1413-1286 -9247--3557 1961--3264 2263-6531 -6051-2280 -9195-5314 2497-7956 -2364--1177 -8505-4865 -7767-313 -9137-7710 -3999-7617 -731-7560 -4433-1454 4526--5264 -3778-7492 -440-6428 -6176-469 4524--2882 -7205-7682 -892--5231 -565-2997 4123--5428 -3209--5522 -2128-7778 -3774-1000 4542-7871 -1552--2799 -7282-7733 -1041-5546 2276--4650 606--5301 -3667-7159 -5200-4270 -8269-7783 -3757-4794 2963--5517 -1999--5287 -738-1934 -9234--3604 1911-7943 -2080--1968 3457--1214 3974--4265 -5630-3135 4057-1000-377 -3737--6042 -3339--4548 -4328--9096 1899--3984 8472--5702 7370--6825 6320-4398 2023--9074 1091-2909 -1321--7438 5629-1803 7052-1608 7232-4305 1444-1171 7611-1493 7336--6433 -2987--5094 -4031-2741 6078-2982 -1223-4000 4286--5670 -3640--1813 -4732--4135 -4502--8192 4548--8655 3650-2834 -1418-3926 360-2392 -1936--6097 7033-4195 1048--7121 5998--8497 3987--8496 3989--1168 -4565--8967 523--4769 -4222--4722 8073-4142 3995-2756 -1515-3592 4985-3576 -320-504 8087-4423 2642-4209 3833-3614 -251--5362 -3858--2536 8895-4194 1045--9074 2156-365 8174-3943 397--8759 3390--7014 6116-4397 2984--8882 258--2816 8855--7910 -1378-2332 -2002--2448 8902--9080 2091-1976 -2382--6001 -3374--9105 1472--5114 7813--8953 466-1556 -2791--5385 7619--5892 -3465-4420 2706--9089 1225-716 -3495--9108 1665-1446 7378--3871 8527-3271 5437-1658 -2697--8381 4209-139 8308-2560 6280-3631 -220-412 8145-1940 6921-3394 -627--1931 -4752--1626 -4695--3468 8694-3816 4621-4119 4046--3514 8679--7423 -1964--2547 8894-4415 2228--9104 1449-1483 7345--4057 -4530--7548 -1818--4328 8294--3760 8578--4771 -4221--5339 7653-4426 2449-4235 1181--7073 -2348--4339 -4420-1180 -3122--2133 8911--7417 5655--1068 8779--6526 -2899--3355 -4717-3572 -327-89 8335--7398 -1993--9091 1246-1330 -2994-234 8253--8093 -1136-250 -3823--3525 8675--5498 -3765-4254 3703--4583 -4312-2040 6824--9086 1194--1907 8903--1980 -4760--9049 911--2805 -4787--7647 5360-4377 1823--1473 -4657--8725 3477--8823 3222--7188 -2225--8385 -695--8933 2878--8461 -570--4275 -4447--5319 -3887--134 8442--473 8588--6658 6496-1842 -2520-3903 4467--7970 -1301-2873 -1368--7387 5691--4214 -4472-70 -3940-1476 -2864-1415 -2919--460 -4236-2506 6339-4414 2807--3352 8730-4415 2793--9101 1389--1115 -4545--7074 6050-3999 527--3085 -4757--4438 8235-4115 823--2220 -4787-4247 3725-3695 4822--8899 302--8813 94-1245 7550-2481 -1837-2280 6579--294 -4148--8498 -507--7810 5135--6962 -2465-4403 2079--3580 8654-4342 1611-3976 471--8701 3538-2928 -1296--8505 -495-162 8295--8647 -238--8585 -353--6485 -2938--4094 -4517-1009 -3265--8309 -817--5008 7886--7747 -1580-3849 196--8274 -871-2894 5899-3773 45--6722 -2710-4162 951-1950 -2409--1387 -4633--9056 959--441 -4226--1562 -4680-2735 -1541--9107 1535--9097 1321--1064 8778--9036 2436--9078 1122-3068 -1105-4251 1236-2189 -2157--9102 1408-4420 2319-4043 637--9048 2361-488 -3660-810 -3422--2207 -4786--745 8685--2485 -4798-1148 -3149--1522 -4670-637 8001-1425 -2910-2866 5932-545 -3620-4404 2920-816 7879--6871 6271--8608 3754--5691 7379-4202 3851--7650 -1697--6424 6732-1072 -3213--3056 8809--4664 8108--2913 -4777--4108 8409-184 -3866-4382 1863--187 -4090-276 -3806-2781 -1484--5727 -3597-4217 3812--1214 -4580--8228 4486-3390 5279-3246 5469--3063 -4760--1231 8815-4366 1753-2866 -1377-4126 4031-868 7842--5927 -3436--8170 -1027-2607 -1692--9032 805--8148 4623--8834 3192-4425 2579--3618 -4664--8296 4365-1045 7711--7295 5799-2077 -2276--691 8667--5186 -3973-4392 1958--3496 -4692--6759 6390--2791 -4788--4388 8262--7864 5058--9101 1815--7331 -2068--7555 5482-3954 421-850 7855--3477 -4696--4961 7918--830 8711--5675 7392--8929 389-3959 432--5760 7322-1091 7676-4389 1927--8639 -253-1360 7453--5621 7435-3228 -877-1160 7620-3228 5492--2549 -4797--4457 -4369--5853 -3497--5620 -3677-915 7808-4104 794-4374 3155--343 8534-3469 -504--1014 -4504--8891 281--4870 -4166-3065 5694--2693 -4794-485 8099--7603 -1753--8217 4505--7199 -2213-4031 4226--3209 8771--1841 8898-2705 -1577--5830 7263--500 -4257--3395 8717-4426 2535-1785 -2576--5532 -3741--1006 8763--9035 2442-2439 -1884--9040 850-1724 7126--2311 8909--7957 4922--7045 6082-3505 5116--5167 -3985--8226 -944--5550 -3728--7463 5598-4427 2479--5433 7582-972 -3295--5533 7504--76 -4028--3404 -4709--2818 -4786--8808 83-4271 3648--1327 8831-3815 127--8224 -947-634 8003--8713 -112--2074 -4774--187 8466-2721 -1558--8827 126-3878 257--9001 663--1678 -4707--6622 -2807-4361 3244--6045 7079-4427 2478--971 8753--8348 4270-1554 7281--4618 8135--4209 -4474--8199 4536-4423 2381-4200 3856--9085 2035--244 -4121--4546 8176--9109 1636--6504 -2920--7771 5190--3567 8659--8838 152-803 7888-583 -3593--6236 -3167-3542 5061--8258 4434-3699 -95-3639 4912-1822 7034-760 -3461--3890 8518-2965 -1246--9108 1579--2726 -4792-4359 1709--8962 2770-594 -3585-3814 125--6778 6370--1891 8902--8151 4618--4246 -4459--3937 -4571-4298 3538-2041 6823--3908 -4580--8801 68--7478 -1900--3004 8821--7857 5068--7576 -1785-3166 5570-108 8325--9109 1637--4372 -4406--8786 3320-3213 5511-24 8367--7960 -1314--3295 8747-4145 3988-3627 4931-680 7972--3160 8784-1665 7180-3457 5185-3316 -746--4638 -4286--7548 5491-1701 -2657--310 8520-3288 5415-3779 4684--6524 6634--8455 4069-4331 3400--1866 -4741--625 8644--5485 -3774--6897 -2532-2693 6133--4053 8437--9018 2535-3744 4742--8187 -1002-4410 2856--136 -4062--18 -3994--8321 -798--2285 8910-3182 -944-304 -3787--4983 -4099-4019 576--1157 -4561-2342 6514--9084 1175--1470 8853--1129 8793--5556 7486--1458 -4653--1102 -4540-4427 2477--3004 -4767--5227 7734-3741 -16-4414 2215-3935 4408-3175 -954-2177 6685-4065 4157--5773 -3562--7294 -2109--3809 8556-826 7872--2683 8877--6300 6848--9061 995--9096 1307--4587 8153--2057 -4772--7610 5410--3598 8647-3381 -647--4423 -4384-4367 3203--8313 4334--7910 4991--8856 195--7591 5435-3517 -422--873 -4442--1383 8840--3668 8618--371 -4189--8645 3673-3577 5008--2841 -4784-3275 -808--6128 -3264--5265 7707--9028 784--8917 2933--216 8479-3429 -570--3030 -4764-1742 -2618-419 -3708--2475 8900--4706 -4253--6859 -2571-4387 3060-2143 -2206--3451 -4701-1618 -2734-2830 -1423--1678 8881--6290 -3118--2242 8911--1925 -4751--7516 5532--4790 -4211--8595 3782--5398 7609-4410 2164--5982 -3390--8542 -431--8072 -1165-3703 4809-1403 7416--7342 5744--1278 8823--6347 -3066-2612 6223--5354 7642-2716 6107--9043 870-4353 1672--9092 1258--811 -4413-2517 6327--3842 -4600--956 -4479--1432 -4646-1380 -2950-2542 -1767--4155 8385--7375 -2019--8343 -763-4285 3591-3790 78-3273 -811-1300 7504--4241 8340--7224 5881-4131 4020--8736 3449--2978 8826--9097 1886-4350 3309--4866 7980--7686 -1654--4916 -4139-4422 2665--6383 6771--8681 3587-2649 6182--8426 -628-4355 3281-4392 3023--944 8745--1774 -4725--8682 -172--588 8631--7531 -1838-2493 6353--6687 -2744--6062 7064--3711 -4639--1877 8901-672 -3528--4495 -4352--720 8677--2286 -4791-1301 -3019--4741 8061--2234 -4788--6107 7024-4156 3962--5921 7186--9018 737-1239 -3072--539 8613--2135 -4780--5842 -3506-3004 5768--1416 8845--2869 8846-1406 -2927--8877 3066--6175 -3222-1718 -2641-2005 6858--44 8400--3268 8755--7175 -2239--9041 2405--6400 6755--5059 7851--774 8694--2908 8839--7848 -1456--6604 6552-4363 1734--9092 1950--629 -4323--8031 4810--8636 3693--225 8483-4419 2725-521 -3637--3143 -4749-2232 -2111--8076 4741--9064 2251--3738 -4631--99 8426--5276 7699--2033 8909--5492 7536-3056 5705--7750 5219--2960 -4772-3411 5250--9079 1130-3965 4352-2019 -2337-2726 -1552--1287 -4603--3895 -4584--9000 2615--4311 8303-4318 1499--5203 7751-3973 464-3913 332--3533 8672-1455 7370-2921 5867-4176 992--8779 22--7472 -1907--2081 8910--3603 8645-739 7932--5754 7327-1210 7579-3860 4545--787 8698--4375 8269--907 8734--6137 -3256--3991 -4553--5674 -3637-2613 -1685-1922 -2438--7512 5537-2968 5811--2852 -4783-4379 3119--7024 -2400--6594 -2834-3031 -1156--7998 4860-3256 -836-874 -3372-1078 -3208--5933 -3431-1841 -2521--1704 -4712--9031 2465--5170 7774-2849 5952--5597 -3694--9024 2503-2407 6445-2466 6382-938 7791-3337 5350--547 8616--1956 8906-3278 5428-4324 3430--3962 -4563--1084 -4533-851 -3390--7895 -1397--8824 119-188 8280--8019 -1236--8791 47-2796 6014-4380 1846-4174 3919--9019 2530--2702 8874--1683 -4708--8063 4761--4803 8021--8560 3857--3299 -4726--3120 8794--8617 -294-3340 5346-3089 -1076--5101 7822--1722 8886-3128 -1021-4336 1579--6723 -2709-1891 -2470--2649 -4795--2397 -4796--2775 -4789--5508 -3758--4222 8350-4405 2102--574 -4295-4273 1317--2919 8837-2363 -1968--3250 8760--307 -4155--7738 -1591--9013 714--8884 263--9102 1795-699 -3508-657 -3539--4752 8054-2289 -2049--1619 8874--8858 3122--8139 -1071-2215 6646--7242 -2166--6179 6959--8259 -894-4396 2992--8797 3291--2371 -4795--9109 1635--95 -4039--7938 4950--4691 8092--1652 8878--7664 5337--6088 7041--4986 7901--2625 8886--2440 -4797-4346 3330--8111 4684--2601 -4796--1546 8864--2197 8912--9098 1337--6914 6225--922 -4464--6085 -3302--9010 701--8568 -384--3246 -4734--8568 3840--5421 -3818--2375 8906--1186 8806--8377 -708--3775 -4620--4466 -4365--884 -4447-4254 1247--468 8586--6165 -3231-3349 -696-3510 -434-4224 3793-939 -3321--7270 5828--7148 -2268--8876 3069--8423 4130--6158 6978-3546 -372-4419 2299-4409 2868-4416 2777--2751 8866--761 -4389-4097 4092--8987 2670--9069 1054--2462 8901--6701 6451--6406 -3012--1830 8897--9045 2380-40 -3959-2110 6753--5654 7409--1763 -4723--7408 5666-3706 -82-2391 6462--6573 6584--4143 -4499--1330 -4616--995 8760-4313 3476--259 8498-2096 -2256-3886 274-3535 -391--8022 -1232--3959 -4564--7928 -1355--1539 8863--3921 8503--407 8561--7089 -2331-1912 6948-432 -3699--9037 833-4109 4067-2588 -1714--9006 684--3852 -4597--5102 -4026--8658 3643--5983 7133--3614 -4665-751 -3468-774 7908--2757 8865-301 8213--8714 -110-3466 -509--527 -4271-4214 3820-87 8336--3553 -4679--4932 7937--2196 8912-1363 -2965-1319 7488-3661 4877--5442 7575--723 8678--2599 8889--3212 -4739--8472 4036-4328 3413--7953 -1323--4606 8142--9087 2012--8458 -575--3224 8767--3676 -4649-3957 4367-2660 -1630--8844 3163--5047 -4060--8906 321-59 -3947-4077 724--1545 -4676-4416 2243--1079 -4531-121 -3907-3488 5141--4182 8371-4402 2939--6971 6163--3137 8790--8936 2867-3776 4689--8641 3682-101 -3920--8980 576--1989 8908--7403 5672-4379 1838--3687 -4646--4783 8034--9098 1871--6340 6811-279 -3804--7289 5806-4349 1649--4844 -4181-4141 892--6238 6905-4337 1584--2083 -4775--3798 8561-2790 6021-3823 4609-4319 3451--5381 7622--7800 -1515--1436 8848--8936 411-4407 2889--5250 -3932--8254 4441--9081 1147--5862 7236--8955 2797--1274 -4599--6792 -2639-9 -3978-3666 -156--2396 8905--2999 8822-4280 1344-4032 4224-4336 3377-993 -3278--7163 5951--9071 2187--7955 4925--1864 8900--5316 -3889--5456 -3794--7713 5270--3266 -4731--3408 8713-4358 3264-4331 1555--8388 4196--2307 -4792--6632 6523-3963 441--3726 8593--1597 8871--9013 2559-568 8046-3544 5058--1769 8891--1149 -4558--2486 -4798--436 8573-4297 1411--3136 -4750--1656 -4702--698 -4358--64 -4021--2146 -4781--6467 6690--4495 8204-992 7751--8898 2998-420 8140--8896 294--792 -4404-703 -3505--8531 3918-4054 665--3026 8816--9062 2268--4958 7920-4152 922--354 -4180--6012 7108-988 7754-4216 1116-1497 -2845-326 -3772--1999 -4763-1020 -3256--8747 -43--8979 2703-3118 5629-1751 7101--8625 3717--1205 8810-4354 1678--4263 -4452-4399 2967-1251 7545--9061 2276-3886 4498--419 8566-1844 7013--9105 1733--6523 6635--2608 8888--8995 638--4821 -4194--840 8714--9059 2291--1414 -4641-1000-5405 -5709--1698 5953-9153 2592-1778 7947-1967 -6058-3205 8004--3874 2095-4217 7675-6514 -5037--2525 -2159-8913 -2456-5678 6701-9370 2069-8699 -2797-9445 1844--1882 5768-4781 7346--2251 5369--3860 1066-9404 -1471-4644 -6018-9732 -30-9058 2781-3527 7928-4389 7586-9026 2842--3803 679-6079 6369-9635 -674-1247 -5708--2369 -2373-2089 -6100-9597 1260-9737 149-9642 1021-1046 -5578-7525 -4185-2472 -6202--3864 1101-9516 1603-2540 8063--3911 1676-5094 7130-9728 299-9644 -631-6212 -5242-9601 -818-7860 -3842-5413 6899--785 6736-7105 -4577-9701 -327--744 -4156--265 7087--3872 2108--3604 -119-6595 -4980-7941 -3754--1547 6100--3817 2399-8965 -2364-4980 -5900-6730 5771-6553 5941--3906 1531--3459 -529-1003 -5549--3668 91-4559 7489-2043 8001-4554 7492-9475 -1275--2614 -2033-8866 3135-9127 2645-9563 1416-5807 -5487--3689 165-9332 2175-2475 8058-3434 -6283--1113 -3797-8426 -3176--1112 -3798-1312 -5747-9709 -269--3317 3800-4616 -6027-9712 478-4068 -6175-1674 7923-9673 -486-8379 -3238-9350 -1606-9007 -2288-9508 1632-6275 6197--3885 1290--3888 1991--2453 -2259--850 6688--583 -4306-9737 68--2918 -1573-7205 5292-2383 8050-941 7704-5578 -5616-20 7255-8789 3267-5871 6546-9736 196-2907 -6279--926 6630-9187 2520--3231 -1013-723 7616-9679 771-1610 -5907-2643 8068--3266 -946-1653 -5927-5960 6471--3360 -752--2410 -2318-9450 -1348-3454 7946--2151 -2651-6612 -4968-847 7668-3444 -6282-461 7497-7047 5456-9256 -1814-3891 7814-9703 561-3944 7793-9719 402-9586 1313--2492 5084-4743 7371-332 7430-8917 -2449-9733 -13-9552 -1006-6357 -5145--438 6975-9604 1226--3726 309-9581 1337--2599 4944--2254 -2524-3301 -6294-972 7715-4374 7594-4572 7481-7654 -4056--3180 4056-9738 91-8324 3966--3118 -1225-4409 7575--1765 5887--3707 231-8680 -2825-641 -5296-8237 4086-7930 4478-3611 7906-510 -5201--2905 -1594-829 -5430-6027 6414-4956 7227-9730 -61-3423 -6284--2716 -1885-8509 -3064-5186 7064--3460 3519--3902 1843-7978 4419-9347 2134-6213 6252-6939 5566-9725 -122-4975 7214-2227 8031-7500 4980-9531 -1083-9699 -340-6127 -5297-1255 -5713--1836 -3029-9651 -597-1052 7743--3901 1855--3679 129-666 -5314-3352 -6290-249 7384-955 7709-9539 1518--3623 3116--3758 2649-9197 -1930-8970 -2355--1332 -3572--1220 -3688--3649 3040--3798 651-8776 -2680--3598 3184-9478 1735--3467 -508--3742 2710--3808 2442-6192 -5255--2207 -2582-2972 -6286--3430 3580-7476 -4233--687 6805-3850 -6220--3774 2586--1279 -3627-1923 7977-3108 8022-2172 -6125-9625 1117--3505 -407-9657 929-4515 7515-5057 -5868-7099 -4582--3014 -1410--2917 4497--2020 5624--385 7010-9687 702--2731 -1863-7784 -3923-1323 7830-8502 3713--3729 2759-4145 7708-536 7533-9652 960-4659 7426--3347 -780-4778 7348-6262 -5209-7407 -4300-2418 -6189--3814 741-9641 1027-3982 -6193--1398 -3503-7264 5230-4043 7752-3860 7826-1936 -6046--612 6857-6957 -4699--3778 547--200 -4646-9512 -1151-1295 -5737--3577 3239-7774 4666-8666 3467--3681 136-5701 6683-16 -4828-1883 -6025-2719 -6254-1168 -5658-4466 7543--3531 3355--154 7154-2678 8067-2787 -6265--3523 3374-931 -5500--2990 4384--2711 4792-9286 2297-9623 -726-7541 4936--2643 4885-9144 -2032--2962 -1499-6117 6336-1438 -5818-9569 -942-8133 -3538-8470 -3117-1474 -5837--3905 1798--3787 593-1087 7755--2872 4565--365 7023-5852 -5461--3685 2919-670 7593-9387 2019-3181 8009-6638 -4949-89 -4886--3830 839--768 6748-9165 2567-5008 7191-7200 -4496-9711 -254--3833 2321--1788 -3085--1975 5672-815 7655-5992 6444-5161 7082--3012 4349--2292 -2475-6265 -5207-4400 7580--3478 -479-2026 -6080-4198 7684-9527 1563-8441 3801-7441 5043-8748 3336--63 -4762--3354 -765-852 -5446-1642 -5922-3132 -6298-1427 -5812-770 7636--3632 -31--866 -4039-3904 -6209--1007 6566--2200 5427-3949 7791-11 -4824-7190 -4505--252 -4601-8646 3498--480 -4400--3754 431-6615 5882-2646 -6241-347 7438-9694 -369--25 7229-9296 -1732-459 7496-3040 8033--697 6798-5101 7125-8078 -3601-3948 -6200-8538 -3024--290 -4568-9553 1459-3287 -6295-3149 -6299--3900 1457-1049 -5580-2981 8040-1476 7873--435 6977--3825 808-9174 2548--1431 6211-5104 -5848-3682 7885--3777 542--3086 4224-1695 7928-422 7477-9708 515-8991 2908-2373 -6178-1518 -5860--3583 -183-7818 -3887-6352 6127-3582 7914-9050 -2208--3543 -301-2245 -6146-8196 4141-3265 7991-9702 -320--3664 2993-6422 6063--763 -4138-149 -4933-6753 -4862-1084 -5603-8551 -3006--3039 -1367--903 -4003--44 -4778-9476 -1272-5495 -5662-7322 5169-7810 4623--839 -4065-8081 4292-2774 8061--3300 -877-2920 8047--2033 5610-3801 7848-1518 7884-9738 92--2379 5222-1977 7988-3183 -6300-3053 -6293-4132 -6160-4855 -5947--3189 -1093--2354 5251-9727 311-904 7690-9432 -1397-8206 -3454-7861 4562-5928 -5417-1370 7844-8600 -2938-7378 5110-8839 -2581--3103 4194--101 7185-3142 8016-3539 -6271--1983 -2855-9231 2424-5223 -5796-871 -5459-6888 -4755-6503 5988-2562 -6223-7847 -3856-2404 8052-2156 8021-78 7288--3892 1366-7182 -4512-4532 7505-842 7666-9566 1403-6940 5565-4923 -5922-5025 7179-2163 8022-1796 -5989--3898 1890-4740 -5987-4199 -6144-9722 368-9734 6-126 -4915-572 -5246--3906 1781--3759 455--3770 508-8356 -3268-2463 8057--3907 1762-604 7564-2713 -6253-4174 7695--3851 2227-4872 -5941-7615 4853-2832 8056--3605 3165-7290 -4413-5398 6910--2949 4448-9715 -223-2622 -6236-122 7313-733 -5362--2034 -2794--3469 3500--133 -4703-70 -4871--3893 1943-6296 6178-4309 7628-2526 8062-5630 -5587-7258 -4443-8841 3178-4798 -5967-6435 6051--3554 3299-244 -5005--2921 -1568-1954 -6053--3891 1355-429 -5142-9495 1677-5689 -5554-3409 7957--1495 -3401-5738 6654-4775 -5975-1029 7735-3531 -6272-5447 6874-4309 -6116--1437 -3462-8181 -3483-5255 7014--3796 2494--2529 5036-9718 413-8352 3927-4153 -6155-9630 1089-9720 -175-7663 4797--2317 -2442--2865 -1658--2093 5545-7715 4736-1185 -5669-1682 -5940-2556 8064-9319 2210--2172 5458--3895 1922-8802 3245-5981 -5386-8034 4350-4504 -6062--3326 -824-4440 -6081-5368 -5728-3184 -6300-7757 -3951--165 -4676-179 -4956-9093 2714--3849 2238-4083 7735-8930 -2426-9260 2358-5816 6592-6772 -4847--846 6691--2374 5228-380 -5106--2124 5511-1152 7776-1345 -5766-1629 -5916--1930 5719-6739 -4873-8603 3564-8958 2969-9662 896--2877 -1639-2644 8068-1273 -5724--2485 5093-6100 -5314--3415 -631--3436 -583--3876 1207-2641 -6240--3856 2199-9678 779-7622 4845-726 -5357--3338 -799-9305 2247-9102 -2111-3815 7843-9455 -1334-2685 -6248--3628 3102--3895 1400--3852 997--3651 33-6590 5906-7343 -4362--3187 4043--1766 5886--1363 6273-4580 7476--595 -4295--3143 4123--1795 -3077-3186 8008--3131 -1201-8100 4268-1759 7943--3869 1145-248 -5008-4482 7534-6817 5686--3666 2986--231 7108-2393 8051-9364 2086-9181 2533--3875 2088--3903 1829-9222 -1881-4855 7296-9257 -1812-2527 -6215-9696 623--3492 -442--912 6641-499 -5193--3061 4267--1446 6197--1146 6454--2273 -2500--676 -4220-4185 7690-2695 8066-9381 -1531--3713 254-9676 -470-6410 6074--1991 5655--2039 -2788-9722 -154--1463 6181-4675 -6008-6164 6295-6677 -4920--3275 3879-4886 -5936--1673 -3212--3910 1619-2964 8042-9459 1799--2975 -1477-1628 7912--300 7065-8319 -3316--3537 -318-9638 -660-8744 -2729-9683 -431--3911 1677--1827 5824--1272 6350--2819 -1730--3498 3433-2288 8039-1673 -5936-3082 -6295-3671 -6253--1373 6264--1061 6523-2136 8018--1580 6068-9181 -1961-5157 -5825--1957 5691--724 6779-4998 7198--1310 6318-9014 -2275--3803 2464-7895 4521--1378 -3524-4824 7317-9294 2276--3832 2326-5508 -5655--3881 1253--3824 2365-972 -5528-9540 1514-4353 7605--525 -4359-303 -5049-2216 -6138--3549 3312-3300 7983--2068 -2753--2776 -1796-6973 -4686-3600 -6263-5579 6776-338 -5075-8558 3631--3071 -1310--3867 2137-8649 -2869-4957 -5909-3855 -6219-6323 -5168-5291 -5765-3738 7868--577 6881-521 7526-7802 -3904-9410 1951-4049 -6179-4351 -6105--178 -4665-8817 -2616-1450 7866-2995 -6288-1453 -5826-8467 3764--2103 -2710-7374 -4332--2571 -2094-8144 4210--608 -4283-8398 3862--3846 2254--3223 3976-8119 4243-9534 1537-2300 -6160-9376 -1544-9735 212-5097 -5851-9215 2459--2114 5522-8692 3426--1614 -3275--386 -4484-5890 6530-802 -5411-7554 4922-6871 5633-8704 3407-3593 7911-7106 5395-2354 8047--3520 -366-8312 -3325-4457 -6076-5012 -5887--337 -4527--1888 -2968-6307 6168-9287 -1751-3748 -6240-9263 2351--3648 3043-6452 -5080-9425 -1416-1849 -6011--3354 3729-9242 2399-7034 -4636--203 7125--2773 4706--990 -3918--3909 1572-6092 -5319-1612 -5908-6551 -5011-7885 -3815--1357 -3546-1879 7968-5749 -5520--3835 872-9738 90-5811 6596-8732 3362--3327 3781-8027 -3659--3787 2532-9660 -553--943 -3964--3700 205-7273 -4429-9431 1887-5366 -5729-1845 7961-7593 -4118-8745 3341-3355 7970-1972 7987--1207 6404-138 7322-2296 8040--2058 5583-8085 4287--3433 -590-9411 1948-5705 -5545-9491 -1225-9506 1639--3901 1469-6673 -4923-8490 -3090--1947 -2898--1516 6130-8834 -2589--3300 3832-819 -5423--2640 -1996-1878 -6023-3523 7929-5306 -5758-3873 7821--3138 4132-9630 -696-6524 -5030--2306 5306--530 6913--1649 6001-6005 6433-6058 -5340--2839 -1699--2552 5006--3164 -1140--496 6936-9678 -459-3114 8021--3910 1700--811 6717--625 6848-2234 -6143--3429 3582-9605 1221-9614 1175-4714 7390--1130 6467--3792 2511-3217 -6299--3712 250--1714 -3168-1262 7811-5757 6639-4278 7644--1355 6280-6770 5732-5480 -5670-7999 -3690--3584 -180-3655 7893-9493 -1218-197 7355-2610 8067--3739 365--3199 -1074-1387 7849--3842 922-9659 -558--2663 4858--3709 2833-9358 -1587-7225 5271--3811 2428-4565 -6043-1211 7795--1551 -3342-7866 4556--788 -4114-7951 -3743-3691 -6250-2029 -6081-319 7423-9325 -1665--3260 3907--3851 989-7007 5497-9127 -2064-2591 8066-414 -5131-8201 -3460-3664 -6254--2497 -2198-2855 8054-7184 5314-4642 7437-870 7677-1418 -5807--2430 5160-4215 7676-9619 -743-8280 4027--3404 -656-3271 -6296-8945 2993-4154 7704-6693 5807-6834 -4798--3107 -1245--1278 6345--1044 -3865--3007 4357--2724 4774-730 7619-9729 -75-9536 -1065-9154 -2013-1113 -5622-6571 5924--2822 4637--3752 422-5489 6843--3884 2022--3026 4326-2304 -6161-1784 -5984-3364 -6289-7592 -4119-6404 -5113-5583 6773-4985 -5898-9556 -991-5916 -5424--3560 -251--469 -4410-6439 -5089--2675 -1945-4896 7268-8934 3013--3911 1678-6030 -5357-1561 7895--3618 -76-2079 8008--3395 3649--3736 352-2846 -6272--2853 4593--3908 1556-5648 6724-5328 6961-2863 -6274-9585 -881--273 7082-7709 -4000-4031 7757-5524 6817--2258 -2519-1361 -5775-3236 -6298-8898 3078--945 6615-9614 -764-8853 -2558-3978 7779--3815 747-8257 -3392-5317 6969-3798 7849-1268 -5721-7159 5340-9728 -87--448 -4429--3090 4217--3704 2851-3784 -6233-2012 -6075-9733 237-2745 8063-9087 -2139-5461 -5680-366 7448--3882 2037-9669 846-4377 -6098--2682 4832--3370 3698-9579 1346-9691 667-9016 2861-8543 3653--3388 -691-6666 5833-3473 -6279--1180 -3729-1183 7786-4266 -6127--89 7192-8888 -2499--1727 -3154--726 -4173-1744 -5967-7137 -4550-2145 -6117-1549 -5876-7920 -3777--3725 2774-5-0 0-0 40-10 55-20 40-20 0-1000-29 9998-29 -9998--29 9998--29 -9998-9998 29-9998 -29--9998 29--9998 -29-59 9998-59 -9998--59 9998--59 -9998-9998 59-9998 -59--9998 59--9998 -59-89 9998-89 -9998--89 9998--89 -9998-9998 89-9998 -89--9998 89--9998 -89-119 9998-119 -9998--119 9998--119 -9998-9998 119-9998 -119--9998 119--9998 -119-149 9997-149 -9997--149 9997--149 -9997-9997 149-9997 -149--9997 149--9997 -149-179 9997-179 -9997--179 9997--179 -9997-9997 179-9997 -179--9997 179--9997 -179-209 9996-209 -9996--209 9996--209 -9996-9996 209-9996 -209--9996 209--9996 -209-239 9996-239 -9996--239 9996--239 -9996-9996 239-9996 -239--9996 239--9996 -239-269 9995-269 -9995--269 9995--269 -9995-9995 269-9995 -269--9995 269--9995 -269-299 9994-299 -9994--299 9994--299 -9994-9994 299-9994 -299--9994 299--9994 -299-329 9993-329 -9993--329 9993--329 -9993-9993 329-9993 -329--9993 329--9993 -329-359 9992-359 -9992--359 9992--359 -9992-9992 359-9992 -359--9992 359--9992 -359-389 9991-389 -9991--389 9991--389 -9991-9991 389-9991 -389--9991 389--9991 -389-419 9990-419 -9990--419 9990--419 -9990-9990 419-9990 -419--9990 419--9990 -419-449 9988-449 -9988--449 9988--449 -9988-9988 449-9988 -449--9988 449--9988 -449-479 9987-479 -9987--479 9987--479 -9987-9987 479-9987 -479--9987 479--9987 -479-509 9985-509 -9985--509 9985--509 -9985-9985 509-9985 -509--9985 509--9985 -509-539 9984-539 -9984--539 9984--539 -9984-9984 539-9984 -539--9984 539--9984 -539-569 9982-569 -9982--569 9982--569 -9982-9982 569-9982 -569--9982 569--9982 -569-599 9981-599 -9981--599 9981--599 -9981-9981 599-9981 -599--9981 599--9981 -599-629 9979-629 -9979--629 9979--629 -9979-9979 629-9979 -629--9979 629--9979 -629-659 9977-659 -9977--659 9977--659 -9977-9977 659-9977 -659--9977 659--9977 -659-689 9975-689 -9975--689 9975--689 -9975-9975 689-9975 -689--9975 689--9975 -689-719 9973-719 -9973--719 9973--719 -9973-9973 719-9973 -719--9973 719--9973 -719-749 9970-749 -9970--749 9970--749 -9970-9970 749-9970 -749--9970 749--9970 -749-779 9968-779 -9968--779 9968--779 -9968-9968 779-9968 -779--9968 779--9968 -779-809 9966-809 -9966--809 9966--809 -9966-9966 809-9966 -809--9966 809--9966 -809-838 9963-838 -9963--838 9963--838 -9963-9963 838-9963 -838--9963 838--9963 -838-868 9961-868 -9961--868 9961--868 -9961-9961 868-9961 -868--9961 868--9961 -868-898 9958-898 -9958--898 9958--898 -9958-9958 898-9958 -898--9958 898--9958 -898-928 9955-928 -9955--928 9955--928 -9955-9955 928-9955 -928--9955 928--9955 -928-958 9952-958 -9952--958 9952--958 -9952-9952 958-9952 -958--9952 958--9952 -958-988 9950-988 -9950--988 9950--988 -9950-9950 988-9950 -988--9950 988--9950 -988-1018 9947-1018 -9947--1018 9947--1018 -9947-9947 1018-9947 -1018--9947 1018--9947 -1018-1047 9943-1047 -9943--1047 9943--1047 -9943-9943 1047-9943 -1047--9943 1047--9943 -1047-1077 9940-1077 -9940--1077 9940--1077 -9940-9940 1077-9940 -1077--9940 1077--9940 -1077-1107 9937-1107 -9937--1107 9937--1107 -9937-9937 1107-9937 -1107--9937 1107--9937 -1107-1137 9934-1137 -9934--1137 9934--1137 -9934-9934 1137-9934 -1137--9934 1137--9934 -1137-1167 9930-1167 -9930--1167 9930--1167 -9930-9930 1167-9930 -1167--9930 1167--9930 -1167-1197 9927-1197 -9927--1197 9927--1197 -9927-9927 1197-9927 -1197--9927 1197--9927 -1197-1226 9923-1226 -9923--1226 9923--1226 -9923-9923 1226-9923 -1226--9923 1226--9923 -1226-1256 9919-1256 -9919--1256 9919--1256 -9919-9919 1256-9919 -1256--9919 1256--9919 -1256-1286 9915-1286 -9915--1286 9915--1286 -9915-9915 1286-9915 -1286--9915 1286--9915 -1286-1316 9912-1316 -9912--1316 9912--1316 -9912-9912 1316-9912 -1316--9912 1316--9912 -1316-1345 9908-1345 -9908--1345 9908--1345 -9908-9908 1345-9908 -1345--9908 1345--9908 -1345-1375 9903-1375 -9903--1375 9903--1375 -9903-9903 1375-9903 -1375--9903 1375--9903 -1375-1405 9899-1405 -9899--1405 9899--1405 -9899-9899 1405-9899 -1405--9899 1405--9899 -1405-1434 9895-1434 -9895--1434 9895--1434 -9895-9895 1434-9895 -1434--9895 1434--9895 -1434-1464 9891-1464 -9891--1464 9891--1464 -9891-9891 1464-9891 -1464--9891 1464--9891 -1464-1494 9886-1494 -9886--1494 9886--1494 -9886-9886 1494-9886 -1494--9886 1494--9886 -1494-1523 9882-1523 -9882--1523 9882--1523 -9882-9882 1523-9882 -1523--9882 1523--9882 -1523-1553 9877-1553 -9877--1553 9877--1553 -9877-9877 1553-9877 -1553--9877 1553--9877 -1553-1583 9872-1583 -9872--1583 9872--1583 -9872-9872 1583-9872 -1583--9872 1583--9872 -1583-1612 9868-1612 -9868--1612 9868--1612 -9868-9868 1612-9868 -1612--9868 1612--9868 -1612-1642 9863-1642 -9863--1642 9863--1642 -9863-9863 1642-9863 -1642--9863 1642--9863 -1642-1671 9858-1671 -9858--1671 9858--1671 -9858-9858 1671-9858 -1671--9858 1671--9858 -1671-1701 9853-1701 -9853--1701 9853--1701 -9853-9853 1701-9853 -1701--9853 1701--9853 -1701-1731 9848-1731 -9848--1731 9848--1731 -9848-9848 1731-9848 -1731--9848 1731--9848 -1731-1760 9842-1760 -9842--1760 9842--1760 -9842-9842 1760-9842 -1760--9842 1760--9842 -1760-1790 9837-1790 -9837--1790 9837--1790 -9837-9837 1790-9837 -1790--9837 1790--9837 -1790-1819 9832-1819 -9832--1819 9832--1819 -9832-9832 1819-9832 -1819--9832 1819--9832 -1819-1849 9826-1849 -9826--1849 9826--1849 -9826-9826 1849-9826 -1849--9826 1849--9826 -1849-1878 9820-1878 -9820--1878 9820--1878 -9820-9820 1878-9820 -1878--9820 1878--9820 -1878-1908 9815-1908 -9815--1908 9815--1908 -9815-9815 1908-9815 -1908--9815 1908--9815 -1908-1937 9809-1937 -9809--1937 9809--1937 -9809-9809 1937-9809 -1937--9809 1937--9809 -1937-1966 9803-1966 -9803--1966 9803--1966 -9803-9803 1966-9803 -1966--9803 1966--9803 -1966-1996 9797-1996 -9797--1996 9797--1996 -9797-9797 1996-9797 -1996--9797 1996--9797 -1996-2025 9791-2025 -9791--2025 9791--2025 -9791-9791 2025-9791 -2025--9791 2025--9791 -2025-2055 9785-2055 -9785--2055 9785--2055 -9785-9785 2055-9785 -2055--9785 2055--9785 -2055-2084 9779-2084 -9779--2084 9779--2084 -9779-9779 2084-9779 -2084--9779 2084--9779 -2084-2113 9773-2113 -9773--2113 9773--2113 -9773-9773 2113-9773 -2113--9773 2113--9773 -2113-2143 9766-2143 -9766--2143 9766--2143 -9766-9766 2143-9766 -2143--9766 2143--9766 -2143-2172 9760-2172 -9760--2172 9760--2172 -9760-9760 2172-9760 -2172--9760 2172--9760 -2172-2201 9753-2201 -9753--2201 9753--2201 -9753-9753 2201-9753 -2201--9753 2201--9753 -2201-2230 9746-2230 -9746--2230 9746--2230 -9746-9746 2230-9746 -2230--9746 2230--9746 -2230-2260 9740-2260 -9740--2260 9740--2260 -9740-9740 2260-9740 -2260--9740 2260--9740 -2260-2289 9733-2289 -9733--2289 9733--2289 -9733-9733 2289-9733 -2289--9733 2289--9733 -2289-2318 9726-2318 -9726--2318 9726--2318 -9726-9726 2318-9726 -2318--9726 2318--9726 -2318-2347 9719-2347 -9719--2347 9719--2347 -9719-9719 2347-9719 -2347--9719 2347--9719 -2347-2376 9712-2376 -9712--2376 9712--2376 -9712-9712 2376-9712 -2376--9712 2376--9712 -2376-2405 9705-2405 -9705--2405 9705--2405 -9705-9705 2405-9705 -2405--9705 2405--9705 -2405-2435 9697-2435 -9697--2435 9697--2435 -9697-9697 2435-9697 -2435--9697 2435--9697 -2435-2464 9690-2464 -9690--2464 9690--2464 -9690-9690 2464-9690 -2464--9690 2464--9690 -2464-2493 9683-2493 -9683--2493 9683--2493 -9683-9683 2493-9683 -2493--9683 2493--9683 -2493-2522 9675-2522 -9675--2522 9675--2522 -9675-9675 2522-9675 -2522--9675 2522--9675 -2522-2551 9668-2551 -9668--2551 9668--2551 -9668-9668 2551-9668 -2551--9668 2551--9668 -2551-2580 9660-2580 -9660--2580 9660--2580 -9660-9660 2580-9660 -2580--9660 2580--9660 -2580-2609 9652-2609 -9652--2609 9652--2609 -9652-9652 2609-9652 -2609--9652 2609--9652 -2609-2638 9644-2638 -9644--2638 9644--2638 -9644-9644 2638-9644 -2638--9644 2638--9644 -2638-2667 9636-2667 -9636--2667 9636--2667 -9636-9636 2667-9636 -2667--9636 2667--9636 -2667-2695 9628-2695 -9628--2695 9628--2695 -9628-9628 2695-9628 -2695--9628 2695--9628 -2695-2724 9620-2724 -9620--2724 9620--2724 -9620-9620 2724-9620 -2724--9620 2724--9620 -2724-2753 9612-2753 -9612--2753 9612--2753 -9612-9612 2753-9612 -2753--9612 2753--9612 -2753-2782 9604-2782 -9604--2782 9604--2782 -9604-9604 2782-9604 -2782--9604 2782--9604 -2782-2811 9595-2811 -9595--2811 9595--2811 -9595-9595 2811-9595 -2811--9595 2811--9595 -2811-2840 9587-2840 -9587--2840 9587--2840 -9587-9587 2840-9587 -2840--9587 2840--9587 -2840-2868 9578-2868 -9578--2868 9578--2868 -9578-9578 2868-9578 -2868--9578 2868--9578 -2868-2897 9569-2897 -9569--2897 9569--2897 -9569-9569 2897-9569 -2897--9569 2897--9569 -2897-2926 9561-2926 -9561--2926 9561--2926 -9561-9561 2926-9561 -2926--9561 2926--9561 -2926-2954 9552-2954 -9552--2954 9552--2954 -9552-9552 2954-9552 -2954--9552 2954--9552 -2954-2983 9543-2983 -9543--2983 9543--2983 -9543-9543 2983-9543 -2983--9543 2983--9543 -2983-3012 9534-3012 -9534--3012 9534--3012 -9534-9534 3012-9534 -3012--9534 3012--9534 -3012-3040 9525-3040 -9525--3040 9525--3040 -9525-9525 3040-9525 -3040--9525 3040--9525 -3040-3069 9516-3069 -9516--3069 9516--3069 -9516-9516 3069-9516 -3069--9516 3069--9516 -3069-3097 9507-3097 -9507--3097 9507--3097 -9507-9507 3097-9507 -3097--9507 3097--9507 -3097-3126 9497-3126 -9497--3126 9497--3126 -9497-9497 3126-9497 -3126--9497 3126--9497 -3126-3154 9488-3154 -9488--3154 9488--3154 -9488-9488 3154-9488 -3154--9488 3154--9488 -3154-3183 9478-3183 -9478--3183 9478--3183 -9478-9478 3183-9478 -3183--9478 3183--9478 -3183-3211 9469-3211 -9469--3211 9469--3211 -9469-9469 3211-9469 -3211--9469 3211--9469 -3211-3240 9459-3240 -9459--3240 9459--3240 -9459-9459 3240-9459 -3240--9459 3240--9459 -3240-3268 9449-3268 -9449--3268 9449--3268 -9449-9449 3268-9449 -3268--9449 3268--9449 -3268-3296 9439-3296 -9439--3296 9439--3296 -9439-9439 3296-9439 -3296--9439 3296--9439 -3296-3325 9429-3325 -9429--3325 9429--3325 -9429-9429 3325-9429 -3325--9429 3325--9429 -3325-3353 9419-3353 -9419--3353 9419--3353 -9419-9419 3353-9419 -3353--9419 3353--9419 -3353-3381 9409-3381 -9409--3381 9409--3381 -9409-9409 3381-9409 -3381--9409 3381--9409 -3381-3409 9399-3409 -9399--3409 9399--3409 -9399-9399 3409-9399 -3409--9399 3409--9399 -3409-3438 9389-3438 -9389--3438 9389--3438 -9389-9389 3438-9389 -3438--9389 3438--9389 -3438-3466 9378-3466 -9378--3466 9378--3466 -9378-9378 3466-9378 -3466--9378 3466--9378 -3466-3494 9368-3494 -9368--3494 9368--3494 -9368-9368 3494-9368 -3494--9368 3494--9368 -3494-3522 9358-3522 -9358--3522 9358--3522 -9358-9358 3522-9358 -3522--9358 3522--9358 -3522-3550 9347-3550 -9347--3550 9347--3550 -9347-9347 3550-9347 -3550--9347 3550--9347 -3550-3578 9336-3578 -9336--3578 9336--3578 -9336-9336 3578-9336 -3578--9336 3578--9336 -3578-3606 9325-3606 -9325--3606 9325--3606 -9325-9325 3606-9325 -3606--9325 3606--9325 -3606-3634 9315-3634 -9315--3634 9315--3634 -9315-9315 3634-9315 -3634--9315 3634--9315 -3634-7072 7072-7072 -7072--7072 7072--7072 -7072-0 9999-0 -9999-9999 0--9999 0-1000-4846 8746-4846 -8746--4846 8746--4846 -8746-8746 4846-8746 -4846--8746 4846--8746 -4846-4899 8717-4899 -8717--4899 8717--4899 -8717-8717 4899-8717 -4899--8717 4899--8717 -4899-4951 8688-4951 -8688--4951 8688--4951 -8688-8688 4951-8688 -4951--8688 4951--8688 -4951-5003 8658-5003 -8658--5003 8658--5003 -8658-8658 5003-8658 -5003--8658 5003--8658 -5003-5055 8628-5055 -8628--5055 8628--5055 -8628-8628 5055-8628 -5055--8628 5055--8628 -5055-5107 8597-5107 -8597--5107 8597--5107 -8597-8597 5107-8597 -5107--8597 5107--8597 -5107-5158 8566-5158 -8566--5158 8566--5158 -8566-8566 5158-8566 -5158--8566 5158--8566 -5158-5209 8535-5209 -8535--5209 8535--5209 -8535-8535 5209-8535 -5209--8535 5209--8535 -5209-5260 8504-5260 -8504--5260 8504--5260 -8504-8504 5260-8504 -5260--8504 5260--8504 -5260-5311 8472-5311 -8472--5311 8472--5311 -8472-8472 5311-8472 -5311--8472 5311--8472 -5311-5362 8440-5362 -8440--5362 8440--5362 -8440-8440 5362-8440 -5362--8440 5362--8440 -5362-5413 8408-5413 -8408--5413 8408--5413 -8408-8408 5413-8408 -5413--8408 5413--8408 -5413-5463 8375-5463 -8375--5463 8375--5463 -8375-8375 5463-8375 -5463--8375 5463--8375 -5463-5513 8342-5513 -8342--5513 8342--5513 -8342-8342 5513-8342 -5513--8342 5513--8342 -5513-5563 8309-5563 -8309--5563 8309--5563 -8309-8309 5563-8309 -5563--8309 5563--8309 -5563-5613 8275-5613 -8275--5613 8275--5613 -8275-8275 5613-8275 -5613--8275 5613--8275 -5613-5662 8242-5662 -8242--5662 8242--5662 -8242-8242 5662-8242 -5662--8242 5662--8242 -5662-5712 8207-5712 -8207--5712 8207--5712 -8207-8207 5712-8207 -5712--8207 5712--8207 -5712-5761 8173-5761 -8173--5761 8173--5761 -8173-8173 5761-8173 -5761--8173 5761--8173 -5761-5810 8138-5810 -8138--5810 8138--5810 -8138-8138 5810-8138 -5810--8138 5810--8138 -5810-5859 8103-5859 -8103--5859 8103--5859 -8103-8103 5859-8103 -5859--8103 5859--8103 -5859-5907 8068-5907 -8068--5907 8068--5907 -8068-8068 5907-8068 -5907--8068 5907--8068 -5907-5955 8032-5955 -8032--5955 8032--5955 -8032-8032 5955-8032 -5955--8032 5955--8032 -5955-6003 7997-6003 -7997--6003 7997--6003 -7997-7997 6003-7997 -6003--7997 6003--7997 -6003-6051 7960-6051 -7960--6051 7960--6051 -7960-7960 6051-7960 -6051--7960 6051--7960 -6051-6099 7924-6099 -7924--6099 7924--6099 -7924-7924 6099-7924 -6099--7924 6099--7924 -6099-6146 7887-6146 -7887--6146 7887--6146 -7887-7887 6146-7887 -6146--7887 6146--7887 -6146-6194 7850-6194 -7850--6194 7850--6194 -7850-7850 6194-7850 -6194--7850 6194--7850 -6194-6241 7813-6241 -7813--6241 7813--6241 -7813-7813 6241-7813 -6241--7813 6241--7813 -6241-6287 7775-6287 -7775--6287 7775--6287 -7775-7775 6287-7775 -6287--7775 6287--7775 -6287-6334 7737-6334 -7737--6334 7737--6334 -7737-7737 6334-7737 -6334--7737 6334--7737 -6334-6380 7699-6380 -7699--6380 7699--6380 -7699-7699 6380-7699 -6380--7699 6380--7699 -6380-6426 7661-6426 -7661--6426 7661--6426 -7661-7661 6426-7661 -6426--7661 6426--7661 -6426-6472 7622-6472 -7622--6472 7622--6472 -7622-7622 6472-7622 -6472--7622 6472--7622 -6472-6518 7583-6518 -7583--6518 7583--6518 -7583-7583 6518-7583 -6518--7583 6518--7583 -6518-6563 7544-6563 -7544--6563 7544--6563 -7544-7544 6563-7544 -6563--7544 6563--7544 -6563-6608 7504-6608 -7504--6608 7504--6608 -7504-7504 6608-7504 -6608--7504 6608--7504 -6608-6653 7465-6653 -7465--6653 7465--6653 -7465-7465 6653-7465 -6653--7465 6653--7465 -6653-6698 7425-6698 -7425--6698 7425--6698 -7425-7425 6698-7425 -6698--7425 6698--7425 -6698-6742 7384-6742 -7384--6742 7384--6742 -7384-7384 6742-7384 -6742--7384 6742--7384 -6742-6787 7344-6787 -7344--6787 7344--6787 -7344-7344 6787-7344 -6787--7344 6787--7344 -6787-6831 7303-6831 -7303--6831 7303--6831 -7303-7303 6831-7303 -6831--7303 6831--7303 -6831-6874 7262-6874 -7262--6874 7262--6874 -7262-7262 6874-7262 -6874--7262 6874--7262 -6874-6918 7220-6918 -7220--6918 7220--6918 -7220-7220 6918-7220 -6918--7220 6918--7220 -6918-6961 7179-6961 -7179--6961 7179--6961 -7179-7179 6961-7179 -6961--7179 6961--7179 -6961-7004 7137-7004 -7137--7004 7137--7004 -7137-7137 7004-7137 -7004--7137 7004--7137 -7004-7046 7095-7046 -7095--7046 7095--7046 -7095-7095 7046-7095 -7046--7095 7046--7095 -7046-7089 7052-7089 -7052--7089 7052--7089 -7052-7052 7089-7052 -7089--7052 7089--7052 -7089-7131 7009-7131 -7009--7131 7009--7131 -7009-7009 7131-7009 -7131--7009 7131--7009 -7131-7173 6967-7173 -6967--7173 6967--7173 -6967-6967 7173-6967 -7173--6967 7173--6967 -7173-7215 6923-7215 -6923--7215 6923--7215 -6923-6923 7215-6923 -7215--6923 7215--6923 -7215-7256 6880-7256 -6880--7256 6880--7256 -6880-6880 7256-6880 -7256--6880 7256--6880 -7256-7297 6836-7297 -6836--7297 6836--7297 -6836-6836 7297-6836 -7297--6836 7297--6836 -7297-7338 6792-7338 -6792--7338 6792--7338 -6792-6792 7338-6792 -7338--6792 7338--6792 -7338-7379 6748-7379 -6748--7379 6748--7379 -6748-6748 7379-6748 -7379--6748 7379--6748 -7379-7419 6704-7419 -6704--7419 6704--7419 -6704-6704 7419-6704 -7419--6704 7419--6704 -7419-7459 6659-7459 -6659--7459 6659--7459 -6659-6659 7459-6659 -7459--6659 7459--6659 -7459-7499 6614-7499 -6614--7499 6614--7499 -6614-6614 7499-6614 -7499--6614 7499--6614 -7499-7539 6569-7539 -6569--7539 6569--7539 -6569-6569 7539-6569 -7539--6569 7539--6569 -7539-7578 6524-7578 -6524--7578 6524--7578 -6524-6524 7578-6524 -7578--6524 7578--6524 -7578-7617 6478-7617 -6478--7617 6478--7617 -6478-6478 7617-6478 -7617--6478 7617--6478 -7617-7656 6432-7656 -6432--7656 6432--7656 -6432-6432 7656-6432 -7656--6432 7656--6432 -7656-7694 6386-7694 -6386--7694 6386--7694 -6386-6386 7694-6386 -7694--6386 7694--6386 -7694-7732 6340-7732 -6340--7732 6340--7732 -6340-6340 7732-6340 -7732--6340 7732--6340 -7732-7770 6294-7770 -6294--7770 6294--7770 -6294-6294 7770-6294 -7770--6294 7770--6294 -7770-7808 6247-7808 -6247--7808 6247--7808 -6247-6247 7808-6247 -7808--6247 7808--6247 -7808-7845 6200-7845 -6200--7845 6200--7845 -6200-6200 7845-6200 -7845--6200 7845--6200 -7845-7882 6153-7882 -6153--7882 6153--7882 -6153-6153 7882-6153 -7882--6153 7882--6153 -7882-7919 6105-7919 -6105--7919 6105--7919 -6105-6105 7919-6105 -7919--6105 7919--6105 -7919-7956 6058-7956 -6058--7956 6058--7956 -6058-6058 7956-6058 -7956--6058 7956--6058 -7956-7992 6010-7992 -6010--7992 6010--7992 -6010-6010 7992-6010 -7992--6010 7992--6010 -7992-8028 5962-8028 -5962--8028 5962--8028 -5962-5962 8028-5962 -8028--5962 8028--5962 -8028-8063 5914-8063 -5914--8063 5914--8063 -5914-5914 8063-5914 -8063--5914 8063--5914 -8063-8099 5865-8099 -5865--8099 5865--8099 -5865-5865 8099-5865 -8099--5865 8099--5865 -8099-8134 5816-8134 -5816--8134 5816--8134 -5816-5816 8134-5816 -8134--5816 8134--5816 -8134-8168 5767-8168 -5767--8168 5767--8168 -5767-5767 8168-5767 -8168--5767 8168--5767 -8168-8203 5718-8203 -5718--8203 5718--8203 -5718-5718 8203-5718 -8203--5718 8203--5718 -8203-8237 5669-8237 -5669--8237 5669--8237 -5669-5669 8237-5669 -8237--5669 8237--5669 -8237-8271 5619-8271 -5619--8271 5619--8271 -5619-5619 8271-5619 -8271--5619 8271--5619 -8271-8304 5570-8304 -5570--8304 5570--8304 -5570-5570 8304-5570 -8304--5570 8304--5570 -8304-8338 5520-8338 -5520--8338 5520--8338 -5520-5520 8338-5520 -8338--5520 8338--5520 -8338-8371 5470-8371 -5470--8371 5470--8371 -5470-5470 8371-5470 -8371--5470 8371--5470 -8371-8403 5419-8403 -5419--8403 5419--8403 -5419-5419 8403-5419 -8403--5419 8403--5419 -8403-8436 5369-8436 -5369--8436 5369--8436 -5369-5369 8436-5369 -8436--5369 8436--5369 -8436-8468 5318-8468 -5318--8468 5318--8468 -5318-5318 8468-5318 -8468--5318 8468--5318 -8468-8500 5267-8500 -5267--8500 5267--8500 -5267-5267 8500-5267 -8500--5267 8500--5267 -8500-8531 5216-8531 -5216--8531 5216--8531 -5216-5216 8531-5216 -8531--5216 8531--5216 -8531-8562 5165-8562 -5165--8562 5165--8562 -5165-5165 8562-5165 -8562--5165 8562--5165 -8562-8593 5113-8593 -5113--8593 5113--8593 -5113-5113 8593-5113 -8593--5113 8593--5113 -8593-8624 5062-8624 -5062--8624 5062--8624 -5062-5062 8624-5062 -8624--5062 8624--5062 -8624-8654 5010-8654 -5010--8654 5010--8654 -5010-5010 8654-5010 -8654--5010 8654--5010 -8654-8684 4958-8684 -4958--8684 4958--8684 -4958-4958 8684-4958 -8684--4958 8684--4958 -8684-8713 4906-8713 -4906--8713 4906--8713 -4906-4906 8713-4906 -8713--4906 8713--4906 -8713-8743 4853-8743 -4853--8743 4853--8743 -4853-4853 8743-4853 -8743--4853 8743--4853 -8743-8772 4801-8772 -4801--8772 4801--8772 -4801-4801 8772-4801 -8772--4801 8772--4801 -8772-8800 4748-8800 -4748--8800 4748--8800 -4748-4748 8800-4748 -8800--4748 8800--4748 -8800-8828 4695-8828 -4695--8828 4695--8828 -4695-4695 8828-4695 -8828--4695 8828--4695 -8828-8857 4642-8857 -4642--8857 4642--8857 -4642-4642 8857-4642 -8857--4642 8857--4642 -8857-8884 4589-8884 -4589--8884 4589--8884 -4589-4589 8884-4589 -8884--4589 8884--4589 -8884-8912 4535-8912 -4535--8912 4535--8912 -4535-4535 8912-4535 -8912--4535 8912--4535 -8912-8939 4482-8939 -4482--8939 4482--8939 -4482-4482 8939-4482 -8939--4482 8939--4482 -8939-8965 4428-8965 -4428--8965 4428--8965 -4428-4428 8965-4428 -8965--4428 8965--4428 -8965-8992 4374-8992 -4374--8992 4374--8992 -4374-4374 8992-4374 -8992--4374 8992--4374 -8992-9018 4320-9018 -4320--9018 4320--9018 -4320-4320 9018-4320 -9018--4320 9018--4320 -9018-9044 4266-9044 -4266--9044 4266--9044 -4266-4266 9044-4266 -9044--4266 9044--4266 -9044-9069 4212-9069 -4212--9069 4212--9069 -4212-4212 9069-4212 -9069--4212 9069--4212 -9069-9094 4157-9094 -4157--9094 4157--9094 -4157-4157 9094-4157 -9094--4157 9094--4157 -9094-9119 4103-9119 -4103--9119 4103--9119 -4103-4103 9119-4103 -9119--4103 9119--4103 -9119-9143 4048-9143 -4048--9143 4048--9143 -4048-4048 9143-4048 -9143--4048 9143--4048 -9143-9168 3993-9168 -3993--9168 3993--9168 -3993-3993 9168-3993 -9168--3993 9168--3993 -9168-9191 3938-9191 -3938--9191 3938--9191 -3938-3938 9191-3938 -9191--3938 9191--3938 -9191-9215 3883-9215 -3883--9215 3883--9215 -3883-3883 9215-3883 -9215--3883 9215--3883 -9215-9238 3827-9238 -3827--9238 3827--9238 -3827-3827 9238-3827 -9238--3827 9238--3827 -9238-9261 3772-9261 -3772--9261 3772--9261 -3772-3772 9261-3772 -9261--3772 9261--3772 -9261-9283 3716-9283 -3716--9283 3716--9283 -3716-3716 9283-3716 -9283--3716 9283--3716 -9283-9305 3660-9305 -3660--9305 3660--9305 -3660-3660 9305-3660 -9305--3660 9305--3660 -9305-9327 3604-9327 -3604--9327 3604--9327 -3604-3604 9327-3604 -9327--3604 9327--3604 -9327-9349 3548-9349 -3548--9349 3548--9349 -3548-3548 9349-3548 -9349--3548 9349--3548 -9349-9370 3492-9370 -3492--9370 3492--9370 -3492-3492 9370-3492 -9370--3492 9370--3492 -9370-9390 3436-9390 -3436--9390 3436--9390 -3436-3436 9390-3436 -9390--3436 9390--3436 -9390-9411 3380-9411 -3380--9411 3380--9411 -3380-3380 9411-3380 -9411--3380 9411--3380 -9411-9431 3323-9431 -3323--9431 3323--9431 -3323-3323 9431-3323 -9431--3323 9431--3323 -9431-9451 3266-9451 -3266--9451 3266--9451 -3266-3266 9451-3266 -9451--3266 9451--3266 -9451-9470 3210-9470 -3210--9470 3210--9470 -3210-3210 9470-3210 -9470--3210 9470--3210 -9470-9489 3153-9489 -3153--9489 3153--9489 -3153-3153 9489-3153 -9489--3153 9489--3153 -9489-3-0 0-16 0-32 0-3-0 0-48 32-80 0-4-0 64-64 64-64 0-0 0-16-0 0-0 16-16 16-32 16-32 0-16 0-48 16-48 0-48 32-32 32-16 32-0 32-0 48-16 48-32 48-48 48-5--16 0-16 16-16 -16--16 16--16 -16-1000-10000 -2356-6981 8859-4409 8531-1844 597-9041 -5238--8290 -3149--9627 -1520-455 1157--1073 -3309--966 3328--6731 24--8126 -539--1743 2912--6093 9130--1938 1366--263 3166-3283 -5063-8558 -7537--2638 2217-3064 -8687-5300 -6476-6443 5934-4732 -6494-7942 -5703-4580 -5352-7915 2582--485 4105--788 -8836--5959 -5535--1092 1619-8938 5815--1673 1810-1470 9362-6365 -2360-4518 -9353--6214 1857--3913 -6531--862 -8172--1790 7972-4850 3006-2689 594-3486 -6902--4102 -5843-9809 5974--6307 3577-6097 1871--8305 2948--3872 -5661-2697 -5722-122 -6460--6746 -396-7179 -8743--4643 9258-3667 8035-2129 -3035-6753 -2581--7041 -4329--1898 -3433--5005 -2829-217 871--5077 9715--4362 8931--9687 -7875-8761 3487-3188 2596--6175 -6817-4922 5745-833 -9288-6121 3428-691 3962-6958 -352--223 2408-157 -7304-8118 -5713--4855 -1835--6863 -5380-5392 8940--1821 -9211-2434 5--8328 7549-5325 5643--4616 2599--4670 6746-974 -5370--1299 1436-2413 -3988--9673 2294-8716 1245--1519 -5931-3451 -3237-8187 7463-8558 -3637--4432 7383-889 -5394-8264 3586--4732 9755--1698 -2453--2198 7626--2742 1617-9202 -8063-7409 3129-2130 -2538-6277 -525--979 -3395--2803 1444-2700 -8453--2180 2701--7915 4903-3774 3929-6880 -3379-5956 1236-3597 -3295--4532 -7664--7558 2124-6621 -2276--219 1283--4378 4412--3399 -2353--8012 -8110-2212 537--8101 -2606--5886 7968-4403 -6344--8013 -58--2332 -2165-8125 884-4424 9458-6965 937-5948 8054--953 -4275--3133 3108-1726 8051--6180 3158-6748 3714--2466 3783-7750 -9014--8952 -7199-8252 -7042--4327 -9437--2688 5482--7329 -8940-6855 144-4896 -4797--7870 -8721-5867 -5018--8670 5009-30 -5631-5342 -9715--2928 3831--1063 6780-3323 9346-6925 1807-295 -6902--9919 -4933--2416 8494-2009 1022-6660 9126--5914 -9506--7875 -8722--889 2505-8576 -8946-1362 1449-2489 1667--6629 -7899-5782 -7464--1377 3526--1169 1197--1890 8197--439 -420-3590 2410-2333 5430--8516 3194--5833 -6960-744 -1165--8388 -9267--4283 4087--6892 297-799 8068-3095 8574-2361 4403--9632 2566-1242 -4354-7637 311--8081 9358--8700 -8992--4389 -2833-3328 6889--3847 6121--1648 3596-1590 -379--5737 8116-3425 -6152-6127 -3356-6433 -5055-2728 -317--8110 -5458-2775 2917-247 -6818--9988 -8290--1339 8116-3677 5110--8254 -6334-9893 -2904--2966 2901--264 -7717-1205 7157--6979 9945-9521 -2022-311 392--8979 -9848--448 84-793 7499--3983 -5655--4990 2424-8408 -1548--6207 3824-8304 -9553-3441 -3189-9515 6564-7330 6232-7247 -6424--8704 7255--8910 5394--6609 3069-5482 -3536-3036 -9868--2348 -1526-9470 -647-1163 -19-3077 687--5632 -3364--5963 609-6134 8540--7108 18-7019 -9025--1976 5395-9070 2425-872 2301--897 2310--4262 7122-3406 -6149--2380 8147-536 -2480-7111 9066-1837 9658--1116 -8560--1320 900-366 3041-4293 -7729--3333 3828--3777 -3189-6492 -5821--463 -5553-9107 7879--9758 -2325-4827 2514--2794 -8294--963 -1745--2375 5223-5697 -3122-4240 -4193--6885 3868--6812 -6745--4280 5712-6177 3699--1408 9632-9292 4778--9208 3183--7677 -7018--6872 7919-1629 2971-9856 3006--4889 9579-4282 -2083--8682 -625--4580 9436-3334 5003-1094 8114-819 -84--823 9449--2516 7393-9443 6896-2839 3988--7400 3297-980 4093--8457 -9805-7019 4107--369 6058-6930 -6229--1706 2816--2454 -349-1302 -4451-7801 9694-6296 2535--1348 -3884-7067 8568-7843 -5741--9563 3045-2457 -2932--2349 2831--4254 3900--2005 -7106--8389 -6629-8789 6992-2014 7144--3419 6315--1387 -9761-5277 5765--2836 5186--8545 8251--4213 6709--8727 -5801--9997 8080-3478 4093-4599 -1613--5416 -2069-7554 -7765-9324 -1415--2975 6750--2678 -9928--8350 -9436--2717 1397--9514 -7786-771 -3755-9383 8705--7552 -4995-1869 5062-8514 -6279--1300 -4924-1486 8650-1480 4573--7898 -3766--6483 -7901-6368 3053--272 6006--4441 8097-3583 1600-1827 154--2919 3651-2846 9062--8174 -8232-5958 2691-2229 27--8887 1904-5820 -5179--5439 7026-5128 6635-5414 -293--947 -6129-8085 -8103-1764 1490--6624 1632-7071 -5943-9052 -8041--9712 -2299-9978 -8074-1976 -2808-526 -4156--1131 -9212-8058 984-3521 -4396-9 -8383-1159 7673-5736 7245-7376 4993--865 -62-3542 572--7842 -3323-9476 -5886--1795 -3449--9032 -4065-1649 1178--7179 7694-7085 -5800--6405 7847-1710 8605-2492 -1300--7823 -129-4825 -8516-6392 3319-4882 -1009--739 4659--972 8025--9194 -9363-4611 -3480-2839 8220-6993 -4473-8369 -4590--1378 5455-5231 5006-4928 -1012--1027 1039--1245 -6168-7694 8522--8450 5440-7783 9388--3037 1865-4387 -715--2396 3289--8772 -9151-6998 7411-4349 9178-6016 -3629-5781 9606-2169 -3008-3323 5544-4951 -6563--3505 5025--2747 -9244-9602 -1810-4379 -1972--6695 -4589-857 -9247-1635 -5747-7119 439-6905 -9354-1143 -1928--3761 -9405-577 -3405--4816 -8811--5277 -8140-9139 -4696-3569 1180-9930 -816--3635 5790-6274 -7702-8872 5213--8164 -7982--3214 8557--6018 -1327--3677 6645--9262 -7674--1962 -4075-1853 3763-9003 -4649--2185 -9397--1909 -3139-3851 4033-9644 1618--5285 -8757--8760 -8326-4521 8930--5758 -1360-9548 6501--9832 -4783--9569 7572--6733 6115--2629 6846-5526 3314-1650 -1709--5830 -3921--5075 -5148-1335 185--3714 6607--6158 -5077-1890 -5106--5019 -7947--1736 7733-7491 -414--9222 3675--8234 6733--7792 -7540--214 1761--7653 -9651--8554 -2987-4140 -6794--15 7773-5588 -9439-5002 -768-8215 6636-2468 1009--9894 -162-9216 9347--71 -3044-7138 737--6816 -4261-4186 1623-8274 746-1885 -7849--1402 7365--9228 3073-3383 9740--9054 6230-1187 -3247-7621 -9249-1467 9177-6817 1256-2307 9459-5003 2539--325 -4172--9327 8018-7177 -1402-379 -2069--8353 -1957--3559 6131--3354 -9470--526 8583--8102 5075--9571 -3449--1555 -4497--3832 2637--5150 5889--7273 -7275-8205 5312--7102 2534--6140 8336-3017 -9461--5870 -5440--9897 8630-2785 7556-6658 -2012-527 719--5509 -1925-8479 -4308--8579 -1155-1429 -6343--9006 9986--14 -915-6558 9889--8016 -3851-8280 2059--8597 7705--8648 854--147 3300--8557 -6858-2696 -4734--9474 -556-2823 6026-6131 816--5818 -4918-8300 -1073--2083 -1890--1571 -8032-4298 -7896--2339 5635-7864 -4827-7142 -3549--626 -8622--3232 -358--7239 -7385--3623 -4070-3912 -3225--7980 -4068-7591 7745--1915 7282-1660 -5997--3267 6921-2214 -6573-6170 -3858--787 -3407-9844 -9423-4498 -5772-656 4438--3189 3323--5483 7320-8007 -499-1555 -2601-519 3629--3404 9761--6048 -818--9 -4116-5745 1957--515 7468--899 6588-7483 1667-500 -8448--4252 -1440-9710 876-24 8841--9446 -6842--6366 -5663--9551 380--1581 7329-7369 3827--5333 -8035-8399 -791--4666 9710--4566 -5183--7104 -7591--9757 -5698-9509 3824-8831 2595-1694 1837--8560 -9336-7745 4453-8751 8331-454 -4807--9378 1598-3906 7569--6730 6977--2841 -3122-6009 -9803--6142 -8705-6565 2495-8253 -2708--5627 -5361--9052 -6771-6286 9993--3649 -4308--3794 5595-869 -2938--8439 -6479-2038 -298-7061 1416--8551 2999-7249 9209--250 1272--2148 8668-5732 3076-6413 5845-8713 8631--5976 -4371-7237 -3952--2337 4673--6293 4146--4703 -8772-3591 -2386--1490 -7689-5394 9213--9430 6558--8166 -4003--7722 -2437-5497 -5505-4703 8696-5302 -8551-8213 8768-7067 -728-8695 1044--3893 7704-3114 4603--1247 6812--6326 -8435--9951 2269-8179 3530-2613 -1462-1357 9740--9080 -6292--3424 -2256--1894 839--7185 8946-9985 7225--707 9134--7348 8628-9254 -1398--1932 4863--2569 8361-1223 2558-4016 1959--8887 8067--436 -643--4985 -3915-4382 -4017-1293 4304-229 2395--8635 4225-9054 4238--4922 25--8949 9263--5454 -7519-9992 3662--5453 547-531 -4828--686 5909--6598 -9715--6929 7492--2696 4383--1620 -411-1730 1258-1499 -1077--2946 -4396-6977 -4253--3735 -8106--6548 376--7970 1163-661 2865-2271 -8744-3578 -5474-2524 -1902--2057 4564--3012 3962-8092 -2625--1269 3585--8973 -9967--6309 7674--2609 3172-3584 8187-9468 2358--277 -402-2113 -9920-7456 6894-4664 2673-2745 -9901-5420 -6058-6246 8559--3852 -7402-1655 -2895-7804 -4426--3226 -2903-7949 3164-4261 -6516-4052 -3807--5619 -6554-6084 -5196-8956 5955--8373 7235-1567 9353--1323 1180-5139 5383--6608 7430--3304 -6596--5046 -154--9788 8152--115 8976--6706 1048-7842 2184-7867 -968--4803 -7226--2953 -4749-9903 9936--6541 6749-7686 5602-5698 -3948--9484 -6242-3711 -7593-7226 -3491--6114 -1962--5083 3283-8063 -9589--762 5176-7152 3279-3733 -2867--1944 4344-4428 -900--8723 -8383-272 4314-4988 8008--9998 701--4154 -5270-1584 -8882--576 -5483-9901 3616-9427 8872--1572 1199-4929 5214-1849 -7603--5435 6435--2919 1618--9481 2177--1705 -1152--6592 2715--9494 8558-1794 7336-9232 4463-1616 -4448--7547 2037--1610 -6599-8074 3276-7792 -6534-9330 -7141--5471 3762--3688 -9424-9920 -3861--2568 8802-260 4026--5103 1743--7701 -1029--7383 2792--5605 9161--191 -4989--5364 4523-8198 4288--9314 1588--3410 -2276-1399 1530--7958 -9008-3175 -5989--6579 -2109--7443 7267-2688 4639-9788 355--2351 -9217--6042 6566--7058 3053--5930 5074--4203 3174-7069 -6011-7416 7682--9322 -4355--4638 -4703-3332 4434--9622 8963--1545 3677-4118 -804-3224 -792-8325 3774-1040 -1009-259 3326-9091 561--985 -7471--1868 6525--4468 -2848-5318 -205-1684 5782--2573 8589-9661 -7048--6444 -4624--6965 -3743-1039 -7522-2890 4015--3304 2849--7994 -1460-2438 -1758-1827 -8269--7013 2423-2010 2298-7286 -641--574 2552--2575 5055-3906 201--8616 -1158-3822 1441-5250 622--9395 2002--1747 7271-666 1179-729 -9323-3272 -895-8582 -5941-2950 9488--9442 9458--3012 -438-5591 6536--860 -9542--4752 4905-7462 7388--374 8439--8333 -2701--5598 -473-2076 -7187--5632 7381-9611 -1853--8052 -8594-7206 8134-9891 4140--1611 -393--1897 6348--5826 4199--112 -9296--6011 282--8803 2679-5159 -9042--4620 8671-2143 1659--2116 6740--6032 -9817-165 8807--892 1994-2146 9077--9293 5862--7255 8076--6837 7246-8053 8484-1857 9100--2938 2421--2617 3772--5784 4362-4148 2044--9860 324--7644 1144--3213 4040--140 7107-9212 -4299-440 -6090-7400 -7147--4850 -6436-7219 -4821--4377 944-1873 5593--1934 8206-5274 -1645--7918 -2362-5280 6073-9061 -1356--8296 -4880-6185 2195-7113 -6376-735 -702-94 -7748-4286 296--7871 7444--1070 -2212--8551 1065--8005 -9876-8011 9568-2566 -4386--8836 4814-8021 2055-8322 -5733-8697 -8996-2814 -8245--1130 5396--6436 -726-9014 5574--3771 6739--6442 -2824--7349 -607-9346 8597-4123 5549-757 4646-2402 1857--8845 5570--6095 -8639--2428 -8365--5757 8317--6863 2980-2235 3941-263 -8606--238 3420--7054 4465--6755 3417--8409 -6111-4748 -3455--8014 1305--5989 -8370--9423 6053-4730 -6723--6636 -9600-8801 2457--7576 5396--8364 -612--2672 -4780-1772 -6581-7621 -4160--3413 1039--5843 -3005--3422 -7453--8873 -434-9676 -7854-5781 -4349--3385 6134-225 -2269-4526 5435--6987 -3809--3824 -757-7001 9230--6460 -6039--4766 -9685-4022 6082--7318 -6396--4595 -5039--6294 8186--9333 -4121--9179 -6694-5980 -9519-8059 506--4361 -8392--6479 -9618--174 -419--9279 -9731--7497 9815-8092 8076--5842 -1780-8612 1158--6232 9847-6620 4820--8070 -6862-3457 -3720-4085 -1288-2447 4106--8513 -8356--6510 -1570-2435 -8635--8709 -9145-5143 3105--3723 4499-5974 -9010-2618 2654-7545 -5626-7385 4048--9865 -202-6445 -1856--7377 9810-692 -7832--7950 2662-1980 6119-8657 -2183--5116 -2684-4612 8821--2595 4533-4454 -8621-162 8774-141 -7512-9398 -2558--8500 4880--19 2297--3744 -885--1564 119--5747 7141--5282 694--5943 -9870-1000--3022 6257-5891 4792-3603 -7011--1020 -6814-173 -334-9031 -2130-5113 540-6185 -3166--8600 1813--5748 -8661--2980 4223-5424 -8282-4460 2681-8393 -3562--6146 -162--1950 5370-4654 -2346-7585 -1465-7970 2754-4893 8448-1362 -5450--1739 7875--8840 -3232-6110 -9736-7936 -9426--2980 8364--6243 -1202-8890 -665--4770 4346-3946 -5168-1194 2739--9233 -3627-3853 -3961-5694 -69-4780 2204--2874 -2321--6475 -5453--4656 6346-1165 8960-3929 -9312--9805 -602--7674 6189-2357 9898-4933 89--3668 8522--1076 -9685--6669 5797--9886 387--726 -3721-303 3820--4043 7471--5387 4128--8359 -1436-9840 6300-4090 -3071-5978 -6965-9824 -8476-2962 -9719-1189 -3182--5106 -5524--4470 6664--6873 -7588-6523 9681--1676 -6930--8289 6286-1043 1240-6487 -8261--940 1875--8191 -1371-2828 4113--8478 6673--4477 -1797--1192 -3357-3756 5435--730 3355--7618 2539--2419 7137-8738 -528--8897 2075-422 -7997-808 -8194-890 8077-5080 348--627 -7231-1525 5276-9149 8428--9085 3805--4142 -2702--7492 -3898-5062 2031--4917 9089-641 2948-1870 -8092--1459 -4784--352 3908-9360 171-5185 1096--7253 -9197--8157 2393--3542 -6987--8376 -8441-2066 6971-651 640-3660 -255-7870 1616-1609 -2886-6613 -3058--1282 1026--1638 6071-2602 9713-8088 -6914-7187 -6716--2299 -8358-2808 -7449--8319 -1614--7632 8992--4275 2008--3735 8801--3449 4827--5868 2314--2367 6--2560 -992-3391 -764--7373 -8513--1369 6202-280 2376--6876 -921-2330 -1178-2676 9455-8454 1287-9110 9944-934 -8038--7226 -9578-8354 6349-4720 7267--460 -6236-689 4741--1977 -5288-605 -2998--4765 -9934--1988 5905--4157 2815--5852 -5555-729 -2181-5602 -1082--3693 -3170--2562 2007-2472 5030-8038 6761--4273 -9018-8207 8184-4367 -6570--5722 2342--3533 -3701-9731 -7953-9787 7175-1651 -9460-4719 -5317-5071 -4760--4341 -1604-3741 -7318-6602 9827-4997 -4708-8559 6657--750 -7121--4059 948-2102 -2150--2018 5704--4894 7714-9997 -2333--8933 4369-9647 -2140-2499 2400-8788 4328--4694 -1039--4861 -9661-2617 969-8159 3058--9885 3911--3292 -1849-4107 5716-7513 -4521-8310 -9386-4239 6497-7310 -1725--7181 7132--2594 8110-1262 4604-866 2853-1778 -7166-3542 7647--923 1227--8957 5005-2188 9670--5807 5437--4940 -6165--2029 -1703--4776 -3214-6380 532-5161 306-2644 -6187--9054 -4093--8482 -3463--2045 -9173-847 8080-2288 663-4061 -5589-2626 9596--7773 529--2533 -1874-3813 -2866-7444 3567--9144 -8147--5782 396--5643 3607-528 -6623-4422 -5079-1937 -5704--4366 -8526-4642 999-5096 7146-7887 1401--6871 9218-2471 -808-1689 -2906-6278 -148-1932 -491--2019 3554--7711 1625--771 1540-851 -6408--8485 -4979--1479 -5774-8157 838-8765 5092--44 9052--1363 -2510--6133 8550--8048 -7544-1302 -6843--2831 3487--638 -985-7017 2552-1510 1934--967 5393--7747 -1203--840 888--187 -5084-5068 -9701-5870 -9373--3680 -6779-3001 3687-3482 -4585--480 3238--9378 9649--2700 -5026--6010 -8046--2234 -76-1715 -733-2108 1318--5913 3554-1661 -790--5116 -5539-7531 6302--7469 5052-4144 -5-9112 -3542-7965 2931--7070 -8203-1012 3282-3128 -6443--4407 -5462--4340 8996--5016 -8591-1714 -6022-625 8202--1764 5883--7778 3182-4184 5500--2020 -1153--3121 8708--5185 -4442-3427 -627--169 4064--202 -2178--8161 -9199-5875 7538-1373 2649--3273 466--1936 -8043--3648 -1552-4906 4741--8360 -45-6125 1535--8606 -8100--3195 -4727-7050 1713--3429 6522-9061 -3152--633 7938-3428 -9369--1312 -6161-6940 -6485--8536 -3449-384 -5652--4342 -5586--8199 8961--1671 866-3813 -5769--9952 8227--4860 -7699-5136 6438-6349 8369--7929 -7677--4558 3757-154 -5434-4656 -9615-1135 -1047--5854 -6250--3063 -4909--254 -2617--7514 2965--9744 1775--1627 -6637-9897 -6068--8434 8016--1334 4321--9826 -5557--4933 535-529 5530--9787 -9333-5360 66--7810 -6984-6943 -9702-3190 -3569--6773 -4634-5377 4652-5679 -1307-8662 -6090-4482 -444-6767 -2621-4320 -8304--8742 8993--8730 -729-6512 -3737--782 -9542-4616 -2642-431 3231--9077 -4120-4149 -1379--7491 699-4465 2072-7016 -4235-6590 -4636-5015 -5287-6499 4916--165 3413-8982 -7154-3467 7016-6451 -6653-1748 -428--9273 9040--9005 -2776-1289 5569--8881 -9628--1533 2049--9638 -9842--4487 -726--1535 -5206-9162 8213-4883 -7201-2096 -2615--8966 -2458-7958 9658-4579 -3132-3635 3563-3848 -1908--6374 -5170-9605 -7343--3025 -5617-5616 -3914-6786 -5611--3977 6181--5721 1580--2619 7126--1453 83-999 -4721--6948 -4482--5067 6787--1748 -1518--2030 8948--4424 -882-9841 -4728--9838 3096-8928 1140--865 -1679-5603 5080-7886 6883-9406 -4126-990 -4094-5996 -5867-8108 -5653--1497 2745-9031 5503-1633 -7810--1193 -2498-5228 -7953-3609 -5048-2409 -848-7150 2083--4593 9297-3029 -8527-6255 -6849-9585 6283--4666 -8223--2347 -9268--6229 9697-4635 6598-7726 4587--4633 6877--3348 2975--289 334-6198 -9303-3427 8759--1314 6788-448 8505-4452 3578--6989 134--6201 -7027-1475 3208--5026 557--729 -9676--7157 -7635-5707 -703--1341 -8123--1879 9476-7927 6937--7297 -7911-1213 -9573-6666 3682-2884 -4181-5478 9740-5137 -162-1595 -9749-3953 -5481-9420 6146--3189 5437-3323 -1135-907 -1372--8489 -5482--2086 4342--261 -4113--7605 -8100-5786 -8063-6510 -7928--6027 -7743--5491 2746--2186 2546-4962 -7840--2102 -4339-9632 -2314--5981 1523-6324 -9107--2392 1927--6662 5419--7445 7864-2486 55--9022 -523-2596 6640--3176 -718--2063 -7147--2871 -6496-6452 123-5270 -9223-3398 3439--8687 -9848-5972 -7053--3810 7195--2809 666-5934 4811-2607 -3928--2809 2620--4243 2537-2206 2871--352 -416-8438 -1105-3039 1623-3304 7690--5219 1098--4262 -1624--3233 5249--399 -4181-9031 -8151-8759 7501-6051 3302--7080 3559--7087 -8551-4088 -4826--3887 9519-9932 -1072--6076 2955-1728 2533-6129 -1072--3777 -7101-9594 7476-1281 8823-4322 3671--6081 -9266-7005 36-8489 -9527-5757 -5549--9672 -9956--6822 -9397-8057 4431-6840 -3726--228 -7580--1030 5777-1514 -6419--5622 2617--3078 5731--6798 4868--3778 -2132--9368 9283-7280 9400-4902 -6691--6787 6372-3239 -5404--24 8379-5274 5414--3507 346--6667 3245--7067 -4058--3016 -406--1219 -7040--4635 -8815-5485 -3992-3997 3667-857 -7108-9759 -3580-7855 -5960--5209 8002-9349 809--6487 964-7893 -8140--8892 1894-7232 -4431--4968 1478-2842 -704--5402 7210-5748 6900-1828 -6963--7763 5918-875 -1932--5828 -3391--7439 7573-8142 -9404--8702 9188-145 376-9616 -5935-1611 -3763-8778 -301--4546 4841-4177 -984-7405 5951--831 7560--7262 5778--3390 7794-8319 6328--9628 8033-6638 -7436-5892 -5063-2353 4402-7658 8762--6473 -2061-180 -8599-7829 2423-9765 7366-1890 7154--5 -619--8875 -1320-1872 7493-1602 -2387-8209 7-1745 5850-4713 -1266-8067 -4661--3703 3674--8070 8579--9128 5480-7136 -8187-9587 7399-6023 6996--194 -4626-7287 194--4755 9244-8822 4452--7452 -4139--2043 -974-9757 9565--6260 -545-7962 -1091-2887 6804--7397 9310--931 5797-4899 2792--7457 -2258-4461 5820--1915 7292--264 940-6498 -2148--8485 5324-5263 -3126-8349 6036-5472 7802--3774 -2121--3079 7344--1251 7693--3984 -6450--2656 -5194-9552 2309--4247 9695-8203 9872-9373 -882-3567 8240--353 4618-3524 5367-8383 6875--5240 8238-5749 -7407-7139 7824-2779 9295--5886 -3898--5943 4244--9158 -6009-120 2937--8680 2143--4704 3185--5813 6448-4778 -1078-4048 1656-228 -8203-2811 -4843--5036 -2530-6013 9999-3360 8044-2897 -6695--7426 1351-1619 -3879-2028 4600-3467 2658--3938 -4027-2819 9096-7520 -621-2434 -9925--4096 4105--5482 -9007-3178 2951-8812 3624-7795 -4608--8785 7667--2725 -1169--9284 -2165--1533 8408-2339 8766-4159 -6411--1580 5777--8838 2541-893 -2091--4564 -5936-5919 7342-8587 -4406-6826 9153--2077 -3183-2560 9267-8095 -5595-8889 7475--8279 -2319--1037 3078-1898 -8009-9802 9167-3241 448-9396 -3070--8835 5985-7844 6769-9194 -7887-7265 -3749--6098 -5818-9026 6991--1185 -2549-8449 -2392--603 8782-6459 -967--2153 -8796-4386 -4083--6127 1078-421 9332--1509 5699--3571 8065--9154 4736--9398 993--7238 -5696--706 5946-8388 -3217--2497 -5064--3593 -547--1517 7984-4768 5369-6903 8674-9610 8799-1992 -7652--1544 -1166-6253 -6267-7693 -6443-932 4962--4086 -6563--4230 5001-6412 -6901--5240 -815-1393 6851-8300 6385--7281 8022-2723 3209--5429 -8660--9179 4417-1282 -1684-5691 6854--3771 -5667--4139 -7321--6010 1924--4395 7606-8957 -3924--3879 9420--6668 -9739-8394 1269--3063 -1655-1301 -4806--8173 1267-2369 6110-2960 -2345-9050 -8968-6085 6258-2463 -4728--4180 8615-6824 7670--6842 1195-5986 6565-2035 8227--2494 -8696--3595 -3098--1280 -5354--5507 -4375-8292 -5293-6678 -9153--6362 -4215-7582 422-1436 -8994--3065 -9618--8104 -2877-4786 1449--7416 -8785--757 -2979-5634 -572--9515 1631--3422 -1616--7679 -9843-9216 -9847--4658 -2761--536 7702--5918 1995--4093 8861-9735 -4535--4534 4426--5171 -385--8787 -9112-5255 7312-3671 -9697-9384 7046-255 -6858-8778 1142-4412 463-6147 1125-901 1738--2004 -8064-658 -8134--6252 6576--9053 -2233-6006 -5316-9359 5062--8092 -597-6569 -155--9457 9928-9721 -4464--7713 -3956--8376 9859--1668 -4116--8991 7463-6862 601--2445 -52-1977 9435-8399 6129-7652 -246-4327 -6434--5682 2139--3781 1044--1376 4543-3298 -5908-4561 -5487-4358 4039--2944 9730--8632 651--4791 -9158--3417 -7097--6372 8071-221 -6950--1268 -1179--3766 -5357--2407 -7438-8560 -5392-8817 -5074-5655 -6950-4239 -8922-8576 -7026--2948 8807--4337 -3867--4310 3182-5192 -3378--7491 -3839-3966 -965--3185 -133--4131 -9529--6999 -7619-5608 -9979--4713 -206--7622 -1187--4457 9707--2546 9316-6527 -3692--4839 -5428--7386 6119-3959 -1268-30 8755--9597 -5544--3682 2316--9418 -1271-5123 113-9923 2303--7332 -126--2387 -7445--5845 -9563--2127 9773--537 8535-2951 149-7647 1772--5661 -4919--5957 -616-5972 7505--6714 -8348--2128 -9042--8816 -91-434 2230--3705 -2812--2067 -322--8613 -4918-3788 7147--4936 -248--7499 -9360-1893 -1752--6165 -5904--6969 6958--4267 -2215-3476 3010-993 3163--1558 -3944-6008 -5459-1434 6250--3026 -4633--1565 1438-5585 -795-8776 -4120-3744 4389-9263 -7066--3738 -3602--4284 -8856--5349 2679--5351 -7997--1332 2610--6291 -7872--3668 -8542--6052 4817--804 7762-1379 -5219--986 269--6131 -8531--2326 -1631--9693 -7024--3830 -1518-8195 3385-8349 843--21 -8158-8758 8467--5402 -9887-6661 6333--1878 -2468-5734 496-9347 -4313--6163 -6107-3855 -4177--536 1241--3526 -31--1958 -8535-7278 5634-2557 -308--3796 7365--8197 -799--1487 -5345--9536 -3103-7558 -7704-5350 -3446--7807 -2234--6930 -3519--1370 9818-3197 465-8172 5711-2935 -7123-9610 -3431--2623 3195-9742 -840--9308 9440-4988 -3256--1997 -3266--6589 -7763-1222 -190-4902 -7027-7943 9008--926 9027--119 9917--8514 -9135--5869 -7110-5733 608--5510 -3987-8667 -2554--6008 4017--6782 -1368-6279 -6542--633 -1498--8014 -1727-6821 -475-6113 -4306-4516 -4802-2619 -2678--5623 -1033-8652 -350--2804 4599--4321 -9729-4466 -562-442 -6520--2813 8115-6648 7312-1133 4982--9992 -1927-3259 -4055--1988 -3109--2853 -9462--118 8628--6532 2957-7115 3566--4250 5793-7818 -6561-7450 8347--7957 8907--9081 7235--9699 2777--5630 425-336 -7209--3383 5962-2006 7290-4705 -2249--6634 -1581--8156 894-142 -4595--8956 -599--3386 -335-8522 -9804-8612 -3748--6081 -3216-8494 7380--3405 8910-5773 -9471-929 -8685--5432 1955--529 7879-1100 1767-795 -7727-7209 1339-8131 -9420--4148 -6178-3572 -4821--2426 3459--7168 -3437-7700 4166-1000--4730 -1055--4110 6891--341 6767--1126 -6613--4036 -1978-900 5745-3686 -4629--3437 -5183--2112 -2518-9228 9250-8867 -8288-1409 620-7605 -3370-8673 -5097--9498 -7352--7411 -991-6425 -1369-4211 -4633-5181 -5098-8159 -9956--2221 -9829-9093 -2634-3994 -1479--3735 -2909--4927 8245-1464 1012--5849 -9382-2139 8180-7439 -5696--6869 9781-6383 2973-7641 -287--7230 -1752--3020 -5973-1943 -5537--9260 8463--1587 -2302-5788 -6063-8838 3260-8644 1698-9006 5873--976 -7876-8718 7402-4521 -6762-4054 933-7935 -4603--3025 -7143--6681 -8291-8668 8938--3072 -9288-1997 3843-3171 -8405-1625 1284-6368 -4437--7431 6673--5080 -6451-3888 -5591-2547 -684-4039 7154--684 -6205-7908 -5534--4916 -5336--8190 -707-1043 1877--4319 -5572--9181 -4633--8002 7488--7690 2240-2622 5826-1270 -8740-880 -7929--3697 789-1696 -8363--9359 4769-3133 -9540-2060 6438--7835 4431--8777 3156-9151 -8843-6092 -2667-991 -6297-2138 -8959-8976 5908--9150 -7741--4380 -7509-910 -2399--3883 -9857-5131 744--1788 6188-8274 8241-6215 -1645-4314 514--8428 7337--956 6591--1341 3812--9693 -688-8723 9337--7527 5915-756 8494-9635 -9834-7900 6899--8574 5276-9055 -693--3188 -1882-4059 6154--2120 -4778--9891 -4715-3182 -8000--6454 -6031--1746 -5798--8666 7241-6048 1056--7633 -2025--3195 6165--4368 5587-7389 -550--5553 1799--9677 -6930-4853 5137-3630 9018--9966 -819-6900 -287--5972 4136--7664 -5737--1208 2567--1838 -4674--9268 -5971-2642 -6572-5174 3181-7440 3455--2279 -8151--8749 6619--338 -6259-5973 -5323--3248 3492-9666 9732-517 -3046--3366 -6854--9214 8799--7058 -3318-4043 -7889--7100 6423--812 3197-5311 3551--2291 -8859--9496 -6020-618 -8233--7699 3086--8296 8053-415 -8725-6337 8113--7760 1169--9425 8050--6431 -1303--138 -4215-4960 2325--3837 -4397-1228 -4626--6644 -8603--4663 -4231-8307 -4919--1266 2935-9350 -5045-1345 7390--6099 568--9322 3366-4230 5680--8691 -1699-4076 5983--8533 -4113-3412 -1090--3867 -9545--635 9613--5574 -2092--5369 9047--2378 9138-8921 -4676-8552 -8866--9870 7695-4002 5626--6014 4279-1111 -5681-7431 3770--9667 -6917--5288 -2069--6833 -390-9349 -4899-4619 2944--1337 -6965--3563 3399--8809 3190-7780 4838-2259 -2870-830 7797-8119 4990-8637 -7458--422 -4408-1059 1530-3452 8558--7955 -1627-7688 -389--7640 6441-9109 4647--3991 -421--4644 -3220--6864 -6183-3788 -5647-4522 -7100--4349 -5063-2626 -2744--222 -1610--5578 -1183--5079 -2006--6693 -8813-8560 -4160--8801 3564--2562 4458-3660 426-1885 -1075-5122 9425--9274 3602-7671 4503--4978 1916--6099 -5191-7524 -7174--2025 -6133--9995 -8553-4722 -1233--4763 1783--2357 -6967--8383 -6033--9852 -4516-9547 2601--6487 7688-9187 2953--8410 1044--7306 -6235-7417 -9931--4201 -9531--8959 -6939--3762 -6557-7695 968-4911 9758--3967 4838-9653 9101--5024 -7842-319 -4855--3221 1741-9906 -9484-9278 -3577--9005 -2838-1995 -1392-4470 3039--2266 8889--9273 9502-2040 6882-6879 3151--4532 2419-2469 -2629--76 -6932-2770 1372--5967 5995-4343 4497-6029 -3592--9298 5374-3596 603--1370 -8183-2297 8523--8586 -4085-6724 6646-350 1721--2624 2474--6569 9888-1550 -8153-4471 3765-7924 -3643--8167 1456--3799 -8489-569 5186--3486 -6251--2704 -5324--1175 -5569-1073 5854--4209 396-2071 7922--9127 8999-8191 5202-5404 8042--6593 -962--9045 -8138--3448 -784--865 2413--6403 9847--999 -7163--2363 -4584--7214 1056--737 -4516--2564 8281--3014 4734-5097 78--1376 -5251-62 -2291--8938 -1266--3154 -5707--1061 8091--9680 -8474--9550 9795--6490 -5998-1736 8088--2408 6269-4969 1148--8794 -5869-8268 -9334--5747 746--7260 -4706-7347 4350-9385 -6838-4690 -6446--5514 3503-5068 -1514-9134 -6431-8215 1364--9831 8368--4428 619--9540 -7299-8465 -2793-415 890-3649 8912--3765 -6872-7161 -2283-3278 -5047--1536 -1693--6151 -7531--9680 3444-9230 2705--9672 1595--6926 7251-4027 -6162--494 4024-7650 1880-1154 -7300--6406 -1026-9801 5232-4555 -9108--1139 -6494--3030 -9789--701 -2470-639 -6020--7477 4231--9553 6360-7639 5465--8445 1522-1881 1959--8975 6815--145 2479-9076 -8291--9879 7188--2812 5573-7825 -7450--2602 -687-1007 -9638-1921 2959-1994 3261-8055 5313--4561 2749--8235 6821--5377 -6348-7950 -9845-7346 -5642--8487 7298-4738 5016-1190 -2593--6986 5136--3571 9879--2100 7841-4922 -1649--7303 6841-9569 -9548--1424 6080-9573 8306-4299 -5825-3941 -7196-3988 -5966--2739 2074--505 1537-1815 9222-1865 1124-9601 -7830--3730 4481-299 673-6110 -8006-5034 6984--6241 -5447--5803 -3945--8403 3077--973 -5900--8305 -9798-2322 -1673-8594 7520-2898 7177-3127 -9772-5011 9297-8210 8136-7970 7098-8131 -6968--3096 -4794-7140 -5918-4163 824--5268 -1030--2608 -944--7728 8850-2071 -939--2812 5078--3107 -2467-1223 -6420--1459 -2119-9964 -9310-7830 -107-8944 746-8296 7489-3156 2881-5380 7638--8596 -2106--4634 2594-9810 -9714-3552 -5641-629 1992-4478 76--3275 4951-8340 2388-5433 301-6238 -9052-7089 -5105-705 -9086--8469 371--4284 -9207-1197 -3912-7907 3641-9263 -4604-3328 -9606-612 -4606-7593 -9812--2358 9519--210 -8036--4244 -2576--3945 9542--9256 7493--146 1680-7719 -8436-2494 -6052--2421 -7820--4995 3110-8457 7984--1481 -6885-9693 -8228--6431 7343-1397 -8750--1976 4767-8571 -8158-5216 8362--9563 7265-6843 -8061-9799 3972-5952 848--2699 -2182-5729 -8858-7558 -1611--488 -3637--1029 -6555--3093 -3921--327 -5350--6253 8861--4804 -4270-1148 -3987--3363 7039--9962 5115-1082 -9865--3336 5225--4135 -9761--1448 -504--5978 4496-3796 -8990-7452 -2061-8275 130-6839 -902-4950 79--4081 -2380-4272 2455-5492 -1029--2914 4460--467 6859-2479 8911-8464 1157--4275 1507-1237 -6450--3884 3099-8900 3199--3884 7108-8731 9021--3578 8366--7877 5503-5659 7167--7601 -7375--9661 -510-4341 5988-8697 -7674-9298 9520-9371 -5503-4454 6314--6354 -5408-2115 5727-5534 3564--5049 -204--4849 6877-5567 9049--9879 1797-3200 -9816--9327 4321-2738 -8615-9876 5131--7408 3953--7464 9899--8665 -2388--1883 -5121-6658 4760--2134 -7884--8460 -5273-7800 5288-515 5137-1340 -407--7930 -8354-5359 191-9898 -4723-3203 -8465-652 4399-7043 -4223--9774 -6791--4839 -201--8000 8033--6623 1593-3805 7420-5814 5113--2762 4600-9366 -8581--887 -749-791 4419--7809 631-6511 -6316-4080 -6419-5354 -8104--1031 5217--5553 -9426--6470 471-1585 -5077-3582 6845-2080 -8031-9052 4785--1530 2231-9536 6450--2808 8893-5748 -4677--4081 9254-3602 -1904--524 -5056-4456 -7917--6371 7217--3254 -1918-8226 -9621-9813 -2586--4560 -6803--7039 230--850 -3641-9526 -7030-5740 -9013-5172 -5837--7921 -8775-4583 -3214-3958 2800--5180 -5228-2259 -9844-1921 -4352--1794 7330--8849 6866-1041 3508--1366 9342--9868 -6141--4853 -8282-7824 -3586-6993 -6581-8287 8111--9370 -4031-7759 -4237--164 -103--5887 -1160-8650 -5340--3258 -774-2933 -3816--9155 5906-7824 -7620--6883 8730-4370 -878-3719 480-3475 -7848-4991 -3136--356 6759-5879 7207-9849 920--334 1238-4620 5059--1001 -7283-1458 -7317--4457 -9225--5194 511-6852 1900--2192 -7705--3945 -9302--2314 1752-2091 6204-9481 9752--4233 -8493-3203 6399--9893 -8039-9235 -6340--9954 530-5540 -6423-5837 -2940-1631 1777-7135 4751-2510 7264-7493 -2993--5063 -1348-7182 9196--3672 -9216-9700 7954--6823 6179--8227 4746-2852 8875-5638 6875-1189 -3031--4485 -1654--1014 1339--4739 -1321--9270 4920-3204 -1721--4878 7475-9574 228--2445 6798--9724 8024--6847 8394-5672 5201--236 7140--9169 1853--6204 9192--4161 -4292-3014 7052--4812 -4946--9764 9803-4588 -7686-4490 -4036--7769 2311-6757 -4536--4559 -6088--7376 -4890--4765 2226--2126 1927--1083 6261-1680 9836--9590 -96--2561 -185--5094 3346-347 -721-254 -6006-1741 -3176--7948 8829-2653 5580-2074 3562--2328 -221-2713 -6294-2225 -2232-6282 2550-8804 -9138-4719 -4300-7680 6944-8370 3042--1170 -8859-9749 -712-6977 -7198--1664 -245-3085 4041--4121 6689-724 -8065--7182 -9866--9611 8173-5163 -1114-7459 6654-2598 -6682--6015 8187-7539 -7087-7716 -8503-7845 7740-2055 1117--5388 -6839--96 9832--529 -8324-5579 -4340-1687 -7730--8709 -5790-5549 -6321-9461 1853-2826 4645--7070 3849--5343 2816--5614 3311--9436 -3625-840 5968-3798 -3829-5767 7288-7315 -6591--8111 3970-1721 7857-3464 -2984--8962 88--60 -6567-9953 5225--9709 -4161--4326 -6114--528 -5040-6702 -2597-4069 -8107--5106 -8756--3396 4531--4981 8494--7221 -4564-9802 -2669-9419 6755-1531 7534-2009 -8912--3447 -6822--1956 879-503 1835-7113 6158--9996 -865-2532 -6671-1631 -9331--1046 8697-2658 8361-8212 -3780-5164 -9371-4071 -7004--544 8045-9910 9174-8051 -7201--7290 -1479-5997 -9240-4382 445-1912 -40-2099 -9555--1283 -9634--7876 8778-1325 1074--5597 7778--1892 -1837--4752 -1398-659 -7559--9389 -5631--367 -6748--9486 -1371--7871 -9089--2992 -3373--8400 -7501-556 4587-3358 -3494--8018 -5305-539 -5050--3821 -6497--9675 1001-6937 5551-7657 7857--1300 4051--9254 5257-1722 -6092--4178 3694--7029 -1593--7000 7019--6787 -1277-9966 4806--8884 -1782--9902 -2228--2177 -970--5781 -8040--2320 5176--4497 729--2931 2582-4301 -9168-5896 417--2828 -8825-6049 -4580--1851 -8371--942 -8024--802 7877--2471 1876-3773 9077-7734 -2202-7114 -6523-3381 -9542--3621 -5502--1153 7844-9163 8455-1571 1640-4896 -2030--6940 -4601--3531 -8028-4148 -3980--7905 9355-2777 -3889--2617 -9446--4023 -4421--8204 -8228--529 4474-7252 -2004--5335 4406-1385 -9004--9988 -9211-6359 7375-1544 1112--3084 641-7050 -3389-3203 -7616-3653 -9107--1435 1755--1862 -6933-2440 2492-3368 -2890--3013 -3498--7819 -4075-9807 -4478-7776 7105--4796 9714-6345 1557--4607 5135-9969 -2952-1309 -5413-4968 -8313--7447 -1632--4154 -9360-2954 5183--2330 -8359-1724 4053-2671 3194-861 -2615--4968 8714-8025 9593--586 -1384-2751 -3054-1610 6271--3915 4216--540 7967--980 5285--6971 -9196-47 -2561--6812 -3492--6604 8644-2780 7234--5646 6330-3557 -9919--3442 -4633-641 3305-5073 5939-3016 7683-8021 2761--1552 -9312--8034 4700-6862 -7200--9337 4260-9967 -2950--4836 8876-9428 -2562--3646 -1676-975 6628--4860 5220-5878 7444--9535 8778-3022 -5710--9574 2786-468 -5931-8272 -8806--1218 2901-9095 5951-450 8221--275 629-4723 -4785-8353 9571--6232 7783-4095 -6628--6118 4912--4786 -8411-3095 9866--6960 -6195--4785 531--7660 -4753--4453 9051--3112 -2907-1838 -6288--6164 1203--2467 596--4296 -1795--7113 -758--5117 7163--9992 -1363--8532 7126-8766 8997-5557 9849-1292 -9716-5915 5724-3122 8547--9161 -3633--3967 206--2518 -6589--9666 5994--788 1668-2196 7010-8106 -9136--3529 10-4301 5450-2776 -4066--3288 -9311--4399 -9459-7086 4844-7144 4452-9941 4816--2135 -6269--7882 5355--5520 -952-8247 2994-5442 -1871--706 6396--2002 4648-1719 -29--2965 -6652--887 -7142--5691 -6902--3975 -381--1229 6502-9304 5666-1489 5572--2593 -7673-3962 -3858-9351 6129--4753 -4356--3903 -5328--6096 -7277--2993 -3823-9639 -1869-6156 -9467--6860 3588--9938 -1448--5370 1094--5754 6621-2772 3333--8217 6756--3280 7571--8871 6671--2423 5487-5905 -5408--4578 9293-2592 5856--9976 5364-8251 2785--3058 8172-1012 -757--6351 3333-8753 5706--2635 -8239--745 -7221--8129 2536-7705 3518--8356 137-7926 -2874-2687 -7217-3896 -7588--9993 -8394-3585 7729--4599 7468-554 4079--2097 -2497-4899 -2448-54 -6081--6912 -8107--9043 -8524--3970 -4228--5845 1780--8294 7509--2441 4909--5284 -4048-9593 -8273--6411 8434-4154 -5069--5856 -4569-102 9756-167 -9265-1000-3279 1304--2499 -3861-7623 -993-6530 -2174--4257 -4408-3792 5144-5496 9187-6006 -7911--8299 -5678-9665 1205--4509 649-2318 7115--5339 8384--4472 -8981-1068 4980-1483 -7699--6276 -8510-5200 68--3445 7565--5643 5551-6313 -6373-9502 6254-825 922-6631 3476-6831 -1701-7403 -4406--5277 -5630-9049 -9473--2136 -910--5053 7460--3569 940--9375 9880--1964 1999--2849 2528-7892 -4040--3717 -352-546 -1456--9845 6099-5973 1306-7355 5894--2224 -9338--4100 -3322-1383 -3660-8608 -7733--5888 -2096-6423 -7331-1795 -9142-5927 5639--334 -4739--5963 3592--1557 -9185-22 7066--935 -9789--7346 -1783-9784 753--9881 7556--9146 3274-2457 7931--3734 4247--5130 -2769--1553 -1922-1905 -9988--9198 5126-697 7536-9805 6873--7582 -1648--7944 9560-8935 -4046-5762 -9037--285 -9208--2520 4428--7512 7143-9888 3757-6861 3770-4248 -7608--6171 -6270-8493 8867--4891 -7794-6542 174-1385 -669-7838 -5249--4456 -3486--6962 6435--7648 3229--2163 -5017-1899 3684--6185 7937--2188 9250-5780 -8237-9453 9729-2412 7318-8439 -697--5131 -4527--5287 -2444-3700 -8049-99 -2795-3718 3835-5096 -6125-2026 -1181--7324 617-8507 -3132--4730 7988-2826 9722--3233 -4730--6546 369--1305 -9278--932 7599-9112 2427-8323 -1131-5254 -7533--5630 8629--5765 812--1113 8503--1246 2883-5971 -9706--1936 -7956--3816 6860--5408 -3492-555 688-1311 -6982-3887 -6551--7951 -3946--6778 -3643--1736 -331-7273 -6400-1533 -2594--2711 -8943-761 9029--2196 -6903-9444 6670--4947 645-3492 -3309--7883 6501--2884 7394-9842 7165--4246 -7945-7060 6626-4399 -9924-5542 -6584-8650 5563--184 1938-1392 -1572--8597 -662--2304 5246--4967 6139-6733 -9900--4820 8339-4637 7859-2996 -9321--4799 -3600-4031 -1401-2929 4232--7558 7966--8031 9680-3366 -1689-9601 6624-4722 -6982--5562 6418--8110 4420-8413 -2423--2370 -7449--7102 4440-3907 -5588-8933 -7728-5119 -1592-9261 -1068--800 3790-7181 -8525--4073 -6614-8584 -195--9095 -4102-7742 3389--3164 8353-6348 -1182--1399 3911-9666 8385--2964 5475--5572 -2732--7054 8098--9493 539--2220 4402-7724 -6703-7808 4618-3345 -7636-2971 -2313-168 5428-9415 -116--1125 8634-8942 2672--2374 1805--1835 8368-9158 8832--8749 4052--2899 1534-3043 6780--7803 2644-2986 7785--813 6506-5373 1041-4263 7921-9240 -4774-8930 -7806--1628 9154-8719 -5681--5822 -8799-3402 -8443--9483 9750--1824 1254-3802 -8873-2005 -2335--5508 8274--254 -2077-5876 -1909-2725 2480-7776 5356--1569 -2565--3938 -4042--5729 -9228-8676 -2225--7134 -7196--8388 -1634--3251 -6604--2419 -2717-4384 6129--7989 2805--853 1939-9818 1283-7641 1213--2243 -947-8413 4372--5795 1411-2638 3463--1253 1260--2452 -5237-791 5544-1599 987-6965 5670-5235 2605--967 8984-6636 3540--2737 8103-2252 -6442--3092 -2165--1841 -7605-1419 -1736-281 -6786-4812 1751--9206 6616--7892 419-617 7227--5037 9136--4186 9074-6640 -3736-4434 -526--6649 -3332--3969 3111--8154 1225-8482 -7301--515 5220--7937 5482-104 -7667-2221 -8668--8510 -8347-6759 -9581-3087 -6780-6426 -7547-8668 8314-2815 -4893--7861 -4789-906 9687--6787 -1417--9824 5479-5765 9343-7001 9847-2848 -6228-2542 915-6032 165-8889 7049--4256 7857-2672 -1260--2638 473-6692 -3248-8396 -6367-5155 -8106-6292 -4269--8680 -3570--4357 2516-7648 9212--862 2005--1760 5686--8804 -4485--4036 1127--7940 6119--3181 -918-7566 2055-873 7675-8606 -2431--2856 -6651-9585 9203-1531 1875-8957 1123-8071 -7757-6088 5059--6367 3545-4427 -9850--9984 6129--3765 -9621--6702 1781-1915 -7059--5512 7286-6787 -3622-9943 4252-1046 4015-2873 1495-1341 7577--4024 3234--9428 2229-4627 -6091--7672 -2838--7526 8113-2582 -9432-5118 -8059-3054 -6535--4786 7816-9130 -6665--6447 -7718--2293 3664-9548 7571--1797 1166--6496 5155--3862 7077-111 7576--8475 8952-4039 -4728--911 9728-4268 -3665-7098 -4841--262 -8145--9802 -3005--6770 5894--4834 5392-1566 -9952-3322 -898--3060 3230-1241 -3096--4374 -9476-3289 1791-1075 -9506--5939 6704-9821 6664-1759 -5633--9014 9051-5158 4728-7529 -8133-8884 -9194-7681 -1671--3407 2662--2877 -5506-1319 8184--7383 127-4523 8117--2925 -9775-5251 -3877--5823 -9918--897 74-3778 -4593-2955 -9064-4951 -1225--2009 3015-4427 -1822--2204 1903-9954 5552-4924 -7079-1875 -2263-2700 -6397-7177 654-2822 -2788--3555 -9573--268 1067--5410 -1376--954 -2486--6798 -1777-5894 -8070-1162 7657-191 9865-4996 -2148-74 43-1616 2194-9808 6280--9061 5407--2547 3130--8249 2947-4063 -6929-3566 -6171-5365 8887--319 -7738-9185 3325--9540 -3202-2044 1898-5145 5753--1524 7196-7412 7033-7883 -6888-2510 -1934-7366 668-6826 -9660-226 8093-8937 1445--5876 -3846--2842 3980--2921 -3868-2774 335-5257 -150--7522 -9027--5942 -7220-1035 -4970-5318 -9196-7895 -9928-4459 -4738-791 -7643-9013 -9187--1828 -8181--467 -6814-7730 -8800--4313 -6540--8701 -6135-8158 3095-4622 6749-5784 -2888-7042 -4113-4066 9186-6379 8210--8868 638--2231 1595-3172 -8283--8867 -1119-4229 4548-7828 -8690-9776 -3872--8592 -6105--8110 -2279--6541 372--4156 -1218--70 404-6044 -9476-8206 -4825-1981 7480--7018 7366-3283 -5820--4207 8467--8063 -8853-3049 -5002-9980 2202-7293 -5744--9108 -4155--9673 7829--6899 -6290--375 1636-5878 9815--7024 7260--6015 -1298--8912 9063--573 -9461--2452 752-2868 -1337--7259 -1286-1970 7152-4737 -7301-9412 -5901-2113 -3265-4968 2757-1587 -9419-3758 600-4897 -2142-9790 -459--6512 7874--3729 -5050-5601 -4318--5736 5906-2931 2494--3832 -3782--2354 -1808-9700 3574--8101 -8403--9646 -6091--2148 -2203-6019 7739-5041 6218--1758 -8986-1350 -1020-8295 -7523--2296 -193--5937 2791-6391 -5862--6035 -8684--5416 5172-8836 -3763--5049 7211-8698 9399--8141 -4405-834 -5656-1108 4780-7493 1397--7663 -6433-8363 -5522--5890 5690--4583 8591-2913 3676-6362 3334-9419 8494--235 -275--2754 -5480-8884 -4784--4143 4609--1150 -8765--4198 6254--833 9242--9569 -6395--4415 7398-690 3647-8291 -3308-5920 8119-5622 -1691-3373 -4662-2659 6087-6858 1677-5804 7899--7476 -6960-1213 -6986-9822 -5167--6803 6522--4258 5742--139 -8856--2345 524-6840 7733-9747 -3822-7742 1040--8901 1482-1779 -2905--815 4478--8292 -748-1930 -8757-594 1871-9020 -8571-5220 -9858--3509 -2000--4005 9891-6162 126-8884 -3178-8356 -9511--6897 -4134-9423 -7829--4874 -5514--8077 -8969-7784 -8124--2072 6194--2460 -8965--3278 -9806--6175 3702--2661 -7857--2267 8957--2946 -2149--1829 259--8682 -1410--9521 -955--8713 -4214-1852 6630--4093 -759-1329 -2782--4583 -7701--4200 4179--810 -1360-6132 3193-5842 -1172-3550 -6540-1822 7430-4153 -1484--695 3968--1358 2702--6691 -8534--6724 6338--4703 -1294-6009 323-2822 -9882--2882 -8005--2607 -4103--793 159--1857 5361-1263 7039-5772 5897--1196 5646-1089 -2196--612 6081-1849 -9405--9849 -9988-910 3410-3141 -5947--377 8957--3283 -3990-3601 439--3995 645-212 -875--2697 -2474-6686 -5718-2395 -7974-2631 -8933-2977 3500--5392 7640-8051 6486--7233 -9450-2648 -8570-6334 -867-1087 7070--6813 -5860-8423 5161-464 2480-7596 -7916--2131 4558--4858 9836--9209 -9850-3352 8725--9443 5787-8973 -8359-2098 -5298--1239 -5355--9057 -2405--468 5894-540 2961-9465 -2109-3293 7464--3995 5227--5295 7618--6302 5997-3609 9296-2309 8527--8150 -6255--4953 -2783--1010 -3004-4568 9188--5033 9328--7130 -7303--7184 -3761-8100 -9757-1894 -8536--4671 -3922-5147 2131--3278 192--481 879--8232 8213-5792 -9713--8790 2830-9642 -1219-4626 -3905-7268 -5212-1071 6996-2049 -1423-8381 1804--4158 -9251--5875 -8573--9313 -8402--7601 -4020-2064 -3683--2556 2997--4147 -2028--6098 -4661--6492 -3459-254 -7958--5836 4255--2930 1535-7965 5050-4428 1111--9566 -9881--594 8158--2900 -3484--3418 -8573-2492 -6931-9506 -6110--9045 -6421-5913 -4478-8814 -7632-3076 -179--4807 4248--5473 -9639-5908 4043-8253 5305--588 -7605--422 1807--8438 3893-1928 828-9995 1020--5059 -2872--6704 7795-2991 -1115--3369 4136--1067 -5980-2701 5290-5754 8088--2367 -6574-6745 -3181--722 -84-9798 -7081-6400 8615-8697 -5395-606 1260-1469 1403--4054 -3971--9105 -5265-154 -9660--8107 5258-8702 6162-6756 8174--1841 -2673--6610 4322-3055 -1280-8792 3048-869 -483-6623 -194-4659 8223--4848 5804--16 3737-1758 6807-2066 -9622--4394 4888--2226 -8129--1783 2435--524 6731-7542 8309-1741 -577-6244 -1498-9693 -2352-4402 6020--5529 -2953-6574 1855-2261 7274-9697 4943-6427 -3989-628 -6596--6315 -3110-5524 4252-674 -2541--5179 -3524-3630 3587--3507 -9322-8365 -4748--2451 -9283-4862 8378--9398 2049-4658 8051-8266 3295-3608 -6047-8697 6786--9534 5518-3781 -5787-6641 9103-3267 -5627--4366 3475--5155 -8124-3113 -1977-2074 -2874-9381 -4420--8987 -9869--9664 -87--8216 1934--1045 -7775--5384 3950-5917 4979-9055 -5584-5185 -3592-419 7370--7623 -879-980 4925-5244 -6679-4478 7153--5888 -1301-7999 -4146--6804 -6922--7561 -2950-7015 6208-9105 6168--3769 7555--3004 -3018--1246 7632-7603 486--1733 -5565-1334 1462--3539 -9386-6119 -6818--5611 2263--731 -9952--3299 -98-6012 -8498--7524 -3958-356 -615--6746 6793--4130 4286-788 -3070-1015 5631-4036 6061-6170 -7862--8549 -5028-9357 -9011--5410 6452-6618 8197-3711 7686--2884 -9268--1395 -656--3276 6902-4664 -5215--3966 7888-1631 3883-978 8708-5064 -8899--9853 -8093-2156 -2442--6030 3047-9223 -9485-6924 -9688-5199 -74--2674 645-8322 -9719--9759 -8114--9042 2857--9862 2777-4087 -2527-8119 -2431-8908 -6634-4412 7542-6204 16--3104 4222--7787 2364--9546 -8281-7400 460-5499 4819--8258 -5315-6036 -4249-8223 -3495-1354 -9391--1764 -6576-1581 2986-5986 -9382-7554 -2650-9801 9993-3145 245--8650 -7252-7049 3199--4486 8663-3002 6155--7932 8162--7567 2796--2447 9456--2935 -2129--9023 -7178-4675 -1633--1768 5041-3344 -7271--6908 3346--1131 5730-9964 7973--8126 -5909-9411 765--3996 -1296--5485 -2495-9603 -1944-3338 5240-4404 3646-62 5204-5350 -9773-4319 -3702-2380 7268--1621 2333--1479 -8432-8301 -7882--583 -3371-1055 3678--931 -2378--955 -1168-2868 -2588--2338 -9660--5089 5754--9315 -24-5999 8135--5782 -1217-2565 9032-9138 4498-2379 1711-7958 381-8815 500--4637 -5845-6061 1802--578 -5586--2119 -4286-6663 7069-5443 -5806--2554 -3574-9619 4326-7769 9350-326 1655--8395 -7298-7938 -7850--5902 -9392-2123 -9724--7707 7094--475 -2924-2954 -8375-516 468-5947 5001-5559 -9145-2816 2791-4620 -6564-8336 1498-3317 4866--1979 -6013-6154 821-2607 -8976-7710 -7927-6254 -9403--9110 -5505-7615 8433-3615 2907-5927 9374--4563 -6360-6 -5612--7952 4793--3379 -556-494 6809--1755 70-8924 -4356--2982 6501--496 8762--7386 7292--2094 4800-8839 758--9353 7753-3003 -7379-2710 2627-7318 5947-5693 -6714--2315 4803-8143 -3591--8624 -828--6299 2961--9254 -2203-4811 -6798-907 8299-2352 5617--2054 -7601-1169 209-7731 3154-425 4763-9900 2384-2311 106--5058 -1339-5836 -6668--7694 -2759-9064 6639--4083 -8846-9434 -7298-5552 3545-2704 6191--9049 9083--8274 -6698--7430 -1253--953 6165-8993 -5720-1776 1489-6626 -4929-4046 -1601--5790 6236--3843 1201-8079 9942--1303 -8482-1856 1389-4295 5737--8232 8913-7747 2534-6752 2551--4754 -4088--4398 3771--5622 -280-7975 5324--8393 9420--9578 -9379-4549 -8133--1084 493--3291 -1462--6337 -5827--5299 -6808--3403 8713-9023 8543-7267 6199--5950 8521-4650 1220--2879 4242--5861 -750-7307 -7837-5050 -1356--8363 6125--5490 -5303--6277 -4009--3511 6273-1000-3303 7406--8040 -5037--4324 9859--5368 1676-3604 -3702-3456 -8112--1195 6834--2364 9737-867 1245-6155 -6423-1683 -6314-2124 6324--5149 149--8406 -6274-424 -8928-7907 5564--5720 8040-1327 -5026-4650 3272-9592 -6568--2136 7897--6983 -4021--7321 -7038--9924 -4914--5407 -4954-6832 -4617-5360 -3684--6281 5337--2784 4324-5918 -7915-6229 4612--6920 7676--4386 -954--4603 -5871-4318 7167-9732 5782-17 -733--1196 -3669--9946 3206-3608 -8566-865 -7446-977 -6993--5075 -3031-3371 6402--5907 3895-4782 -1455-6792 -4849-6793 -2669--6238 -2681--3147 3272--5508 -3180-6197 -3302-3518 -9104--2923 978--2781 4639-364 -6759--9535 7035--8888 2862-1298 2012-8878 1529-3335 -6214--3738 -2943-3436 4563--4955 -7052--7404 2991--386 4251-6565 6656--3790 -5285-2745 198-864 -9771-9900 -9541-6930 4877--1746 5902--9919 6403--2206 7438-8673 1823--6221 5954--6254 -6172-230 -4308-6614 -873--3690 -6550-9643 -6602--8434 9492-1446 8215-2816 -1125--2484 4118--8864 7083-7413 -8763-7973 -8530--3174 -4594-9135 1189-9031 -7261-9347 -2155--3251 8582-4166 7104--8818 -8526--7430 -8970--9944 4200-9083 2426--4899 -9207-6163 3562--4617 4145--3405 -9078--420 2759-3936 5165-3525 6920--2764 5076-7225 5042--3167 7367-4975 8527-1435 5422-3286 -9697-7385 -8522--9454 -3001-5949 -1768--2316 -9213--7214 -9212--5484 -9943-9054 4866--6698 5493-5971 9883-346 1353--9715 2435--1327 5128--4343 9391--1410 1093--2638 8750--6854 -5121--8139 -310-8554 -5320-373 735-1137 7028--8935 -4695--552 -666--5016 7963--638 4139--4380 6541--6917 -6957-6852 -7018-7909 -3166-9134 7661--4934 4870-9938 -7805--2009 1976-5076 -6998-820 3639-9245 -4040--2345 1626-7078 -1414--6065 -431-4656 4243-9257 3072--3033 8954-7631 2814-984 6278--1605 3294-3098 -6779--3273 -8736-4575 -3854--2864 6855--266 -2043-7093 5107-2607 1429-7209 6318--7116 -6364-5962 2706--9996 -7674--5250 620--3710 -7588--3328 5544-7708 -1247--9830 2986--4016 -6271-9296 9701-3738 1597-1678 -2568--6590 -8564-9851 -4783-6142 -5961--8939 -5904-6773 9621--8914 7766-7637 446--6725 5210-7240 -6876-7131 7954--9645 4725--3183 6702--3152 6942--4465 -2704--7704 -9438--8120 8719-8231 -7343-6902 -1097--6876 -7500-907 -156-981 -3519--4646 -8164-4261 530--1225 -8324--8458 -278-3729 8208-5254 -251-687 -824-8833 9481--6823 -144-5795 2435--7907 -753-2324 6574--7039 -6598--2288 3226-6 3142--1750 6629--8776 -988-3168 -6326--4269 -4292-850 7460--1927 -2767--9896 -2755-3464 -2923-8677 -4461-9205 2015-6196 5348--6773 -6465-5962 945-3086 -2692--7285 -251--5311 8562--2301 -97-4921 -9422--8041 -77--9074 -3873--5899 9321-8182 -9829-1915 -7415-1063 -8767--3582 -3869-7598 -8330-7864 -926-9373 3371--2647 1072--6244 -648-288 8601--7905 -1535--4881 7375-633 5389--3607 869-790 -8963-8526 9128-1335 9910--9345 3247-7638 -5876--5140 -5717--8072 -841-8484 -6591-6621 2928--6235 1685-1730 -1154--1637 -3140--6258 -4192--3220 -1375--3704 -7539-9387 5661--2266 8423--2898 -8090-9085 2062--728 7117--7083 5415--7225 6646-1285 737--3887 -904-9526 2001--4001 7796--927 9426--5997 -4772--879 3799-5933 1135-4354 3261-8276 -9581-9368 6876-3165 -8662--543 4167-817 -8212--3912 8239-4340 -8810--1349 7644-6940 -716-5403 -5399--4143 562--8129 -5457-7848 -2869--1477 6792-9833 -2627-2925 -784--2355 4273--5643 -8213--2237 -1312--6820 7975-7373 8642--6102 -7997--3968 8888--9179 -1946-9962 -1913-5341 6314-5283 4518-5210 2053--3707 -3586--9515 7161--6324 1866--8601 9276-967 8945-1976 2817-8864 -6127--5022 8515--6239 6117--5518 -1984--1414 1830-9555 -3063--3063 4035--7109 -1461-5525 -5544-2865 -2854--9593 95-1387 -8935--8937 7115-4255 1460-8031 -9521-3457 -7716-4555 -4412--5872 -8637-5320 -5299-136 -6966--1782 2710--9794 -1169-3268 -9098--1900 578-7905 -344-1497 9713--7373 -8601-5059 -5128--3386 -9348-9739 -8453--8057 8148--2099 1696-7703 -9081-586 -945-3091 -7343--7766 -194-7270 8123-1214 -253--7944 -298--3243 -9403--5731 -5699--2029 2250--1141 -1156-7154 -9252--2892 1837--6379 -4973-2205 -2348-3834 2806--6255 -3953--512 6679-9144 4643--552 -2800--6805 -1632--3382 7547-7513 -3646-1761 -6241-8009 184-9927 179--369 3189-4765 3347--3464 8604-9856 -3999-4350 6279--6198 -9782--3075 -3267--3362 -8290--5613 5622-3320 -9389--1139 -1672-4853 9081-1665 8404-2217 3154-5256 8144--245 6799-3810 9538--5901 1656--3096 3826-8116 2905--8317 -4191--9520 -7672-3417 -7130--9330 -5940--7882 -2533--6477 -1019--8210 -8963--5593 8276-858 7048-4177 1912--4956 3326-9684 -3241--1776 -4375-7514 1132-8547 -2234-3531 -3373--8883 -9207-8927 7235-7494 7152--697 4447-6366 -9592--137 -1105--4624 -7453--7820 -69--7539 6117-60 -2182--3611 8910--2922 4128-6840 -1298--9094 -9366-5142 -8632--1380 2701-4328 7594--6697 -3271-774 5004--1469 4823-6728 -2572--7777 -6839--2117 1597-4750 876--7655 -987--28 -6268-4632 7983--3645 -6010--230 3470--3145 9737--8781 6805--6667 2685--3740 3836-4720 -5307--9725 -9009--2654 -1621--1819 8450--980 -1791--7297 -9956-5204 723-7955 3456-6354 6108-9561 -891-9077 8754-3859 6893-4161 -3231-6525 -8072-2295 -7803-151 4227--4679 547-42 7383--7807 -9203--8961 9509-5778 9636--3226 2049--3446 8168--5953 -977-4277 -4953--5692 7358-1274 46--4039 4968--474 5141-3917 7073--8553 -7384-161 -9961--7654 3513--8898 -1795--6516 4280-5206 -8478-2071 -4509--6220 9328--9521 -9508--242 -6706-4622 -6109--242 -6075--4809 8819-9042 -4817--6492 7649--5509 -9331--1119 -9568-8553 -5689--3805 -5644-230 -4620--8852 -1795-6486 -671-5804 -3397-5592 -5455--6710 6450--8601 -742--8844 -6817--8608 7690-3078 -6450-2673 1973--4910 -8354--2152 -5209-8923 6028--3921 8053--3307 -2036--3713 -4621-7773 5148--8807 -3655--1320 1933-576 -8945--2458 1566--9586 -4790-4421 1867--208 1881--1936 -3654--9825 6653-6436 -3128--6723 5316-208 9333-3947 8849--2148 2455-7271 -7609--886 -4548--2651 7668-9942 4406-4997 6071--3425 3336--1721 -1761--7331 -2295-5222 8407-2225 3708-8655 -956-2564 6658--7744 -4856-7419 -7218-870 -6419-6475 -4316--6237 9957--8036 1604-8003 9455--6109 7312-6873 138--8586 -6758-9734 1831-3014 9884-6348 1077--2539 8490-5201 -8344-4281 -6415-5539 5498--3180 4672-5358 827-1031 9394-9250 4458--3903 -9477--1548 -2594--7124 2368--7189 -8640-4125 -4426--9432 -9675--2433 3593-6831 -1011-3356 633--5805 2180--7505 5232--7508 7424-833 9781--5311 -3539-5683 -6341--1674 -6448-8406 1080--5260 3301-6681 -505-8505 -6636--603 2983-5554 -4007--1967 -874-7632 9041--7653 2158--5117 5132--876 -9353--5423 -3171-9322 -2550--6605 -3204--1297 -9530--1193 -4134--146 4487-4176 6801--3321 8423--3694 -8436-7198 -3674--7785 -1175--5390 -1916-8001 -9100--2716 -3114--7681 -692-2148 -6008-7455 2586-4749 -7946--4601 423--5439 4744--2336 -1502-180 2302-5739 -163-7128 -3573--5465 7662--9764 5563-7482 5741-6395 -2178-216 -6084--3725 6094--5771 7039--4395 -5846--1925 -9939-6391 7804-9695 -2066--9245 -7374--9351 5911--3605 -26--6718 497--8653 4936-4468 -342-8778 2228--4193 -1925-5270 880--3234 -2357-2784 -290-6992 -2453-6256 7815-3041 3089--1225 -2923-2446 -3103-2973 -1627--7553 123-1078 -8387-872 -332--9843 -7472--8392 -8220-9945 8188-5369 -4257-9581 -3828--1895 -8222-1522 -9425-9462 -3864-6549 1666--8282 -5099-5531 -480-7635 -9283-3360 -2167-4489 -1266--3349 -1284--9285 -9930-5968 4423--7962 -7306--4453 3525-888 -1416-3074 1831-7874 8513-7942 9283--5663 -3540--5622 -500--4217 8512--3905 -5860--881 -7516-1819 4288-1078 -6816-7821 -9126-3599 419-3948 2978--3899 -6618--3967 8685-4716 -3552-8611 1921-2678 9778--1402 8973-3625 -4399--3001 -4438-5646 -1680--5118 3065-3085 -4385-7527 -807--2670 -5675--6233 -3483--9485 8145-8565 -7260-7533 -7561--5663 3838--9430 -9821--8493 3803-9741 -4441-853 -8833--4272 -8734-8802 -1671--4638 1039--5585 -6036--6647 -8638-6652 6854--9358 -6285--9346 -9481-8400 7170-3364 5695--9694 5460-3756 -85--1215 6812--1575 -6296-6521 6342--8960 -4999-3384 -5430-816 -8333-5711 5114--9863 6340-1026 -2238-6324 8378--7874 -3542--8431 9576--5001 -2179-5753 7174-1640 -8336--5256 -4913--1726 828--9181 6228-551 4136-7844 6586--3405 -6998-2137 4718-4098 -2803-2428 -6139-7690 4780-2896 169-5082 -6808-4945 4097-1783 2978-9549 9569--6352 -6908--7030 9888-2627 7305--5767 -3020--7566 -6755-9312 -7633--4489 5575-5074 -2472--591 -7669--5236 -62--1422 -5852-4569 4286-7553 8899-7425 -3879-2478 2150-2135 -7489--3737 1359--610 -7761--9956 1781--4106 -5254--6359 -6173--406 -7177--6018 -156-220 -4091-9503 -3230-3860 -8551-5863 5512-6383 9248--4499 -742--4563 402-9547 7172--8342 119--3934 1962--5233 -1613--1207 2754-1879 -3540--7264 6631-405 9501-5493 265-4761 9714-570 5068--6157 8230-8001 2486--5989 1802--1472 -616--7279 -2617--768 7324-274 -7974-653 -8411-6856 -7836--592 486--787 2913--4296 -2235-1898 -2387-8270 8411--2493 5338--5017 -5238-3029 4224-8936 -7043--9958 9475-1638 -9331-21 -4689-403 4593--8847 -3532--1735 -731-2280 1032--3122 -6013-3239 -1182--5772 -5649--2423 6736-4873 -2651-1113 9427-8769 2651--6304 -4954--6969 -495-96 -2711-600 9157-2886 347--7286 -1373-8127 -2220--1101 -9382--4129 3453--7994 -8037--3152 725--9913 -9428--6450 -1224-9873 -1454--596 -7036-2836 584--7806 -5655--5556 -6230-1794 6434-4799 3893-9085 -2062--3053 -1053--3278 6888--1505 2995--7285 5202-5696 -2881--8061 6747-6842 7466-9006 2497--1673 -6755--3052 -8528--3100 -5938-6656 5729-7326 -10000-7651 -9851--671 -1347-7207 1570-6537 -4493--4282 1108--436 -7376--8526 -6684--8178 469--8206 2416--1547 453--9544 6169--613 -5706-9633 5067-5307 5907--7323 5168-1888 1933--4798 2457-8674 -5546--2091 -8610--6571 423-7904 -6506--3451 -9552-7612 6612-4049 3723--5110 7523--2924 -5344-2906 -6239--5809 8961-6352 1546--8922 2662-7942 9151--5616 1797-7680 -8016-5955 -8391-4915 5476--3196 -9214--8338 -2820-5580 1569--2948 -2304--5490 -7585-6928 -1489-7177 8215--686 6604-6727 -3414--3140 -4329-4020 -8426--7931 -7047--5027 -997-849 8438--4360 -2342-1534 4407--9300 1868-8014 4317-6685 -9353--5037 4368--5886 -1865--7249 5213-5637 -4559-1983 6320--8299 1973--2721 7120--646 -5926-5579 -6627-381 4047-8786 878-957 649-603 -366-2590 -601-8730 6255-3746 -4394-4217 8921-6480 -1791--9850 6671--1615 -7134-7733 4998-586 -4277--1846 6729-8755 4042--9296 371-1172 -9661--4059 3502-6462 -5705--2327 1330--6403 -3381-8468 8071--1187 -313--4120 -4133-5075 5644--5369 2870--5098 -3711-4824 -4657--1027 6581-4127 4464--6023 -9695-8446 -2076--3348 2805--2965 -4724--7030 -1790--56 -5116-729 -5646--8089 -643-9657 -5082--8116 -3178--8012 6120--6575 -8503-3367 6690--1122 -373--4388 8334--5176 -8462-3480 1781-1515 -8164--7017 6618--9981 7737-9748 -8682-5467 -7054--6474 9295--2908 -77--5612 413--4926 -3562-4697 -72--3901 -8463--5031 -8864-2224 -7832--1061 3280-8530 -5067-7149 2713-3119 -2074--7026 3372--9410 -3781-5431 4040-5571 7054--6438 5806--4194 -241-8988 -4381-8065 -4829-460 6481--4046 2166-2579 -1372-9944 -7761--26 892--1443 366-5986 7480--9438 970--8203 -562-9719 -2878--8279 -2318--4469 7169-6450 -933-1217 -5701--3306 9294-2628 -311--4184 -3984-6224 860--5643 5727-7102 -4195-493 1437-6468 -7856--2316 2530--589 5169-4655 -2140--9989 1661-1000--3119 9842--4080 -8422--4625 -6404-6550 -5028-6792 4980--916 5389-4774 7754--7714 7409-195 -808--9929 -9125--3101 8799-8610 -741--6443 3052-374 -2321--4302 1890-8508 2181-7102 -2460-8874 -6699-1956 261-961 8362-3156 8126-3292 5007-2463 -5283-5955 -786-3996 6341--1810 726--9949 9229-5461 7908--4050 2655--9425 -6403-2151 -3783-1745 8292--9765 8836--1668 1212--7281 -2578-6341 -2101--2829 -2098--2386 2937-3536 -7666--5900 -4120--6756 3616--4775 5675--491 -5501-8566 3348-3268 7283--9821 6328--6274 1088--8050 -2805--4715 -3116--9900 -1745--4609 -2364--3779 5535-6885 3557--2750 4891-2934 -6163--6264 -1208--7918 -4638-514 -6355-9720 5462--6861 9222-6986 -5789--5165 8297--8511 8167-8507 -7866--4403 -4109--2370 2482--5893 -6302--9989 -8931-7651 6491-3573 -2259--9327 -3488-3765 904--2121 -1968-827 7015-9418 -2345--6368 -6291-6584 6496-1204 120-2427 -4930-5927 5601-8570 5049--4652 -7722-1679 9069-7328 18-3836 1150--5978 6367-3279 -350-5633 -7055-4748 -3963--8318 -1971-6842 4712-6950 -8153--3788 -2894-6525 -2941-6093 9733--9987 -9542-2137 -6314-7508 -6839-1295 -9060-5103 -9664--978 -12-4029 -5123-684 1093-3987 -400--6601 4842--43 -1903--4748 -3595--1993 -371--7327 -3800--2802 4344-7131 2249-1809 -1933--1174 5722--7206 -8297--297 5816-6251 8376-9455 8672--6511 -869--3626 1007--9180 3911-8448 1199--6949 -7568-9781 -9896-5603 -9937-2156 117-8035 1882--3359 -6638--7220 2732-2199 9146-5570 -7078--2991 -9050--1481 1354--8515 -2461--9796 4123--2673 1172--3555 5251-6400 -9069--8243 3271-279 2055-8406 2717--7072 -9653-8674 4191-4827 -6046-6200 -8603-1554 -6113--1630 3798--8091 -9432-8382 5961--9196 -9580-1821 804-62 -4174--9274 6925--3335 -9710-476 1335--599 -5683-6548 -5207--651 -8627--7888 -6233-8802 -847--4952 5354-3727 -4477--9285 5760-8153 2036--4546 277--4130 -2217-8583 -338-9362 9572--2359 -1675--243 8234--3022 -1560--5992 2388--306 -9036-7944 1634--9834 -2050-4947 -8999-5270 -1200-3249 -4719--8384 2308--9935 6182-40 986--1081 1978-4327 -7288-2008 -134-917 1008-5603 -6357-1885 -3828-4036 -5576-6877 390--5311 -8047-6024 -4047--8737 -6733--3193 1077-4578 5670--4205 6193-1636 -6345-1628 -6951--6107 -2903--5041 -9248-5663 -2115--3123 -8881--2426 707-1909 5079-419 -7821-6051 3680--6815 9693--3317 5468--4234 1263--5239 -3113--1020 -1000-8184 7773-5112 6810--7331 2213--8290 -6464--8764 9319--8637 9253-3722 2008--1852 9570-3307 2297-5237 -1072--8352 4003-2664 -3592-669 6303--990 2796--855 -6053--9517 2880-7967 2616--8270 7891--8753 1111-662 7060--8998 6096-9810 1315--9763 5322--5890 -7947--87 -7703--5107 1234-258 -7612--3936 5301-4715 2277-8986 -4285--6446 -8188-9329 8577-8358 4520--907 6420--764 -5795-9699 502--5358 -5669--2719 -44-9968 -1082-8672 8416-2998 788-3576 -7425-9726 -6022--5251 -9543--449 -396--7246 8768-4569 4325-6338 -5941-9635 -8358--6936 -1300-8057 7652--2884 313-5186 -163-6454 -6976-4761 8500--8685 -397-2954 -9885-405 -7128--6564 -3946-1696 -5107--2614 5084-8060 -9504--3325 3611--8876 -8975--7068 5239-229 -143--9058 495-5152 4952-9989 4346--6259 -5911--8878 2250-2395 7873--2013 4908-4575 -416--810 -234--1865 2796--994 6095-8114 2601--2127 -9667--3290 -1418--3683 1499-4253 -3249-4448 -6477-9207 9991--3757 1799--7106 -9027-9435 1790--499 -820-2272 -13-9238 8454-2010 -5800-2728 -1482-1489 -6412--1295 2774--8912 9478-3973 -3180-9849 -4309-1941 1625-4824 -5188--3482 9630--8681 -6888--8755 6936-9149 5392-343 3673--137 -5721-1050 -656-6134 -7015-34 -4692--171 2676--1919 -2118-3381 7169--426 3333-5030 -4660-7103 -4147--7138 -5128-5407 7756-9665 4760--11 -2994--554 4952-452 -4370-5422 -2113--4857 -4805--4178 1814--6456 5444-3611 4140-8183 1898--131 -6869-3132 7181-4843 -2448--3333 -1919--7283 -21-5213 -8339--6691 1584--8666 -1308-8510 -2694--1372 1947--3385 -4518-4888 1310-509 -3042-5102 2609--4414 -7209--3752 161--533 -3104-4844 -428-1834 -3359-1992 7370--1545 -8-8648 4073-223 -7819--1929 -7990--8841 6631-509 -5161-9053 7024-2158 1771--816 -1643--1945 -7411--4395 7099-5757 -1071-8373 571--3756 9626-2879 -2850-1885 3723-3051 6657--9119 -1664--6698 544--5070 -387-8966 8643--4166 1500--7139 -1746-6007 -9199-2068 -7311--3139 1270-5296 -9158-4481 -4638-8995 6616--9318 -9626-5666 653--2064 -2593--2613 -2409-2571 -6856--52 -7248-8600 -6819--7093 8826-6626 -1742-2458 8568-4996 5099-2323 -2387--6702 -9656-7311 6361--2975 806--9980 5867-2932 5111--3112 -7382-9912 -9056--4359 -6273-6334 1263--2289 9929--1315 9224--8080 6749--5929 6006-2031 -1212-7633 2291--7779 -9358-3947 5998--5170 8469-2674 -1350-4477 -9767--8692 3747--4577 -1279--1550 7828-2942 -4943--9788 -1206--3496 -2646-8881 -8773-3779 3904--3016 2820-3767 8928--7780 3690-2450 -8810-8859 -7895-8533 -1375-8191 2303-6662 -3725--8348 -9592--1336 6125--8309 845-1419 -9312-5091 5135--5286 -3047-6395 3494-6758 -6160-7954 -4513--8462 274-1650 2909-9598 -410-1339 4095--4054 3060-3248 -2565--5050 -8309--4574 9652-757 9255-4252 8501--6180 -2655-4827 236-1622 8335--3071 1897--2595 -5867-8356 4684--668 -5638-11 1675--541 6638--6411 -7435--8430 -1349--6988 -274--8684 -1824-2796 -79-1633 5061-3482 -8499-4053 -7253--5659 7298--2333 4256-868 3401-8645 -8663--2572 3192--5545 9352--8455 4681--2442 -2098-5218 -7327-5441 -3484-9403 -89-3808 -7991--5156 -4653-9606 1084-7595 -9321--6305 -4781-2045 8900--9809 -6549--279 7903--2163 2536-9007 -7725-1891 3945-3922 3732--6232 -1449--6667 -6063--763 -103--2914 3946-4768 4933--2642 7906--1854 9587-8656 873-2583 -3076-800 -3624--7388 -7451-5809 -1908-8466 2228-1572 -9307--8953 7312--3464 -4507--2132 -4797-8358 2750-6268 6050--1293 9656-1380 1099-7219 4974--6895 -1250-4404 9173-5974 -252--5717 -2107--194 -87--2376 200--8764 -364-8489 3463-1998 -7094--6067 7184--5111 -2436-1210 -2562-8950 -8324--1290 -6180-898 -4436-1122 -1659--9862 6685-753 3145-4971 575--7419 -6564-9678 -8175-8106 8095--1895 6648--8531 -3931-5472 -2701--8727 -1833--5772 -4236--8381 -4018--2363 -3469--8669 -3858--4404 -4683--1661 -69-1935 5805-9866 -8132--4769 -655--8041 -6382--9747 2808--7650 -5249-819 -7138-2820 5850-1949 1755--9558 9661--5458 -285--5800 -1971--4106 -312--658 5410-4746 7130--9017 6302--9859 242--7085 -710-7240 -139--6861 5074--9522 -6958-8061 -2632-7949 -5864--2863 585-7438 -184--1235 -9558-1238 -3482--429 6690-567 -1953--532 3300--4942 5273--5352 6654--2926 2953--7182 -4178-267 1605-1519 1733--4426 8504--5832 4144-7556 7687--2595 -937-9614 6329-7426 6870--505 377-9615 2067--4757 3668-8290 4095-3453 5244-4396 -1855--3123 -9338--7682 8898--5884 6407-1018 7431--3181 -4752--1558 9166-6457 -6004--2237 -8561-448 6326-4799 2709--4585 1223-8259 -5475--8267 -4653-671 -2151--8922 -7140-7560 -4681-6166 803-9292 -7737-4999 -605-2407 -218--7796 -5760--2081 -5793-8964 1093-4512 1972--6043 6272-1596 6262--4373 7165--5397 -7624-1409 -8600-4579 -5681--6201 3305--1273 -2516--6736 7224--9253 -6442--6787 -1881--7167 -4668--8196 3188-8479 1485-5241 9290-2290 -3441-7016 8998--1657 4278-484 -1585--8976 2982--9544 -8206--4700 -6331-2638 314--4748 9632--6466 -8292-3822 4856-5183 633--2886 -8451-853 9022--6854 -8347-8704 748--7955 4901-6597 6028--6766 8591--8297 -1059--9965 -3227--1821 -3635-890 6222--5120 4559--3666 -6470--5200 7845-8491 -2347--5697 4722--7067 -3326-7071 5803--8105 -2976-5610 -7640--5600 -7864-4163 -4614--1969 4184--7371 -711--7870 -5781--8393 -6315--2741 1739--1410 6915-9367 -1939-7870 4687-5691 3563--8373 -6238-8546 -8373-5656 3734-8796 9015--2117 -6640--3266 -8987--2937 -9619--2692 1269--1318 3109--9476 -2812-4780 -6058-5381 -4880--122 -5758-238 8244--4246 696--9572 -4992--5526 6006-5784 -4273-2 -7268--1173 6858--6304 8381-3817 3857-9455 172--2238 35--2753 5415-8530 -6609-6140 -5217--6744 -9185-5245 2684--8660 3338-9087 -6952--730 4056--7762 -6963-2196 9538-6076 -6332--4921 -7165-4807 7638-7397 -4646--467 8221--7158 7586--2425 -4029-8249 8852-8821 -5309--6600 6312--3372 -7000-2072 -6817-8235 -4601-4125 7280-2114 1895--1889 420--2583 3989-2132 4429-9185 -781-3888 828-3632 1850-2234 -2543-8842 -9082--6465 -1636--5388 -9151--1794 -6615-9082 1110--9648 -255-3333 4371-6675 4095-8661 -8806--6331 8192--514 -2037-252 -7482-9996 -9009--5194 922-9720 -3532--7748 -6527--6809 -277-6730 5987-4825 3327--7360 -6603--4261 -4274--7071 -3239--5726 8893--8402 -7086-8730 5761--8359 -8417-3168 -6586-6722 4645-8166 -6127--7375 1233-2415 2768-5709 -6491--5452 7696--1690 -5205--9454 -259--147 -6024--160 2737--6527 -4479-8630 -5104--6156 -6765--7211 5512-625 -8067-446 -7448-83 1006-841 1476--9956 -2937-7090 6139-5530 -1938--4196 1295--9666 9105--3431 9000-1861 8146--7526 -3705--6199 -1665-795 8265--4573 -1375-2238 -7341--3761 -9683--8695 -8800-8154 -1703-7333 2226-1330 -2139--5867 9852-3969 -3685--9841 -4733--4820 -3233-6981 -8259-6130 -1675-3484 -3546--6630 -2590--5202 -9385--988 4986-8104 -7405-4530 5569--3482 3561-9590 -4979-7873 -6995--6226 -8036-2696 4952--6795 -2495--9704 5777--2970 6874--9027 -2520--7743 -9592--7153 2437--2331 -9238-8831 9621--5960 8807-1268 -3537-2608 886-6713 7338-3536 -5303--4092 -3235-2505 9602-7199 -1059-8119 7936-2717 3218--6076 -9633--1139 7805-2656 -2643--268 9892-9404 4969--9190 2806-5982 -1343--1287 -307--8388 932-9287 -3186--7518 5122-2486 2410-9572 1897-5520 -9629--3375 -3835-2636 8765-8707 5720-6318 -4133--1601 -6838--7023 4785--3040 2166--6883 -9558--5899 -796--4170 4719-2801 -4801-4134 8754--2863 -9193-8816 -9060--4245 -9398-4548 8611--4929 9664-6723 -8502-3795 7861-4423 -2570-9923 -3800-8102 -8184--4733 8339-7871 -8490--1733 7779-1718 3958-4129 -12-9710 -4583--675 6430-3366 6660-860 -427-6414 5067-4765 878--9391 570--9787 8033-6417 8673--4284 -5908--9512 8331--4863 -7517-9279 -8620-6005 6689--4872 1028-3974 3682-2042 -1496-7960 -5288-2370 3907-8277 5074-3036 9248--2844 1447--6929 -3856--6759 -5829-5966 1364--3041 1396-6478 -8433--9273 -3089--6294 3512-758 2350--2574 5903--9725 -4009--8165 -7165-8765 2731-6101 210--5735 4145-5595 5142-7771 -5110--5667 -8550-8364 8318--6193 1073--2602 -1276--8449 7155--2680 6744--2927 9191--4950 -2615--956 9220-6526 -8755--4903 -3744-7639 2243--6321 5535--7413 -7307-4075 9091--5155 -6886--8776 2129-8608 -8224--9381 -8717--962 -7968-2890 -7272-569 7666-3934 7167--2285 6480-6766 1359-697 -4207--1938 6209--6501 5989-4309 1411--4772 -6511--9087 6026-1698 -7323-186 -4555--2023 -1541-8793 -8099-8750 9790-4831 2700-7563 -8990-1343 -5396--5923 9380-8319 -7456--7925 -7474--2462 3196-5560 -256--1656 2280--7135 -5555-10 -8032-2710 -9497--7305 -8648-4273 8712-3158 6461-916 -641-5164 2697--7802 2082--5104 4096--154 -3955--5995 601-6997 -1270-3160 -8178--5374 3643--8377 -5728-2706 -5324-8514 7159--6705 2472-831 -9662--673 2547-200 6700-9362 9741--4197 -5798-6431 8099--2739 -6815-5039 -2495--1069 6347-8874 4051--4384 -2007-8639 1499-486 -6643-209 -8680--1227 -938-4860 -9793-6907 -1800-6732 -5566-6526 7455--2084 9938-4527 -9763--3149 -8768-2859 -2916-2635 -4548-1403 4214--3011 -9375--5322 -2218--2190 -6873-9701 -8768-1000--7553 1413--9530 8074--3405 -5184--3886 5123--827 -2749-8008 3892-9337 -5318-3704 637-8766 -3438--6608 2043--5560 -1343-6732 -2052--2779 -3439-8854 -4105--7676 9465--2663 -9271--1497 -2515-9233 -4966-3161 -4721-2421 -2156--4482 1362--9406 -6659-2822 -9001-9805 2264-323 -3129--5581 -4315--8344 259-3648 9326-8847 3237--3032 9880-9287 5714--2733 -7618--7587 -6216--7595 -8272-6907 -564-8820 1894--6472 -5024-4349 8565--271 -6563--6472 7977-5825 6223-8817 -6375-9409 264--6851 -4724--9198 2970--7984 8746-9093 -5452-8897 -2098--8795 5333--8633 -8354-5797 -58--3410 2063--207 7476--4059 2882--3216 9245-6734 7833--6751 8166--5442 -5738--1435 -6337-7585 -2248-755 5547-7660 8875-7251 -6906--4501 396--9518 -4634-8901 232-1572 -1354--3534 -7823--6992 -8155--5080 -697-3822 -6039-3509 -7778-28 -7840--1993 3379-1513 -3404--9593 -6374--5715 8878--7987 2284--4906 4432-7730 -7888-8246 -3584--2484 -2044--2765 3537-3753 -2811--4196 5129--1664 -7820--8254 2726--9662 2407-2986 4195--7697 9337-932 -8257-4531 -4873-195 -2091--6638 946-5014 -5591-9085 -8086-6865 9349--9825 -1856-5053 -71-8641 1323-948 2790-7745 -3055--3218 -5775-4480 -3312-9444 -9549-6647 8280-1617 -4189--862 9584-7475 4508-1719 4107-372 -3535--7149 2460--6371 7098-4796 8959--7689 -1132-5822 -4869-4709 9289--5234 -7777--4438 -4021--3934 911--1557 -8296--6289 630--5474 -9442-4695 -5160-7197 -9282--7196 4732--5715 6092-4635 2601--8288 -9897--4018 82-8273 7025-7757 7047--5202 -5796-9362 1092-1685 -959--574 8670--6861 4324-2838 8190-3640 5673-9047 -7535-1783 -5579--9817 5301--281 552-6006 -1392-490 -5407--8628 -9018-8169 -2636--8996 4139--472 1453-4066 6532--1724 2941--1167 -3367--7888 -8595--1932 4600-5545 6010--7192 1614--1001 5675-5685 -6065--1766 -6087-2763 2549-6540 -380-6156 5185--7517 -6553-8095 -4255-5660 -7626-1985 3489--3888 -3262-3330 7792-9834 1782--4276 -5668--9924 8649-7822 8028--8686 404--4495 5059-1080 1353--7673 -9295-2988 -237--7093 1683-2384 -8998--5566 2089--6736 8788-7753 6516--9598 -2171--3280 -2428--9941 9115-3465 -9800--6456 -8671-442 -8211-4543 -9254-6346 -3076--9091 -1427-4130 4820--4076 -1926-6325 6773--8145 3629-2301 -2305--6324 6967--8600 -689-2900 -32-1063 -8331--8566 9609-3513 8161-4849 -2214--8357 1177--8247 5713-6136 -6729-8043 9298-7967 -4730--2833 956-1087 -8289--3038 -3213-1896 1397-9678 -7078--2722 1166--6142 5389-5926 5304--6276 -9087--7329 498--8423 -8968-9161 8405-9711 -4202-3568 1412-4682 7261-5047 -2265--9790 -9495--3845 9089-1371 -1490-1239 6093-1032 -9000--292 8845-1474 4412-5970 7559--111 8094-2311 -543-5982 5022--5604 -4370--7184 -3340--7147 -4629-440 -1157-5203 5134--731 9723-3380 81--7779 -3505--3389 -9881--1032 9822-935 8978--6500 2540-9651 5549-3577 -9364-4538 4925--877 8633--9804 8771-3811 8646--7906 -9875-7658 -4235-1848 -9555--2432 -6336-3791 6466-1162 -9536--5658 -7950-4532 -6740-9706 -5561--2777 -8943--1293 4709--2703 5658-1403 -5595--8681 4118-9640 4908-1286 9408--5339 9742--8023 -2259-7663 8244--7857 -8729-9034 -2908-4410 477-9265 3235-2751 7670--9489 7997-3574 -3206--237 -9031-4627 1401--9791 644--5477 5976-6661 -3462--9181 -7458-2851 9789--8998 7555--503 -8752-2086 1079-7930 -9457--7959 -2263--6538 -2508-7969 -9586--5792 -2988-1410 6095-3757 4198--5708 2940-4077 -8881-5404 6282-9430 -8906--2001 -380-132 2351--4427 -5977--2311 -5827--6868 7765--677 6415--14 3827-3030 5670--74 -1068--5800 -9416--7716 6415--1136 -4981--4469 2787--1820 3212-1981 -9838--5596 -4866-8782 -1343-2687 8226-9778 -2445-588 6073-1106 -3503--8475 -8611--5836 -2628--1351 -6615--9238 -7736--7726 -1373-2656 -2419-268 5866-3569 344-2083 -5672-7204 -4867-6112 5501--7027 -6453--8847 4514-8544 -6769-9502 9531--9822 -3495-5165 7824-1212 -2240-6528 8261--5074 -4514-8808 27--6033 1495-4707 1044--3320 7601--1144 66--1899 -981--5796 -394-6080 387-2786 -4945-6323 1303--8248 7217--9096 5434--679 -3907-3602 -6195-1653 -6417--6810 -3074-1311 4390-4616 -3827--9034 8185-4991 7409--4517 -2394-4419 -4055--4370 -7650--9174 -6600-8573 -9651-1980 546--9197 1973-4964 -5588-6267 -8412-2810 5226--2638 -7876-2892 5010--1689 -4312--3890 8043-5088 2933--2217 -9662--131 -7100--4860 887--714 3943--8325 3547-6587 -3415-1549 -9977-2641 -3494-8607 1175--7602 6397-4649 -7304-397 7523-2837 4744-105 9926--6834 -7161--4698 -3006-2870 -6283-2343 -2983--2363 9115-6722 -3328-5820 1864--6104 491-9564 4376-9091 661--5737 9932--342 4788-8620 -4960-7984 9934--6235 -3068--5739 3811-9571 -8804-2031 -6331-7550 2026-9032 -4333-3946 -3101-5095 5485--7707 6263-1288 6583--5308 926-4580 9203--1668 -3867--3856 -9921--328 3786--2035 -5958-8807 4373-2062 -5020-3683 -1883-8107 -7088--106 3105-7445 8077--4018 -1229--1641 3845-6634 -2420-8797 1460-8401 -9027-272 -6513-2096 -8899--8557 1499-1698 1385-1623 6435--2731 -4008-8027 -6795-7304 1093--5015 -5039-1888 1329-1261 1714-1227 1953--1388 71--220 -2001--3294 -2990--3686 5509-7450 -6716-5895 2872-968 390--6251 475-6252 -4271--1512 -7397-8088 7277--6675 1456-6668 -2343--1007 5268--4376 -4507-5292 1736-5416 1844-5183 -9600-8141 -2822--9975 4805--7091 1255-8340 -9770--80 5166-5944 -1643--9123 7502--8596 4353-9939 8699--2057 1551--3459 6020--8276 1896--1532 6227-3078 764--3469 3318--5307 182--9206 -7912-8547 -2017-6672 8101--6912 9644--9933 -2976-6311 3629--5950 9185--6856 1909--3810 -9916-7748 -5707--5346 -9485-5296 -7581--4550 2478--8078 -4172--4477 3962-532 6435--9049 642--5929 9669-7417 -7976--287 6047--5496 -2312-2527 6817-6649 139-9940 -2101--5617 -7165--8376 -8514--1806 5418--7404 677-8107 -6170--9044 -6800--8972 -3510-5560 -2741-718 3093--8463 -2275--3951 -9712-6184 -8662--2934 -4511-7399 -4310-5392 -7912--8118 -41-2548 1486-2387 3219-6777 -4846--5907 -5417--2227 7954--884 -6816--6220 -5202-7420 -1395--7908 2176-1229 -4964-1354 7326--9072 -5990-4730 3219-1185 2395--8601 1914-2898 -984--9214 7313-6511 8674--8906 181--6790 -5825-3928 -5277-4581 8357--8059 1116--7070 -9374--8369 -9072-3088 823--3960 480--4062 7351-2593 4621--9549 5160--5800 -2627-1844 7309--5385 -6108-3396 -650--24 5849-6983 6526--2990 563--6910 -6420-4108 6507--9797 -762--4135 -355-1416 2371--5089 -7527--5274 -1430--1836 -9783--5400 414-5633 8353--7936 -22--4800 -6865--1381 48--1075 6114--2761 -6350--2980 4504--4374 5557-8231 2305-8613 6665--3774 -4735-1594 2480-5449 -1058-162 -5910--9855 -5185--5448 8360-7285 2822--1194 3555-9213 -5798--6431 3042-8049 6342--7373 3077-2870 2002--6996 9491-5493 7434-8280 5501-2871 124--7660 -3259-5467 -8075-6993 -9077--610 -6727--5575 325--2455 -321--4887 7884--2751 6653--7346 2767-6231 1068-1661 4244-1088 -2079-3767 8993-7452 2257--9963 -3181-2052 2865--106 9223--8830 -2684-4314 -958--7531 -9951-15 -3142--8745 -4590-7682 -1019-2412 6251--1918 -8838--7331 4670--6630 2410--9610 -9565-9028 -8585-2040 9652-423 9055-1685 2677--996 48-4052 -552--7104 5877--7738 -9769-3171 3859-8388 -871-8629 747--3728 9168--8623 -4087--6510 -9407--2152 8882--3107 -3638--3476 3019-3150 2923-1438 -7817--1233 9457-4945 7986--4076 8782-451 1767-9616 866--1410 -8354--9555 6768--6325 7164-6026 452--4981 5825-2365 -904-2516 1198--7526 -8208-6122 -1611-2795 -7106-4637 7252--8981 -7013--4150 9504--3083 3056--9703 -1829-748 8901-9406 -5050-7831 1853--4828 -8156--1857 6236--3648 4199--4218 6028-562 -4127--3445 -1863--3835 2780--1366 -2586--2532 -2822--9325 1904--6069 -405-2748 -3724--2662 6881-949 4903--4451 196--3425 -2402--7854 -6607-9111 922--1062 793--9469 8213--2453 -718-9752 -3823-9825 -6496-3488 9249-8390 1998-9509 -2728--7179 2944-2132 6552--7229 -2906-257 9296-244 9416--4050 -6463--5504 1725-8077 -660--5003 -6930-3158 7898--3818 5905-2644 1820-8905 -9438-4815 6016--3883 -2486-9137 3074-3679 2370-7561 4477--6416 -5411-6346 9601--1186 2606--2160 -85-4914 9937-5478 -1099-2731 -7629--9682 -5603-5100 9565--4532 -852--474 -9127--9525 -5632--4555 -2822--1512 -334--1036 -6426--3298 5807-7245 1095--2119 -5227-7165 4457-3038 7168--2276 -6274--4703 -8501-233 4585-6565 -1316-1534 5589-3215 -9294-6799 7744-5210 -951--5888 -3436--4753 8553-6847 -3573-393 7--2695 2961--3522 55--917 2148-8302 6677-8139 -567--4327 445-2208 7874--12 -3149--9608 -7758--5380 -2763--525 -8130-5319 -342--1388 -2382--3929 5117--5062 -2765--1499 6359-6772 7154-6001 3849-1494 8157--3429 -9865-9539 -1658--9591 3973--9104 -8570--781 6276-2145 -58--830 -1025--1899 -8197-9560 8929--8662 -2946--2138 7217--1632 -6758--8449 5682-6250 3199-8208 -776--1786 -8620-5578 1169--6656 4371-2094 1566--8940 8169--2574 3626--5720 5352-4707 -9647--9590 8173--7678 -7530-3365 -6190-5772 -9666-1584 -8841--649 5177-2309 -9334-8634 2887-8870 -8557-4091 9258-6835 -9140--6575 7396--6984 4917--8679 2930-7032 -2170--8741 -169--6738 9998-1958 8244--3357 -1306-5422 9524-2104 4135-3744 -383--105 9847-5254 6432--2323 -2764--6779 8143--4988 9144-3547 -8157-537 -9973-3764 3590--4119 -4123-6478 4806-4817 1060-3239 3184--9717 7182-5803 5618--2730 2051--3994 -5425--6662 -820-2574 976-6231 8282--5288 7501-5010 2461-2088 -153--9608 -5639--9153 9631-2217 5245--8866 8835--2034 9224--4435 -3202--7656 5804-9007 -362--1112 -350--6312 2262-8880 2511-1087 -2402-4741 -2292--5433 -1470--3285 -6773--1861 8494--4280 8908-2476 -3245-8685 1177-1967 3242--2418 4819--9117 -8928--2237 -9969--335 -1494-5554 5893--5455 1484-631 5267--5143 609-2718 -6652-8143 6584--8740 441-1626 8107-5445 5640--3224 -4647-5761 5084--2826 7658-8808 -6834-4577 -5099--815 -7552--3839 -6661-8051 -8427-3273 -8183-8820 3092--5138 217-1138 -9857--1486 7731-5262 4203--2367 -7350-2027 -2357-5077 8169--5513 4571--1382 -6537-667 -579-5703 9256--9013 9969-7469 1270--4968 3414--1187 7112-1079 -6140-629 6129-4224 -106-6619 4517-1133 1778--2742 -9274--527 -8759-3767 3749-3030 3377--6069 6223--156 -1470-6916 901-7822 6637--5006 4681-6211 -3440-759 3779-6438 -9415-9504 -8499--3966 650-6648 -5147-8851 -318-3458 -7154--2717 -255-985 -4531--3222 5775--4160 -5404-6390 8617-6655 7452-2462 -434--3396 9591--1103 -3538--2062 9626--1982 -8142-8247 -9831-1438 -254-100 9119--8815 -6248--7289 -9216-5528 2515--8449 -4063--6496 8811--5287 2718-8665 3268-8687 5705--6986 7875-524 1558-1409 -873-1729 846--8903 -7781--6733 -3371--9148 5945--378 3803--5085 9094--7847 -9360-8883 5240-6413 739-9069 1571-7638 -3499--9732 -4809-6400 -3731--8039 -4058--9168 5096-8029 -9332-7955 5593-7265 -3146-90 1157--6088 -4642--69 -6592-21 -7674-5439 -1219--6512 8963--7250 7279-99 -1834--3774 2908-4319 -3345--607 -4498-566 -9140--7199 246--3079 -5097-2933 -4454--7553 712--8514 5191-2421 9279-9874 -1766--5090 8130--2946 4127--4256 6841-8194 7165--886 8260--6155 4476-7086 4949--8554 -1064--4101 -6829-6940 -1856-3911 -7455-5108 1963-1932 1961-7417 5635-7366 -2132-7008 -3093-1068 -4531--5216 5389-2036 7338-1884 8581-5453 -3016-3951 9427-5290 6438--8333 9166-8321 -1186-6617 1164--7412 -7389-5638 -3288--6411 6125--6056 -3182-8327 704-2615 -7583-4064 -7581-4825 787-1088 4555--36 9410-1000-9695 -5162-363 1271--7337 9563-4421 101-1497 276--7367 7024-1453 -7234-1148 -8750--4852 6638--6378 8157--5004 -2919-9238 -7013-9540 -3166-8870 -2867-5636 4701--8023 7996-6750 -9665-3928 6815--7832 4037-552 -3891-9367 7126-7163 9477--7136 -9405-4434 -341-177 -2234--7717 -750-8995 -517--1116 -7577--4042 8175--9079 -2679-7267 -11-37 6839-6974 -952-4650 6919-6649 -8095-6200 -1349--9484 7487-931 -4189-1192 -8454-2166 9986--1841 -1473-1730 -2206--4842 184-9427 -3367--9393 -727-2524 8222--6541 -6504-6416 8799-9958 -4533--112 -4603--9054 -1007-5580 -5976-8970 -4907--5948 3280-689 8584-9330 -1633--779 1896--7167 2770-7986 6577-533 2532--3264 -3497--3198 -9020--7641 1225--4735 -1115-8926 3179-3856 5578-86 3956--6235 3876--6941 4713-3882 8917-1869 7830-2192 -8878-7135 9085-1414 6002-7765 -5911-7294 -755-3709 -2613-3262 8128--8261 4172--8949 -3287--5686 7047-6077 -7049--6606 6656--2964 132--9547 6038--6336 -1552--2155 1979-9492 4520--1727 7087-5393 576--5290 -5000-3951 -8410--9816 -9232-5014 1174-3127 3420-6318 -647--7739 -6036-518 -5461-8519 5566--334 9102--462 1869--667 9346-3670 -3613--5650 6311--3500 -777-6624 -4175-6993 2947-5261 -8367--1848 -633--6023 -5246-6921 2138-983 -2260-9586 4035--2907 9183--6119 4771-7621 -8294--7572 8241--6047 4990-486 7807--7074 1983-7434 403-5119 -8827--229 -7809-8071 -1922-2980 9268-7739 -2625-6219 -7976-6324 5087--4210 2314-2747 -8384-7476 -5206-2850 2684--3269 -1648-5784 9312-7266 -3195--7245 -9772-8339 5298-6256 -4413-466 8053-1766 -7819--4769 2925--1408 2968--8808 -7218-1707 -5264-7216 -2728--8633 -4641-3659 -545--7300 7355--4916 -6204--7210 -4178--7719 7269-4319 -6071--8824 -7868--9793 -299-6176 -725-8778 -8383-7730 848-9748 -2958-864 -1631--5806 513-9270 9477--9744 4175--4226 -3578--1655 -6983--206 -2569-9365 2927-6399 1612--1361 -4943-7811 -6975--5117 29-9864 -6416--681 5281--3689 -3012-3899 -1792-7419 4555--8272 4162--6540 6540-8819 5395--7283 -921-8783 8875-8498 -1007-9006 -5952--5816 -4458-6850 2266--3409 9165-2278 1708--1407 -1300-6274 5124--266 -9994--4212 -2648--896 290-6458 -8923--8830 7280--5774 9967--2498 -9838-8510 1167-7597 -7728--7235 -3327-1880 -655-1418 4356--8920 -301--8270 7743--7023 7415--6008 -7131--9426 1950-526 -3258--9523 -5255--3298 7475-6149 -6680-7039 8537--6676 4326--411 -2625-4693 -7265--9648 3311--3888 -7417-6463 8820-1616 -5222-5941 -8541--7691 -6071-640 8257--5793 7795--3982 8183-5297 -6969--5731 -4177-881 -8492--2851 -6376--8779 -3144--2291 1716-4133 6141--8818 -8491-6128 -3406--3313 -6620-2606 5140-3569 4875--6913 -5010--4599 2834--7834 8248-6057 5999-7072 3801--7321 1989-2715 1063--2706 6758--4020 -8230-6307 -9148-8598 8235--9478 -4885--3726 -5037-4572 -9256-1872 8008--9356 1355--2993 -9914-960 -8340--8117 -1960-2983 -2160-457 -2762--9734 -4579-5566 1038--5833 -5949--2040 636--2036 3781-2410 79--6724 -2320-4824 7440-5110 6776-4946 8358-6779 -4008-9233 4299-8976 -5227--5982 -6675--4245 -8116-9700 6228--9275 1275-4101 2652--5827 6841-3102 1040-3178 9036-4179 -1586--6449 -153--8901 3411-5550 -2515-1536 -7202-8309 6354--2889 8791-6527 6882--3753 4172-8157 -4658--5600 -4522-9043 1656--61 -4405--436 4651--581 -3039--9884 7502--8820 -9637-9853 -9228-1297 -9856--6651 2777--5878 -5309-6320 -7610--6425 8643-9706 7150--9569 -2561--8785 -351-9989 -8919--1705 1075--4243 7949-8241 -7750-8511 3649--7251 -3396-7191 5029-8607 6308--6367 1915--3699 -1255--2804 9628-6348 9026-6372 -5005-7308 9439--8782 -6164-3483 -8619-8645 4558-770 4681-8059 547--7665 -9334-5219 8454--4918 -8844-1736 -60-5570 -8620--4574 8937--642 -2227-1932 700--1567 -8163-1221 -8500-7467 2197-3491 9979-5730 3437-6387 3443--9233 4363-1275 3228-5807 889--4689 3454--1080 -1272--4402 4324-2444 -1859--6138 -6263-2347 2246--1531 540--4507 7096-9046 -6005-9650 -7857-8187 4294--1471 -8290-1466 -1700-4554 4590-5992 9144-6038 -8270--4098 -5596--6675 5804-2416 -7504-7136 -2837-1855 -3474--1620 -1594--590 -6554-6672 7768--7661 882--8893 3330-532 669-900 -6613-6519 8024-1633 9930-6476 -8379-6563 9706--8297 7793--1669 1161--9261 -965-4465 -119--1480 -7853-6573 9404--7410 9720-1876 -8189--2244 -9191--2019 4961--3235 -4195-7916 -3047--6437 9481-7154 -7718-8857 1540-4880 -7520--1744 3048--9861 -6160-3369 -5506--2043 -6457--6720 -8621-2602 9958--2901 -1935-6554 -8907-7854 6335--9163 -4081--4502 1408-810 331--6924 6204--3388 4678--5390 -3083--9651 -5837-3833 -9274--5061 -2411-4623 9671-8102 -6039-2872 -9926--2086 1440-2474 -4395--8724 -6471-2358 -4214-5502 4172-7444 -5961-7603 9644-166 -4278-2062 -3119--5698 6684--5864 5528-9060 -2674--6253 -9537-585 550-5700 7710--5813 3755-7908 -7091-9559 -9130--1351 -3042-3546 -6717-8275 -4279-6269 411--6296 2433--1081 1383-5709 -755--5878 1615--1456 8652-1626 -8374--6273 1958--3979 -4134--5663 -9360--5988 4179--910 3870-1494 5490-7599 -7391-8178 -3696-7680 188--1854 735--8920 1729--3898 5896-4745 9609-4712 -8836--1490 8617--4550 9628-8779 6960-3463 5890--4170 -7458--2282 -9074-2851 6044--6360 8052--309 -8730--7634 137--8375 -8588--3626 -5875--1040 6844-7818 -5373-6393 -5177--6021 -1644-4414 -1867--5893 7469--2779 -6219--1971 -2460-280 9673--9589 4142-1581 -4290-6993 6887--416 7515-7206 2861-5212 -9222-4462 -2622-1355 1679--8701 6250--9649 5521--5188 -2387--3198 2806--5871 4160-8014 4728--3113 3483-3249 7506--2331 4146-942 -1966--6312 -9836-9366 -5628--8241 8209-2317 7998--365 1904-8080 -5104--2678 -9225-6021 -5269--4414 -1780-235 -2050-7845 -2066-1509 8128-8198 -293--2620 9450--5146 -467--8740 -9309-2676 -5200--1905 7850-7166 -4856-6177 841--3530 -63--9607 -1721-1558 770--6250 1119--1686 -6994-8841 1496-1066 -2948-7806 5512--8040 -1455--5508 9650-9368 3319-9722 8211-213 -3049-7380 4012--273 4668-4648 3817-8726 -9907--1689 -3682-1737 867-618 -4534--3795 -5405--2395 -6228--8051 5043--9713 2798--8163 -2742--6702 2584-2907 -2258-4204 3149-94 -6553--5222 -8329-3844 -1224--4766 -184--8953 7250--1411 7925--9470 4804-9155 -3581-4557 3776-6640 4940-9903 3658-9437 7356--1864 -4581-9720 4421--1159 2086--2967 -6513-3890 2637-8794 7435-3230 9872-66 1652-9157 3281-7850 663--3888 1480--9091 -6507-2503 -3--9483 -9929-1203 9405--3943 -780-7359 3445--3489 4019--1779 -3062--6221 6171--4673 5374--1762 6764-1727 -2665--7025 -8767--5086 -1379-7148 -8113-1545 -5710-2668 -5080-371 5708-7243 255-7198 5370-3464 -4638-4599 9166-1175 -4131--5725 -1757-3015 -9007-3719 4300-5706 -8405--5577 3433-2030 -801-3225 8940-1915 4509--2052 -269--7559 6380-1765 3901-1630 8539-5235 -6305-7769 -6142-3140 747--9396 3991-785 -9167-196 4086-4081 -3710--7097 3245--3865 6049--7628 81--8912 7497-4607 4235-5780 3724-4423 3125-4997 8587-4887 8029--8815 6676--2568 1860-3657 5132-6609 -3743--9185 3917--5648 2152--4104 3248--813 -2175--8492 -7910--1093 -9334--4599 7608-3734 1599--6717 -368-4533 -4673-6920 -9310-7830 -4436--7950 -5804--5720 5972--9403 -1204--6042 -5752-9089 -1058-3297 3832--1699 1013--4924 6581-2314 8995-6290 -2380--7441 -635-2090 -5500--5411 -453-4691 -2540--1588 3742-8987 7972--8335 5939--917 589--3147 838-6304 -9231-7554 -4594-1825 -9613--7232 9898-2059 -6595--2956 -4715-8302 -8500--1727 -2885--4628 -4890-4286 2035--1964 8996--4102 8050-7128 3875-876 -2772--9073 -4547-7227 2401-6200 -4797--5182 -8100--9993 1281-164 7003-8248 6979-8839 8243-4851 -2860--4482 -4795--1499 4422--5220 3487--9379 5151--853 9852-8069 -2718--7982 -5358--4933 -5599--738 1858-9278 -3034-8969 -7777--7238 -3299-6760 2369--7228 -9720-7289 9634--6088 4504--9774 1821--1318 7263--4961 6714--8805 -5176--870 -5546--2932 4594-8335 7387--3167 2655-2704 -2560--768 8447--1004 5481--2815 6431--8617 7418-3474 631-6110 7715-3000 -9921--177 -8192--1736 8048--5549 5987-8419 -2247-1102 -9949-6208 -9593--159 -4580-8081 8284--3732 1106-893 8420--7372 2098--16 138-7902 -3595--4675 -4356-4344 -9283--6290 6399--6634 -8924--7265 -3280-2479 2396-7635 -2908-4841 -9802--8692 2935--1097 -1581--4563 -9324--6390 -1600-8213 -8625-7319 -2089-9501 8426-345 4632--3561 -6520--5452 6865--3647 2472-7396 5417--8736 7669--9479 -2726-4952 -1797--5375 4022--4080 -6993-8526 2154-8976 9183--4580 5838--6008 1559--9689 -7024--3418 8581-6277 -6417--4093 -2891-8887 6085-212 -9190--3817 140-6953 2902-316 4629--9373 -3807-2937 3410--2892 9979--3167 4813--2263 8090-4752 8328-7095 -3504--1976 2648--4230 268--9463 -1498-1757 5844-9096 -5337-7398 -7704-2665 9978--1010 -9906-3026 6216-1154 2759--8648 -9737-1985 8092--833 891-4187 -8142-32 -3520--1459 -8258--8652 4541--3284 -8020-7397 6533--773 -6762-7646 9893-8291 -1135--6697 4357--2498 -5713-5824 -4584-6695 -8260--1721 5742-8388 -5975--2444 3227-4699 4353--3418 -5559--759 9019-643 6928--2294 6079--4360 -3722-7406 4176--3217 -6164-7058 -715-4565 -6193-8685 -6788--9629 -8641--1468 -5116-6155 5313--7369 9451--6749 -8514--6214 -6240--6247 5179-2764 -8676--560 -2595-1098 7681-8221 -385-9902 -3935-3854 -5367--9494 682--1909 -8245-6714 -1986--484 8925-7463 6574-6825 2073--9757 -9645--3822 -42-7057 -5748--7146 -6627-9939 8190--4177 -5504--917 -9870-3018 1836-3635 -6572-7853 9634-8986 -3759--9493 -99-5750 -7646-1351 -8440--4550 5434--8336 -6907-9131 378--1795 4150--5589 9948-6027 -5200--1984 -8244--6918 -7588-3645 -2849--364 -4126--6798 -9149--8058 4244--4129 -4909-689 3379--3845 6000--7162 7818-6863 -7857--8339 6208--5612 -7895-8680 -3901--4625 7571--6234 6894--1140 8013--309 -1041-2279 9836--7355 7059-6306 5340-3996 9617--490 777-9626 -4281--3394 -6566-1315 5323-5073 -8482--2018 3910--6902 -1048--8800 -9977--587 -3712--6134 6556--40 3488--4549 -3777--319 -6957--9791 -5603--302 6679-8234 773-3573 -2679--815 2547-1809 -6922--6041 -8046--7592 -1844-5212 -1242-7082 8371--1830 3890--5191 189-4311 2060--2629 -2779--4217 739-1984 -1505--5587 -3053-7216 -3972-4099 4980-9201 -5172-6968 -2664--6978 -3795--1990 4313--2736 -7253--5160 1461--4342 6407--4358 -6362-6102 -2643-7715 -4090--2395 1528-1619 -1058-9385 -3546-8260 -9996--5679 -1609-5074 205--1281 -4172-413 -402-5848 8711--9685 -4079-7503 4626-1936 -7229-9308 6856-4293 8887--8381 3980-3409 6549-757 -4043--2774 6348--7826 7880-7500 -6804-4220 -4518--2608 3397-7593 -782--6904 -8030--5343 -7144-245 -9841--8962 -9859-3569 -5356--8699 5026-2670 -5443-2215 -8054-2740 6908-6718 -8662-9888 -2846-9749 4562-3487 -9059-722 7580-8337 -412-1384 7786--2965 4429-998 4282--107 -2103--6649 5992--2542 9930-7748 -621-2540 7558-5744 830--4621 5631--9133 -5372--6568 -5065--8540 5660--9778 -5495-5332 -8138--5317 -3228--7006 1720-6894 9802--247 -9177--3661 -5461--8186 6348--6839 5464-5955 1773-1619 4529--9457 -8364--3677 8626--6776 389--3667 -9308--1701 7402--3666 6956-6286 -6249--7059 614-773 5335-7154 8033-9889 8585-3318 -8248-3501 -2652--4999 -9341-2593 -6435--9263 9953-1182 3968--2752 -438--6770 6514--67 6984--8739 6560-2002 -4992-3592 7853--833 -4815--4280 -3134--962 -8079--774 -8806-4753 6325--9107 3565--59 5432-912 -6102-321 8707--5366 -479--7748 -7540-1760 5501--8940 -4233-8940 -1417-1000-2862 -4674--4473 -986--4498 8611-5993 -7379-2384 -6332--9316 -9074--9056 6901-7617 -8508--3259 7630--3804 -4964--267 9512-955 -1331--1346 -2230--1627 1667-6060 734-1624 3394-8587 -1461--4843 -5933--695 -2847-5062 -9813-5829 5645-4313 -3314--3728 5507-2816 -7737-1503 3117-9610 6394-1553 -2193--8104 -609--9855 -7078-1431 155--9031 1232-9221 -6132--6114 1627--9626 8304-4045 -8644-7862 1496-1990 9294--8601 -543--9152 -9601--2347 4700--5088 -4557-4481 265--7431 -8459--3817 -477--467 9724-4296 -8378--6066 9660--581 9957-2766 779-601 704--6362 8348--2353 -2192--9859 -882--3316 -4594-8365 1904--806 2768-7516 -8673--5303 -9248-5799 -6773--7352 -3967--6054 1900-3840 1329-2167 -2840--1737 9614--9955 7756-744 8618--9830 3419-6691 3135-2217 7135-2277 4015-6079 -1004--7811 7038-8390 -4215-5173 5339--5597 6209--3445 5474-6418 -56--3499 -9266--6851 -9852-1038 4492-6503 9421--719 -1451-8940 2808-2293 -9488--8184 -4629--9671 5985--1809 -6138--8773 -1311-6651 8745--977 5132--6331 -4633-5847 -3120-5317 -4717-8954 -5752--6269 3939--6092 3140-3495 2036--5415 -9979-3499 5050-6066 -8756--2169 -8458--7104 -9806--3273 -7306-7310 6968-7406 -5866--5455 6832-1528 -5076-7002 2236-8533 2546--4337 -8809--4523 -5822--1316 2464-4231 2204--1981 -3460--7986 -1820--6902 6471-5840 -5718--7860 8824--7962 -9836--9628 504--1539 -5371--6769 -2049-8888 1819--8247 -3401-9899 -7503-3938 -1379-4331 4161-2241 -7483-8100 -9125--9118 4460--2501 -9687-71 6439--6696 -8910--3727 6786--5753 8258--2488 611--3970 9847-6263 -5981--5149 -3310--5462 -8734--2117 -3457-1436 3945--5779 -2935-2198 6305-3281 4431-6105 -9318--5061 3815--9582 -7139-9974 80--628 -6755--2189 -2668--5556 -6308--7381 -1100--860 3655--3950 -9876--8461 4286-3763 6629--8313 -7085-753 -8546-2951 -9760--8461 4579-4023 7021--9240 -1443-7750 -3010--2287 4190--7348 -3025--3053 5155-9159 3488--3762 1843-5178 -2578--4294 -5959-6573 5988-2876 4231-2775 -7571-9007 7102--405 5355-3999 -4090-8597 2199--3336 3328--6613 -6095-1520 -8972--6217 -7327--2487 -7137-233 -5277-523 2263-7342 -6533--1146 -3645--9905 1456-4215 2478-1092 3076--2609 -9667-5309 9782--4342 5369-8367 6395--7924 9898--8577 5203--5020 4850-4499 5954--9926 2156-2585 -2286--4018 -1740--3581 820-2940 7732--1603 1548--6121 -1843--2092 -4952--2990 2234--9944 -7966--5752 -383--6668 -699--1129 677--5000 5779-2680 3894-1647 1371-2106 -696-9020 7784--782 7512--2475 -7830--9530 -1521--3564 -1390--391 4508--8323 -1071-3920 -7708--6189 -4310--5846 -14--7032 -393-2590 6363-3804 1401--6301 -5995--6002 5--4385 7293--8797 -9268-5077 1700--8548 2523--2382 -2536-4354 -7586--8075 9032-2123 5594-4240 3603-9975 -9908-1841 -904-1985 3548-7813 -4976-4654 5990--4157 234-7227 2889-2857 3000-3580 -4724--4514 2498-3935 -2796-1084 -798--1140 8891--1120 9321--2113 -1599--28 -9302--465 7383--9100 -7667-2017 -252--3030 3134--3690 -9932-2279 -5964--3475 3353--5001 2696-6249 9009-879 -1580-749 6416--3136 -1274--2325 7001-222 -5147--1889 -6572--5626 8972--1924 -8682-6312 -6441-2770 -4829--5003 4466--8532 3015-5721 1759--9923 5733--8819 995-3349 -4698--5630 -1376-3072 6493-9653 3099-6861 -3579-7749 1861--3084 -5339--8816 -9562-8764 -6747--7866 -3851--7999 -7625--8376 -7905--5909 -6863-6044 3307--3624 7772-9944 5813-2787 8269--3590 3248-9925 -6810--1371 6881-7254 -3955--3042 2195--1086 8764-2959 230--1027 -5145--8157 -4230--3546 2282--559 -6938-7149 998--6516 -17--8539 -2475-3085 -7600--9503 4061-9058 6068--7915 8957--2518 -7644-4598 -8730-6012 -2645--7334 6145-9192 -199--256 2908--3523 8346-1779 8885--4899 -2709-7772 5833--6068 2669-9258 4064--7933 7723--1780 -1726-3724 -4422--5167 4015-2465 -3017-1294 9976-848 -2612--3747 651-7942 -3503--6176 9204--2371 -5463--4552 3905--1048 -4960--5292 259--4896 1709-5184 2119-12 7428-5708 7668-766 6333--1630 -4477-7005 -9289-464 2416--6128 1878-286 9441-8784 -7619--3865 -689-3315 7499-7211 -5604-948 3811-6323 -7898--443 3539--7989 2492--4929 -9126--9606 -4846-4476 -3443--5044 115--8135 -4652-7830 5340-5427 3362--6147 2508--9818 -2385-6489 -2875-4429 -8613--3745 5841--4763 1620--327 -3390-456 -8105--8633 -9936-8151 6848-2122 -4527-6189 3529--5254 2191--4408 6013-8426 -7579-803 2750--1892 -7582-2799 7661-1340 1421-8868 -2732--5573 5008-8106 -9133-7269 549--5866 -9885--8943 -8366-8354 -9324-7998 2942-3672 3835-8665 -5839-393 -2510--5303 5722--9503 6225--4223 995--2041 3248-1446 6003-1912 3839-398 3876--2712 -2275--1148 1110--9418 -1363--4044 5848-5281 -9036-3348 -2949-5785 1215--7489 5992--5684 -6588--8383 -9929--5112 1998--7910 -4766-2801 276-5105 -3985--4323 -9588-2296 33--8493 -6028-5411 -6923--4061 9956-5460 -2398-1718 -6557--8909 2299--2784 -2647--3227 -6338--1047 -1019-2077 9644-3687 -9259-2018 6519-713 3822-2240 -5911-40 -7562--7044 -7570-4883 6250--7374 3258--1277 6215-516 994-617 7006-1165 -7783--3640 -7487-3420 5243-5276 -5548-5039 8113--4753 -4238-6369 -7834-2993 -8844--3437 9936-1633 3838--4491 -7332-7893 8240--810 -3231--7214 -630--2212 7555-5038 3113-6312 -873-4016 -1439-2455 9322--6576 -1640-8295 2246-4178 9294--5434 5740--8299 2970-4868 -5989--4969 2832--7531 525--5631 -226--2266 6917-9118 6667--4793 6206--2873 3472--5143 862-2598 3953--1258 -6795--8653 -9829--661 -3124--7642 -2240-4040 -8647--6227 -8366-6250 4786--2860 -2875--7742 -5568-1187 9856--2746 2944--6052 -48--3795 4967-3685 -5838--4655 1681--5336 6259--4853 -2706--3217 -5633--1431 -1640-5459 -5356--7664 -3073-6326 6406-5488 -5923--8818 2359--8830 -580--1675 3201-6518 2697--2738 -6565-6721 -4827-1569 -8418--4266 6839-9873 -163-2690 5291-2231 5148--865 5647--1637 1551--7551 -9141-1873 -129--8772 751--3145 -8414-1748 5287--4232 5318-8722 1883-3503 -7792-3717 5231-2007 -8646--3330 -6615-6385 -2510--9824 4947--1494 -1650--73 -3000-1040 4542-7 7069-7777 5411--7991 9000-5581 -6909-5454 -3522--8637 -5283--7636 5083-9644 -2937-6340 9748-6353 -2101--4614 7275--7905 4924--3390 -9682--3890 -6405--2811 385--4526 8455--9569 2735--6487 6887-6379 -292-6736 5718-5541 -3112--1232 -3891-9447 -5711--2901 7898--8779 1660-1300 8057--9429 -5543--2887 3052--8253 5706-3096 -5006-7378 -6706--7008 10000--5540 -2774-1218 -474--3397 1401-3033 -2304--1461 406--7902 -1889-4762 2995--7932 3583-9595 6314--3340 -7143--69 7300--2222 7037--3704 5718--984 -5346-9702 -6526--37 8652--1597 -3051-977 -5698-4675 -1925--2162 -845--2480 -5982--2875 1172-5895 -7950-6713 -2903-8246 -534--9484 8848-2952 9344--9869 -81-9553 -7690-409 7516-6105 -5071--8409 -3753--6 4110-4716 5717--3094 8621-7651 -2980-9386 -8437-5881 1374--3014 4886--9601 5463--5433 -5422-3213 9339--6976 -6435--2526 9928-4914 8593--6439 2967-3606 7442-1205 -4790--450 7145--8575 9251-8199 8813--2126 8588--3052 -3566-335 -2035-3511 2359-573 -8322--9972 -2864--5216 -9931-2109 -1532-3793 4029-6888 8548-6195 -3756-1990 1004--7948 -2477--4362 247-2815 -5926-8670 3074-1690 -4505--2575 -9387--274 -4364--2714 -6658-7866 -3648-681 3942-2694 4119-6181 -8072-9736 4548-3450 9207-3946 643--9324 6857--1994 -9342--4907 3003-9802 6637--4213 7355--8967 -7099--1247 -1995-2717 -3328--9442 8318--2428 -3571-7067 7466--474 -1863--6546 7434--4401 -9661-9634 855-1721 1790--256 7403-8359 633-9240 5526-5741 -9373--7166 4459-2666 4628-3658 4930-2488 8375--2395 -5584-2443 9871-9806 -4188--6181 8746--3802 7592--1489 6435--5020 8743--1353 -6030--1900 1544-828 9859--7195 -4418--6016 -5749-1722 -418--1603 -5435--2887 3660--1239 7279-9137 2047-7799 4570-7898 -6673--9013 -5273--3181 -7277--7244 -4203-3422 -6830-1187 -75-8402 -414-3008 -9057-1845 5017-2483 2382--8510 4905-7624 8279-1048 -9495--3153 -3842--3616 -4633-692 7154-5125 -5757--9839 6229-386 -7846-2618 5548-1399 -9549-2391 -4384--3980 224--1538 -5801-9145 5517--5276 2567--7176 4022-3124 -638--1683 4385-34 -7789--3880 7314--7430 -6407-217 -3678--6713 7839-1432 5582--9201 -1894-7814 -5801-4998 1623-2782 -5869-1015 -9268--3766 -5832-4198 5082-316 1529-5375 1403--9406 -7116-4599 -5623-9221 7017--1491 -1842-4257 -1681-3490 8993--1943 -402--8840 8162--3456 -8961--1955 8055--1493 -3015-1569 -4760--1489 -5056-9987 9498-1993 5001-1688 2869--3004 1972--4411 -4708-8244 3081-6917 -6461-6566 3795-3701 -9175-8047 -5817-734 -4792--7546 2212--1558 -1770--6592 -4753--1715 -9081--1366 -9865--5072 437--3522 5068-4845 2815--9107 -2083-502 -2917--8274 1192-3063 -26-2308 9959--1394 -197--1467 234-7315 -806--9872 -100-1911 -7--7981 7203-629 5098-5243 -593--9853 9331--4010 -624-818 3862--7838 965-1731 9090--693 5780-5753 1729-6403 4122-8462 7688--7450 3753--6317 4492-3479 1327-8642 2670--2716 -2714--5994 -88-3317 -7608-1838 -9146--7299 3617--2784 725--1731 8263-914 9092--1052 2472--3975 8027--8022 -2122--4273 -7199--5601 -4923-7248 5297--4482 -4031--523 9115--3643 9789--247 -6893--2455 9690--1342 -82-1651 -9861-9503 -8830-7978 -2964-9463 -8327-4661 1946-6910 -1574-558 -2926--8775 -7572--9958 4326--1474 -4176--8361 -9554--1922 2005--3313 -7069--5218 2419--4145 -1577-2434 1552--6444 9831-9994 2641--7411 -7431--8306 5528-855 7137--2105 -1675-143 616--8034 -6339-6069 6336-8942 -6557--6321 8358--7927 2622-636 -9354--5662 1185-4016 2772--39 -7305-7291 8469-2590 -1229--3144 -2384-26 -7660--9930 -9349--5548 9623--9932 -9787--7125 5573-7702 7680-5792 8618--1711 -1078-3173 -3177-239 3056--8696 8898--8275 8600--8343 -6767-7402 8036-252 8347--17 4004--6590 -5450-7487 -3195--7537 6905-4418 -4191-7401 -5732-6394 2108--1260 -806--203 8450-2927 4997--4236 2878--6082 -5375-3055 9852--1371 9600--5693 8010--7953 9393--4519 4988--5492 -6964--7464 4447-461 -9874--4879 8076-8291 -3929-9274 6628--2301 -4227--9229 3005--7285 -8204--2519 5980-9651 -3417--9722 -3939--7664 1692-6133 -5484--4392 4671--9610 -7703-8250 -438--6609 5195--800 -573--3969 -7016--3753 -9596--3532 -9016--1100 2028-9134 -1787--7448 -4724--1625 1653--3405 7486--2332 -3651--6536 -1082-4851 -9284--8225 -2051--8348 -7276-8053 -2389--42 -9787--2426 -184--1947 7812--8830 4334-7025 -5289--8379 -8066--5876 6596-5979 -7383--7682 -7370--624 4279-7595 -2781--7027 5825-1478 8484-3967 4888--99 4998--7609 4237-3701 4523-348 -7227-8534 -4282--1025 -6031--3919 -4039-2147 4391-2423 -8590-6431 2463--6205 6869-876 7595--3438 -6249-6474 -1023-8949 9930-4449 -5476--2410 -5864-9942 -363--7101 4535--1409 6151-9852 -6922-6210 -7273-4990 2017--1701 -8713--957 9959-2200 -8387-9955 6061-9438 4700-1285 -3471-6845 773--2029 -5314-6739 -8270--7739 -1344-2576 -2546--6747 -1795-7635 -1500-43 -8123--7270 5533-873 5737--2782 -3710-4778 -6640--3793 -1681--2232 9926--4455 -9834-1537 7369-5555 8063-4717 9745--4436 1058--1306 3524-4697 -4911-4624 770--4049 -2283-8518 -1834-4036 -2256-246 -5510-5882 2836-7211 134--2432 5464-1123 -1100--2794 1264-5006 -6121--1421 -7391--623 7306-151 4059--9941 7365--1466 -2079--1372 1548--7769 7602--4011 -4343--7043 8641-896 -7507--649 -3406--7252 -7801-8258 -9624--4994 3373-2893 5840--6777 2955--3631 -7635--5607 -1054-1193 1663--9413 -6025--7223 -425-7884 -3440-371 -2734-4375 -8336-9113 -2108-3082 8852-1000-9504 -2327--6783 7605-5145 2655-7344 -3956--3298 -8188--3661 -1942-530 7531--2967 -3794--8185 5593--2191 -5901-5867 -8994--5766 4751-5353 4891-195 8736-8195 6654--3653 8955-7146 6684--220 -3841--8187 4653-7937 -4169-100 -6377-3954 8221-339 9432-6548 7864-7684 -7271--9642 -3818--730 2688--7020 -5101--8824 -4905-5058 6081--7233 7415-8405 -915-188 5853--7544 6285-3073 -1685--3786 -4684-4711 -2815-5341 -9555-4724 8162--6892 -6832-4293 5743--449 7338-4966 2410--7745 9742--5434 9692--4213 -1588--6935 -354--1890 -5764-5253 6621-9633 -2211--9012 -4441-227 4748-5537 5937--9794 1995-8921 8065-8492 -12-4229 -1851--8585 6183-5775 -2607--9376 -106-736 4180--6144 4932--9979 9360--5155 -5464-6762 9811-2744 6156-6113 -2288-3176 6918-3726 1784-9888 -6480--1500 8409--5407 8235-594 -8324--6689 -6580-3092 -6171--9252 1059--8363 -4901--7622 5481--7304 -7848--658 5041--8746 -9277--3671 5662-6547 4954-2986 -2310-9381 6000-8522 -2816-1102 -7335--4391 -9693-104 8573--5097 -2568-6002 -2814-8315 6934-924 307--5378 274--9815 -4728--6310 1048--368 -1441--388 -6364-8930 8158-1037 8196--797 -5476--6818 -9392--3784 -5617-1038 -7139--4551 -6273-2470 8871-8273 9611--9802 -1406--5498 -4530-8470 -5796-8033 1--6768 -9163--7610 -9358--3422 2622--1040 -215-5208 -3033--9487 9723-5593 9253-5180 7580--3820 -7066--1825 4614--1554 7823-1636 5312-1141 -397--1017 9260-7463 1239-7585 -3770-4319 1994-1706 -8235-1057 6240--594 -4558-4967 -622-2426 -5727--3873 7232--1545 1484-9931 -7631--7717 542-5554 5542-7308 6360--6763 3596-5097 -1127--1928 -5252-8396 417-1054 -741-4493 -1518--6291 3893-9338 8440-5339 -2918--2885 -992--1273 7791-6580 -7729--6574 3260-5414 4063-3000 -2920--9092 -9637--398 1378-9847 4645-8141 -8080--7813 -2015--2707 3507--276 1555-779 -1--2358 3731--6228 -2624--8528 -4406-5560 -2132-5238 -4389-2780 -7656-2680 -2618--5344 -8092--2252 -5265-5270 8923-8901 7438-2918 7083--4814 -5227-8066 -6535--8249 1907--1581 -9735-3709 -8428-6705 -5888-8547 9927--3660 8290--6325 -1073--873 -165--245 -4058--3697 -1531--2027 -3113--8968 9211--3042 -3781-1993 -82--1632 -9981-7108 3408-4531 7331--3995 -3954--6171 7673--4552 -4623-2082 -6775--9243 -8240-9823 8948--6204 -644-7389 6420-9121 7975-3227 -853-3150 -1817-7854 -14-2069 -9110-9119 -9858--4684 9186-6870 -8839-7429 7740-5406 -6262--8893 9432--3228 6662-8512 -7520-2168 1331--1990 2289-864 -7837-6851 -267--1467 -3133-9762 -9348-6108 6002-2870 -2064-6437 -9448-4940 -4192-2478 -9594--7863 4204-1819 -4143--6059 -3035-9272 6153--9136 6691--914 7412--1113 -8353--1434 -963-7166 1064-4694 3045-3684 8568--2328 -9215-466 -9569-657 7721--7991 -1122--8015 146-5481 -5209--3174 -6999--2056 4594-1453 7826-6615 3797--9001 9543-3449 6649-1105 -88--2491 -1719--2737 6829-9578 -9411-4239 9471-4901 -1404-5978 -1912-7389 5036--9574 -6540-8494 3195-6348 1629--3307 -747-15 9672--6520 5827--5851 -5977--5092 -1855--5274 -9226--9995 6266--4233 8078-219 2588-9768 5266-9150 1653--3010 2497--1551 376--4692 -3221--505 -9870--7514 -6395--127 8727--6856 -2469--7132 -6912--8360 9442-1315 -3644-8639 9732-8609 -972--7426 -7091--8072 9781--2825 -540-3766 -7714--6548 9262-4406 -4864--9028 -2638--7118 -7841-2308 -3259--8402 3392-6617 -3502-8588 -2148-7605 -8655--9364 2004--2808 2365--5677 -8184-2197 3103--4129 -5312--7567 880-1860 9304--881 -9698--8929 -6895-5971 -4074--8468 2725--154 8865-749 4669-1959 6715-3705 -2614--9996 -1347--7949 -5365--6531 -2281--8169 -4465-8577 8057-6140 -5357-756 -8364-4380 -3393--7934 1549-230 2152--4695 5563--4662 7272--3289 1540--2106 8433-5079 -6292--7462 7769--8726 8666-5657 8316--9349 1530-3778 -9212--5548 1153--5476 -4846-9500 -261-6411 -2711-6063 9700--6762 -5735-9 -4721-9667 3767-3537 8887-7138 5840-8919 -3913--5362 -9530--6844 -247--634 -3579--3083 6753--5013 -6867-4107 9146--3014 -1981-3487 9768-7574 6696--5261 151--8112 -4592-8769 887--8376 -4086--5461 628-4382 5454--8133 3104--3897 2040-5580 -2323--7726 -8156--9232 9431--2212 -2643-4692 -1226-7360 -7288--7168 -3894-8393 -1710-6984 -3224--4535 -6003--1680 5055--3004 6540--143 7648-2979 3845-5711 -9339-54 -2254--4127 32-5704 8610--7829 -3871-6993 -3101-2170 -4463--5638 -2247-4618 -4475--8341 -5274--8208 5259--4387 5164-7552 5014--7882 5536--9667 148-2925 4310--3598 -5745-5880 -8926-6857 6216--1838 8619-4523 -8989--7885 8206-6790 6294--5993 -9882--7269 -7694-2298 -9482-9893 7610--7177 6250-9547 3224--4144 -272--2455 -3618-3558 4201-1452 2650-9742 -1580-8818 -6939--7418 -760-3680 -4838-558 -4422--5869 -9767--9897 7873-8234 5653--1480 6850-3756 2431-6632 -325--4655 -4556--93 9009--598 9757--2115 -979-2838 9637--9638 9402--5049 4200-7882 -4815--5775 -9410-4767 -3417--9910 -6411--5956 4580--3596 -2564-2919 -9402--6534 8902-8256 8336--2615 3015--5117 -2743-9322 5797--1733 -6697-5418 -54-3244 8595-3060 -944--5877 -3706--3504 3786--3547 -8693--2662 -1833--3770 -9496-3072 -241--7264 1750--1491 -4358--4083 -226--1078 -5007-663 -6909-1523 -1253-2858 1887--1357 329--1054 -1989--624 1098--1642 -7912-1182 -9714--66 -8599-6905 4148--7663 3098-2603 3588--2745 7436--3082 -3308-1992 -8794-6838 3877--7489 4677-8611 8214--5354 5710-841 -9234--4628 7315--9651 6064--6436 -1443-656 1236--9467 4882--5580 -7519--2532 7414--1298 -5723--1858 -6221--4194 -7237--3823 5645--2466 3463--453 -3932--4612 8844--8568 -7933-3339 -4493-6379 1008-6728 3589-4861 -9143-5732 -4881-3665 8622-1504 -9574--315 5984--3700 -7707--9589 -2264-9015 7382-5502 -1394--2663 -8578--1192 3909-9929 8408-1982 -1584--7815 1434-1611 -8681--1233 -7120--5293 -7292--9484 3276-4354 -225-9110 3796-5021 6736--3510 7767--1750 7723--7718 6035--3576 3101-4170 3578--786 -6484-5184 -9766-9933 -8085--2103 -5959--6899 -7425--8014 5505-1429 8125--1511 -6864--9332 3816--9207 -4572--5116 3919-5769 6344--7740 -8799-4283 8191-9732 6755--8452 2718-5871 1606--623 -1476-8798 -8709--6809 -2676-1384 -9074--2090 -9584-8927 3736-5409 5852--2538 -1497--1931 1646-7600 -8372-4193 -7570--9728 -3680-6803 -5378--8065 -8034-6432 -3663-3361 -7925-7071 -376-3026 3740--6516 6450-1846 8422--5142 -6171--323 -6133--3343 6088--8806 -1483-8025 5688--7741 -3579-4657 5061-6086 -88-9815 244--9672 5774--4941 2475--7542 7506-4550 -4525--6347 -5344-7629 9152--4280 263--7430 7251--3487 -2630--7311 -3339--5080 -2698--3304 -6612--6409 -1273-625 -1173--2839 -5019-7858 -5239-1907 -5066-1693 4029--5610 5523-4561 2869--3111 -3170--9987 3097-5838 -7530--9264 9365-7056 4720--7534 8302-4964 -3320-9155 -2867--872 1932-7777 7627--6240 8735-7153 -8845--8227 3840--9460 9673-2601 5550--8003 8568--1276 8425-9001 -8397--1545 8179-6290 5176-3547 7895-1938 8905--9546 2116-5460 4040-2929 2830-4769 -9611--2403 -2318-5988 -9773--519 8951-799 -1501--1505 -6880--2170 -6133--9671 -3597-8042 3836--2517 1419--1581 5807--6097 -3702-861 294--2101 3994--5277 403--4549 8482-7962 4508--5206 805--3672 6911--8475 -232-3988 4167-9552 -4795-7434 8247--3613 -8218-6606 3802--8295 -6416--9068 -324-5269 9727--2404 2753-6271 3155-5845 -6199--5945 -8361-3025 1424--2585 -4710--4326 -2091--1692 -7417-3834 1566-8233 -1732-6118 -1273-2891 -1902--9076 -3901--9162 1489--1275 -4929--5586 1883--2926 7437-4415 -34-3489 -1460--8393 7003--1182 7406--9778 -4109--6970 5495-5743 -8246-159 8701-4543 -9850-7952 -6918-6531 -1278--4090 -2225-3349 6012-9950 -6244-3708 9520--2241 5722-3945 9627--4717 -5980--685 2991-9962 7819-4825 7369-3541 -8124-3589 -7745-8387 3007--5400 -1804--2744 6689--1259 5159-9477 -6882-1797 -699--1198 6589-1103 6748-8334 932-1846 3324-1893 -5653-1075 -1275-2524 -4324--4169 -5002-5897 -2862-2676 632--4479 -7894--1727 -1340--1969 -2603-6708 -432-863 -1570-7696 1958--9407 9735--1607 990-277 2894-4559 -5093-6822 -9900-3171 -5645--6699 1282-8703 5729-3683 598--9610 5069-8979 9867-6377 2475--3421 3405--3032 -5956-3487 4152-7216 4002--6208 -4352-2957 -2907--6634 3038-3002 -4124-1284 9897-1047 -3150-7994 -4442--7858 5373-3369 1642-433 -9632--4763 8907-8067 -3198-5962 -8623-8063 -5735-3698 -8450--8705 -4019--9750 -6378-8609 6386-3311 2496--5745 111--5678 -5556-4347 -2350--187 -1749--9376 3042-3806 -1825--6476 4869-2295 -7711-9493 -768--1296 -3793-9555 6996--3124 7066--4303 9453-428 -2082--9774 9463-3309 -451-3710 -836-7233 -5475-6248 -1039-3564 -7071--6522 3588--8898 5865-195 -3869--5903 3355-7806 -266--2379 -6649-5308 1523--2876 -4213-3783 -1544--9978 -8369-8275 -1199-9400 8878--3083 401-3149 -5284--5370 1175--789 -3211--6531 -1995-858 674--4543 -715-1592 9580-696 -594--2168 -5297-5788 -3348--1493 -6009--9991 -9833-7564 5393--5271 2765-7938 -1435--9486 -6895-2525 -2192--331 -7145-12 4543--78 2272--9095 9279--2021 -8067--3658 -5714-2985 9264--7113 2411--6577 -4245--5849 2258-3343 -7092-7004 9108--1606 -459--7869 -1348-677 -631-4978 4203--2019 -8381-8652 -8189--1433 -3472--9081 -8908-6514 2796-2883 -3362--1772 -5049--568 1482-6463 -9399--2087 -800--1245 -2094-5994 -7417-9720 3994--5741 -617-448 4942--712 -9998--4558 -5606-6739 -4399--2938 7346--5059 -660--5889 8733-4070 7685-2555 -5985--134 -5459--3499 634-4996 -145-5133 -6105--2268 -994-7778 9453-5070 2846-7683 -5301--568 9227-687 -9619-1328 -9974--4993 8114-4374 -5295--7915 2818-6108 1999-57 8248-4630 -5319--4492 3440-1273 -4566-1585 5905--487 -6636--5524 5483--6673 -3362-5017 2041--9734 -4382--1702 5131-1326 -8363--4211 3521-1003 -7036-1799 -3067--9231 2983--8820 7541-6328 7285--8095 -922-2847 2206-6500 -9586-191 -6001-5181 -1767-8607 4668-3931 -6538-589 6754--3847 7053--2483 404--8606 9638--356 -7158-8832 -8214-3523 1928--3297 -6458--2370 -1446-5640 -2272--406 -740--7638 9010-8082 4152-3476 8294--8709 -9165--6614 -1036--3525 5014-5516 -8191--93 5874-6477 8436-3078 1277--6849 6591--5968 -1549-4900 -748--6342 -1486--3004 5936-5019 -5073-8799 7694--8390 2198--837 9724-4877 5940-2321 -6062--7975 -4271--3233 -4171-8191 221-2552 -8084--6838 7356--2380 -6750--9084 7722-7175 -6052-8634 -6527--9858 -3207-7137 -7519--5391 -6477--8748 2678-3224 -164-3201 1100--5920 -2476--2624 -790--1015 5311-8891 -4816-8181 -5201--3031 -3644--8827 -2153-4154 6740--8364 -9002--5022 5444--9433 9290-8055 589--5076 9084--4546 4783--6609 8300-5025 1268-8586 3209-7698 -847-5464 -8469--2061 -1984--7924 -9802-7531 6200--5121 7787-9018 9326--2365 -5870--1517 -1617-9894 -2993-4387 1066--7560 -8086--6399 -3193--9722 19--8847 -2288--824 8519-8858 -1419-5015 -1630--8447 -6560-428 3475-4531 -4373--8041 -9862--1701 4710--7153 -6920--4207 -2166-1488 -7251-1752 2200--6675 -7837--8484 -2185-4167 9660-2776 5086-7310 -6262-1295 1886--9293 -5288-1251 -800-4574 -5171--8716 -3168--3833 -9092--4703 2637--522 -3523-3557 7934-1616 3496--4439 -4619--7967 3903--9754 4763--7370 8237--3247 -4204--5794 5360-4222 9660--4491 -4033--5935 2421-652 7381-5729 159-522 9849-7917 -3838--2214 -4748-2465 4898-8286 -3715--8925 -911-5467 -3007-6737 -5168-5487 7906-6800 7296--3580 6504-6462 3687-1690 5258-6907 -7030-5920 -5292--6249 -5414-5128 -9538--6162 -7303--3565 8772-5055 4819--5400 8293-5857 6761--5263 -6498-3866 3215-8545 -9389-1000--5593 -7813-6286 -7397-7093 -2520-2275 -8398--165 2409-1497 6568-3626 -8902--1579 -2843--8525 -5065--2085 -2041-5545 7118-368 -9798-9161 -4764-1122 -7396-8891 -279--3530 -7267--4126 5338-5736 7243--5249 -1134--7560 -4190-4217 -5395--4232 2041--9240 -9965-9075 5400--8765 384-1396 -5152-5490 2345--2233 -4292--4194 3198--9980 -7650-3171 397-5435 4352-2533 -1206--7656 -4374-7491 7628--8646 -5088--8852 1665-1018 7857-2697 4579--7525 -6294--6219 -2493--9356 2106--7275 -5514-6774 -1356-2339 508--6097 9973-5139 1327--2320 -5551--9453 5788--8791 -7673--6582 1981-661 7074-7444 -1819--1218 2532--552 3830-8467 -1558-7388 6009-1631 -3816--7998 5050--3042 -9618--2190 -6552-10 -8190-7843 -4001-4962 -7435-2474 -4535-641 -860--476 1329-2109 397--5644 2343--1994 -631-4408 -9611-6832 6724--4972 8421--2702 -134--3476 5535--5250 9784--5862 6428--439 -920--915 -8335--6283 -9870--4967 -7287-1902 -9446-608 -1443-4717 5696--4025 7842--4636 -9293--2932 -1862-7927 6534--4036 5480--2730 175--8290 8369--9112 -6021-6273 7103--9820 6259--2936 4378--5748 -2135--7997 -95--1133 -9644--7476 -1584-630 -6441--8606 -867-3569 -851-607 -5294--7627 5115-8002 -4934-8781 5119--9264 5252--3303 8456-2471 -7189-5601 -904--8598 -9722--6089 6755-3795 8965-8573 4798-9576 2133-8642 -6726-796 -7325--5530 2835--3529 5152-8357 1469--9312 2209--1786 5425--309 64--9743 6832--7973 -3298-225 2318--3445 7145-2623 -834--1086 8717--9410 -750-5451 -5213--4129 -9937-8881 1431-8555 -2675-3469 2429--3713 2591-1342 -1809-3212 7818--4730 -4162--3156 6537--169 -7849--480 9626--8835 152--1121 2233-4752 -329--7723 -1286--8785 9097-2255 -3927--6934 -9835-9758 -5494--7880 -3159--5386 3604-1911 1858--1563 -1895--9022 4099--7169 -8509-4449 4673--9735 -3993--4791 -5325--6495 -5673--6751 -5455-1964 -1132--772 -3213-4203 6098--6839 4726-9119 8074-861 -5494-837 2186--8052 6080--2057 911--8204 -6532--9609 5562-3909 -2514-7180 -5069--5906 -2045-9735 -8529-8648 5024--9579 7717--8218 5091-3648 3631--3166 2813--8624 -2348-5068 7221--5238 7824--9798 3950--4802 -3939-8442 3248-6771 3794--5136 4125-107 -1614--7734 5213--325 5918--6520 -9762-8476 -8839--2951 2770--3484 -5091--2394 5645--9526 -1276-3986 561-8808 -955--6809 452--9973 -9334--1838 2536-4809 -5149--1856 -7825-1058 -1553--2329 6799-729 -4070--7740 -9857--3895 -517-6049 -2392--4608 3884-6783 7403--4748 -1786--6822 -7679--5462 5168-7477 6145-7767 -2464--8313 -3460-2106 7486--377 5011--2421 9771--7618 4914--363 863--8815 -4827-6375 8766-7128 8898-1202 7113--5389 484-7811 8269--1513 -4221--8997 1369--6849 2074--6787 -8376-9590 2212-9369 -1122-642 264-9539 7780-4694 -5311--5657 -9554-7873 -7799--1883 2149--4370 -331-7172 -7110--222 9562-2700 -2288-2542 9218--9381 -982-8498 -4590--8394 5806--2495 -4284-2524 2469--6545 -2382--9540 1380-731 7290-7585 7154-3609 8697-5977 -6214--9619 8803-6442 9724--3430 -6851-7025 -2370-9695 6176--5570 -4270-8628 -2253--6342 3424--885 5090-3977 8719-4948 -7506--8759 3342-7368 7439-3477 8298--4764 4479--1797 -3581--275 9481--7310 1550-9490 2007--8317 7994-822 9679-1727 -4333-1252 1019--135 2887--2989 -2687--8451 -2750--1863 -3518-8189 -1138--9289 1364--9516 8244--4751 -7753-4755 5410--1396 -13-5841 -5644--3737 -4779-2063 9457-8963 -5026--4540 -9379--6683 8690-7110 988--1646 136-364 6087-8977 -4432--9171 -7305--8779 2271--974 5463--5568 -2403-2387 6126--913 -3153--334 -5326--3170 6899--5750 7187-6140 3670-6521 -1033-463 -5816--7246 5521-8161 -2962--7876 -865-3626 -2284--9239 -7760-4929 5857-9097 -9210--1439 5253--7932 -5179-8893 3478--551 5784--3809 7655--312 1487-9292 -854-3748 -413--1478 8405--770 -9705--4695 9598--5770 6818-1904 9186--3407 -9171-8582 -685-6501 5076-7205 -6217--5492 -3777--7191 -1701-9899 1960--6726 -9032--7836 -5058-6785 6106--9076 -5463-7267 -1801-9870 -3372-2356 -3421--6271 743--30 7060-7644 -2923-2478 -8664-1285 8397-4209 -4255-3399 3895-68 6645-4373 8350--8536 -9555--839 -9342-4716 1501-6524 4558--9155 -4695--5442 -2431--5323 385--3612 -9818--1726 7458--619 -4806--1175 6277-7606 8321-8357 8579--9140 -8964--1441 -2325--5927 4703-4708 -4367--1152 -3545--2607 4750--5923 4698--8662 -4653--28 -5305--4270 9323-7079 489--7646 7733--4638 -4979-1979 6063-8392 4736-7902 3531-7998 -4087--1011 -2712-4877 7930-3351 7937--436 911--5976 9134--8376 -818--5745 2533--679 -4323--118 1995-9422 1830-412 7347--3070 3901--2718 -5858-6299 6528-4718 -3906-571 -3241-347 -3834-1927 8329--7144 1084--7380 3221-1011 -2786-7067 -9127-8683 3993--3719 -3997--6475 9516-8042 3748-9816 9692-3949 8934--3898 6563-209 -678--6942 5368--2016 -4625-5855 -2819--4882 4222-1727 3798-3756 -4690-4781 -8492-1546 -5989-3236 -6949--5426 236-6787 2086--2894 -3256-5317 -5005--5450 -3689-4480 5759--7254 -3856-4 1140-8631 -9602-389 2279--252 2151-1142 3098-4611 -7884-3288 8442-3515 -3417-2482 9601-8772 -8871-9483 -4693--1906 9629-2018 -3995--2172 2157--9919 -4357--1602 -8519--8367 -7478-9259 8457-7086 -8068--8517 -8207--9890 -8463--5146 -2219-9466 8291--9535 -6803--3395 -5056-8988 -7645-6647 -4569-2362 -4527-7532 -8505-1297 1856--6813 9498--5583 8466-3869 -9479--6162 6252--2730 1474--6720 -705--4034 331-1451 4406-5071 -7126-6103 -7200-4552 -795-7916 7380-4289 -196--9193 -9182--5599 -3474-1888 -2052-1880 -6335--5117 -5819--2468 -9997-9335 7128--3991 -1825--3255 -454-2173 1157--7046 -8974-1994 -7525--8936 8825-1984 -405-3322 9143--5214 -5455--6022 -6057--9718 -5334--5584 7293-1117 5990-3843 -4939-5232 -8220-3167 -7601--7036 -1403--1881 1020--8023 -4303--8740 2859-4995 3240-4814 3137--5986 -6666--6446 4021-2007 -8309-2096 371--4278 -814--622 -3311--4342 2481-6974 -1908-7955 -3379--2830 1160--2470 -4931--3402 -7583-7177 -3700-3118 8689--977 7982-6030 -1112-3203 8643-5675 -7835-4367 -4656--8181 2816--5150 -2439-699 8381-3251 6619--1572 9487-1634 -8959-1470 9908--4260 4092-8562 5212-3466 8054--3718 -4404-6691 -7843-1643 2570--9609 -2768--4371 -8012-5019 -9332--7913 630-2320 976-4494 -9160-3127 -7885-569 -6651-3879 2258--2983 -6317-2554 -3969-9756 56-1378 9748--1996 -5630-2939 -6158--3648 -6840--7763 1659--9152 -6643--1379 -9290--1854 7417-8590 9311-7191 -7151--5403 -2203-4764 1--3241 7316-9177 -6393-8033 -2337--709 -6049-2577 8803-5710 -8155-8637 -6876-7611 -4840--6445 -8376--7482 -5710-2281 -7011-5180 6700--7616 -4740--7721 5594--8277 -9367--7502 -3503-3816 9510-7157 8842--9329 -7640-1144 -2771-5061 -463-75 8778-7461 -9178-7170 3166-3354 -1596--7643 -1129--7459 484-6266 2283-809 3520-2318 9966-2899 -5437-3672 1679-4648 -3909-435 4761-4365 -2788--5629 7803-6045 313--2153 6413-5171 6930-3841 2123--1806 -6799--6402 9896--9548 -2709--9671 -4603-4357 -5632--4644 5789--4504 3783--1279 9923--5263 -6553--2979 -438-8399 -6551--2447 6881--1643 7117-8747 -2372-4512 2310--3459 -3046--5107 -2125-5126 8224--9996 976--9346 -1488-1068 -3873-7597 1971--1656 2312--1832 3511-2000 -6856-8547 -28--3479 4935-4701 -7391-5474 2989-2386 -1763--4478 6711--7877 8612--493 8668-8829 -214-2527 -9490-7290 -2984-771 4246--7015 -7159--6653 9931--7119 -1360--3128 8532--5744 -4798-5761 -240-4643 -6145--1713 -1251-4439 -4513-4619 -9572--7640 -5117--1413 6079--7400 7545-7481 -9986-710 -2875--7461 1328-9916 -6008-3059 3439-4382 3643--6743 657--3296 3905-3616 5879-7314 -8622--1585 -5115-7881 -2069--3136 -7624-9812 7327-8830 3115--950 -5996-9946 9254--4699 -7235-9419 -1181-6664 -878-9330 -1759-93 2904-6641 -5032-3033 5738--5834 -8765-9971 -4221-6192 6197--8161 1411--5050 1810--1688 -6690-1167 9118--9262 -1745--179 3402-7919 -4942--2547 -8241--8286 131-1711 1817-2261 5422-3479 5620-6042 8814--6530 1958-7272 -3339-7132 -9031--8307 5112--7827 1091-3538 -6109--2439 6244-1860 -3601--4633 -187--6570 2181--5123 -6665-6504 -992-6044 8424--2725 -3549-5599 93--7795 3875--6008 4396-866 1181-8116 -7477-5458 2612-1108 2346-8670 -2411--8924 -4257-9618 -7628-641 7498--9418 6370-6523 -5119--3274 6660-7142 7693--9579 7587-752 -4031--5326 6228-820 6601-4845 -7833--198 5347--1263 173--2242 2417-2191 -7972-3740 -7001-3427 2395--5630 5385--2614 -5065--7701 -2890-8922 5389-3815 -2317--3776 -2849--9710 7749--762 -5640-4421 -3677--8250 4053-1652 2760--2087 2325--711 1410--2110 -7081--112 3857--5407 6606--5520 -5102-1851 6428--5360 5006--6856 8282--1472 -5379-3195 -4066--2426 -876-9454 -445--3098 -3081-2582 -9726--6548 1500--2451 1346-8172 2497-6568 7728--6666 7847--4655 -5931-7557 -6054--2527 6063--9028 -7961--7905 -3424--9466 -2167-6033 1038--4828 -6507-1982 3759--6543 2673-8888 7451--4669 -463--1744 8173--2985 4110-1217 8765-372 8744--2204 -7356--7364 -2669--4651 8869-3404 7672--9923 -5474--8629 2139-6834 4738-5111 9450-540 -492--2159 4613--697 -9130-8743 -4196--9796 5748--621 9700-876 403--961 974--2898 9300--6985 -1670-1404 -9058-4690 9285-2289 4385-2629 8656-8750 9534-6892 -3976--5327 -438--8806 4843--651 9471-6054 -831-556 -7124--91 2146-6186 899-9833 8618--4580 -3465-4206 5317--2199 -1791-1691 3539--7358 6990-4262 -3193-2256 7327-8622 1779--5425 -2397--5070 -3212-3439 -798--6222 7907--8088 2387-2930 4727--6696 2111--8119 -3178--2576 -9211--9427 -3092--2860 -3853--7800 2294--7786 1575-910 -3621--1277 6374-2509 -8517-4932 -785--2326 -153--8672 -9627--1419 9980--2351 5184--7745 -1822--2029 -5674--6378 7662-2233 1197--5425 9401-6066 3000--1601 8811-5777 -8792--8203 304-2767 2621--7782 -8251--7910 7522-3770 -9189-6930 2298-5712 5279-9516 -5650-7562 1445-6728 5536--6841 -242--7552 -7739-332 8375--5766 -5098--3608 624-9060 -8143--1108 -2179-1413 -8517-8680 3412--4096 -4854--7873 3978-1819 7755-6506 2373-1808 -3183--6005 -9966--6597 -3481--2620 -411-4153 9871--4380 7104--4980 -1765--9175 -9569--6321 4679--8057 -9822-3036 -9778--8456 -7951-4961 8954-7359 1363--4470 -9022--6378 6273-9660 3435-9315 6372--6381 5634-5603 -6884-1295 -167-298 -8240-9094 -3027-8893 6925-4772 4552-3281 -705-7267 5416-6388 -7262--7507 -1617-6153 5006--7643 -7565--5481 -5677--1437 -8682-9819 9902--1753 -7757-6763 -4643-2030 -7991-1808 7394-6971 -2858--5794 -8519--7265 -3756--9646 -5583-7186 -6581--2757 -8207--6746 1304-2593 -7702--5303 -8852--3072 -4750--4603 3384--2132 -7968-1563 -3072-1619 -378--1414 -9404-9111 8842--6630 -2620--8156 -988--9173 -6229-3872 554-9052 8735--5852 504--1164 -5489-5120 -6417--9586 -3381-352 -3865--7589 4190-5584 2412--9902 6674-3128 -3302-7700 4489--6613 -7624-7508 1792--5778 -9491-8466 9092--3015 -4--1006 4023--7269 9827-8131 1708--1381 1338-3463 -120-2583 7999-4684 7318--1321 2385-5796 -8857-2708 -6315-1190 -4206--4268 3864--7435 -6069--3584 -4577--7317 -3484--776 -9113--3489 -6896--8039 4134--6521 -5435-1966 -4128--4209 -6904--469 -2083-881 8211-7420 -5474-5999 -5240--4905 9304--6093 1891-7547 -6821-7274 -7923--4697 -8367--1940 2020--2957 7713--9078 -3892-1908 6098-4440 5329-4198 -1991-453 -3709-9687 7099-7248 -1188--2569 -2277--2629 -1747-5043 8701-1517 273-303 -8180-4107 4424-4395 3348--8694 4777-5332 -2648-9260 780--7535 -6757-6981 -4716-933 -9295--9650 -3313--7582 7965--3084 4163--9069 1305-7053 -4475-1000-1817 -3434-7683 325--9918 4038-3581 -4229--7938 -686-9274 -6349-3042 8421--201 -260-2797 -742--7799 8234-6319 -1465-3252 787--533 9010--5389 3271-9179 -5125-9175 6785-4951 -3524--9724 3835--5818 3477--4291 4144--7283 1310--296 -9266--4882 -6221-5801 -2181--325 5333--8255 4705-2948 9957-5327 -911-9291 4097--291 -4723--6689 5474--7317 332-4835 9260--5056 -4222--5631 -6207--4893 4033--6531 9007--4207 -1931-9471 7093--2860 7318--6652 -1054-8883 -4829--4763 -3509-6761 -5036-2033 2124-1477 -4356-6372 -5204-6335 74-9674 -1463-8718 2801-4311 7605--5709 -4396--6228 -9354-8386 8868--6812 4180--3419 2692-1232 -1835--5798 6659--8672 -542-4216 1955--8119 -2861-8314 5198-6756 420--6706 3659-3151 3011-4384 5263-460 -7608-5960 -3644--9500 3636--2850 -9821-6984 1943--58 3385-1641 -3668--6770 -5227-9526 -4165--5747 3134--773 3308-8185 4225--6694 3543--3196 -3618-4835 49-6732 2792-6783 -4220--8636 9347--3648 -1069-3170 -3796-5073 -6265-9835 -1178--6700 9141-7062 8510-5001 -4817-9233 8084--3212 1364--6446 4581-7831 1348-4884 4917-5801 -17--8850 -7196-5795 -6386--2655 8295-4043 4946-8860 -8390-5123 7097--3013 -8155--9736 8587--9780 4184--1993 -2531-6912 -9851--9253 -4440-6107 -6413-5644 4094--8403 -1414--5690 7621--8628 3732-7911 6427-4069 -7845--8257 -2611--4775 4130--3231 6638--4563 3031-3552 -800-6767 -967-304 -9427-7464 9918-3296 -7470-9550 7746--6993 -1988--7446 -5020--7315 -7270--757 3031--4294 2905-8591 -4223-8028 1740-7270 -6187-643 -9508--7133 -3381-4331 -5898--8430 -3267--8065 -2450--3521 -4514-9472 -4740-3062 -2378-7238 1255--1902 -5360--5768 1473--6811 -872-1036 2443--125 1076--8555 -5523--5130 -994--8135 -4613-1221 -7783--8755 -1007-3474 1008-4709 -240--1198 -8786-2870 -7334--1295 2152-8113 5665-4607 -752-4993 -6062--5013 2410-4517 -5427-9894 -2447--4063 8187-6240 4906--2888 -1246-4309 2738--421 -2998-1882 2493-9067 -921-1522 7964--312 -4532--3814 3479--4531 9047-7187 27-9139 7265--4728 -452--2693 -6329-3577 -3402-6691 5143-3391 5535--5975 -7677--6354 -5515--2254 -332-9782 -8688-3577 5120-8716 -9191--6364 -9208-1722 -2260--6618 -8754-9022 3422--5251 523-9365 -437-9553 5900-6820 9066-9000 5676-7172 1764-4424 7737-4907 -7381--6799 -6120-9485 4044-7537 -8589-6997 6249-4540 5100--5914 4421--3579 -3109-3927 -6477-2939 6773-1821 -952-5976 4344-25 -2876-303 6183--6826 2408--2422 4743--1761 -1455-5428 -6--9532 -9851--4009 -3618-8457 7026--772 5277-8844 9398-7133 -1715-6876 -6519-5712 -6532-9229 5672--2526 -9504-2818 4110--6707 7272-5420 7780-5977 1525-2655 8976-125 -2881--4158 -6341-2415 4329-7368 2863--319 -80--7965 -677-1644 -753-8628 -9747--1548 3701-1730 4641-4687 -9943-3605 -5101-9168 8637--4457 6097-3663 -624--4852 -1334--4411 -8752-2341 -3798-3077 -5733--6636 -8398-2957 6102-3173 7334--7151 1090-957 -5868-2446 -8152-2333 -3663-6224 339--4133 -6731-3292 9769-1429 -2675-9075 8574--2436 4953-2146 3855--8681 252-3513 -405-6415 4307-7774 6255-9918 4460-1691 -5966--6454 -8320--1775 1370--5340 -2938-9886 -7853--4550 -1562-4132 141--402 -5997--1393 6084--4323 -5976--8006 8907-9490 -5653--9627 877--3968 1070-6550 -1085--796 2244-2185 -6028--450 6022-2227 5924-4912 -9963--5666 4020-9959 780-198 -9028-1714 6150-4674 14-1353 780-4024 1327--5928 -9673--2748 9388--7394 4843--3449 -85-1620 7375--7476 -1734--9878 -1772-5119 9110-6798 -1730-8756 5087--284 7126-2309 1807-4173 4717--8868 -7962-709 -9094--4520 9940--6467 -8404--4835 -8160--4642 737--6293 50--1970 7847--5100 4458-4877 -4853-1720 2791--4909 -4454-5032 8764-9678 6921-9978 1509-2843 -7076-3078 8839-7285 -75-4173 -91-2457 -3188--2003 8494-517 -2639-1290 4744--1189 4172-5004 48--6207 5240-9967 -3399-7064 8774-8667 -4549-9047 -2370--1874 4099-2678 -1462-519 -9531-1485 -5075-658 1929--7698 -5822-1837 -9129-8087 4201-358 1736-8731 8698-1037 6832-3577 2728--3953 -8423--820 7216--8707 -1477-4976 -7930--9758 1155-5932 5620-1880 1837-3636 -1510--6822 -760--5044 6631--7591 -6048-5011 6449--3510 -9581-759 7081-743 1350-978 -5586--6934 -7363--9987 -5799--3429 3961-1065 7128--6315 6280-5347 -8800--7115 -921-4799 -6740--8266 -4439-2562 6055-2834 -2012-7894 2551-1739 9260-6055 -4842--7379 -9524--2986 1838-8094 1653-966 -5854--251 8113-9744 5102--7000 9359-1103 -3033--4607 7982-5943 -8776--4566 3172-5932 2277--6851 -3646-9304 -9138-7560 9471--2162 -489-4729 4497-4212 -6194-4531 -9713-8559 8629-6033 9143-3070 1724-9726 7481--8886 541-6051 1697--1325 -5861-2091 -6979--4573 -8589-3833 -5498--8862 801--9885 7813--579 -7878-8984 -9220-6029 4159--6789 -2691-2564 6623--2128 3378--4275 1072--9700 6311--4560 6334--3005 -9492--6304 5944--3549 8708-8272 -510-9030 -5384-9242 6395-1468 -4726-1079 -8360--4570 8450-9707 5850-3512 -7509-5438 6801--1639 -2998--1695 6493--7518 98-4319 8384-3386 -2970--8664 -1581-6588 -5868-3395 2297-8886 -4893-743 -5550--6828 -8751--7591 -3747--2849 -2996-8190 549--8721 -8652--3726 5287--9469 -3421-1785 -9767--6608 4600--7976 8193-866 7958-2952 -7993--3779 -1304-5937 1646-237 3257--6681 -4899-8551 -6729--6276 -3649--5678 1293--2152 -7780-2383 8126-9518 5237--7919 -9052--8129 6873--1594 -8372--1042 -355--1573 -5286-999 -1174--8940 2119-3204 7177-4736 1206-4014 273--9762 3253-2211 -2297--5584 4601--6992 -3025--6105 9887--9575 1294-610 6362-6415 7955--6056 2560--3023 4537-5286 -9932--6789 -7812-7735 9001--5470 2640-3460 -3975--9834 -7942-6528 -9031-9119 9942-3957 9500--7870 -4484--6146 9298-6922 -4870-6888 3846--3587 -1542-1724 -4055--7640 6068--3432 5394-2404 -4746-3594 -1472-8688 3201-4170 -6912--1315 3739-416 5266-7312 1561--1545 -5985-2943 1531--4521 918--5540 8412--8122 -1606--6634 -7878--7298 -7934-597 6125-6305 -5911--8414 7787--2000 9877-2904 -8428-7866 7491--8447 4390--890 -5632--8022 2538-1896 1891-9544 8427-705 3329-6358 -5628-9396 -5372-6408 7570-2443 -7313--1512 -6848--3761 -3044-295 4023-732 -4702-9254 6606-9206 746-3320 -2669-8983 9572--6337 2425-4436 -2995--7103 6213--2119 -565-5098 6396-1536 3840-6991 -6172--3192 66-8756 3496-9135 5316--9823 6923-4197 -8197-9224 -6655-2184 -8692--3429 7536-7460 -5947--3181 -211--5710 4979--6164 4166-3911 -7337-9803 3669-9714 -9028--8774 5958--95 4899-6464 8538-9673 -7801--3405 673-6441 3417-4897 -7924-2772 -8525-7914 3459--2340 -7648--4537 -8748-3990 -6318--9615 8891--4547 -4811--2650 -342--1407 8535--7323 -9113--8365 7430--2689 5056--6828 -2051--4022 -6674-6111 -5755-1131 -9769--8330 -2296--8902 1353-212 -974--7415 6130--6118 -2290--4051 -7540--3634 1864--1070 -5414-8163 -8937--9191 8053-6350 -4579--1051 -8333--7710 9122-7640 -3822--8855 -6174-4086 -9232--7451 -7443--6758 7945-567 1567-2579 -7801--6248 5851-7400 -7335--6887 -4110-9972 1208-222 940--6997 -2079-8764 -718-2388 7387--4994 5430--5021 2880--4234 9253--2514 6133-8584 -1418-4158 5399--2178 -2276-2373 9441--1142 8874--7508 276--620 5743-2422 6250-4383 -2856--1698 5783--8798 -5732--602 -5926-9385 -9664--973 7979-9021 4458-7223 -4117-2505 -8326--7623 2281--803 5891--8770 792-4592 -6837-3236 -4546-1480 -8522--1648 -8687--9876 2760-1755 -111--4042 -3401-1712 5067-3865 -2454--7288 -6993--2539 -6759--6947 1258--4154 -2624-6120 -4126--5525 628--9294 1092-3934 1967-2807 0-5425 -9471-3026 -8756-8165 -5221-1541 3954-5544 -828--6446 2501--7867 8326-8529 -4022-4347 2165-2334 7567-1334 -2221-1965 3406-7348 -681-3896 6230--7788 8694-4167 779-2450 -9870--3315 3909--6646 7280--4114 -3068--1200 266--7489 7884--8786 2040-9250 9016-1045 -948--512 -1744-277 -6453-7199 7585--6517 6770--4215 -10--3603 -4807--8054 4291--1828 -5536-2553 9091--898 1409-6737 1789--7366 599-3630 9784-7251 6474--4684 3972-9034 -6599-7828 -472--2342 -201-6487 -7176--7213 6446--49 -6620--6675 -8224-1044 -1425-7258 2814--4655 278-4585 -6089--205 4925-5078 -2499--7798 -1528--8118 -5889--3976 1218--794 5630-3449 6710-4229 7618-1361 2905--4960 -7543--3715 6200-4570 652--1793 -867-5759 -6642-2488 7916-9502 9353-659 2132-5214 88--4646 -2660-1187 7907-5307 -1850-7298 -16-4414 6057--1239 -2466-9684 6214-3861 -1711--3401 -1572-825 2390-3795 7931-6924 6116--6067 3664--2885 2238-8240 -1814--6355 -3797-5306 -483--3485 -7980-9043 -9003-1825 -7798--5522 -7363--1572 -5658-4410 -9765-2789 5520--9300 7116--2656 8033--6109 9359--1760 -7220-8925 2840--3907 -1175--8377 -6077--9360 -6115-8422 133--4797 8643--3565 5400-2364 916--9881 -7869--8987 -9535--9307 -1402-222 2623-8714 6246-5837 2703-1330 -5306-7999 3853-9407 -7864--8930 -9453--6043 -3457-7399 5007-3054 -4530-836 -4323--5243 8667--9149 -401-9877 -9295--3250 -7989-8524 -591--2787 -2953--1847 190-1192 -5637--976 7955-6190 -9989--7221 3428--9686 35-9208 -3989--262 6658-4680 6120--3452 9755--5413 -692-7572 -2989--421 6936-4860 -2170-2298 4855--6480 -5267--2437 7467--7414 -3313--8274 -8218--5424 4631--4672 -7342-1866 -7000-3470 -8731-9355 6154-3455 -5053-5282 -8194--5224 5709-4979 5026-9211 -7154--607 9783-7660 -7178--9096 6010-6376 1073--901 2401-5739 6474-9147 3395-3993 -6141--903 8341--8302 -5076-8847 -3350--645 -6434-7597 -9783-9911 -5495--8804 -8948--6208 6109--9587 541--9720 -7028--4694 -4974-3141 9129--9799 8225--5417 3621--1832 2998--535 -805--6733 7340--2216 -7475--9244 -3333--7655 9043-7004 -3023--1895 3888-8336 -8838-4950 4086-3282 -5722-516 -9397--5364 -8941-9029 -8301--6053 7341-9448 7294--2756 -1163-9217 -4589--5099 3166-3801 -6603--2977 7783-2756 8311-6456 7442--5913 3970-987 3010--1233 8524-4104 3266--2288 -3028-7009 3303-5540 2752--9684 9432-5240 -651-8174 2254--57 -6219-434 -7120--8209 -4643-9685 -3687--4521 -8811-4290 2987--7591 -9169-5207 -3943-4728 -9136--49 -8255-7873 -2602--1027 7796--6922 6860--3584 -5004-6242 1161-8603 -1193--9211 2992--2670 7336--437 9178-9705 -3233--6807 -1359-2221 3090-2458 -9140-552 9050--2793 7279--703 -3805-6161 -2921--7370 -2641-2007 9790-3595 5536--8589 5034--940 5848--8628 381--6851 -2719-1333 8739-2403 4208--3255 1441-1918 -1869--9642 1183--9492 -4465--1439 -2914-276 -8037-8307 -4409--4350 -4631-3513 195-2439 6427--8850 -9075--9032 2973--1902 -3548--2067 6154-7565 6596--7641 -8854--1151 6994-3676 -6533-7625 495--8947 -499--6436 -7438-6800 8688-9501 1052--274 -7045--7428 2711--2588 32-5025 -4802-4802 4319-1398 -8403--9602 6421-6026 -33--4832 -4293-2719 -7803-4475 -2860--3383 -4054--1679 7700-9878 8494--6725 770-2657 -6362-6310 -787-5840 5787--7672 -4548--47 572-6966 6010-5811 9904-5530 6518-4833 -9695--818 -5787--1512 9299-9283 3400-6064 -7733-5260 1070-4378 -9530--3002 -5707--7995 -5737-6048 4660-4366 -8965--9194 5479-2727 -182--8089 -2451-2785 9536--1706 -586-9541 7425-8246 -7232--4988 -8435--1820 -5706-5161 4217--5105 4147-7956 6664--9280 298--6438 -4486--3331 829--1322 2754-6003 -250--3787 -5586-9537 -9026--4968 4739-4284 -5160--2449 -6697-8839 -130-4926 -6723-140 248-719 748--4007 6643--4663 -6361--6172 -8019-7511 -4897-4570 -9982-6620 7465-7642 7206-1645 1757--3953 2581-9795 6183-6812 1381--7116 -7023-4885 -6939-9922 -7166-6748 5013--7984 -1196-1000-8267 1344-9117 -6880--7633 748--120 -4961--989 -4049-7338 2224--136 -7300-6138 175-5083 4024-1457 -5856-2190 -5088--1790 2891-4974 -5628--208 4302--3385 7389--5294 -1882-103 513-6779 -7462--1236 7451-3107 -8007--8782 -166--4759 -1868--4822 -4954--2750 -4303--6393 3169--5877 6319--9136 -6407--9177 -603--433 2708-4524 -4666-2777 -3635-4896 2954-9418 3239--6560 5248-8650 5263-8780 9615-5143 180--8251 6499--5039 -1883--3282 435--9707 7047--8214 215-5565 -7623--3408 -8932--3377 -9485--152 8144--1232 9255--2261 4914--7702 -9617-902 -1824--6627 6829-4259 -6189-8543 7873-9809 7317-1185 2347-8695 6072--4184 691--3397 -2862-1822 -9852--6250 1983--7534 1848-133 -7329--9612 -9186-9903 -7779--2098 1189--1795 -7530--2648 -2218-8654 -6712--9167 4892-4259 -3577-1402 4728-1755 1411--2176 -2808-8421 -3591--2556 4896-6688 -2281--5868 7715--1634 -7169--415 4146--1785 9988-5015 -5526-432 6119--5015 4074--5334 -834-328 -6014--2469 7000--4310 -915--8963 2519-6265 677--4970 5800--536 -5996--1259 -8474-3022 8859-1557 -8491--5697 4977-5312 -1628-1567 1059--6822 -3526-5936 -3861--7354 3017-7256 2456--5107 2998--7031 946--9626 1507-2813 3040--5058 -3848--6380 408--6129 -1327-8129 -1071--6552 7811-3335 9733--3092 5013--9017 1252--5583 -337--8279 -8188-9810 -705-2428 -1023--498 -3480-1418 -6102-2623 4809-4282 -4812-144 -1079-733 1989--895 -6329--4643 6934--438 3616-6190 -9120--4519 -8446--8423 9351-2105 -863-168 -9277--3201 -8508-4915 7273--5031 -6493-7109 4452--8044 -182-9711 -5872--6319 -9899--765 3267--9242 9956-3149 1112--3364 -345--7886 -2935--1063 1988--9949 -2753--7627 -9222-294 7207-6690 9023--7161 4201-2495 8469--3807 -869-6311 8397-2141 -4214-141 -3536--7086 -7809--7042 -2568--1685 9731--6555 -2120-6039 1621--4667 -3589-5526 4735--5701 -5302--4179 3896-655 -1972-7047 -264-5643 -4411--7717 60-3217 8407--5805 -5625--6938 2870--9615 -6012-206 4380-8607 2443-7754 -7965--978 2046-9669 -8964-2331 6905-4239 3170-952 1305-336 -4983-27 -5221-322 4708--5865 5573-9524 -3340--3862 -6052-1690 28--2701 -319-9495 4890-1151 3768-8045 -5407-4880 -3014-6801 -5244--641 6818--1244 8048-9626 -2834--3558 -7688-6568 6581--3906 1017--2992 6091-3576 -7300-8111 -499-6370 5954-8909 -1459--959 -5078--6818 -3746--84 5087--8628 -4707--2078 -1495-3102 -4567-6239 -5220-1194 4547-9455 -7008--8133 2588-3331 -8450--9431 2209-519 -2389--6167 6779-4133 -8086-1001 -275--3266 7855--1613 -5172-3598 6116--2941 4983-5890 8612--6337 -6462--9301 7964-1599 -7170-9126 -3362--609 7597--7287 1501-388 -2111--7261 6307-7812 613--2873 3486--203 4917--7760 2108--6141 -2459-3216 -7461-2721 368-5378 -6005--1221 -1265-9596 -228--148 4497--2681 -878-9236 -5801-6764 2853-9904 7356--3476 -1620--4145 844-560 -7088--3372 8592--1505 -5842-7053 -3907-8606 3642--16 -2383--429 6622-434 9137--8635 -8373--5034 5135--6014 634-3526 -3492--2409 -9614-5519 2768--1271 8435--6267 7806-2943 -9992-5584 -207-8471 -4949-7094 6791--5086 5679-817 -5643-8991 9893-9018 -7873-8862 -7055--7572 -7225-196 133--863 -6219-5356 -549--1712 -321--2161 -3348-212 -4217--1314 -8870--2823 -5325--1643 4219-8060 2273--1770 -2150-2037 6525--3525 -6951--2532 1602-5521 -4561-2944 6194-398 -9438--6505 -4855--8124 -191-6169 8581--2549 -6454--5179 773--7817 6874--5954 5717--9192 9329--6363 -6740--7191 -1527--7929 -1149-3919 952-4699 4054-1491 7853-4491 -2984-2972 -3076-6686 -7145-7783 5395--7373 -3988-8981 6462--854 -8237--9188 7400-2831 3120-1850 5076-8280 -65--5263 3649--7461 -7716--3000 401-8619 430--2434 -6241--8126 4282--724 3361-8414 1772--4589 2794--9093 9304-8325 1123--8726 -2460--1747 -1999-702 1621--2639 -620--3840 1876-401 3161--6519 -2209--8804 8207--7307 1655--6248 -3656--2777 1925-4331 7224-3888 4709--3064 -5011--1307 -7063-3349 -1324-6080 4760--5207 -9809--3656 -9216-2491 -6702-6033 -1121-4131 -3523-4485 -1174--4306 -7788-4329 -7667-9656 -3439-3432 8887-5551 -2286-5407 6876-9963 7741--532 31-206 2474--2871 -5456-6986 7877--5136 -5825--6931 2860--5974 345--8584 -6498-8571 -3585-5757 -6329--5340 6763-9082 -2460--2747 2026-6632 6028--9624 8341--9742 2984-1309 -3833-6235 4970--8512 -2727-7285 632--7189 -3164--3573 2077--5918 -8482--5837 8069--6634 -8225--4257 6903-4075 1404-6081 737--6981 -8132-3994 1664-2753 1718-3467 -4600-7522 4652-1365 -3509-247 4326--4777 -1857-8650 9736-4142 -6923--5208 1621-2246 6660-7215 -5681-3992 -3943--1100 -180--3084 -2422-6284 -3714-388 4619-962 8020--690 9053-2030 9337-7123 -9877-1766 1956--4844 -9143--3536 -7424--5818 -1154--9800 9999--7535 -3406--2740 4935--5600 -3585-3528 7069--2029 7104-9896 7983-8807 -5353--5854 -9941--8672 -2664-8309 8026-8207 3985-9529 7183-7543 -2053--3244 8447--941 2538--6127 -2593--2318 -911-763 3991--9616 2430--3660 -1411-9839 4492-5767 -9943-2960 6718-1978 -9325--999 -8954--8985 4698--2497 4719--2791 7983-5318 2089--5913 9723--7773 -1102-2728 8700-1777 -4999-9288 -8490--6923 -1447--4821 -7917--5323 -5916-9394 774--6431 5368--9268 -134-6679 7893--4219 1225--4338 -9657-2923 5102--2901 2851-9926 6509-4422 2519-7301 -22--6654 1833-7823 -3629--592 5070-7856 9829--7519 9770-8886 6575-9113 27-7396 7032--1260 -7378--5103 1050--849 521-8224 3337-475 7116-8901 -717-8516 -3688-8887 5013-5554 2950-7772 9397--6289 4989--4780 3245-4859 9939-3335 -2270-1649 -2968-4212 -3312-1467 6775--1987 -3785-3349 4026--4295 9011--853 -8952-6549 -7227-8359 5320-6091 5285--8858 302--5880 -1000--8921 -1023-282 -9811-5841 -1554-8593 -344--3080 3044--9785 -9428--2337 -7866--5996 8346--282 4963-3970 8059--6517 -2792--5976 6538-5601 9749--8150 1607-3288 -9783-9191 4109-9519 -1768-9880 6928--3473 5458--657 -7168-8865 7428-4769 -9084--1902 -5114--1228 -4103--2309 -4153-5575 7603-6880 9722--1428 8588-2186 -7870-9814 -1661--9163 -5200--1025 -2864-2267 708--8348 -8334-4974 1456--4815 -1496--6376 -775-4946 -9069--4672 -1729--4514 -6185--1487 -2631-8639 6504-7962 -1479--288 29-6353 -5933-1826 7003-9723 -969-1520 8132--7549 -5268-4814 7313--8331 -8249--773 9899-4869 6096--5601 -546--9596 -1949-406 -1656--3218 -9880--7392 -8030--1160 -9637--5751 -5949-1358 2409-6315 -673-6195 -3294--5309 3649-562 6885-2042 -2428--7382 3486--2762 4732--8093 9181-3532 -3285--8337 -8456--7227 -6471-4084 1317-9760 6548--3661 1452-953 8561-3103 6685-2162 4787-5422 7545-91 540-6106 7446--492 -5483--5747 -8366--474 6321-253 9896--2062 -272-3181 5428--4543 8081--1716 3375-2928 1897--7468 -2121-6429 -604-7025 4790--2867 667-7060 8543-4803 4243--6981 1534--2070 -8523--3799 6177--6418 9671--1267 2695-7344 -8339-4098 -6346--6256 -987-6840 4547-9717 7316--4032 -4834--9024 7035--7570 -3685--1907 2915--4940 -7325-4672 1459--9087 -8077-9114 9513-4531 -3786-1300 7124-472 -2593-1830 81--3138 -1497-4597 6653--2642 -4482--5265 5816-7081 4997-7048 -4610-1424 2078-3436 -4432--334 -6551-8794 5694--831 7072-4477 5924-9708 2434--1481 6650--320 6393-4893 1052-3488 3103-9305 5980--6940 7650--5966 -1128-658 2063-6847 -8084--9407 213--7934 2543--7788 1256-3428 573--4004 -6989-6607 -7385-2439 6134--820 -264--6369 -6100-803 7533--1274 5169-7534 4257--4114 8508--3155 9403--5902 -2615-4362 4540--9462 1548-7521 -6116--8673 3474--5682 4149--8935 -6048--9635 4243--2091 7004-1961 -7765-8498 2503--4164 5791--1296 -4943--7719 -845-5446 -7137--9410 3202--8441 7057--6862 4926--8912 8384--4623 -163--9615 -8571--2321 -9183-8737 3777--9526 2570--2467 7596-2803 -1304-8602 -9223-9414 809-4870 2873-9308 3088--2235 -9044-5525 2370-7951 7612--1574 -5888--7536 1338-9382 -2028-1804 -3834--5359 5440-78 4113--7725 3162-3463 -5353--7345 -7351-1397 -3761-1825 -9231--8137 2669--7095 -9153--3112 -8143--9545 -1694-9231 5964-2949 -5670-701 9310--8699 -4448-9042 5584-5803 -8378-2637 -8184-409 -5780--5966 -2669-2750 6692--2524 4225-1009 7445--3882 -5160-9787 2391-955 9688-1977 -8048-1324 -2916-2505 9617--9667 -5138-340 -4625-8445 -8173--7338 -536--9962 1706--5191 -6310--8919 -5938-814 369--991 -7805--2628 -9602--1799 -6570--4290 7319--3905 7760--2689 -8403--7698 -2459--2574 -5621--7543 1824--344 347-1765 -7140-4530 -3787-8012 -7723-5214 6794--7647 8761--4873 1699--5791 -8558--3402 823-7881 3732--3044 355--1130 5208-2174 4023--2126 -7195--4169 -6757--7665 9428-2017 3374--453 7052-7551 8030--832 5314--3239 8231--8144 8461-3709 9621--6880 -895-4406 -188--6769 4360--7617 -4865-7844 -3050--7460 -4097-540 -642-6991 -4954--9573 2593--5460 6155--7344 3673-6383 4041-651 -2897-6877 -7001--1764 3282-1336 7672-8979 6165-348 -4404--1312 4875--6727 3136-1802 2146--8625 9605-7998 7465-4307 -8677-9558 7857-3372 4458-5915 1036--8394 -1195--9006 2212-3489 7436-2845 -6056--7412 3725--4988 -1191-857 5982-1292 -7691-3456 -777--6170 6315-5530 8575-2788 -1171-9974 6394-5546 4307-5481 -9619-3192 7144-50 2452-2669 -7500-3383 2786--434 -1041-1905 3975-6074 -1222--2726 1974--1469 -8854-2678 311-3988 -9556--2872 -9208--4763 4063-1269 -5710-8624 3992--6235 -6726--6873 9120-6291 4823--6938 -7789--4050 -7992-9279 7719-1258 -8952--1125 -6031--2570 -4177-8274 2504--1936 2520--27 -8975--2786 5275--1385 9288-6793 -9645--104 5940--9875 -4286--6142 -4661-6925 -8607-8262 -7407--4848 -2006--9071 -7644--7852 -1654-3382 -2714-6124 9567--1438 -8516-7953 -1115-2875 -996--8284 3579--9805 -6133-9163 9976-1591 5900--5875 9738-6571 -4723-9875 -1383-2505 6219--5195 -9783--1996 5737--265 701-7081 5857-8005 4630-6886 -4402-8124 9873--1905 -7581-2608 8409-1341 -7308--3489 -3845-53 -5726-9952 -5--2165 -4504--8462 -5483-9965 8485--9926 -2508-4773 -8697--6300 -8560--7855 -3381--1343 2766-825 -5248-8964 9703-7371 2097--3747 -3885-1107 -7630--9070 3864--4033 5602--4863 -6057--9099 -565-6584 -2354-9335 2390-2617 7356--4450 -5005--6270 -907-2251 4688-5756 4169--5753 5394-3328 -5529-120 9965--2053 -7630--8767 8251--7447 4452-3102 -4876-2776 5959-9472 2001--3211 -7881--3136 11--8971 9254-2427 9285-6082 7779--4346 7253-5002 8686-7836 5850--1059 2325--3104 -6039--8202 2014-3169 -949-5771 -6781--7465 9857-1883 -7972-3562 4993--7059 7681-358 8370-5892 -3616-2383 -2533-2735 -5829-7449 2226--2133 5063--1763 8966--4649 1492-6493 7093-3878 -4102--9716 -8372-7394 2633--967 6477--6240 3544--7662 7943--1755 -2170--6970 1798-7335 -3018--4387 7551--4130 -7786-5459 -9371-6781 -7777--2855 -6108--8929 5141--8371 -5333-3596 -862-2087 3153-566 2113-3038 4143-3849 -6923--7083 -8521--6450 -3787--7394 -7421--5992 2800--8515 -4897-9187 1518--5794 -6229--1029 9421--7085 -1077-6060 3953--2967 -4086--6318 -3478--6299 -9822--7837 -6093-5206 -7023-7881 -8070--1125 -9393--2623 8302--3291 5471--4489 -3135--8657 5176-4809 -2091--4189 -5970-1793 -1521--5060 7824--9030 -5841-2803 3124-7005 9761--7044 -1057--6078 8523--2981 -9617-3644 -3497-2321 1377--8176 -6138--6629 -4785-7735 6092--4072 309--7520 5483-6251 -9122--9630 7925--1610 3320--7521 -9068--8505 5424--3384 -3453--5240 7991--5683 -8411-1960 -5505-9642 1859--5533 -5083--3553 -8871-8938 -8386-3567 7980-7873 -1796-8650 -8133--3073 -307--3023 6842--6393 -9693--7955 5172--5561 -812-1000--9569 -374-1967 -1508--6477 -6073--26 7964-5665 3463-5288 4214-7104 -5091--1354 -7994--8700 -2934--5076 4554-1682 -3245-3492 8225-5975 5412--4335 5058--4610 7469--279 -3453-6359 9134-531 -6890--3563 449-570 8899--5014 -735--9334 6824-33 5296--7556 -5407-5249 6449-9959 -6101-4245 4641--1361 7240-2319 -8491--8863 6277-4036 8154-1943 2523--1944 7492-194 -4073--9426 -6268--5061 -1507-583 4656-8119 -9763-7288 -7847-1092 2600-1079 2337-923 -3562--1775 -966-9978 5586-5235 2383--889 -8407--7429 72--6988 2172-1646 5300--1939 -7309--3115 -2622--2463 865-9175 -5909-7530 -6426-6971 1362--110 8789-2377 -3250-8067 -2973--9671 3767--2419 -9779--6529 9979-44 -2697--1101 5100-9111 -94-7941 4356--9057 -3283-6351 4897-2297 4853--1082 8178-4938 -3536--3378 -5526--6259 -8452--2590 -8930--1668 -4506-6072 6683-8410 3692--4618 -5030-1838 3259-7504 2464-3701 1023-6028 -172-2040 9167-1952 6507-7744 4425--1681 -3669-9777 2316-6651 -6428--4339 -2862--9785 7926--8121 4278-301 -479--9483 7953--3676 5013-1891 4367-6956 8821--4445 -6448--7956 -4030--1799 3091-6165 5145--1852 7231--3672 -7939--148 9782-1255 1361--9063 -9731-3740 4829-811 2781-4765 -7628--2970 -554--5631 1306--8435 5224--6460 3779-5515 -1141-4460 6564-9495 -4311--531 9600-1454 7714--9376 -9551-8795 -5488-7962 7458--6548 8500-7299 -3071--9122 -4052-6242 -7232-6536 2152--1097 4450-2282 -6254--9876 -6560-4715 9475-8833 9858--7652 -4324--6275 -4479-9147 -7658--7879 -7799-7335 1163-4140 -5749-4972 3977-8739 82--6042 -3554--8027 8489--4587 1082-6932 4652--2130 8585--9952 -527--7087 1953-2755 -8963-8328 -9392--3633 685--4932 6343-9410 -1179--492 -5155-2604 -5892--9869 -2921--171 747--9160 1245-2207 9373-8805 -2086--6892 -4875-2789 8680-9422 -9322--6634 -1810--1936 1923-4327 4470--1432 8655-9047 5738-7180 1435--3363 7424--6238 -306--820 6752-6659 3170-232 2275-9988 5351-1077 6573--5846 -6652-1889 -2647-1256 7500-8589 -7791-2793 5570--938 -6084--703 9186--2826 6098-936 -1669-6781 1934--1036 -6899--4654 -3836-8264 -1044--3853 -5554-8854 -1016-579 -577-5818 -5297-8779 2362--5653 -9662-5074 -370--8080 2214--7873 5037--5159 203--1888 -5746--4589 -6424--6802 1797-2969 5894--8626 367-8897 -2042-808 -9882-3842 7088-9113 -6187-2308 -9765-2453 2107--9225 -5669--9864 -9805-4456 -1729-4083 -9253-3503 8540--5041 1254--8060 -3734--7145 -7860-1168 7512--3102 2529--9289 -8344-1580 1780-481 -2533--440 -2141--628 3374--9877 -1102-9939 -3144-5379 4145--3916 4--345 -826--5713 -9140--7015 -3007--6149 -3257--7066 -3296-99 9426-2338 625--3437 4135--545 9384--8398 -4148--9510 8043--5818 8897--7037 8409--7534 -8655-4791 -8078--3632 -1923--1120 -2334-1968 -5183--4754 383-7704 6062-9967 -4386--4647 -8445--9147 -8982-686 -8562-9123 -3592-7441 2650-9742 -9818--4777 2328-1375 -4358-9000 8417--2208 -3775-3227 -161--1835 -5385-5644 -949--5578 -913--2807 -3051-8886 4661-1733 -9123-3076 -2325--3593 7621-621 -3503--4032 -4602--3633 -8706-4360 -4810-1256 6668--2535 -7016-4818 -9616-1757 5817-7125 -6242-3865 -9780-7533 -5888--4565 -953-425 -9820-986 8136--3644 3855--6924 -9867--7759 -8019--6287 4318-4118 3636-7375 -3251--1857 -3451-2334 -9598--5813 -4816--7564 3247-34 3593-9732 4182-6475 3771-2987 7029--4546 5068-1706 -2319--6635 8701--6393 8324-2992 -4285--5345 615--9191 9517-3856 8892--8259 8999--4551 4240--7359 6412-187 -1071-8253 -140--1676 1190-3280 -362-5739 1545-9522 9384-3561 -2853--9898 -4238-7568 -7959-961 -2617--7426 5037--9184 -2348--4870 -498--8749 2945--8393 -396--2782 2897-1523 3939--1495 4747-8544 -6579-9874 2077-9116 4044-4854 7906--7468 -4954--956 2806--7686 4147-9913 -4660-3583 -287--1264 8046--9490 -3441-3680 7384-7771 -9041--5356 -985--6292 -9016--2996 -4447-9221 6665--4072 5492-7596 9865--135 1137-3947 2210-5919 -7937-6603 -6447-8436 -2932-1384 -7263--7960 -2801-7761 -1982--4025 -6992-4079 5266--5498 -8123-9189 -1380--3207 -5085--6149 -8939--4502 400--7578 727--1985 -9796--923 7472--498 9878-7506 72--6274 -4784--619 4844-6016 585-6086 3213-4343 9205-5146 2741--3968 2305--4069 5942--911 -8416-4969 -8789-4149 8279--4545 -5124-2649 -6804-6213 -5307-8016 9785-1862 -3914--7029 -1871-5213 5810-6093 -7379-6787 9371--9474 8059-6462 1027--1501 65--9900 -2561--9050 6493-4028 8828-8973 -4085--9056 -6489--3657 6237-9630 6296--4644 -679--3818 -6927--8175 -4411-3696 4494-2653 -6445--9266 9982-100 -6647--7338 -6376-2008 -485--1139 5400--5037 3260--6731 -5673-5807 -4850--9319 9515--3498 -7100-1884 -6286-8379 -4389-5664 -4222-6451 3432-2609 4946-7830 -51-817 6483--9801 -1011-395 5939-6092 1383--592 5426--6055 6449-339 -8116-1060 -6623--8156 5364-6017 8378-4995 -5671-3624 -97-3651 -4251-3496 1988-8407 -6143--2918 -7037--5653 -843--7264 3247--3072 9986--9440 8264-6525 2959-2561 -3617--2239 -2807-213 -7155-2141 -7419--263 3616--2679 -6455--410 6294-2885 8541--5862 -6146-7982 8713--5483 4568--6915 -3640-3143 -8399--4473 6816-8431 -4950--729 -6320-3227 -926-5242 8770--9861 -6132--240 -9845-7650 5274--3232 -8118-4003 -8345--5886 8249-2397 -549-8579 -6037-3598 -1495-7897 -7524-6578 -371--296 -8998--1589 3511-6189 9840--9294 7873-1621 6374-5990 -8479--5536 -5553-2056 -9927-7386 -7977-5734 1711-7250 -3469-2037 4525--6369 7127--1818 556--599 -3157-4418 -2693--6833 1327--7706 5235-126 2691-7701 -4931-4837 6111--1233 5381--8225 -8871--9048 9619--962 9341-4717 1965-7666 -7117--2506 -6592--89 -1240--4301 -6399--109 5110-5306 -1474-87 -5464--5687 2309--9012 -639-926 2007--4990 5881-4940 1241--4272 -6348-2976 -2373--404 -2942-7227 8322-439 -6739--9434 6804-6607 -2716-4281 7965--688 516-3293 1533-7499 2154--1422 8793-8687 -3225-1510 2265-969 3990--1529 8653-4720 -8202-4351 6059-8501 -1315--467 8050-7314 6613--7039 -5361-1498 -928--2272 -7312-9100 -2242--796 8988-6639 -3856-5579 -2695-2861 -4219-9792 3309-5512 6014-3920 540--2697 2770-1352 9268-1221 7322-5760 3817--5126 2502-8381 4114--7094 -2612-5516 5800--3782 8347-668 -3611-854 4742-4408 -1678-2640 2919-3426 5632-6047 7952-7216 7748-7316 7240-5795 5066--3815 -3600--1087 4893--2472 -1194-8818 9890-8416 9848-2012 7177--4577 5894--9848 553-2934 -90-8760 2292-9063 9557-2728 -2406--3870 8403--2931 5780-5662 -4855--4379 5937-9419 -3968--8547 -1157--2084 5705-4869 -2096--3041 6593--4511 -7994--9310 2919--3400 3016-512 -8935--766 -6752-4366 967--8967 -1210--7705 -3719--1656 -2270-185 -3309-7193 7561--2404 -7459--4700 -3532-8756 4396--6702 7803--3057 -7952-9537 -8686-9560 3914-7215 9341--1596 -5676--7841 5013--9831 3682-8343 -5387-7640 -3988-3879 -5606-2274 -4128-9037 -6503--3248 -209--7311 -6668--247 -945-6941 -7936--3184 -3482--9913 1294--2179 -6875-5661 5428--8410 -1632-7009 -6862--4743 9042-5879 7021-214 -5773-9604 3509-6051 -9011--6328 871-59 -7980-937 -6872--6927 -1241-4959 -6771--279 -7859--1304 -7295--5757 -2306-3115 9595-8819 -8828-9620 6214-8986 -8560--1216 222--5347 -3640--2553 4727-3324 4614-9611 -8369-9110 -3158-1238 1656--9749 2119--2354 -8145-3225 -7586--3919 7398-3094 -1889--1113 6754--2595 -8568--2154 -9902--66 9678--1281 -6398-5503 3302--9934 -787--3637 -6608-1622 -7168--9149 -6206-6164 8494--5526 7996-4809 -1240-9456 1956-6753 2499--6280 2876--3127 -3155-7359 -4282--6386 2107-7737 2004--5738 -4919-5049 5049--6792 -8522--492 8663--606 5220-2591 -7411-7440 -5967--6262 7988-1234 1088-5521 -8987-9506 5993--3280 1503--1007 -2332--6032 320-5786 2349--9204 3318--8846 5208--7270 -5626--4174 -7882-3390 -174--2396 -5349--7308 1726-8617 443--2355 -8359--4017 3363-9938 6345--3379 -7249-2141 -3557--6366 5411-9227 -5925--7540 -2484--4169 9029-1748 -5309-8957 2170--4371 -714-7607 -4498-3163 3076--708 -3888-5319 1479-6739 -7977--4912 778--5426 3026-473 6416--1931 -5941--5836 -7657-388 -6780-6936 1772-5340 2916-2621 9396-8247 -8772--1189 449-5361 -3663-2729 9911-748 5230-6436 5075-8093 2830--1004 -7265--1670 1130--7435 -4244-2664 8139--1471 -9148-4931 3493-5614 7773--9359 -5148-3658 8388-1979 1186-7124 8908--2625 9681--8844 8743--7422 -5290-9392 -8935-9188 5409--2613 -3459-8179 -4335--9443 8835-3190 5925-7930 -4698--2882 -3236--4275 5126-8192 2495-8954 -9288-6928 4285--5332 -3028--2638 -3965--6586 -9686-7369 -8988-8193 -5370-385 3735--7713 3272--727 5690-9179 -7394--4310 4224-46 5032--8768 9975--1503 6717--2788 -416-848 -8937-3178 -3195--7858 -2918-8892 -433-9851 6946-485 -3998-9604 -9277-3264 -5522--2271 7759--3607 2840-2603 -7523--4475 -7170--4989 8635--824 -707--3201 -1907-9666 -3841--3953 -5623--8731 -5155-420 -9707-8737 8769-9432 2152-2799 -6185-3489 8559-4479 -7335-7601 6503-3590 8697--6866 8161-2675 -7214--5757 -911--8697 8761--791 -8755--4698 8361--5837 4342-6411 8423--5102 3956-9393 -5790-1776 -8696-6229 -4564--699 -2656--6655 3144--540 1286--8793 -3611--6515 8528-9351 -4702-9506 2992-5095 -2134-3028 8249-1608 3396-3024 7943-454 -2563--1491 5514-1567 -5383-5592 -1181-4353 -7346-4540 7403--56 6268--8496 8467-4348 4200--7427 -3733--4369 3353-5748 31-8512 8807--7405 -9691--576 6438--4432 673--1384 2014-9275 -7016-1501 -2650-6115 7329--2449 184--5108 -4227-1615 -4483-6297 1161-4133 5788-9247 9173--2744 -1282--3052 -7416-5432 2714--6392 4285--9633 8539--4551 -8515-8366 -3622--3491 -9601--6468 -7099-9244 2645--4808 6974-5675 -8426-8893 2421--5311 2321-2106 1531--5901 6277-3636 2380--2735 6439--6237 9249-197 5579--7374 -2870--9256 -5659--8614 -9637--6871 -8977--187 7878--8868 2959--9292 -3459-3726 428-6653 -694-614 9618-2291 2758--2811 -8041--1458 -6665-6184 -7580--9364 8297--6149 -3681-9498 7658--7990 -6214--6435 -3612--5702 -1118-9223 -2334--379 -2273--1094 -9889--3158 -6917-1698 6220--8408 -6604--8909 -9979--3229 -6058-9985 -2802-7984 -9012--2532 -6579-743 5345--9043 -7032-9615 -3104--1788 4900--1909 -2740-5789 -6244--1253 7118-7347 -1866-3371 3250--7910 -4646--8562 -2934--7917 9410--5836 -5574-1766 5877-1184 7027--192 -4328--1209 3096-6574 2679-1250 6479--7684 869-2681 8281--8072 7650--4372 -9176-7453 -8899--3292 9392--6496 2784-2561 -5223--617 8058-4649 -900-4613 -6025--6973 5664-7501 -550-206 8890--7451 -5163--3972 3765--9214 -6432-1848 -2517-7408 -8406-3456 -7860--2190 -4159-9265 -9638--4015 -7988-5361 -826-296 -5732-8145 -6040--8487 -3384-8241 8961--5548 -5583--2733 -1069--7248 -2284-7555 7737-2724 -6178-4120 3028-6055 -1358--228 2063-3275 9345-9702 8684-7377 -17-7720 7331-2833 -3510--494 -2508--6510 4528-5142 8012-5095 -6059-9537 3627--8267 1073--7910 9608--6565 2066-8073 5381--2597 -9366-9305 -2243--5083 -211-6371 3224-5143 8236-4469 5576-2421 4632-3311 6733-3446 9271-5821 9478--5515 653--3344 1787--4875 -7280-6719 -3335-3054 -1478-9942 -8546-5931 5419--5883 -1884-7765 9638--9993 -3601--1021 1646-3083 9162-7294 4270-9924 -6304--3478 8159-8807 7255-4565 1360-2676 -6745--1999 5709--9250 330-896 6439-9340 5659-5176 6946--890 0--9270 5418-8225 -6018--9715 9895--2701 -4089--5953 -1376--7227 1430--7385 -8315-3468 8895--1168 2057-8797 -9863-568 -6548-8003 -6791-1910 2662-6025 -7933-4718 9580--3584 -9516-6246 -1912--5785 7367-1000--9323 -1789-4669 -2183-3613 9724-9736 2579--8568 2223--8003 -1814-5790 -3000--104 -4851-6707 8780-7311 6907--1523 -7849-5916 2388-5701 -9023--2950 3402--145 5043--1828 -1551--6262 3420--7428 -3091--833 -5580-5611 -8236--2573 9973-2375 -7811--1394 -8472--8527 712--6424 3294-4628 4978-7446 8884--1457 2705-4228 2918--1577 3010--8913 1253-8377 4818-9090 1940-3300 6704-9392 3223-4058 5852--4155 -6642-3251 -5246--7037 -1336-2761 -5547-9189 4847-2422 1819-897 7395-5047 -6873-2979 5436-6065 9589--4764 -3519--1960 -5967-7820 5251--9630 -6356-8234 5477-5065 -3280-7498 -4217-7740 5664-9108 -5672--3134 4678--1183 -8582--7556 91--2098 -7343-4068 562-4186 1589--590 1051--3646 1417--1992 6996-783 3309-8 -6290-2549 -2156-5355 4248--4235 -6813-3884 -8892--1974 -5910--9640 -7848-6724 6728--8794 5207-2601 6939--9139 -932--6893 -6133-8922 -3336--3944 4800-6934 4900-5441 7873--1911 -8043--3936 1675-5778 4197--1306 -4379-4011 -2782-8169 3741-6767 -6937-3444 -7030--3009 8060--2346 -233-4840 -2410--4088 -9107--4014 -3140-2484 3525--1231 -8732--3366 -3986--6908 8918--8448 -4715--4283 -6041-5040 8119-2797 -9889--4102 9461-4929 -8255--8190 -3764--1702 1637--8497 375-1608 -2337-5395 -614-952 8--5989 3675--1105 -6782--7861 7518-2636 -5244-5181 4037--3752 -5553--7534 -7390-3024 -7114-523 2252-5345 -4571--3937 -5321-5019 -6777--125 -4031--8433 3071--6904 -3196--2092 -3939-9537 -4440-5021 -6804--6312 -4613--2347 4307--1762 2928--9085 1711-3588 -9434-5819 4275--9282 -2839-3947 5996--3550 -2405-7566 1935-1849 9789-7773 8057--3405 4533-1913 940-4697 -8976-215 9407-4377 4857--1535 4532--4731 -5574-6872 -6617-1527 -6541--9840 3528--5029 64--3155 -2495-2483 2648--8084 4273-7282 3509-4021 5068-9146 -6591--8369 1805--5054 364-809 6659-1969 -5955--1423 1363--9407 1567--2356 -8213--4990 -8872--3872 5612--4202 454-5665 1298-4085 3535-9492 -6304-706 -2861-6126 6395-5823 -354--862 5524-5903 3686-2537 -4712--7249 6605-570 2386-7623 1818--9244 9741-1450 -2353-421 -5010--4201 9532--6389 -621--6022 3505-9128 -2509--3129 3983--5967 -8145--1998 -3244-9448 -5667-5275 7326-1137 3783--8936 4064--8916 -5991--3152 -4750-1152 98--7098 9661-5248 -5627-7578 5201-3308 -1032-3229 -3356--127 460--9165 -4815--7352 6651-8678 6639--5183 9078-5751 -9613--8683 3812-4161 -5437-1731 6727--3929 -6778-3399 -2788--6051 -2525-8043 -172-5296 813--5288 -5651--7248 9123--1743 8361-9871 -6369-6667 -9737-7013 1058--2994 -5999-2877 -6547-2734 -4392-16 -4843--2639 5886-3192 -2146-2381 3480--1608 3369-6784 1717--6815 1818--7366 9073-567 9201-3493 -1109-6435 -6037--206 -3263-4113 2353-6985 -4929-5238 -1662--7437 5425-4748 -4276-3345 -9700-6198 2634-3209 674-1635 -3848-4106 -6764-5821 -6019--4179 -4298-952 -5133--7998 2582-1376 4038--5350 -7597-1782 5759-4945 -2914-3195 7500-9251 3825--2454 -4712-1605 -9832--591 -5543--2767 7265--5539 1482--2312 2502--7749 7187-2378 4272--5769 6028--1838 -7402-6446 6071--1531 9448--1675 3639--2890 9155-7953 -8196-8187 9043-568 2649-1328 9247--8758 3537--8030 4611-1171 2579--242 -2366-8758 -1620-1670 2794-6623 -9281--8857 9579--9171 4672-4068 8411--2242 -3934--7357 -6803--6317 5123-2248 5973-9130 -7628--7141 -1383--8549 480-8089 3813--5539 -4375--448 -7446-4953 -9697--1943 3344-690 8751--3125 3219-7150 6363--6246 -8100--8565 9292-5285 -5739--1306 -2989--4174 -8543--3625 1451-5428 5702--311 6210--3733 1094-3138 -8906-884 5306--1904 -502-4747 7832-2339 3602--9322 -1051-8981 -9863--2245 3026--7324 8304--4720 -2290--3060 -4574-2916 4134-8976 5156--1192 5936--1903 -5719--9440 5555--4862 2438--2035 -7291--9557 -5157--5447 -1628--8099 -4180--1020 -2491-9622 -5101-4169 5173-8179 8996--2492 -8875-7692 7877--9471 -5093--6306 7525--7887 2389-3692 6533--6740 -1077-8998 -7477--1807 -6853--167 7989--8710 9319--6144 6882-3834 3858-8896 -3706-4306 5374-5148 1672-9076 3314-4612 5789-2342 -8848--9168 1824--694 -6992-492 -9289-6379 -2377--6900 4458-387 7639--3692 -3768-5326 -5056--1553 -8553-3763 -8410--172 -7467-1033 9946-1689 -6612-9919 -4666--2027 3034--4944 6051-5575 -4214--9422 -9475-4102 -5122--9537 -7741-855 7883-8628 2323--1970 6061-5104 170-4466 5219-1709 -69--8337 -6875-1109 -8009--4829 -8-4614 1408-5499 460--7767 2739-5651 1259--2520 -5519-6350 3566-217 1008--9425 -9047-5559 9916--622 3839--338 5315--7384 -8189--4473 2161--8461 4937--5457 9196--7968 9412--7030 3840--2657 4415-5354 -9733-3316 -4117--9952 -4293--155 -728-9943 -4289--876 -4919--3721 9430--1020 5673-3351 -5719--8982 -5067--2319 9931--2912 -2923-3982 2404--1986 -9996--2230 4966--7495 9253-9417 -8985-3051 4018-3498 -3125-6807 483-5763 435--7904 2696--1877 2040-319 5765--3797 2315--7344 5025-7488 -660--1591 6482-640 6880-7157 1324-3022 -9563-9236 5641--7342 -2976--155 2587--6444 600-8892 3984-9348 7130-7187 1765--1641 1327-2301 -3272--412 9445-9812 -4640-4999 5660-5071 8698-8036 -8079-1974 7032--7826 -58-2483 -2493--8586 -7808-1476 114-4221 -6340--6814 -2561-7198 6063-7202 3017--1141 8914-5673 -7015--6104 4276--6911 5093--8332 -4318-7756 2611-4736 -7240--4658 -521--1407 -7880-5516 -703-9217 4904--4144 -627--9456 6768-5531 4616-9540 9996-4333 -4578--5325 -5134--9160 7244-9804 520-6184 8721-3038 4219--53 4373-3282 4323--6342 -5238-2122 8601-8482 -9905--8875 6540-9456 8628-3433 3254-7285 8133--8640 6389--4841 -8871-5605 5497-943 1194-6301 -6985-7392 -9373--2818 79-5292 -4569--9231 9482-484 6141--3716 -1313-3973 -4075-963 3874--3259 -9307-8789 6421-8995 9867--9918 1386-4777 -3593-6309 6842-9979 8656-3717 -2981--624 -4645--6604 -6006-9722 6998-5694 5232--9060 -9947-1212 -8559--4609 5548-5498 -6884-5917 -4938--2399 -6158-3643 1363--9286 -3901--933 -7696--8124 5925-2682 -1867-4838 -9467-9839 -5504--2807 4635-1390 9862-976 8140--2490 7066--4157 3966--9552 -7005-2514 3911--8218 4294-4303 -7406-527 -910--9425 9192--7160 7887--609 6527-3014 1072-3176 -9683-80 4032-3669 -648-4266 -385-9012 326--320 -7312--1219 -8763-4445 -1032-2384 6164--8929 -6386--4269 -5831-4069 6590-4809 -6866-7923 -4999-103 -520-7347 -8792-5943 -7068--3858 -1985-541 5774--1913 3426--7388 7593--1786 -8148-4789 -1854--6404 -7733--7172 5229-5182 3164-3998 3996-4987 -4705--4054 -9574-7264 333-511 30-9168 -6983-6705 -1444--1230 -3878--3509 4033-2446 6099-5132 4977--4718 715--4924 -9531-4556 8172--8242 -7961-541 4800--9222 -7866-52 -9190-2194 -8178-8329 -2476-5238 -8943-8105 -1729-9426 305-2676 -4143-8596 5852--4766 -5314-3858 -1467-648 4301-8629 1691-919 -2164-2346 -8715--1935 -1474-9738 855--8010 1988--9698 -3715-4777 -2167-1471 -3675--2732 8759--6460 1304-4037 2707--9449 2850-9978 -7163-3653 3581-2550 -6132--5715 -7633--3716 2233--3394 -1532--900 -4455--8393 -2158-122 1929--3087 -1044-7686 -4883--8936 477-1387 -6455-4713 7998--8388 6383--7175 -6550--6151 6519--8391 1636--5684 -4648--1131 -1525--3349 5158-8830 -5689-2546 1157-2374 -9623-6369 7576-6650 4944-6028 8109-6153 6089--3648 -1199-8028 3431-4232 -1830-6234 -8481-3919 -963-472 -2172-756 -1065-9732 -1262--524 9088-9773 -9369-6077 -20-8321 1748-4931 4204--5090 3920--1082 -4065--4853 3924--2719 -4300-8946 4373--1167 -4531-9784 -5699-4362 4941--5133 8835--5254 2252--9130 -7083--4831 -6820-4603 -9958--1154 -8823-4091 2612-7681 -3416-4604 2615-3552 -9742-2707 4651--9755 -3996-6023 5738-5270 -8971--3311 -8110--9963 2390--5093 -8752-7477 -1238-6685 -5165-3402 -6803-519 648--3368 1347-7670 4705--2232 4891--4132 8597--6565 -6369--1075 7087--1857 6888-1126 1028--707 -3893-1421 -6767--8667 -1417--9828 5838--9607 -1078--960 -57--4362 -5472-7617 -288--4245 -1539-5864 -9255--9577 8286--9661 9878--3234 -4889-1187 -5496--2073 1767-799 8344-150 -3597-5291 -3902-7608 -1779-7125 4465-4549 -1887-9902 -3498--167 584--4227 -1759-1158 5760-2390 -4093--1735 -9214--560 -2821--4605 874--9376 5485-9300 -8658-9219 338-3109 -2725-6858 -7695--4541 -9442--887 3772-7655 370-1961 6491-4550 -5150-7448 4808--1607 6087-6771 2866--5067 1241-6120 3832--6406 2525--5895 2702-4884 3160--5149 -282-2123 -7881--5241 -6200--1097 -9940-3428 1027-4467 -2877-8063 3010--193 5712--9114 -4862-8882 -1936-4350 -6977--7268 6967--2823 8165-4528 -5435-3510 6848-6045 1045--3414 2255--2312 -4677-6181 -742-2351 -8661-969 7343-5861 671-4792 -330--9126 683-8512 -9412--3344 4992--8919 1096-1646 3282-7013 -4085--1796 4573-2343 5625--6781 -3414--6671 -2135--1930 -6544-8463 3776-9806 1121-4908 7947-5972 -8133--3006 -7496--677 -949-8696 -4307--7072 6623-6206 7594-2022 -6149-6275 -5250--4878 -3312--6644 -9182-1114 -3893--5890 -3801-5466 -3078-6411 3529-4723 -331-9638 2210--7868 -1348--3701 -8687-6088 -4362--2814 1054-4378 6511--5464 109-7074 -551--1154 -9931--6765 9193--2556 545-7243 -5511--9311 -1144--4257 -1475--7650 1303-6999 -5570-2756 4515-1483 9540-8430 1398-9326 -4650--7323 2781-9108 9516-3697 -1224-6709 5588-9518 6669--1267 9404--414 -6454--9096 6522--1668 7897--480 -9058-9904 -7475--2194 4836--4093 -8682-9394 -9947--1864 -9871--9372 -280-5355 9572-6637 438--3330 -6124--989 5670--211 4853--4034 3425-6341 -1468--2945 -9832--571 -9422-249 -9103-4134 9709--4714 -1944-9063 -5884-3311 -1207-2800 2870-4463 -5863-3671 157-9413 -6389-637 -5789-2308 9373--6724 447-6530 -1514--3878 -8816--6174 4687--3487 6095--2187 -7294--4022 -5861--4334 -9246-7910 8012--4021 -5043-9827 -3116-2168 -9882--6597 -3698--7623 4087-7337 -4441-8745 6018-3917 5361-2306 6967-912 5073--4272 -7940--285 7143--4698 -9301--5804 -4765--8333 -118--2508 4205--9354 -6821-9172 4089-7824 6288--9024 -3654-535 -6733--6725 -7662-3458 -9097--3624 -8351--8588 -23-7317 5211--6599 8415--7556 4411-5463 -7504-8737 -8494-3853 3498--7108 6690-4815 7530-9413 20--6161 8003-33 -9867--2559 -4810--9161 7097-5689 6874-5469 4374-5702 8995-1545 1697--1909 -1200-9091 -1207-4668 -354-343 -7510-8778 8990-772 -7053-6365 -4320-6430 6462--1478 -3357--6310 6791--1240 9520-4737 -9210--8402 -987--8434 -6573--849 -9695--7492 7560-4562 -7185--875 -9331-9339 -5615--5073 711-8081 -8675--2636 4683-3 -8607-2428 3876--8053 4500-3966 6888-5092 5274-7335 -5402--6574 9350--7796 6963-764 2912-1006 3100-1284 -4241-6731 -7337--4425 -6982--1929 -3299--1817 8316--4170 -1181-3551 7804--4147 1002--2515 -3246--9500 -3831--3755 1029--7059 -6292--9132 2631--6923 4402--7337 -4148--9384 5437--8023 5088-7518 9231--3810 -1586--399 3676-3294 -5107--9006 738-4764 7019--3718 -8570--1826 -3987--7698 -7407--7980 -2024--1721 2895--8616 738--4883 7161-2279 1319-2745 -8248--448 6356-6636 922-7408 6716--3848 -5509--6436 -213--3323 9516-9788 2031--2249 4386--208 2976-7322 -4437-4963 7963--6433 2853--9104 -3713--2795 -3463--4518 6793--4484 4201--1869 973--5666 1932-2186 -2113-9516 3632-8773 5172--4215 6538-9784 9986--2912 1340--9208 -7342-4293 -5566--6592 3619-6722 2684--5981 -7784--3560 7857-8337 189--1221 -6206--7531 869-5697 9106-7818 -3293--4433 3015-3288 -7909-2592 2715--3248 3848-3472 6186-9308 -9424-8605 -1227--3550 -7943--9059 6893--3239 3384-7922 6156--9538 -6623-6275 582-1908 6972--8912 -3411-1000--6091 -2869-4051 -4808--1569 -7917-363 -7176--1064 -4578-8018 2803--8591 -2942--3282 2973-7091 4091-9227 -4719-286 8559--93 -1564--4158 4284--9773 -2857--6057 5203--2412 -473--2582 -1538-5698 6201--6823 8758--4704 -7987-217 4254-1196 -9705-3363 -7662--5223 6972-2040 1142-3499 -30--4123 9291-4508 9652-3806 576--8883 -937-3907 2014--3048 5891-9887 7139-8974 -1801-2391 -4655-6715 828-3062 -4221-7032 6353--3664 4681--7699 -9271-3716 -8558--1648 -8229-2905 9797-295 -2735-8542 6219-3603 8887--9779 9015-5817 -6771-6072 7522--4290 7162-2621 1805-7668 -3193--8305 4370--4080 -3142--450 8405-5761 6214--6672 1178--3306 -40-3332 2818-6705 1245--6099 5299--9366 -1412--4082 6903--2065 6114-7945 -2487-2601 9614-1693 -9645--7619 7847-3527 -9016--440 -4799--8513 3759--6263 -1228--7804 9066-6817 603-3834 3418--6053 -3309-7343 2498--7688 7834-5504 2241-1018 6885-7925 9449--3465 -2037-8838 1942-4652 -9612--375 -4246--426 -3102-8156 -1001-194 -5554--3022 7663-2219 7329--2421 2344-182 -9298--7993 -2921-665 -9225--6932 -2945--8616 318--6788 729--9142 2737-3621 -3276-1622 5870--5085 -7144-4828 -7167-8591 -293--8615 -7238-8471 9789-7913 8005--5096 -6232-9853 -3446--8344 3219-2699 5083--538 -3563-3303 7487-3424 3451--8676 4402--8218 -2381--6378 2101--1253 -7246--5128 -8445-5175 -9568--3488 -353-7395 9814--3430 1347-5084 -1635-3991 5353--5694 5234-1650 4344-7112 -8021--3154 4831-3315 4652--2413 6275-9165 718-948 7908--5461 3781-8276 -1947--9694 -7784--1367 -2656--1703 9479-2641 -8598--4780 -3850--6189 9348-8227 6188--4542 -9030--3083 -1957-5318 2162--8078 5761--5337 2170-4885 326--8412 4015--2361 -4681--2197 -132--7030 -2792-7545 4132-6663 -2828--5487 -5356-2181 461-4431 9501--7258 -8185-1568 3508--2970 -4462-4584 -7778-7606 6609-269 -3038--5658 3717-649 -166-3258 -1556--5594 -5368--2450 -8877--1868 -2093--2461 4682--8400 1946--9133 -10000-2141 4685-7194 8193--8806 -9339--4722 -2665--2994 -5112-2129 -4620-3089 -7583-9264 8495--5199 2212--6006 8686--4624 -9823-9303 197-512 567--6901 6861-9973 1428--2680 -8529-4642 5922--572 7628-4171 983-219 -2395-6717 3226-9096 -6527--6543 7421-2847 -9225-4890 8664-39 -9355--8823 2505--8354 -27--339 2613-5367 4521-8533 6620--60 6220-1613 7477-4083 3159--2740 5256-5153 -7813-5725 6242--9566 3449--7660 6505-3724 -7432--9768 6481-7784 6134-3151 -4966-4683 2436--6520 6439--4249 -7872--4081 -2700-4081 8999-4145 -3831-7616 -9151--8506 9920-3389 -6924-1300 -6467--9041 -6617--577 -4048--1061 -5576--1962 -2758-3315 -5311-5265 -3068-2872 2522--1909 4561-4751 -8628-6716 -4233--6021 3566--3762 -8075-9301 7793-9701 -1340--2712 1642-6268 -6234--3676 -4816-5385 -7417--7746 -4705-6876 -952--9842 -2870-3177 7939-197 -8475-425 7277-6807 -9994-6754 1035--8821 -9410-3163 -710--3005 -5247-1764 444--4978 -9234--6993 -5415--389 -9849-5297 8925--133 1152-3515 6699-6313 -5551--8771 -4932-5091 -3152--9926 8760-408 -7227--3308 687-7947 -460-9188 8833--5746 6841--5694 -9514-6201 -5686--3233 -8998--9083 5803-9106 -3090--3562 -5498-8961 -4054-4587 -4644--1204 -2147--8482 -2235--3067 -4779--6355 -3638--1354 2999--2512 8194--7962 -7065-2844 -629--6787 -2350-7491 -3216-686 9646--4322 -1089--7347 -5928--8071 -1908-9622 -4021-8110 -4439-2293 7585-8341 4172-3865 1114--9636 -7138--1076 -5155--6622 -8589-1835 1073--1282 3749--2239 9718-7770 -7908--6297 -2213-9173 3111-8283 2237--2133 8168--4531 7351--7290 -4428--6263 -796-2844 -9674--6726 -692-6336 877-6163 3958--5306 -1479--5917 -2807--3279 -8405-6669 -4620-1190 6096-5294 984-9160 7683--1760 -7270-9575 -7359--3238 -9021-9127 7204-8198 -9970--5135 85-8031 363-4652 -9168--3920 1099-6912 5281--6800 -8376--5229 -4481-4659 2880--8463 -8131-8107 -217--2050 5758--3429 7496-7173 -3255-7789 3858-3699 5083-2805 3690-8052 -8540--9291 -765--7969 9499--5437 6051--2589 9515-7784 5793-5334 -1041-2394 -9711--6285 -7231--6277 -2413--8395 -1571-6924 7517--8633 -7841--5502 6027-8116 5412-8692 -6238-8882 3305-3870 3507--6728 6175-8725 -5910--3298 7143--6417 2656-7287 -3397--7 4678-2740 8199--8992 -4719--2654 476--2828 -3190-1168 -1387-6296 7899-6432 -7269-8939 -1386--7949 -478--6938 6955--719 -7203--7773 -5130-3216 2061--6732 -7454--5722 -3382--5100 -5247-6371 -4749-9910 -7580--622 -9006--7180 -9245-5367 -4076-5940 -7535--3256 -5845-2611 -8830-1726 -5525-5780 9196--4232 -7108--5284 1965-5660 -5460-4341 4276-2216 9797--4570 -4215--6432 7393--3508 -869--2773 8014-830 8445-3260 7861-5745 -3712--2416 9067--5029 -4905-6139 7338-995 8095-7294 -691--2270 1400-8982 -4946--2742 3903-6424 -5988-2958 9262--1434 -2439--4349 5493--9965 4040-6466 7675--6549 9564-4373 8250-7331 5358--4610 7520--4037 6880-1595 -8427--6579 -8960--9708 5878-3417 -7704-2705 7109--4134 559-6176 -6733--4553 -216-6787 -261-8120 -7918--3487 7179--6985 3919--8922 1554--7203 -7553--8624 3209--3946 -6415-9605 -1604--3725 -364--1275 -3290--8585 495--8549 -5937-1701 -7977--8553 -3314-8921 -9579--7563 -6282-1468 2092--9950 1549--2398 -1226-2445 9418-3243 6680--2813 -4793-1407 1550-709 1941-2862 9069-9522 -9666--7554 1347-3188 -6292-7039 8424-333 -5619--7292 1749--4787 2500-1362 -2550-5719 -8743--8924 -7724-6523 -6501-8320 -6539--1506 9990--8606 -9220--2578 -3691--1185 -5864-1248 -490--9890 -3383-47 -7699-312 -2411-7684 -1158-2671 5089-7787 -2191-9700 4959-7805 1373--5711 -2274--7327 -8553--5758 -2357-1250 -4582--706 8739--536 9967-6429 -876--5064 -872-785 7462--3243 2074--1182 -823-8367 -5662-9684 5383-2945 8926-4127 4--9223 -8071-8591 -6969-7239 -5949-46 9126--1617 6194--2385 -1205--2086 -4687-2669 -2477--8902 -5795--9190 5097-7767 -9971-3175 -8851--9930 -2118-1167 -8569-4845 7316-7045 1524--1603 3293--5832 -7184--8714 -8273--1092 -374-466 6468--374 8150--9404 -3246--4058 -872-2139 -5623--6313 -8785--5296 -5260--1314 -7302-8120 9737--9052 1051--3870 1390-9483 6787-5033 -4763-2166 -221-1427 -572--5902 4710--403 -9034--2792 7004-9725 8387-4716 -2180-3345 -6694-3898 561--5903 8542-9974 1336-5835 -7942--2817 1068-3148 9516--9096 8191--1424 3223-4234 -9421-9272 -9457--2654 -9840--8421 1202-2938 489--9627 -4419--9086 -9180-169 1332-7119 9405-6088 -7040--9250 4654-3728 6937-7561 6304-5419 3555--6865 -2907--8449 1024-8469 -241-9253 -869--8530 -1272-4977 -8771-395 2244--6947 2203-2483 9726--4996 425-2687 -8699-616 -6332--9877 -6155-9021 9162-1394 6255--9185 22--9975 -739--2101 -3649-7917 5318-8985 5676--4188 -5051-3884 -649--3402 -7555--344 -6879--4573 2273--6285 9966-2965 -3614-6793 -9557-3781 -7410-7207 -4142--9447 1368-4709 -6758-7850 4640--797 4306--8827 9091--7964 4161--3243 8163--1085 9401--1106 3668--3310 3529-6786 -9836-1898 -5050--2810 -4165-9263 -2440--8415 -9734-5000 7156-5418 -9808--9898 4589--6084 -4377--6578 6199--5408 -3012--3804 -534--3850 1088-4070 5649-8091 9021--8677 2882-1759 -2557--2695 -6684--8040 703--5039 8159--3809 9425--7942 7917-1144 9839-1922 9643-9480 4361-8532 3009-5636 -4857--6149 -3599--5530 -6729--6038 -4145-8940 -4907-480 2188-5969 -3227-3486 4426-4365 1139--5605 5020-7733 -882--9505 6290-1157 -7910-6204 -6559--5480 4844-912 -2437-2202 6730--8392 -1124--8299 -5680--8658 -7257--6428 -1949--8678 7442-9859 -8927--9191 -2290-7132 -6037-5232 403-1123 7260-5984 9255-4638 3348-6644 -7992-9093 -8072-4727 3373-2799 2735--7786 9269--6210 -4228--9667 -6632--460 8431-1404 -1535--815 6091-2150 4580--4525 563--8597 109-3353 1718-7041 7498--8758 215-4337 -2516--3811 -7090-9523 -785-2945 -6556--3635 -8705-1614 9635--1027 4641--5904 7181-9673 6550--5109 -124-3681 -1041--3526 -8706--4001 8760-9402 -6673-4709 -1829--1674 -3648-1877 4709--2526 8243--8148 -6341-6826 -7814-3954 -2803-5165 8653--9626 196-7553 7359-131 5315--6427 -3946--2096 -8425-5507 -1428--7945 970-3459 7456--9167 971--5787 9220--8599 2730-1866 -8808--9952 6270-8421 -4842-6562 -5394--5234 7841-8168 2163-1 -5912--7227 1184--3323 -5792-3687 -1902--8398 9560--3962 5425-7416 -7757-4013 1670--45 7518-5274 3464-493 2846--9566 -9689-2481 7803-2305 9439-4778 8781--8315 4395--1810 3991--3540 -7992-9803 6258--934 -9538--6192 3618--6650 3850-112 -3568-6839 -8128-7571 1732--1310 -5886--1150 8027-3425 2637-6336 -7611--639 -6181-5528 -7293-5641 4504-7896 4088-3739 5085-7938 8160-6203 3996--5098 -373--2930 -2298-3476 62-974 5101-9926 5862-1731 -9818--7702 7933--6820 4397-2421 4364-5220 -477--5640 9183-7291 3954-5233 -533--966 -9697-4265 2224-8676 4184--6287 3118-8082 791-1583 5212-1322 3113-3171 -3618--9994 -7503--1742 -5447-847 -6389-7356 7647--9296 1690-2301 -6337-600 -5980-6356 -6462--7209 -6446--6937 2862--9685 8632--1430 -576--6467 5759-9526 4784-2682 -192-9254 2805-3500 7356--9048 -1999--7073 -4201-726 -2711-1372 -7706--7374 -5774--3065 8361-7578 1627-7864 8518-3558 8876-7001 9333-5862 -7248-315 -429--1582 4368-3728 2004-4902 6366--6695 -3965--8125 5438--7824 4901-2827 1328--5338 8100-9176 1959-5179 -9687-2441 1742-8808 -2793-3569 -7549--2351 -824-2538 789-586 -159--9893 5381--3706 -4022-9194 -7585--1226 221-7086 48-4031 2831-9201 -7653--7775 -953--4969 690-6251 1315-1875 8066--8768 4099--142 5710--2594 8264--891 8192-3829 -883--4649 -2170--9615 5720--2566 5339-9157 -9404--8055 -5059-8734 5581--9431 4139--6601 -8949-5841 9327--2049 711-2377 8206-5686 3232-9803 -7824--4958 -5709--810 6490-8631 3-6182 -8410--1093 2909--8162 3614--4111 1586-5092 -4187--1049 9869-7121 -6069--218 -6746--9194 -54-1650 8376--4269 -4818--9512 4362--967 4045--5029 -1962-7628 -848--2380 -5219--7088 1817--2042 9220-7036 9919--1476 -1323--9553 8671--7454 -285--2888 -2170--5485 -6052-4236 1975-1641 9299-9822 -3896--1957 3729--6628 -7336-5225 -5262--7056 1443-3479 -9812-974 649--503 -2886-1172 4804--7296 5054--3657 7462-642 -445-9521 -5715--7943 6801--4639 3886--9471 4530-8696 2374--1550 99--7568 7866--9624 9010-7033 9057-7855 -4307--1191 1229--3662 9485-501 -4553-9245 -5089-5198 -6795-3564 1195-3895 8951--5575 2223-5722 -2110--6526 -610-203 -7181--8713 4168-8487 6186--7829 5449-2830 7505--9765 -7423-5953 3800-1770 5507--3482 8950--5940 9438-8144 -8559--188 7339--9782 6116--212 -7005--771 3569-8180 -4026-3382 9817-7808 1592--4537 8017-8232 -442-2627 3416--7369 -2280--1196 -5417-241 8983--4682 4317--553 3258--3773 6720--4135 7352-3858 -6884--6291 2750-1061 -5227-6483 524--8652 -782--9278 -3198--5503 6901--2665 -2879--8785 -4073-1983 -9169-2710 2195-5545 -9771-2700 -7970--3824 5385-6077 9809--7422 -4595-7677 -5419--8588 8808-2781 1043--1857 -9345--3185 9763--7197 13-7073 8535--4285 9943--5520 6105-9311 1586-7245 1286--7847 -3858-7750 -1240--9135 8676--9993 7430--3092 -7552-1653 -8580-504 391--6661 1565--8990 4733-5328 7927--6827 6088--881 6735--4499 -938-7102 6942-198 3721-6726 5487--3398 -6387--264 -5929-6770 1892--8549 -2573-7305 9188-755 -4452-1389 2375--5686 8978-3332 -2275-9788 7335--3324 711-1614 -2474--659 4067-5775 -7626-9730 -1150-6446 -6185-6328 9948-6309 35-3424 6832-3547 -6858-2319 9925--8023 5085-9745 1370--8172 9121-8716 9360-8249 -4444--1149 7297-1000--3930 -3740--8351 -1643--8320 8309--8409 -7592--6059 -1078--7316 268--4755 -383-5473 9270-2208 5424--1820 9106-8553 -5371--959 9607--6345 1188--7385 -7041--7783 -6453-3975 -3015-826 -9414--1962 -6783-8530 -1704--9252 -2019--9950 -2978-8146 -1016-3301 1657-2207 -1479-5967 6658--9002 -681--234 3985-5872 1247--6314 9946--3073 -1376--1669 7815--1917 7295--4946 -6202-872 -688-8836 1565--9336 -2472-7871 8038-6297 1274--4711 -3898--1883 -7210--1057 8795--5409 5978--6888 8263-6640 -1633--6632 -3213-7479 -5382-9862 -2302-9519 1084-5932 -3125--9282 164--3019 -6619--9413 -7593--5879 -1485--3190 -1912-5182 -1943-3388 4716-118 5871--7545 -21--2232 4195-9917 -6450-6429 -9202--905 6130--9851 2868-7659 8041-5284 -4591-3127 4710--3559 -9236-428 1922--1523 2077-8321 9352-7484 -996-4837 2567--1740 -7040--7240 -1545--517 -8702--3014 2091-2151 1373-930 9226--3285 6469--5506 -2536-2415 411-1221 -3953--791 -6537-3581 8104--1792 -7280-6854 -6561--6652 -2269-4637 -9694--4743 -4988--3325 5298--2048 -4767--9775 7652--1359 8369-8000 -1722--4095 -9254-4776 -7001--292 6679-2315 7564--7822 3598--2972 -4757--8838 -8910--5181 -7771--5440 -5412-8449 2783-621 1892--9432 -6500-2012 9221--2299 4272-4744 -4762-4016 -141-7154 5229--1559 -6332--6172 -2504-5959 2825-9020 -6869--7473 -3274--5746 -6179-7583 -6335--6814 3274-8785 9786-5233 -818-9588 -4052-2422 8695-1889 3091-119 2790-3075 8770--7239 -7747-4292 4774--8746 3122--1654 -9553-3478 7586-1695 -2769--7049 9160--896 611--2549 -8636--2743 -6316--1901 -7171--6881 1796--7685 -8739-8220 -9108-337 593-5891 -1727--6538 -4143--7610 -4585-2066 -6276--7564 -9097--3975 5481--4144 -8979--4671 2835--9481 -264--1909 4014--2930 -4170-1848 -1986-234 2922--6609 3291-177 5459-6646 -283--1411 -5163-2230 2040-4186 -6795--7424 27-6219 -301-3863 2529-3738 -9054--6339 4604--6047 -2883--150 622-8189 -8665--9630 -3152-7812 -4785-5527 3315-2467 -5375--8120 6303-4474 -4155--8029 -3509--2346 7323-1276 -8318--7535 5663-749 -1711-385 8494-2141 3226--8322 -1068-6030 -6327--3613 -2454--8188 6071--7545 -3114-9626 -6900--7831 -6760--7000 2250--3370 844--799 -6772--2076 -23-5709 -9160-524 -7490-3802 -2761--283 -347-4461 -9263-3883 5186--1754 -7162--4436 3892--3603 3626-8435 -4624--1418 -1531--6205 -4668--8445 -2933--6741 5319-18 3113--3665 1911--1750 9927--9032 -8622--6830 7279-260 -5861-1801 7305--6643 409--7093 -2495--9898 9323-2226 5912--2064 1025--2158 -2144--2252 -1629--2082 8065-5943 9383-3608 -9264--974 2836--253 -911-4049 -9529--4788 -571-3788 2728-7744 -6110-4086 854--2416 -8395--901 -7626--7462 4695--334 2238--9293 2007-7438 -8555-3567 -3687--2431 -8534-1332 -8808-2554 -9600-5586 2798--7646 2181--7710 2435--8505 -5041--8971 9880--7635 -8307--6342 3149--2744 5139--9797 -634--9949 5500-3022 -3715--7574 9932--8572 4957-312 5254-2163 -4625-2609 3767-8680 -7870--2214 9996--8790 -7529-9444 9291-9374 7949--2745 566--7300 3972--8851 4477--3397 -7587-9113 536--9850 7776-4847 -6926--6790 1705--7927 1882-9818 4368--1154 -7076--4996 3216-4394 387-6850 -5865--780 1581--1000 -1087-95 9330-4953 -7371-2376 5406--4276 -6624--5396 -2150-7100 6245-6160 7709-3277 4842-496 -7414-8116 5850-9923 -9590-1720 -8885--4062 4517--7244 -4588-1865 5567-3747 -3306-290 -9079-630 3614--1345 -4611--4728 9322--3898 5415--7388 3188-7274 2449--431 -2495--6148 3991--645 -1047--2890 -7204-3361 2446--883 -7045-5346 -4744-6856 1012-5695 1535--5172 9796-8637 -8786-771 6338--4821 -1015-7201 1716--837 1044-4022 7503-7737 -7096--3272 -3295--1535 -1072--1760 -2237--3291 -5732--6433 561-547 3055-7726 -235-1463 2036--7647 7951-5961 -7438-4857 9922--5179 -5689-9179 -3850--9547 -3362-853 5430--2627 -856-3531 -1583--5828 2644--8521 -2362-6362 -1924--3388 3707-9769 -7474-8561 -6339--4231 9114-8905 17-3496 -1491--7361 9568-5691 -3726--6569 4674--164 4502--2298 -2807--7370 -7349-2583 -7163--4602 -8403-747 9752--4862 -8610-7001 2502--9922 -7009--5250 -227--4258 -5970--4856 4966--366 5240--3349 732--315 -863--197 -3109-3889 6396--9355 -1614--2722 -8464-566 7884--3641 950-6299 -8051--5770 -8785-6774 -6350--7720 9125-8946 9463-7892 1877-1860 -3897-8998 -7462-1435 985-5738 -4755-3091 -7156--9074 7552--4555 3243--3462 4707--7172 5552--5775 3299-9642 3715-2850 8167--5305 1135-431 6791-7625 3806-359 -7882--4657 166--2986 -2978-2450 4422-1378 -9121-1461 6991-135 -8102--5120 -6033-3479 -9984-4186 -6512-902 -5778--804 1382-3697 -9208--7203 -4645-3381 103-1621 9970--3158 -6133--1708 -7317--4977 1778-427 4635--6149 -3290--2340 2082--2741 -1897-7293 7077-7411 -5609--1534 3437-5519 -7603--8508 -9950-7604 -9928-6223 59-6170 -1851-6432 5565--9905 828-8341 2482--2563 -2694--8141 9639--296 6919-4957 872-9999 -5123--5596 6042--1944 -8014-9654 4515--3201 4988--7139 9242--2833 4098--9317 -8947--976 -2767-7332 -2086-9734 -9963--5108 4237--642 -7821--3099 7033--5012 8687--1547 -8237--6654 3190--2432 -137--5828 -687--8683 9516-3130 8297--1611 -9053--5503 3914--8514 -4852--9625 -4675-3727 2828-2553 9447--5224 -8745--6278 -8440-4918 -8976-3258 891-9969 -8203-6450 -5079-3978 3813-5825 6297--6566 -25--407 -8010-1660 -5825-1607 4367-5026 5342--5655 4191-4821 -9707-207 9350-1211 5716--3711 8107--3082 9948--5264 -1377--6492 -6661--649 -2541-6950 -7131-2606 -2043--179 -9608--7596 3297--7005 6916-7039 9702--2492 -1678--1706 -665--7210 2557-9176 1812-4634 -6979--5677 3946--2082 6949-6276 3625-5649 5097--6929 1447--7622 -9115-180 -6337--3568 5610-4082 8549-8074 -8938--2426 -225--812 2644-6473 -9768--2883 -3271-1852 -2287-7696 -4216-9675 9997-2733 9466-4449 7051-1550 -5694--6556 -2802-331 -1275-3712 -4536--84 -867--7765 8085--2185 -8186-3058 2491-1142 4174-98 2794--4562 -5666-1138 -4243-9410 -3738-45 1582--726 6328-2975 -9295-1914 -2414--108 7551-3865 -2898--7146 2839--8785 1422-8578 -8552--631 4596--895 2467--5979 -1973-6661 -5353--2692 4128--1558 -4213--3728 -9412-3172 7076--5827 9414--5222 -1867-5964 -9868-94 -5807--8142 -4333-2065 7856--2027 -2401--4876 -2184--1270 4000-3802 -8194-8337 3459--5867 4413-9554 -8065-2291 4218--4822 -6108--4405 2576--513 6812-3926 -2525-3500 3540--1332 6032--7474 -7331--804 1395--2379 9555--5757 6587--1379 532-8654 4742--8975 6069--6935 -2939-5225 -3743-6110 200--8341 2694--4366 -3656--6757 -2826--5732 -5256-1510 -9991-6254 3055-3571 -4287-9478 3060-1669 6426-5801 8434-8860 5735--4230 190--7882 -2349-9072 -9615-851 -9963--5745 -2080-4944 -3322--2151 -6317--918 6842-1666 -428--7781 -9868-7659 -8643-9095 -3647-2263 5826--3151 427--9715 9329--4867 -3764-3229 -6565-938 6474-6569 6440-2167 -8184-4659 -9845--9462 3097--4188 7747-3882 1087--8465 -2879-7902 -6198--9713 6215-2839 -9538-2606 -8140--3385 -3795-4534 -5552-569 1264-2826 2469-9488 -9506-7955 3219--337 1407--6620 -2448-4919 -7821--4329 -5511--9687 -8151-7007 1377--4278 -5798--5909 -5768-9893 -3958--2757 253--1902 1037--8424 -5057--4432 410--4385 -1446--1473 1809--342 -8326--6724 79-92 -1775--9212 1848-6758 -8925--2362 7824--3190 57--1923 -693--8043 9124-3927 8004-9366 6060-6568 933--2580 878-282 4962--1362 -7277--2688 3479--1832 -8413--7005 9245-8178 -2872--818 -7136-487 9282--9293 -1664--9383 -6363--2986 -920-2340 998--6601 2939--1807 -7247-751 5861--6556 1913--1352 -738-2871 -4702-2823 4213-6581 -3624--9103 -2997-1453 4960--7301 -4888-2013 4000--1538 -3543--8322 -8586-3294 5397-48 -909--5350 -4785--3861 -8016--6946 -4942--9356 1562-1923 -5041--2517 -6840--3935 8634--7390 -7968--401 9983--3431 -7571--688 -3617-5750 5953-5849 2801--902 -7931-4970 -5940--3103 -2305-761 5048--2973 -9943--8640 -2410--7591 1654-7697 -112--5519 -5434--4905 9281--8685 311-7745 2969-9688 -7573--8701 2463--6640 -7267--6814 5020--7230 -5717--346 5113--575 -3700-3207 2736--9865 -3387--1019 5256-6084 -5610--1445 -3014--5563 5745--205 519--1693 6297-8745 -6944--1214 8689--6802 7399--1826 7071-7231 261--4679 5665--8287 3309--3480 -6109-7287 5533--8406 -2886--5903 4322--2706 6195--2490 -2365--1511 4055--32 -8826-8291 -5793--5629 -1687-7799 -430--8996 -4640-9664 -1245--5830 2811--7157 -2024--2033 4074--2083 7576-2640 -4414-1199 9622--5165 9721--6482 375--1094 -9820-1425 -8576--9163 -2470--2612 -3954-7196 -4002-2312 -1630-3642 -5663-6606 4741-3187 -615--2777 -2956-9835 2133--4158 -6218-2347 -4425--4174 8615-8470 -3140-3415 -7682--5995 -1484-1039 -2402-6069 -7755-4263 -467-7240 -728-7188 243-1709 6013-1637 -5752-813 5429--7115 5408--3551 6109--6782 6605--6410 -6666-6039 -320--7051 5155--3355 -4724--1728 -4796-2783 6546-3492 5774-1364 -1482--5642 -248--1875 6702--4587 5409-7188 664-388 -9571--7018 -3784-407 -3523--5956 2271--6608 -7725--320 5479-5064 -5140--9286 2122--7312 -6078--3457 -3719-7186 339-144 3263-962 4498-3669 -3813--1044 -5558-1201 6407-715 8716-6777 1397-1818 -2423--5239 1579-5728 -6906--7509 6713-6235 9619-5135 2117--900 -1409--841 5283-2018 -9906-5904 -9449--6821 4172--3675 -2311--3226 889-1856 -7399--5385 2757--7909 4697-6741 1785-9994 9607-1569 -9--7396 8799--6446 -9188--829 -9456-9797 -4848--5854 3879-1117 -8510--2040 -9181-1873 4151--3546 -2111-7470 -3662-3003 -2350-4139 -5722--4780 -1929--7137 4475--1797 3999--8621 96--315 6846--429 -1713--6457 -6005--8421 977-2508 7148--3899 -1868--6747 -3842--7813 7218--6313 -7752--5251 5475--8122 -4968--6655 -9521--4887 -1056--5149 -3395-2028 -1902-9604 -9173--1039 7102-8151 -6836--8981 -4739--1362 -7873-312 7148-572 7911--9052 5820-9640 9521--8439 659--5675 2102-9336 -57--1081 -6193-7568 1615-9530 -5308-4318 -6574--6874 -91--2578 5661-9481 -3197-9588 5522--8028 1164-5190 -9222--3285 4022-6563 9469-8619 -6675--2079 4525--2745 -3801--9047 6880-4389 6326--6385 -9712--2392 -4026-585 2640-4947 8495-5694 -9303-730 -6911-5870 -3238--6809 -5704-7759 4859-5856 4656-9585 3080-1084 -3200-8878 -181--3905 -8683-458 2017-3071 -8805--3621 733--3182 -8751--9986 -7860-7708 -6570-4410 1601--3180 4090--9919 1521--9947 -5219-7757 -4511--2242 5225-5488 -1958-2817 -3901-6955 -3450--6121 -1021-8044 9160-3984 8395--2953 5238-8985 5584--424 9346-7067 -3765-4256 -7280--3236 -8997-7816 -3852-139 -363--1454 -1898--7774 -2550-4185 -553--6594 1432-734 -557--4707 -5169--1489 -2353--5254 -5565--3254 1291--2782 -9899-1187 1744-687 588-7390 5575-2593 3137-1886 3729--3509 92--7907 4123--1538 -2447--3192 -8559--4904 5842-4108 -702-9165 -3222-9479 1514--3736 -4566-4415 -9793-869 -4708-44 1076-1881 -6871-1567 -8268--8815 -9735-1030 -6327-5792 -234-4095 389-5361 4488--3425 9214-3982 2949--3665 6212--8263 -713-7549 2715-2358 -9629--9454 -9216-1512 -891-5938 7575-7986 7057--2209 -9954-8881 8281--6731 -973--9839 -9253--427 -7632--4899 -1541--128 -7443--864 -4102-7607 -4929-2919 -2999-1714 -3481-1423 -3364--384 -2548-5274 -6889-5444 4985--2764 3520-5381 -7689-3835 717--9656 3410-2350 260--2918 -3130--9990 629--7126 -2482--9770 -1626--4346 7493--5033 3243-9286 -7438--8449 6844--3007 1320-6255 -4067--7789 8321-7605 -8954--3491 -6208-1608 -2695--1904 7693-34 6012-417 -8195-365 -5247-5808 7299--2558 7523-9065 -4444-9730 7087--8902 -8840--504 3551-1000-9897 2654-1797 -8216-6267 6247--3328 5365-587 8740-1172 -4939--4049 2976--5028 9914-4597 6558-3940 -2932-4888 -9436-4718 2186-7880 3796--3300 639-6450 7706--4223 -9231--1715 7556--8261 6446--1499 7313-7118 -500-919 -9432--4374 -2329--6607 -7768-9965 -7100-869 4603--7377 4869-8842 -8763-49 9089--7287 5113-8441 2139--7035 -5119-9116 -9373--4702 3361-48 -5021-7523 2352-5076 -4899--7049 -2075--4813 -7743--281 5336-1037 3241--2109 -4787--806 -8169-9102 2811--1125 -5414-8465 -6560--6188 8461-1975 -5695--1140 -1503-2617 4644-8937 3620-5681 -1709-2347 -5137-3285 9760-5041 9173--109 -2928-4600 2883--3124 -7538-9463 6910--9932 -1723-7544 1968--8478 3553--1352 -1667-4756 -3360--8846 8055--7352 8626--6644 -3139--7900 8926--5836 -3275-4698 4711-9573 -8206--1082 6465-1600 2307--6196 -6027--9989 9881-6981 834--5903 -3792--8449 3954-4940 -863-8529 602--916 9546--2726 999--982 4992-1559 9683-4443 2649--3479 4415-3160 9522--4642 7026-7641 -1479-3340 -3211--4606 2945-4213 6661--8158 -6932-2801 786--7101 929-3518 -735--4645 2500--7776 -7503--5576 8665-1440 2--9694 4406-8243 -949-2239 4641-9572 6094--1404 -4525-812 -7210--5060 -3893--6334 7102--4652 1326--1092 6677-3391 -115--5669 5719-3465 2781--4954 3953-4407 462-5340 -4778-2100 -5008--9447 903-6948 6703--995 9750--9951 6400--2744 -370-6969 4296-9580 -6233--2700 4013-7047 -110-3482 -5586-4509 7305-2189 5022--9954 522-9358 -3570-4187 7500-6944 -7536--100 7957--1112 -4707-2178 5133--6521 2991-1850 6129--1978 -2179-2450 8312-7588 5708-1840 146-1216 -1818-9472 -1104-2935 -167-6916 2542-1942 6757--475 8427--4246 238--8254 -1699--6463 1243--8551 7245-516 -2625--5076 -6695-721 1015-1355 -1116-2182 -8249--7726 8707--6061 -2487--5590 -2060--1139 4822-1616 -1303--506 -3938--1912 119--6644 -3258-6257 -5544-9693 -6557--8015 9323--7417 -2846--4777 -216-370 -3034-9604 820-5254 5482--4965 -3330-3324 -9876-8783 3136--2465 6342-8813 -1310--8158 -3449--7954 -6736--5373 9386--8171 -4089-4150 5080--847 -5364-2766 4514-1210 6929-979 9653-5626 3800--8287 -4779--189 -5575--4217 834-1449 4813--8931 -764--4269 -2925-8049 -526-5927 -2070--4283 -8457-673 -6160-3439 8195--7654 -293-6162 2025--3850 9780-1173 8444-7472 43-4365 -6402--1778 -3169--5895 -4186--1075 2562--7499 5994-3326 -7977-6570 -6180--3135 601-8464 6883--6399 2797-5795 -8359--7384 -4403--5182 5619-481 -9839--7392 8961--6845 2163--874 -5355--485 368--6356 3636-3022 -5644-4680 2069--4326 -1990-9274 -9164--8572 7658--493 1529-7867 -9811-9758 -2441-382 -5382-2050 -2038-7527 5473-9758 1995--9170 6290--6618 9310-9988 -9170-8322 4183--3160 -1751-6356 -742-1208 4385--490 -8177-724 -2528-6721 -7436--6172 5990-9937 -4193-3226 2668--158 7502-7770 -6860-9711 -6072-855 8018-8125 8570-617 -2713-953 492--2258 8567--8501 8674--1258 2834-2809 -8103--1162 9688-8036 4656-3288 384-1656 -4538-5277 5891--5928 -2059-4345 -3468-2914 797--7058 9673-9846 6833--482 7445-5001 -6788--6841 5249-4307 3784-6706 2142--3316 6582--1111 -7366--8939 4764-4835 -9423-1969 -5508--7328 9298--1638 5565-454 -30--1754 9114--6067 -6028-7488 9709-3808 4234-6903 7026-1944 -6798-9563 -7130--4342 8149--865 -2160--6251 4545-3843 -1499-264 -1739--3257 -225-7017 9747--4254 8229--1671 -5708--182 7238-6895 4068-5548 -5567--1434 -538--4486 7491--970 6732-636 3995--9688 -5371-5133 8761-4070 8842--5978 1336-3752 -1770--970 -4609--5113 -9131--5915 7753-9796 -6317--3312 4011--6716 9169--4279 -6343--1316 954--8971 8318-3701 -6649--4033 -4086-5946 -4361--3498 1872-4749 -8937-1529 -1213-1037 7748--9583 -4797-961 2922-1673 9538-9167 4392--683 -1402-2650 -1033--6458 -7850-6823 7611--4871 7329--9684 -210--6528 -8936-6983 9240--9173 -8774-6883 8508--9571 8524-2125 -136-9611 -2371-856 -1676-8653 -3707--8567 -2019--8634 2393-3458 3868-3135 2143--2435 5224--4781 -4976--7606 -6505-683 -8080-9680 -6187-748 -3738-2586 -5345--1132 5684-7488 -204-4673 4110-2865 9950-8750 7180-309 -9458--6039 -7973-8507 7003-9188 -903-5242 1938--9206 9538-8227 -9502--7653 5533-6260 5130--1760 -1057--6963 9082-2029 9952-7428 7004-7781 8381--6737 6255--5544 6560--1137 -7265-608 -4166-8018 8245-5410 -8241-1632 -3683-5166 7203--9722 622--1889 5643--1288 3084--681 -3572-5101 -9710-3553 4483-5290 4628--9035 457--8363 7588-3446 -2642--2288 -7798--6820 9165--3062 -8743--1467 5726-7759 4164-1961 1261-4240 -5341-721 7704--9078 -3261--569 -2266-1690 6857-8607 -3322-154 -6694-6161 -3109--7490 -910--3723 1583-9365 -2434-9284 -9415--423 -781-10000 -5255--4628 2764--2286 -2058--5112 9730--819 4377--1857 -5565-8950 -3631-8610 -757-4099 -684-7562 -8126--3351 -2677--8858 5132-3791 6952--670 2018-1098 6159--4853 42-3532 -3899-3260 -3700--4275 -4741--1741 1385--2390 -8439-2674 -8535-8456 -8297--6987 -6480--1508 -7032-3825 5839--537 -4190-5707 7063-8781 3974--3261 -5292--3197 6994-8704 -525-3181 -8791-2801 -166--7731 5489-438 8271--3800 6211--1223 5196--1071 7647--9943 4580-7342 -3961-9981 2833-3269 3389--5606 5675--2806 -93-9688 -1409-1462 4651--7210 -5375--6752 5699-6288 -1783-3489 9002-7827 3897--4056 985-7177 27-6731 6608--7015 -365--1867 -2178--7634 -7471-2637 5931--4441 6387-8016 593-5386 4618-4390 4272--5283 7105--414 -7045--5147 4981--8795 -8584--7558 -9435-9062 -8609--8517 -8013--9252 8731-6202 -6681--4340 3123--1829 6026--2307 696--5450 -6795-6550 -5461-734 5060--840 -5092-7635 -4353--7626 -4038--8078 -7122-2566 5501-5278 1597-2209 3629--2595 549--6673 -3060-8077 5953--1087 -2760-954 18--8753 8966--1140 7734--5598 -3617-1968 -4041-1021 8809--3967 -8049-9513 -5220-4826 -2178--4784 -4170--5385 -8980--9880 -979--3405 4238-6897 -4621--9541 3619-3105 -8271-6104 7642-2955 7484-8258 -7238--7426 -7477--2019 -6728--3188 1473--7559 2445-5721 6205-6908 -6400--5882 8171--7759 54-3746 9965-8486 -2163-7053 666-8559 6088-3933 8289-3482 4029--5733 -9507--6454 -4560--111 1738-6400 -1662--6346 1907-8733 -7879--6089 -264--4656 5397--8910 -4407-6192 4332-2631 -7879--9604 -443--7093 -5485-8150 -6378--2991 6013--3370 8869-2780 -9749--5733 -2502-5036 7871--4494 -4004--1425 9914-6969 -8730--9131 -3601--9202 584-919 1984--6333 -4130-2057 -1126-5638 -7234-7050 5755--799 484--4176 -4243--9264 -9658-9825 2122--9065 -6555--3337 -1852--4082 -54--8836 7349--1286 1024--6421 -4380--2291 -8971-6565 -8323--4140 -476--9027 -398--986 -816--1110 3280--2782 -6483--6989 8910--731 5191-2311 -4180-8223 3042--6168 8448-9604 -1426--8502 -1217-903 -5849-3828 5526--7969 -1064-1282 -764-7703 5921-9946 9122-3699 8405--3592 -1631--7332 7642--2715 -8689--6244 -1439-2377 -8101-6836 -9587-8976 -6882-9372 5507--8715 -9924--4671 3973-9300 7344--9949 6085-9683 9135-5248 1617-869 -1705-5014 -9630-4518 1271-4083 9796--2640 8685-7912 -1019--5428 8507-2538 7586--3225 5073-6746 7220-6718 6774-1650 -4072--5416 -2665-6580 -2193--5850 1177-1593 3082--2994 8421-1037 1116-411 3242--8143 -6651-9871 8760-4330 2840-2436 8239--5779 8713-1798 9833-4766 4330--2553 -9342--506 9781-779 9338-8101 4938--8769 735--5985 8480-1011 -3607-4617 3901-2570 1880-7915 -6748-527 -7815--3529 7881--9420 2689-4216 -571-7310 -5988--1621 5326-8015 2752--9736 4297--598 8543-9860 5109--9033 -611--2391 8358--7083 8076-4551 -2260--4840 7497-8765 8666-6450 3174--8617 5028-9176 7866-4659 -530--4358 6432--1295 -6914--8887 8154-8520 -8593--4140 4281-583 -7279-4230 7283-4627 -8683--2040 -7544--7955 -3464--6009 1466-1871 771--5527 -7421-1286 -2901-7647 -8453-1901 5439-7408 1380-6930 5947--7299 -9956-9873 -6009-9463 4011--6038 -7259--4093 1189-8438 -7069--7722 -3004--959 -1153--9953 -8988--9238 -5933-2351 7318-2630 -805-8002 3934--1971 1723--9252 7445-5420 -7356-3254 4524-708 -8755-3247 6038--3639 8057-2219 1973-5886 -628--4255 3558--9537 -9926-1974 -3627-867 3382--6428 2237-1704 -4822-466 3655-8879 -6966-9624 256--5329 9979--7045 -3666--6756 3682-3164 -9284--2267 -5577--2676 5545-5872 -619--3941 -1856--8121 -3144--2018 -6129-416 3739--3880 8259-8760 -5185--8637 2087-8653 -1265-7288 7135--6387 -9868-3378 8086-1501 1544-5151 -7058-583 6720-6791 1737-5121 9569-7890 -567--4738 -9144-1728 -5536-8653 -3367-9453 8572--6368 -5013-8069 2919--8440 5458--5215 -6987--3629 5353-4375 -2779-7544 -2348-5490 -8437--2019 -3126--7154 -7216-2747 9877--7379 -4317--9841 -5703--2486 -229--8376 918--6992 -3325-4652 -8704--1193 1183-6554 8802-4210 -2552--6779 4538-6761 1924--2974 5435--6543 -2308--4861 -6277-7960 -2237-1235 9876--3535 -1322-7069 4474--610 7656--8146 -9813--5997 -3147--145 7094-8966 -5917-5484 159-9608 176--5147 -7696-4053 3165-153 9592--3039 -3161-4979 6000-2757 9808--2220 3529--2033 -3329-5331 -610-4849 -8824-5605 -8548--4948 163--2241 2796-8422 2384-6393 5553--4281 282-9700 3471--5248 9516--8838 5488--4630 7801--3687 -5741--1990 3937-5030 8063--5236 3119--9998 -9651-3140 7793--9944 9842--133 2638--9193 -3921--5102 -5751-3628 5908-2567 -3990-5882 -3173--1981 5005-2653 -6893-9461 -8695--8296 8784--4745 7453--9330 8446-6984 -2336-2353 7181-3360 7453--1186 -6585--512 9549-9260 -613--3792 366--1967 -4299--3164 6631-528 4676-8598 -2990-4112 -4654--4037 7031-4449 7587--9154 -3950--5616 -8761-8972 51--7493 -3603--7906 110--8832 5350--6178 -2888-1790 7771--6066 6101-5249 -9887-2517 2240--1819 -4111--1126 2131--2917 -2445-1747 9271--3622 -4781-6788 -1977--302 -4363-9698 7911--2908 9214-6478 -4298-9570 -1380--7200 8310--8372 -1828--236 -6343--8567 -7642--6384 4990--4679 -7727-9355 6613--3065 -1357--50 1847--3428 9914--9936 1949--7370 -2042-3042 1035--9703 2930-3614 1010--5603 -4385-481 4887--2252 5500-8471 9794--110 -8429-8931 -2265--6755 391-896 3120-1063 -7245-7599 -5104-4516 -1461-3584 -5585-8551 4782--6179 -8249--8024 -114-4346 -5429-4253 -574-9218 -7560-6680 -7626--2118 -1645-9703 546--608 4759--2907 -3919-8403 -3336--4300 -9157--1619 1704-3912 -2139-5660 -8966-7184 -9509--5393 3096-6398 7611-2939 -5250--5334 -4943--5894 4325-1212 9878-867 1891-338 8315--9741 1802--7943 -1416-6648 203--8860 5484--1237 -1976-6951 -4467-4851 -3989-7688 -695-442 5217-3627 4376-6613 -1843--7287 -9224--2884 -3970--2349 -1098--5012 2650-297 -7627-3365 6871--7453 3134-4093 5317-9377 4774--5704 6724-7226 4924-1541 547--5529 -381-7630 757-2968 -2692--1521 7027--7576 -1377-7545 -3603--1829 -5974--9023 -1450-7450 -5896-6533 8075-5319 -2666--5509 -5019-8680 1600--8598 -6996--2203 9428--2031 719--6624 -2073--7718 2491-3473 -6422--913 8718--9997 -2496--8354 6009--1630 -7976-2054 8220--2109 2247-200 9823--4405 9421--2851 7918-9036 -4650--2761 -8510--6837 6651-4658 9558-2917 9463--6658 -486--4092 -325--3793 8364-2404 -9672--3185 7839--9456 -1055-2593 -3201--8551 7332--3340 -7142-185 3855--4290 109-912 3315-621 8221--2497 7920--7436 982-853 5225-7370 4367--7563 -907--5596 3074-849 3782--6663 -2226--1880 8768--894 8035-7824 -9383--455 1101-32 4037--6214 7683-6960 7375-1507 -8628--5923 2565-3355 9402-7201 -6977-6435 -8833-9314 8983-4456 609--8036 9327-3105 -5575--4598 5481-5275 -8821--811 209-2206 9178-1000--1605 -1776-361 -7331-6529 -8916--3046 9221-9809 -1586--4268 5390--2466 -8177-5716 5613-1686 -5524--8814 5507--5873 -2762--5713 -1990--3109 5157-1968 1811-8597 4884-7760 -4459--9270 1265--9954 -6703--890 -8774-4431 5234--4107 -6802--1930 -2315--8729 5522-7931 7141--366 -5105--2801 5746--8277 9553--4380 -2135--7178 -8439--8116 -7540-8421 -9069--8124 -4629-7184 -4208--3228 8167--5068 -3831-3765 1742-2048 3592--4869 9404-587 6546-4074 730-9306 2463--5094 883-7643 9427-5728 -2569--7825 -862--1557 2508--4952 -7527--1102 4090-1271 -7402--5220 -8445-3210 -3028-5032 5858-4112 9167-854 8408-27 4711--3668 1181-6923 -4509-4543 -3137--2637 -4427-9463 3013-1227 7912--8790 -8307--3358 4786-5925 -1326-1800 -5466-5677 -5106--7993 7430--2371 9009--2942 8454--3606 -3919--4432 -3261-3109 1107--2341 4386--3186 25--5638 -7252--4636 9295--838 3834-6077 -7920-7731 3389-9464 2642-1629 -348--1654 -3831-8802 8287-3074 -5156-6080 111--9485 -4259-2249 -8089-8871 -7383-4117 5124--4318 -8918--7079 8602--1324 3865--7088 -3700--9690 1687-185 3155--5017 -1189-2172 8475-614 4907--6736 -4789--8058 5783-6743 -9080--8907 -1829-9258 9450--1087 8459-2694 -1974--3297 -2460-6163 1341--7849 5755--6320 5914-8627 -7764--6450 1409-621 -820-9576 -9285-2045 -3536-6299 -7179-5394 2785-5435 5372--2724 -4359--614 -7368--1261 1558-3286 1981-6071 -7579-6166 -7213-6626 9648-1869 9843--4665 9830--5210 -9630--5163 -9454--1529 -7362-9580 6594-7490 245-9221 -7277--3309 1451--1124 -6734-9607 6666--2775 193-7175 -1255--7043 3989--5975 5434-5570 1795--7142 9218-1532 -7006-8989 7275-1694 -7007-7513 -894--7983 2218-3542 -1755-702 -1086--9530 7402-9020 9294--5468 -5171--368 -4491-5074 -5825-6281 2343-8988 1285--4866 9213-300 -1862--9914 -5492--1178 7807--9057 -2631--3341 778-1807 -5574--8178 -8344--800 6526--3519 3582-7677 3257-3373 -5536--2603 -4330--5491 3922--5812 1763-4993 5510-4171 -3448-9494 1377-1040 6046-5359 -3317--7504 9301--6674 9293--8862 3187-7342 7133-8491 5751-8243 5057--8 -1524--9462 -90-9070 3327-2759 -1437-9725 -5002-4811 -7930--2567 -2349-5841 9559-7115 -6381--3275 -8384-9335 3280-5936 4353-4466 -2491--2809 -1696-1568 -9914--4739 -1447--5595 -8679-3517 -5184-2422 -4241-4752 733-7317 -6644-9104 -2106--1638 -8672--1674 7231-7716 3046-3961 -4258--728 -3381--6844 5214--8403 -1790--8568 669-4781 6600--653 -6256--2004 230--94 6922-7691 -441--3776 2392-7594 4546--1542 -192-3275 4601--9003 3021--481 -7590--9728 -9904--7175 6165--2125 -80-3210 6704-8367 -9383--9412 5030-6587 8771--6383 6611--2355 9993-6510 1107-5728 1065-6309 -2638-2274 -7632--2156 -1589-8380 3605-5167 -8332--2404 5223-1775 6651-7164 9492-5875 -2186-6302 5236-9909 -9731-777 -4786--426 4878-1669 2348--5323 -6085-7193 -8629-3111 -1736-6310 7265--1946 -2595--9456 1058-7262 8630--8920 2340-7892 -7194--9649 1962--4114 2250-9075 1006--3058 -3551--3605 -19--2898 3109-6372 776--4974 8813--4523 -8055-9920 -2972-6643 3464-6231 -7686-1189 3788-5124 -936--5745 1603-9656 2149--8698 7660--1970 4788-1095 -5908-4226 -454--3456 9152-6546 6475--4589 -8802--8266 -2959-7498 6310-1612 9251-2729 6205-669 -8461-8776 -3851--739 6390-8035 -1909-5545 -5169--2011 7062-2161 2702-5651 -6860-5 -8239--600 7328--5166 5685--7715 5429--1027 7269-7050 -379--526 -2847--3008 -599--1880 4131--947 8280--3736 5214-9266 -2811--4009 2635-2006 6783-3989 -4215-4362 9175--5750 4111--946 86--9533 9750-1320 -876-6569 6425-1491 7870--541 -5323-1588 5818-8857 -2252-3865 7087--1023 -9793--2589 -672--5549 4288-4056 -6440-2440 -7555--4750 -6857--4095 -832-6018 -1558--6492 -3526--9350 -227-8872 -3870--3996 5020-9798 -5701--1360 2727-1860 7251--5169 -4615-2814 -1761-8298 7754--2399 228-714 2352--748 -9371-3931 2786--1737 -8293--9559 -2158--8805 1888--2427 296--3415 -6252--7435 -4675-2885 7565-9493 -824--5576 -4606--4514 403--5840 -9556-1832 3167-5476 -1829-9639 8457-1267 4368--8740 -5735--9333 5447-2668 -7810--4210 3102-2624 -7366--3584 -7239-3565 4228--3829 1559-3732 856-5100 -3237-157 -7988-6145 -9949--332 4214--5320 -5325-3339 -1142-8758 6595--5235 3715--8639 6388-8256 3812--1488 3067-7689 9744-792 7382-5347 7122-5552 4386-2105 2952-1905 1132-6437 2597--2861 6764--1529 -3046-7886 -6533--1559 -9015-9947 -9883--3806 -4599--5086 -2278--5237 -4312-9342 6010--2223 -4966--3076 -9861--8739 -8406-7972 3981-5120 -9982--7949 4873-725 3410--4315 -9087-2144 -1227-5862 6654-1762 -2887--3131 -1312--2079 -8804--4429 213-3834 4391-4966 -1799-5447 -3399-517 8529--9665 -3973-4553 -2746-7678 5009-6227 -3468-5223 9007-9293 -3770--8852 -4711--4996 610--8297 1020-5151 -9525--5278 4125--3828 6309--7003 -7470--5681 -6153-6870 9016-7422 9317-3264 3133-3153 7456--1233 2326--5359 9416-5397 1001-827 -9294--6425 -8359--7954 8692--9782 5300--5704 2842-7993 -1789-7490 6765-1381 -6885-2339 -9774--9811 7011-9957 -6967--7053 1479-3926 -1880-8471 8986--5709 -675-3071 8660-9461 5401-8138 3049-1311 5957--8487 -3280-9038 7310-5314 1873-108 3325--7484 -9888-732 -4475--5825 5958-3798 -942--605 3087-7700 -6491-6688 5661--9619 -1832-7486 2430--6840 8516-668 -3936-9255 -9072--4081 1105-2300 5764-9677 -4130-7217 2102--137 -9589-7650 -2691--8244 -6674--203 -8200--1746 4020-8085 2005-9934 -3088--7347 3599--8497 -3588--1175 -4481--3138 -999-859 919-903 -4658--7872 -2650-4505 -6584--5039 1887-3236 7771-260 9348--3287 6353--8802 -313-9440 8994--4312 3994--9510 -1099--4210 1135-9080 6606-4596 8766--9539 -6949--7081 6667--9727 6032-4830 3103--2344 -3170--5929 5648--5888 -2183-2366 9084--974 5361-439 -9625--584 -3228-3279 4653-7786 -2223-1783 2917--6746 91--8876 -2429-3981 -9066-4598 4367-7917 -652-4461 1265-7361 -2364-397 7701--6395 -5200-2020 -9879-9108 6974-9668 -8658--3839 -375--2647 4981--8634 6497-9360 -3200-3561 -6522-6145 -1621--2994 7155--7029 -5064-8818 1820--5339 -1792--9877 -4922-2836 -2115--2236 -7502--4880 -8903--7573 -1610--4798 -3497--2479 5782--5257 9415-7408 -5091-3067 -6615-3481 -1724-5199 4240-6921 9237--9018 7876--9176 3861--1552 7695--8742 7486--2886 3683--3589 -2231--9749 -971-768 1714--1506 3726--892 9176--5710 7497--6076 9169-3303 -4642--7355 9048--8257 437-1116 5582-4006 -3720--8291 -3415--5330 7936-8754 -9000--3696 -7638--1661 8435--8737 3158--499 6505--1139 5681-8329 3033--2911 -2652-4136 -1817-369 -7771--2180 -2253--7231 -9278-2973 -6476-2042 2441--9365 -9224-9031 9016-2957 -5575--6381 5778-9880 -5151-5439 -2330-2714 -34-2308 -4073--5349 -8761-2399 -5338--5780 2409-377 -7308--6127 -2538-5910 -7372-5013 5811-5600 -9857-8745 714-4350 -4836--5972 -1381-9875 -2352-949 3149-7924 2328--2984 -9148-6528 2392--1863 -1840--4828 4732-5379 -3860--3654 4277-120 -2733--2913 -1444--9997 2151--2549 -6780-8520 4684-517 -9342-2082 4909-1387 -8381--4985 7173--6600 -7154-8622 2434--6312 152--7491 4952-4508 9454-958 -950--1923 -5744--3969 7558-7909 4515-5927 -5062--7935 -9743--7964 1131-4851 -3024--4093 -4221--2787 7064-8107 3984--2474 6429--9517 7974-188 -4007--3143 5725-8222 9083--4137 7692-2396 -8620--5437 8729-3092 -4403--785 4484-6422 9939--7273 7236-3466 9967-8671 5266--3823 9753--1363 8275-4850 6504--3202 3355-8342 -7515-2882 9780-9272 9482--6053 -7995--7403 8366-2569 -1553--126 -4192-9660 4122-5580 -7999-1402 -4801--5108 4102-8917 -9331-2150 4163--6865 5740-3443 -831--917 -3747--8441 -1248--6447 -1612--8285 9304--4175 6853-1681 1320--4979 6140-9702 -8960-6944 -617--2328 -2064-5425 -6503-6420 -373-2864 8708-2641 -2042-9849 6736--1995 8155--4454 -2360--6602 -4348--63 3111-522 9685-5571 2562--1889 -4562-3507 -331-8532 9156--6705 7865--3889 -5208--1744 3688--7869 -228--7756 -7899-8236 9270--9954 9319--3406 -5601--3782 -9794-9137 4465-1487 8488--2529 -1621-3576 2894-7556 -6747-9033 7262--110 1777-5899 4213--7428 -9752--3784 4792-8138 -6057-8552 7581-345 2184--4144 1628--6699 6046-1283 -8618--1150 8182--81 -3918--9218 7484--4801 9784--7650 2476-6624 9644--8869 4736--8186 -1461--9179 -3477--2503 4377--5194 -3431--1189 4363--9353 3151-8045 -9779--959 5944-4578 6861--8989 7376--9329 -7764--9877 2170-3729 3517--9494 -3811-6566 8588--1007 5807--6912 -9134-843 -7608--3611 8371-1557 9417--6599 -9826--6133 5207-598 6542-4683 -5554-5999 8168--4759 3077-8876 5918--2287 -3896--3255 -6261--473 4233--8295 -788-8019 -9283--6033 2665-6049 -164-9268 -5599-9147 -6092-3494 927-1370 -7342--3877 1868-397 -1066--4153 -1063--2062 -3058-1899 -3494--6831 -153-955 3423-7937 4166-5899 -4927-8908 979-7008 -4802--8406 9128--8741 4670-3700 8857--228 -167-3041 -5565--7196 -6274--4941 -3242-4058 -164-2249 -9054--9403 4130--8487 -9157--6071 9740-3757 7436--3841 903-9550 -5942-1554 -2506--4804 7977--605 -2573--8446 8124-4820 6932-3639 -3360--8477 241--11 -7078-1525 -9168--8452 9804-3860 3611--8677 -983-3539 -9260-6576 -6724--41 6476--9789 9782-1302 3572--2962 -7891-3061 -3246-6172 6133-6878 -7699-5333 3941-1172 3199--9326 -4009--6978 -921--4624 4442-3298 2158-9795 5306--3648 7612--313 -5024--4879 -5443-4659 5226--4015 -612-5494 9785-2346 -2005--712 -1411--7935 1372-2710 -7799--9665 -6411-743 9227-3027 -6116--8538 5486-8802 3282--6506 2902-7789 1343-1132 -472-5970 -4054--2347 -4092--9868 8145-2904 -5809--5532 -7928-1426 -2554-7703 -8506-2078 8771-2227 -3815-7958 4620-3890 -9029-8292 -7115-3515 -9076-5676 -351--8574 -9588--2541 -513--4726 5092-1187 6173--7274 2215-1506 -3841-9117 -2563--9771 4510--429 1528--2385 4686--6413 -7805--3206 -8405-7186 -446-6929 -6010--631 8253--7714 9320--1411 -4710-7298 6061-3105 -3667--171 -2116--7525 2126-4835 936-3472 -3725--4332 -9005--8077 -1218-908 -9161-954 -6212--3155 -9776--1092 -272--6997 -715-3126 -5778-432 1072--1431 -36-1719 2515-6523 2085--9994 1337--2395 4078-7001 -3719-1921 -9453--1954 -7409-9496 7320-284 -5961-3672 -9696--8363 -6846-215 6164--3069 -7757--6366 -1631-2227 -4397-9944 1989--7382 -1857-1867 7619--6804 -1354-2494 -5303--3918 855-7667 -3120--5300 2090-38 -1559-449 -3025-3746 -4261--4391 2062-5517 -9450--8056 9327--4571 -7375-7355 3360--9634 3937--150 -596-5177 7068--5557 3130--5869 9128-289 -785--4209 139--8213 7922--1729 5906-5168 -3667--249 2752--7530 -2503--2930 -2531--9363 3846-7139 -6842-3317 -6283-4934 -2192--5391 1551-7363 1028--5977 5582-723 -4961-4368 -3540-1976 -6711-7788 6093-1805 -452--9633 6120-5478 5255--9816 3994-1571 -6155--7675 349--4212 -1588-8478 7048--3177 -2272--3144 931-5616 -1101--5735 6522--8187 35--5224 -809--1330 3951-8248 -2865-1816 -7819-6571 -3038-4697 -2437-2825 -3701-4816 7767--4208 6724--7841 6849--131 2137--1316 6165--7806 -9958-7412 9558--7743 -1000-7466 -3763--3381 7983--3287 -4264--5462 -3922--8514 2322--3932 -8116--6230 7166-3878 3465-9868 3478-8786 5391--4970 -4685--9679 -5415-1797 -5065-4721 8481--909 7699--8153 -6257--8367 6461-6885 -874--7548 5240-7798 -9913-4690 8690-453 4864--2363 -6172--4754 9739-231 672--2378 3923--2660 3405-8365 -3368--5952 -1978--1747 8526-4641 5889-8021 3128--3569 9942--8519 8793-823 9069-8168 6009-6143 -63--8849 6783-771 -2884-188 2725-5638 -2387-2274 9513-1000-411 -4238-1677 -806--6776 -31--669 -6275--6779 3754--1609 -6634--3699 -2365--3674 -6633-7173 -6857--4852 -612--8409 8869--135 63-3088 2503--9383 -4012--7148 985--3892 9630--1719 -5161-3690 4948-1059 989--5003 6023--1163 -9693--4788 -7126-5011 2046--8755 -2227--7316 -2629--6819 -956--6204 -8953-3226 -4627-3197 -3431--9891 -1741--1209 3466-2583 1178-4893 1122--5659 -9298--9614 -6575-454 9840--5142 3940-7102 -6337--1516 7712--6143 -7581-6467 -679--2446 595--7123 -8383--1591 9824--7090 14-6726 -210--9820 -1197--6888 3581--4492 -572-1993 4149-2383 1273-4556 -1522-2294 -5281--2567 1650--1482 2591-3474 7792--5311 1185-8697 4167-9169 839-358 7200-6179 4113-9736 -5752-3071 -1418-4987 -2528--1 -1916--9752 4008-5860 8616-750 4243--7678 -4252-3041 5524-7068 -3948--8193 4570--6674 -5155-1942 -7455-4263 4851-8293 7025-8560 -4448-7486 -271--2326 5257--4319 -496-4638 -2147--8050 3577-7294 -7455-4709 3554--5373 8106-8702 9915-8593 -8716--7797 6384-8077 5738-903 -6214--1979 2848--5161 2818--4937 -490-2108 3230-9587 5826--7244 -7738--2760 6622--5412 6766-9242 -580--6745 2287--759 -48-1420 -8250-6441 4408--7742 3649--327 2945-2110 5509--7189 -4551--9778 -6579-9230 2169--3623 8363--5741 7115--4442 -1673--1776 5553-9246 5340-2567 -5849--4208 -8491--4080 1766-4136 -7249-9306 -6277-7541 -1530--7516 -2266-9875 -623--3 -5626-7513 -2471-2223 -1421--3941 -5377-4569 3276-2096 -5655-1663 768--4340 -1367--3614 -7309--4162 5127-8165 2027--9875 4521--8716 -3241--1231 6487-2060 -2142--252 126-9170 73--6178 9031-8369 1019--8310 8637--1751 9958-9967 8279-7319 5043--5210 -8827-9618 2732-9357 4082--4626 -3853-9098 9896--8735 -1514--2728 2112--208 -9520-7817 7972--5313 -2702-2180 2531--6304 -3616--1947 4933--9635 -9307-8517 -6873-5066 4307-6964 8686-9712 3485-1504 -7680--2303 9478-6658 8477--9251 -1564-2052 5664--454 5095--8903 -188--2947 1482--2680 9718-4763 7937--7966 5125-2707 -6790-7989 3353-5428 -2370-7939 9157-9535 -4902--4716 -3077-5708 -8871-4840 4741--5927 8735--470 9449--7035 5587--8390 -9787-9472 -3129-8563 -9775-5667 -3422--3792 -5497-537 3498-8185 -513--8554 -9684--9892 -1341-718 1975--9868 5289-3332 -9017--910 6908-5171 -5098-8419 -2296--8563 -9327--8032 691--5622 949-2963 1344-6449 -8503--6980 -1655-8667 9018--8051 601-4919 7953-8062 9366-2690 5023--4369 -1411-7177 3476-4888 -628--4925 -5217-4593 -4906-9260 2427-4296 -8371--4231 -1728--2303 -4899-7489 -4448--27 7643--8115 5340-7370 8782--9014 -691--6096 -5191-85 -1853--4009 8054--9236 -7980-4352 2967-4784 -5919-9515 -345--6092 -8627--2857 -4315--4554 1126--409 -8801-8397 2999--4035 7024--6965 5960--7658 -1175-550 3181-4499 6465--5283 -225-8708 3754--8359 5175-7323 -3798-7473 8533--4739 -9885--7936 7605--6306 4561--5496 -8566-1808 3577--8092 -4233-7357 5961-8264 -3587--7263 2184--1029 7876-4789 -6643-1883 -2221--3647 1754--7295 2715-8717 -4336-9642 3860--1220 6358-6211 -6470-8379 -2235--9749 -9691-141 -2709--2414 -2212-2806 1279-8489 4258-5009 -4036--6835 -5080-6937 1811--2677 1896-7680 5993--6156 4593--5422 5857--2128 6359--9978 436--1236 7313--3202 5122--3079 -8039-3937 -1003--3431 -8846-3599 429-8635 6233--4206 -1039-1726 -8615-5441 -8743-6441 2761-3686 3383-8957 2446-7074 -4799-6906 -6252-7344 9406--2172 5500--9481 -15-5259 7474-8909 -8042--4106 -9705--3158 274--600 6185-5735 -1013--3652 251-3924 8439-121 -7433-9519 1292--5794 1449--1699 -9229--1228 -291-9669 -6763--1855 -4313-1014 -2173--1999 2232-959 8735-8238 3943-9485 1673-733 331--809 7268--8912 -8485--710 -79--3772 3575--1861 -1860--828 415--1550 -4059--6176 -3053-9309 -5371--9609 -9183-3192 8683-60 -8584--1148 -9628-4417 -4258--7127 7615-9571 -1887-5853 -4693-3166 -8888-6094 -7649--2760 -2831-2980 -3830-7034 3136--4553 -2803-2911 505--4815 -9301--1576 -1236-8682 -405-5740 9196-815 -4301-9694 -4764--5101 8626--7933 4763-4482 -5202--3059 -1356--9926 3527--2897 487--1688 7914-7413 -4612-7451 -413-188 2231-954 1796-3265 336-2476 -2743--9292 4552-9630 -3876-2586 -4203--1819 -4606-5979 -7719-762 -535-5288 -6467-5639 -5540-9012 8570-9448 7578-9556 -3168--5869 534-5775 5202--8108 3165-5842 -3893-5695 5030-3677 -7675--5261 3249--430 -6230--8212 7392--6997 -4741--4728 935--1958 -7003-2827 4173-9539 -1953-1483 7274--6459 8402--6644 -1377--120 636--3599 6037--6186 9561-3198 8092--5792 -4514--2724 7765-8241 -5362-5221 7980--5795 -4899-230 -6956-7086 -2299--2034 -5351--349 -1829--5366 5229-2297 -548--7698 -1431-6884 -6036-3271 -6817-8843 892--8793 5859-3447 -9845-1847 -6205-6498 5162--5186 -4439--4735 -113-7189 1128--5850 -4343-4048 -9557-6701 -6907-5902 -2573-6158 121-6288 3177--1068 -4887-6983 4180-9880 -7723--311 623--3263 8970--5585 -7379-2789 7487-4002 6512-4604 9759-7009 1548-3254 6344--278 -6669-9713 4364--3123 7687--5739 7238-1337 6764-7634 881-8086 -3512--6807 4790--1389 -8269-8091 -71-5183 3698--2965 2757--4099 -9957-2062 3158--4098 4177--3914 9805--3320 9457--5862 -1912--6136 -417--1225 -6483--3009 6715--792 -9280--3058 -8321--4808 -6867-3656 5087--203 -2434-7238 4217-5775 9635--6406 -8139--2874 2601-599 -4546-6747 7215--387 9574--7229 3682--4103 4281-2843 1577--8099 5416--1756 7506--6794 8575-6521 -2566-40 -8114-7573 -1040-3329 8985-4423 3282-6086 -2263-9209 -3510-8105 -9860-698 -6414--9371 -2691--9859 -187--423 9915--5961 8775--7779 8917-6502 3782--6227 -9122--8397 -5814--8199 9969--8129 -7152-7563 -5289--166 -5701-3350 -5047-4703 158--9744 -294--2414 -5753-8614 677--6543 4828-2297 -3148-9436 6590--8681 -329--1862 2860-7366 3302-6310 -5793-1203 9353--3783 -7614--9433 -3336-9426 -3005--9456 -6029-2604 3366--5993 -427-4707 -3132--4725 5505--2789 -2193-9725 749-3130 -6421-2694 1298--7051 5927-864 -1425--6450 -7972-945 1375--2423 6863--9370 2013--9412 5686-6465 9552--9097 -6092--1495 -1516-5001 4217--2467 9220-7748 -5582-2740 -8493-7312 3754-5933 3478--2846 1854-6948 4053--9941 -687-1336 -2327--485 1923--5093 -6712-6708 976-2362 4400--8463 2388--1891 -5307--4363 6375--8828 7562--8539 3491-1316 6768--5748 828-3927 362--9686 -6105-7610 9134--2610 2583--4719 -8762-6108 -2619-7393 -9054-4842 2806--5610 -3366-2579 2275-2242 8036--7356 -3993--3123 -151--8633 8555-4889 4075-4302 -2524-8985 -5877-3495 6633--7747 8092-570 8376--9172 -3455-2493 1264-7818 2113--6943 -1933--8899 5028--5607 -9599-6088 -6846--5779 -9015--6430 -3345-8390 7352--2703 6028-2782 3497-6599 9193-999 4738--5310 1852-5846 -4851-5527 -7494-5268 3998--2913 6339--1490 -4554--7042 -5939-5017 3390--7020 -3890--4571 -6600--3212 4787-86 8251--6403 2049--4948 -4663-6697 -6165--5591 -9604--3874 -2239--5390 -3553--2919 2759--2246 580-2476 8054-4675 7091--22 -5936--3420 5818-9638 -1055--4363 -8155--7300 -4771-3474 -5657-881 -4724-8692 5384-4135 8851-6969 2041--4204 -1075-2713 324--9979 -1578--4601 -8848-7020 2542-6266 670-4621 -5759--8764 -8675-318 -220--3008 -5822--5219 5400-6050 -812-6567 -9175-4453 -772--1274 -8190--3075 -769--4567 9563-9802 2740-1523 9216--3813 -785--6494 7462--7118 -8149-5552 -2264--5374 -5564--377 -7902--6367 -7790-889 -1780-6965 6488--4084 3008-8242 -1939-1694 -8154--3783 1018--66 -249-4300 -7710-4819 -4285--7961 -2529--248 816-8253 -4956--4161 -5102--4569 -7701-6573 -3460--8960 -922--1222 5432-1543 -3714-1595 -8143--6817 -672--2086 7824-9676 -8380--2890 -4886-5575 6898-7918 4786--9120 -2126--5076 -4279--3621 -4076-4814 7119--8343 -1348--5989 6971-9164 -316-3575 -4447-621 2510-7677 -5061--2932 -3040-3894 -8821-2601 -4782--8427 5948-3158 -5277--4195 -1632--3183 -6198--4951 -7358--6898 -1028-7497 -8556-3203 -4315--7733 6382-1884 326--9438 4639--4695 1612--2158 -4526-1771 2777--5787 2183--4661 2023-6689 3897--7575 -3409--4063 -1989-3516 -574--4074 9360--8025 -6204--3828 -6327--2393 8347-5567 -9946-5950 5344-49 7360-8784 -7201-4207 9394-6258 6685--2542 -2980--5137 -4749-6079 4699-4217 -4516--6013 -9295-8744 -9037--6815 -242--890 5375--7616 -5620-1295 5334--6479 3665--6319 -5544--3595 8052-1803 1595--6593 -491-1305 6596-3592 5195-9926 -1758--8383 5330--4827 -5162-4635 4384--6586 -1515-6314 -4736-2966 -2229-8847 3256-8747 -1681-5845 1231-3313 7200--4217 8471-8223 -7864--4639 -3951--1985 -8119--3253 -9003-1380 -8849-4043 2705--2870 590-3986 45--7740 -8964--3609 1725--4203 -9383-990 -3689--1041 -589--295 1719-68 -8613-3476 7416-3266 -1431--5924 -9653--5458 -3130-976 -9463-58 2959--9272 326--2898 -6753-4949 9257-8194 3150-2906 -5916-1768 -5697-7812 -4315-192 -9864-9606 -9460-775 -696--3666 -7641-6544 9606-3480 5960--1072 1098-6944 9938-8248 673-251 -6950-9508 9734--6222 -1974--5554 -56-4430 -9284-636 7904--5287 1578--159 7066--5214 3999-4712 8649-1901 -7189-7601 -5700-787 -7147--2803 9544--8337 -5603--8296 7567--6186 -6296-1787 4330--4835 -2865--6297 9312--4376 -7692-526 -5095-5757 6563--7406 2629--260 -5427--838 -1084-2907 -9047-2170 -3827--6698 2114--6558 -1864--8177 -6497--1703 345--9224 -6494-8796 -7851--7998 -582-5859 3639--5218 -9691-9987 -3618-7138 -8070--800 -6228-5731 -8891--8756 -3705--7234 1782-7554 236-3478 8612--1668 5137-8541 -5512-1091 5346--4592 900-4175 6407--304 4591--3394 3590-5694 -1102--5952 -9210--8121 -822-5372 1445-4899 -8873-1282 4310-6815 -7045--6171 887-1687 4430-256 1759-3332 8256--8132 -4686-3824 6792-6279 -9759--6187 -12-533 3388-8623 6044-2162 -6158-7213 1054--8267 -9959--4295 -2517--5192 -9968--2584 -2169--953 8359-9306 -74-1817 -1196--2478 -6151--864 -9538-4339 -2788--5815 3279--427 9849--6003 7715--6846 9462-1225 2266--9556 6155--1802 -8960--7641 4760-3489 -8362-4168 8507-8963 1065--8212 -6190-4465 -2464-5122 7999-7869 -1615-4543 168--9381 -1752--6964 -4427--4572 1419--3367 -6266-6658 -453--2250 6503--5721 -1607--6756 6231--5761 -4611--1595 2539-8020 1072-9927 7437-9640 -90--4110 8054--917 2771--7504 -4507--5138 -6547--1320 -382-8995 -4205-5858 -7033--4 -646-1422 9521--4949 -9574--6457 -1119--760 -6315--7147 -7292-8825 -7000-5720 -2574--1405 4886-2280 -6083-968 -962-7961 -1775--4966 6750-4090 -1974-6399 7544-1772 -6933--8316 8626--2462 -9289--434 -4658--9497 9541--656 2077-2021 3152-5224 4840--8635 274-6350 2655-1354 353--6924 9293--2102 -3867-7960 3525-4792 9339-5582 -9506--5270 -4028-8755 219-1972 9375--136 2167-3662 -3225-9711 9916-4588 852-9670 2222-422 -9036-9599 -6088-859 -1248--7353 -600-339 -7284-1215 -198--2993 -5447--8390 -3522-4970 2671-1905 -4152-8569 -3689-9112 -8517--766 -913--9564 8008-8707 9778--3517 7793--7207 1002--4448 4722--8676 -8610-3856 2766-9110 5376-4495 -1006--6415 8462-9035 9380--3382 -4149-7299 -8267--7773 -3546-7954 8283-6543 4850--671 2843-2005 824--7112 3600--2997 7650-2076 8938--9827 2298-9252 -6051--4944 4957-7718 -646--7365 4033-8871 -6954--663 258-5308 -2296--9714 -6622--4959 -3274-655 -5938-7029 -9291-2316 5292-7054 5030-3316 2631--6872 6194--700 5476--6771 -4472--7276 -3754-3485 7305--387 6646--9245 6055-6973 -7608-5336 5106-7211 -3133-2581 9135--9375 5327--7038 1186--193 9830--3477 4631--1937 -9057-2682 5192-8526 1438-6994 8903-8456 9687-1000-5539 8108--9990 -9947--7316 5712--400 -2172--7535 6997-4232 1944--2864 -6756--808 8177--1046 3585--105 1011--4953 -8920-6884 -9285-2208 5678--4266 3343--1851 -3379--2818 6960--5420 -5886--4202 9520-4514 -488--5135 6533--5691 2608-3602 7349--3987 -4--5384 -5462-814 -2602--7710 -6792-5310 1990-506 -2361-6167 6980-1846 -9028-207 2559-7869 -7050-2808 -1197--5147 -7713-6873 890-6185 -4826--4574 -550--175 -1126--800 3000--923 5553-6352 4535-9132 5410-8198 8810--9235 2636-1248 -1940-1645 2038-6197 9856-6852 -1957-4605 6079--1255 1540-4474 -4853-1370 -186-7132 1486-828 -7016-8029 -1224-8475 5867--43 1050-4155 5583--9540 -5914--104 4702-8064 5940-1868 986--8721 -9077-8087 -1155--8048 2883-449 5480--9723 8328--5452 -5076-5569 -2885--9058 -6528-2172 7934--5116 7339--224 9522-9054 -5884--9274 -1803--6408 6974-6733 -2058--2066 4994-9020 2492--5123 4971--1769 -9279-9392 -6353-8953 -550--4066 2173-2281 -2196-4002 -3344--8897 -1710--3796 -8276--2617 2817--2759 4044-8794 5662--7796 -4778-4327 -2153-5640 -6123-4873 9505--7894 -3504--9897 -7821--6032 -7863--5285 7819-8983 6931--8636 -8910--6515 -6826-5843 2039-9074 -2511-4683 7732-4531 2786--9718 1934--7124 -5345--8919 -3467-384 310--8228 1562--5011 -9900-4312 -5351-8424 -5480-1728 -7519--4056 7332--8527 4509--2433 8809-7724 -8336-4560 2222-8457 1646-8052 912--2440 -4856-7263 -4259-6231 -3504-2906 -6410-5610 -320--6048 6307--6327 7392-4615 -7227--5413 36--8995 -8078-5290 7514--353 7903-7950 -4390--7335 84--4454 -1011-3144 4073-9498 -8211-6697 -7886-9214 4316--7094 -7249-3682 -9384-5973 8633-1895 7537--8042 4076--8916 -4517--2080 3206--2556 9168--8325 -9655-8277 1313--3386 7348--8823 -8430--1630 -7144--5451 6906-1938 -796--2660 79--1506 5397-3941 -6685--1221 -3549--8934 2639-1563 9979-5160 425--1792 3086-5535 4402--1153 4476--9558 2008--2871 -1782--6208 -6778-7146 2535--9874 -8529-4523 -4056-5603 -6845-4266 -506-3137 -1094--9019 1192-5100 6265--8732 3542--3981 8178-728 -6825-7203 723--9188 -1198--6035 2051--4856 -2134--4895 -117-2516 9325--2813 599-7189 -8226--2906 -318--1106 1574-9942 160-6205 9660-8823 7654--8323 2266--8596 9595-1776 2525--7610 1654--5928 8376--6875 -4892--6953 6261--1902 -3087-6095 -9912-6863 -1618-2649 -6929--8358 478-5536 -4514-2074 1268-7646 8557-6509 2534--5809 -6304-5126 673-7094 -154-8591 908-1617 3772-7282 -6348-3465 8716--1213 9353-1960 9258--1950 2092--1502 2486--2288 -4018--829 -9344-3223 -42--5458 -6786--4325 5761-8170 2260-6639 -593-1184 9543-9962 -8654-8506 -2547--6766 -3820-390 -1794--7161 -3205-1336 2415-5381 3268-1478 -5250--8877 -8412-4 4059--6081 -8913-2165 2147--1249 6809-1966 9207--3729 1218-5985 -5952-4620 -8908--8934 -1193--3003 -2584--2655 -7525--4265 9116-7280 -5623--7268 -4773-3294 6504--7271 7224--757 1023-1286 -2504-4695 -5348-7276 -5157--1541 102--8538 5306-3383 1518--9537 1142--5800 3524-3045 -4304--4929 -800--252 3547-998 2197--2412 8506-6685 -2151-8848 -6758--3666 -7119--5435 3106-2661 -9280--2621 6839--1958 -7856-5153 -6512--6336 977-6259 -5730--6910 -402-2141 5987--438 3960--7431 -9471-9250 9278--9559 -7023-1725 -1761--4465 9032-7591 -2320--8573 -5028--2390 4815-9219 60-1048 6868-6290 3492-7007 -1461--4257 -6170--7041 -636--862 5448--8075 9250-6473 -9644-322 2836-5278 7915-7644 -143--9384 -8276--5814 -9601-2344 7275--1157 8217-2090 -9898-3108 -9030-3957 -62-8755 4117--8307 2557--2597 8254-1684 139-2848 5950--9552 6479-8608 -1478-9867 344-9094 8070--8952 6036-42 3476--5396 9482--1918 -3140-9143 578-8392 -4135--25 4423-1857 4143-2447 -9349-9091 7424--7627 9769--8358 8602-7349 -5995--4044 -542-3106 -8170-2369 9753-1988 -4790-9204 6269--4678 -4320--8842 -5634-4762 8907--8272 2889-2454 2711--9274 2173-5418 -9111--3239 -5303-201 2657--1199 8562--3280 -6739--3584 2403--3891 -5934-9833 -4658-3267 -947--442 221--5607 -6059--7388 9994-2983 -5069-9442 -6996-2356 3324-9 -8298-7206 -7048--3598 7852-6377 2371--2316 3441-8230 -3455--3515 1663-4036 703--6150 3227--7070 9367-2972 2950--3237 9429--2098 -4549--7845 -3373-2132 -9828--872 174-2588 -4565-177 9255--6000 -3776--439 1405--3384 343-8261 -9537-8497 -4454-8486 -7646-8321 -7067-4559 3637-2204 1180--1164 3033--3793 9601--3687 6407--2065 -7979-6692 7893--6865 7826-6159 789--3374 -3887-4531 8670-3649 -7479-9256 3189-3038 7013-8629 -5153--5537 -3810--2215 2735-8624 3432-8817 3215-3551 -3535-8560 7574--8498 -4615--5829 -4435-3357 5734--6631 -9961--2758 3610--2770 -1320-7734 -3216-6419 -6410-6241 706--8972 -9985--4748 8453--7542 803-4538 2494-7866 -7089--1129 3580--9696 -1695--4847 8365--2909 9314-618 2654--4012 1841--623 5607-6598 7313-7936 -8280-6349 5032--9214 1028-4737 959--6164 6262--5981 2050--1779 9397-1738 9951-8071 -3458--8011 -3494-7833 -7972--1319 9885-3401 -1653-8508 -2707--8473 -5852-388 -7424--4367 8948-3112 -8097-8615 1493--8290 -2635-8181 -7840--814 8742--8701 -323-6081 -4695--4312 9147-5412 -8276-9969 4543--3296 4136--2190 2699--4737 -6171-706 4855-9696 8680--2335 -3392-2406 -8404-8209 8017--9815 -4175-6373 2482--8163 7899--7976 9344--4405 -4150--7786 3543-4631 -2260-5704 5342--1164 -8873-6840 -3976--3789 -9433--1614 328-5058 5861-2282 -283--7604 -5474--6383 -9658-299 9198-1629 8476--4161 -2836-1466 -455-1515 -3253--4646 -8984-8698 -5272--9042 -8814-8092 5926-57 7315-4366 -5543-710 2154-5639 8948--6678 -2570--2373 -7889--7919 -922-8819 -9007-6547 -7371--2672 -9805-9725 -9613-8913 4861-5488 -1608-5343 -4379--6641 -9732-508 4531--9488 9206--628 9120-8758 5406--6742 -2971-7253 -1842--8597 -5685-1167 -8934-4148 1915--2520 -2722--7554 -5755-890 8378--6705 -4567-1135 6596--1005 -8983-26 1705--5677 3932--4635 -5124--5693 2311-5357 8858--4512 490-9394 4836--7050 6142-9640 -6392--4667 -9177-5084 5103--8340 903--7788 -3582-9887 4682-1718 2610-6428 -7279--7623 5740--9608 5862--4053 -141--7908 9470--7538 -1388-7503 -1899--6143 2135--4435 -5213-8770 -4937-3365 -7925--9168 7400--6510 -1767-7297 91--3258 -3046--1537 3895--3250 5528--9158 -1130-1584 4355--4650 -2163--2044 -3754-9991 1578-7902 3552--516 -2601-3493 -92-4364 4540-7031 8060--5073 -8131-5763 1820--1685 -6343--4436 -7186--5552 -5032--7964 -7332--8352 -4457-588 -3966-4496 -6106-4250 -605--7276 -5411-2728 9317-7341 -8373-1003 3607--9059 4572--7750 -7834-6043 2064--444 -8989--8940 -5680--1925 -9991-811 3550--5003 -5275--5602 -5688--9576 6139--9268 -1767-8548 -7360-533 -5895--9530 -8159-501 -8677--6979 1803-8770 9678--6637 -7477-9217 -4205-4007 -7762--4768 8966--5957 -5357--9492 -3188-8273 3913-9438 2687--4813 8892-555 -5689--4183 -2865-6173 -3761--4457 -649--3734 -3841-3339 -3800--6175 -613--7434 -9933--7335 -5003-2810 -2849-5777 -1813--6080 -7267-6740 414--2830 4684--7268 1693--765 7460--89 -1571-6674 7128--1600 -4315--3250 -1364--8063 7640-8133 -2565-3736 5395--7235 9430--1397 -9316-1805 1323-1689 -7862-9930 551--7528 2110--9290 -7855-9804 -1955--5890 8658--5786 34-1840 3710--5409 -5219--7048 6618-7483 -20-2180 8909-4144 9536-3239 -3178-2109 -6305--3728 -6990--1405 7386--877 -4075-5978 -5226-2449 -2861-2079 -6768-7129 -3698--2342 -7758--6829 -1068-5858 947-845 7548--6926 -7762-5712 -1032--3328 8866--5440 -6602-7747 8288--2725 -8764-7510 -2942-2426 -7393-6575 -2800-1379 -5099-8236 6164--6954 1965-5192 -7234--9991 -5480-227 2406--6249 467--7105 -7948-9009 -1389--2337 -6762--3552 7920-4601 8261-7308 7103-1787 -1019--3067 4513-9122 -455--2614 -829--3646 -7733-742 -5677-963 394-9348 7265--2838 2970-674 -8127-8676 -6454-6903 -6950-4288 9933-2416 5318--4788 -5165--1535 1861--9923 1993--99 -2086--6101 175--8572 -6162-9192 -7471-8932 -6330-9611 2808-6911 2015-8859 4881-2874 5453-8091 2208--6060 5597-3155 -2235-5421 -7104--3287 -4132--3912 5920--7709 9239--4114 -4493--392 6504-4504 -6547-6886 6803-5678 4407--8724 -7863--2188 4520-7975 7076--1784 -2641-8352 7036--7134 -7290--8626 -2525--2610 68--6260 -9263-8144 8984--7992 3896-9897 -7297-8968 -8479-6184 -3553--3919 5468--1383 -3775--5986 5677-8606 6752-8732 4632--1276 -2228-8947 -1928-4730 5324--9397 -6549-8154 4339--7113 -737-7190 -9022-5030 -678--5183 4315--717 7478-6393 -2047-8286 3412--3 -7672--2110 -5022-8643 4648-3049 5523--1899 -4169-8298 8934-2166 7934-4573 7917-2792 4213-6152 -7723-1998 -5395-1012 6459--7688 3551-7717 6633--6975 80-7496 -2186-1475 9306--1315 -995-428 -165--7745 5659--5256 -5963-3795 5242-6115 -9751-9377 9904--5317 2453--1388 3847--4746 3625-4025 -6152--5543 -3014--9560 7908-3232 339-149 489--8658 7456-8412 -9428--8856 -9197--942 -6316--8580 3807-9234 -3132--4899 -1167--8867 -9834--1509 6365-5736 -2668--4359 -964--3776 -8683-1914 -6548--7103 571-7724 7047--3589 -3707-2093 7879--7081 -6667-3378 7189-1303 9198--5070 -5306--9380 -8366-7428 9404-8839 9617--8411 6922-256 -5444--2443 3631-4362 180-3910 -7912--4153 9441-7158 1531--4476 -7081--6426 -7258-8709 1438--4320 2240-1224 951--8341 132-618 7027-2752 -9982--2114 146--8622 6548--6078 -431-2616 -5664--7558 2149--6815 7794--2388 -5621-7730 -2849-2048 -6787-3353 -2729--2891 -3966-8203 -5606-6444 5480-339 9243-4346 -9509--5669 -5704--7373 -4333-2357 -8887-5809 4308-2885 -1736-509 -7887-7946 -6534--3022 4221--3060 -5387--2549 818-6683 3201--5959 -9371--6223 137-2338 -8404-9668 638--8915 1250-2074 -3966-4210 -9523-4358 -1237--9187 6523--2983 8418-1639 5492-8448 -5486-7677 6415-1694 5804--6979 -3502-6223 -5718-6015 5470--3628 -7624-66 883--9156 -3938-6855 -2052--5724 105-4908 7455--6734 -736-1730 -6547--2133 9173-6157 3007--7796 -5961--8737 -6498--6034 8216-2913 -464--6020 -2806-6443 5814-1787 4934-1711 9995--6799 7623--247 -5746--9553 -4959-5407 -8101-8732 -9230-2467 -6204-6564 -1909-187 -9045--495 -7714-1916 1127-7978 2525-4995 1214-1793 -7854-2590 8946-4802 4862--8304 329-8282 17--2165 -2217-3788 7827--9869 2913-4064 3300-6326 471--5917 -3031--6839 -7143-1397 -1799--5347 -7302-8989 -6375-7185 -2421-2368 138--7099 -961--2991 270-8219 -3759-178 9865--6440 7484-1158 5851-4192 -7479--9209 -5039-6877 6030-2454 -4252--8811 -5839--5740 -8415--9771 9990-5696 -1059-7606 -4165-6948 -7858--9843 -7708-7597 -8266-4074 -8555-5298 -1671-1605 -9491--6398 -9048-7175 -9383-3603 -7506-386 6931--9211 -4530--4503 9274-4990 8236--1420 -7638--7620 -1271--7856 9821--3774 -6955--447 2779-4869 6473--8937 -8586-6006 6953--6072 946--3021 -7603--2399 5259--6708 -7399-5152 260--7459 -4063-8521 8015-3528 7744-5074 9307-5531 -8135-6837 -4855--4956 -298-5646 2950-5270 8789-6717 -9017--9405 3544-1496 -873--4516 2844-3118 8898--7925 4094-6202 -7472--3013 7688--7 5698-1438 -5066--7041 -5376--4422 4271--295 -7143--9741 3654-4376 -3823--3994 -399-2168 9084--1627 1742--9613 8319--6115 3258-4313 -6279-5397 1812-8954 -5303--8609 9716--1210 5193--8654 -7520-864 4767--6437 -9118-4255 -7875--4069 -5799--621 -483--1083 4207--3699 -3352--1865 -5680-7306 -5272--5285 -1510-1164 1078-8238 327--8029 -6514-2314 -1564--1962 -6535-8469 -7944-2160 2089-3893 7383-2678 3164-3023 9340-1115 -3713--3386 -107--9894 -2328-2790 -9199--1366 -243-1000--9560 4040-2517 -2855-1283 1183-8301 9988--9213 3703--550 -3399-874 -2612--1813 8804-9174 3759-5482 2996-3085 3027-553 8871-5606 3008-1184 6904--9084 -4085--6990 8920--5883 178--831 -1571-6159 -5022--1319 -410-5954 -9587-6411 -9681-3667 -8212-9939 2004-4387 6356-526 -6850--1959 -475--704 9830-4178 -8976-4560 -3846--349 -8543--3949 7218-4067 381-5390 -1856--1878 -1670--9613 -6571-5102 -9277-7357 -7560--9258 -1933-9614 -3692-3723 4744--778 1400-9455 3891-7883 -9755-4462 9694--7768 -8570-4689 -1530-9291 5419--1895 -8672--1664 6455-9515 -3693--2473 948--5962 -5095--4078 2287--2359 -9869-743 1737-5521 5788--5861 3292-5032 3395-4619 3795--8017 -7740--5808 -9571-827 6649-7973 4105--7335 1937--1082 8038--4023 -100-36 4200-9048 1516--1190 -1867--7665 -9718--889 5267-7778 -8858-4767 -3748--3824 6782--9688 7709--4696 -3357-6600 -3776-3474 1905-2294 5163--9558 466-864 -7705--8994 -9192--2966 -5379--3432 -6082-851 -1606-966 3229-892 6674--2673 1548--6899 8921-4629 2190-4210 443--983 6306-547 2951-9950 6431-2167 -7601--6971 8378--987 9569-3945 2621-587 6233--6451 -8068-6820 1689-8540 5675-5547 -9937--8502 -3459--48 5708--2932 9058-2120 -9643--6576 -9401-2614 -9775-3882 -2331-63 -7105-1371 -1440-5193 536--6202 -4255--9510 3517--4806 125--5795 -9323-7254 -7425-229 4667-2119 3624-3860 196--3603 -5724--2952 -4442--23 -9239--1284 4202-5346 8220--456 -2424--7006 -5256--4985 3467--8982 -6379--6728 3710--3470 -7083-4755 -6188-4361 5576-1581 5335-8391 5862-3383 9393--1596 -4647--8218 -4908-8350 1310--9548 -8283-606 7925-2129 -846-5399 -9703-7376 2918--1818 -791-9621 1386-9269 -6769-411 2489-1417 -1776--179 -8603-2039 -5725-1263 -4916--8631 -9644-6103 -1710--7314 -5024--4754 -7299--9405 3050-2298 5808--4940 3917--1584 -5554-5168 4982-434 -3152-9910 3558--203 2128-6021 -8630--1484 -2052-7040 7877--8087 5119--2532 7245-9874 7469-2209 -9866-1876 1296--3093 4923-1768 9410--6832 -8904-1256 2985--5519 442--7296 570--8301 -330-3042 -2580-7060 7782--112 534-3036 -8347-2222 3977-5123 -8146--6965 9351--4947 -643--9818 -6832-9527 7087--6088 7408-1219 2506--4038 2745-9298 6753--9580 5332-2425 8634-3553 860-375 -7795-1623 -7216-8729 -1659--7197 -9545--5418 -3718--8095 -4574-2170 9852--9341 7385-9397 -668-6109 -8081--4805 6090--6168 8284--4984 620--3580 -8313-2409 -7462-1868 7607--8355 -5469--5721 -1376-9318 -3313-8526 -8302--3580 2419--8956 2339-489 -9433--2433 3032-6034 -9012-4936 5721--8429 -8289--6660 -928--9740 -4510--5588 426--8445 -8702-328 -5412-4276 -1675-7319 -4555--189 5483--4145 -9490--1755 -3886--1961 8505--9969 7307-9157 4187--8097 4304--5352 1059-910 1139--823 4969-7021 9391--1413 7936--2760 -2403--2952 -7046-1631 -9529--5392 -133--301 7134-3999 -36-4837 3880-3258 -7152-1448 -7074--5986 9057-4786 -2888--5764 -6791-3156 -9058--8819 5458-1478 8515--930 7302--9031 -2756--967 -626-1560 7800-760 7831--8103 3649-5152 421--2888 5237--7603 -7893-9138 4384-2408 -5678--345 -4209--4002 2216--6410 1187-6166 -9621--7193 -9293--2910 3229--4937 4364--1525 -5233-5750 8298-3208 -3247--7029 -5290-998 202-1050 -726--7328 1905-7881 8764-9880 1376-1294 -9766-337 -4681--1855 -3251-3859 -2569-4646 -7991--5852 4613-7394 6754-7652 5356--8617 1580-6803 4970--6051 -462--7488 -3135--1918 6933-8733 -4165-2112 8079--4885 -4404-1197 -8208-5305 9442--9890 -8316-5505 -2602-4041 4964--1905 5897--7438 -9821--9 -9241-8135 -8835--8461 -8291--1086 -4825-6934 -9240--3537 9300--4210 -714-7711 109-5591 -7504--5573 -8829-6025 -1947-3253 4121--5142 -2213--8777 -7562-848 -8052--5178 6801--5973 9983-5556 -6245-5822 -9598-7998 -1516-9499 7149-2181 3908--992 2687-6002 5198--5627 713-3388 -6715-4313 5933-8039 -4562--948 -7199-7123 -143-2932 -7086-1662 7974--6200 6581-9792 1196-3279 -9110-3528 3436-4805 4939-7259 -8237-9530 -8195--4443 -2825-8849 5769--2301 4309-5890 7033--9873 -3828--7506 3508-4627 -2194-6741 4071--5599 6710--3770 -1994--3513 -3296--2118 6504-7232 -283-1658 -9946--7640 -4576--7069 1071-5689 -7513-5785 -4841--4048 648--8787 3134-3600 6981-5990 -8563--6010 -4479-5103 1832--8813 7627--371 -9414-1191 -9649--2164 3092--8485 -4304--8500 -601--3791 1781-3263 -2379-2290 -5014-9539 8686--4540 -5270-4846 1898-5044 64-3230 -8109-4920 -2692-9907 -494-3022 6658-7362 9951--3083 7341--7256 -3336--7160 -2047-1338 884-3414 6668-349 -3259-9875 1039--4681 -9429-404 -4637-6685 -55--898 7172-3521 -9561--3779 4646-4892 -5976--2788 -411--4419 -9887--1078 8342-5370 8225-1339 417-9816 5768-4636 7120--3397 -9945--3880 9316--9035 -2429-4102 1229-3499 19-1809 8002-2909 7647-4021 -2123-7175 7844-9198 3022-374 1154--3709 -1461-2692 7010-4563 8085--417 -9953-5693 -8754-5978 -4587-2938 3924--7508 -1091--4145 7180-289 502-7961 -7126--1819 -8598-1049 -7767--5203 2796--529 -4010--4742 8714--6142 -9876-5309 -7596-7666 -6487--6885 -2235-579 -5631-5391 -1663-9117 -9720--7393 -3491-796 5647--6681 9782-70 -5020--1106 -9096-960 -2647--977 -1557--2000 -5181--9399 6639--6395 -9686-752 8223-4638 -7875-5457 -6575--6297 -2769-4458 7724-9949 5864--9619 -7712--2846 3507--6528 -2346--3672 2722-4509 3962-686 -5545-6529 2651-1740 4159--3553 -4866-1861 -8969-2445 -9755-1989 -75--3080 -5348--6115 -1888--6600 -5106--5440 9961-9101 5091--8703 9579--3138 3550-3989 -7028--4330 1773--2333 140--2791 4824-9618 -6840-5569 -250--4378 1776--4223 -5715--1253 -6085--385 -6511-2666 9604-5859 5596-5324 -4306--9521 -4296--6312 -5483--7692 -8001--9385 -3855--3115 -958-9080 -5109--3442 -980-6625 -6996--5110 -8121--2893 -7850--7295 7942-2536 8145-3255 -4772-4263 -4849-4841 2873--8426 750--2057 -2192-1946 -418--507 9484--7482 8718-6977 6294-561 -3871--2914 -1900--9274 -528-1032 4265-4313 -3599--7409 8449--8945 -85-2825 -8318--1637 7659-3292 4827--8616 -4092--5357 670--5826 1031-5139 -5113-1110 -2613--5516 8345--2844 7940--5977 -929--8223 -7958--6782 691-2298 -2541--2281 709-1003 3222-8871 2401-2258 -7138-5329 3723--149 2214-6326 4617--2852 -2480-9782 -3859--2499 -3597-8212 -8943--9244 6546-8312 3850-8987 169-3135 -9272--9738 5858--3019 8913--1670 -7593--3659 -2440-2236 5269-7449 802--3345 -3531--3952 834-8933 5395--4234 335-5744 -4581--6553 8233-1407 6502--9868 -6549--8409 -3112-9035 9975--1051 6114-1185 -4940--1082 -4871-2781 -7237-932 1695--4759 108--7116 -4283-2963 1180-7612 -9204--5342 5708--9445 -1880-3891 9345--3744 -4581--1267 -9653--3537 -7092-6667 452-6201 5480--9824 -3515--181 -8550--8715 8089--3782 -4029--471 -8741-5550 -7755-8813 -699--255 -1695--5695 -8926--270 -7999-9972 -8269-1931 -7918--3246 1253-9793 8155-843 -6205--9300 -5500--5709 3928-694 7020--9223 7538--621 -6673--8892 -8628-8005 -5032-6444 3133-5698 -4970--3094 -5710-6728 -9101--1505 -9135--7065 1915-5888 -166-2938 -9485--5423 -2374-6614 6010-8388 -8764--2103 169--7032 3273--6266 9954--5789 -3000-4322 1209-3723 -3003-4549 2718-1776 -8418--3114 3935--2259 -5986--5606 -9001--5178 -2977-5250 -5682-815 -2935--6992 -4826-7988 -5687--907 -6408-568 -3820--3369 2213--9624 5813--1119 -1592--7785 -4364-9575 -5237--1197 3993--8812 -9849-4053 5133--9249 -9806--4003 -6918-7369 572-5253 -9509--7295 -2607--6852 -9245--8354 -5273-3352 -2042--8985 2406-4569 -3853--9030 8565--2448 2728--2377 -5595-8504 -2950--5254 -5186--3968 1154--8597 -3019--1577 -8561--224 1999-3866 -7604-152 1779-1903 -9581--8985 -3049-4235 -7711-9244 -7359--9346 5868--6659 2591-4814 -316--8509 3106--7449 5453--4447 -5219-302 -6216--574 -152-4718 -5544--9873 -7870-9725 8972-1630 9051-4386 1072--3267 -9725-8759 4734-1405 -3222-4494 4704-8664 3708-1466 -8361-3591 -4703--2628 -7181--3136 2362-3560 6167-4859 -8379--7162 -7938--5943 1136--8811 5497--7559 6984-2069 -6613-3062 8964-2955 6511-8330 3396--3602 -3392--6357 8276--1421 -9664--8143 1927-1099 1649--17 8138--5186 9343--4767 -1406-3098 6130-6597 7420-7444 -7790-7359 -1479--9596 2705-7411 6776-3771 -9267-4778 -9188-7906 -834--7320 -55-2902 3144--6450 4080--2171 -4127--3245 -218-4094 -2964--9663 -3077-9183 -2795--5511 5842-5034 7741-2842 -5607-8576 8643-535 3535-3534 -6426-1306 -3057--6255 2814-7792 2683-7461 7705-8845 4556--7839 5779--3552 860--7650 -9517-6956 9926--6436 8692--4118 -8754-3065 9264--1619 8338-4277 -2061-3874 8813-6169 6900--3745 -1097--8482 5960--774 251--5801 2402--660 -5317--8331 -9724--4261 -6303--4101 8182-505 4010--2838 3224--1755 -4009-1973 7116--3151 -4977--5208 -4720--7737 1094--8674 3920--5886 220-3446 -3012-901 -5126--5852 8071--3285 4775--4563 -3853-8430 -582-5921 1214-7063 8072-2959 -3776--8084 5732-9216 -9461--69 -9186-8392 3576--7726 -5342--8075 8805--4733 -65--880 6294-3259 1525--3638 -7409--4244 -5463--1364 5291--7466 -7531--5470 9489--2580 -5312-940 -6130--4406 8128--2213 7261-9931 -5339--8641 -598--5793 -6662--6654 1579--4778 -1400-4797 2365--8024 9678-4561 3166-2484 -2615--6732 9824--9295 8878--2483 8340-4099 8299--2587 9753--7699 -3483--4844 60--4199 -2641-5132 3773--261 9643--5787 -1919--7501 -7366-6868 -9242--4700 2243-8178 3788--9755 3392--8453 8010-5143 -9701--9966 7004-530 -1341--803 5935--1187 -2939--2723 -6012-8271 -7760-5171 5677--9586 3880--3277 -9702--3811 9768--2362 -4752-8039 -4478--2288 -2485--920 -4181-3126 -4715-7976 -5283-5267 4744--8592 -4930--5340 4873-4983 -2755-974 -5735-3252 -8729--5097 8132-3791 5331--1127 -646--6337 -3115-2577 -7794-406 6477-2364 1039-2580 8492-6044 -9109-7655 -3579--494 661-2150 1288--5133 -9479--3403 4180-682 -4476--4048 9072-1960 4134--2325 -7008--2074 -5049--9317 -3070-9243 -1205--9181 5477--5582 -6958-7508 -7526-928 -3703--6992 8209--4637 4478-5510 -5885--4128 396-8280 4539-2433 -9197--2131 4302-2452 -8693--9885 -1286--8596 -7318-9600 2820--7002 -5570--2236 5069--4893 -6226-5343 -9565-4644 4852-6565 -962--9210 -7526--3306 7694-2279 -4062-6377 6605-1653 -8770-3653 1070--6106 3666-8194 -8483-7932 6445--6678 -7834-6896 -9966--2583 -741-9554 -6797--6711 2918--6600 4850--224 6903--1342 3109-4816 -4919-4267 -7806-544 2775-6651 -9191--617 -2539--8946 5015--3237 1573--3640 1358-3000 5265--7600 -1728-3892 4151-169 5185--1286 -7674-9407 5273--8057 -9515-3500 -4798--9574 -4944--2825 -7271--3898 -9950--9904 -6718-8543 -7534-9404 -4745-7427 5475--1209 3376-3153 -6256--9569 -892--2482 -7997-2071 -5895-8158 4199-2996 -6086-2001 -8377--202 -6346-7136 6543--8621 4699-5216 1970--4222 -3038--3941 -9987-656 6894-2143 -2646--7982 -8862-5314 890-3386 -3940-2752 -4415-3578 -1046-5106 -5337-6056 -9555--2850 -5974-2489 8707-831 -1880--2900 587-2535 680--8443 -8234--967 -8275--8965 5059--513 3449-8121 -2983--7772 -7662-1346 3938-1027 -4799-5587 4133-5556 -7300-763 796--1126 8435-7902 -1898--7824 9333-3044 2474-6640 3860--6027 -7505--9027 6038--1488 8013-4379 7803-2504 1073-4482 5572--5123 -4695--8970 -9376--4467 3450-9050 -1122--9240 6001-418 8534-2495 8442-4690 8710--4176 -5733--793 -4671--5310 -2364-1023 5941--7672 -7507-5537 4243--5930 -3100--8547 5092--5424 4834--4866 8589-5313 -7940--6922 2940--1077 -27-555 8076-2585 -8586-3699 -6197-5891 8526-6931 -1416--1274 -4264--8859 2558-5849 -2837-1000-9280 -428-4837 -9059-5614 3874-8936 -1625--7919 -4460-2880 9259--6092 -1174--1699 -6235-8329 -7189--3771 -3789-9992 -6588-6975 -4279--609 545-4806 9174-44 2375-4591 6831--4638 -3897-7281 8466-6614 -5789-7150 2281--7039 -1287--7962 7423--9082 -1360--3297 -8817-6554 -4249-9853 -7320--9686 -8260-5885 -4194--3075 6274-7222 -9869--9013 -7625-5359 -4192--2665 -3138-4548 499-5484 -3736--3867 -9967--8960 -3695--3678 -6262--6784 2292-7425 1389--4058 3323--9180 1690-622 -5887--8209 8205--3166 -3498-7715 -8447--9127 -2018--4055 -6707-1897 -9845--6347 -4155--1618 -9133-1337 -1117-7284 -3092--5196 8177-5544 -5186-8154 -2932-7513 271-8856 -2622--2303 4522--2187 -2939--2493 -1446--3143 -4181-9995 6404-9820 -1892-1086 -1152--2425 -2382--4094 3597--1737 -2977--9763 51--5679 7613-3099 3534-4288 -7754-4336 3921-335 626--9814 6960--9372 -9167-5305 -5181-6903 -9243--8514 -9038--7752 5627-3619 7130-5908 -452-6624 -9622--6833 -8606--1575 -4076--3425 -3043-303 1860-4397 -6337--7137 8505-9882 8234-5787 6481-5766 5497-9293 -185--6907 7224--1980 6861--3193 162--6597 -2504-9199 -6937--3488 -8294--345 -4451-9690 1577--86 -3952--5098 -7169-7606 -4435-7556 -5077-4036 4303--1758 -191--2689 -4932--1510 -2815--415 3152-4753 -1063--2448 -617--6360 1917-2223 7565-1275 7702--2816 3720-4660 6022-1293 6257-5894 788--1506 8110--9025 2148--8910 -2811-3963 -7101-7014 1253-125 125-4894 -1227-1116 -1660-2923 -8350-3303 -2745-7676 -1216--9725 7568--1715 6872-4172 -564--7059 -7381--7566 1112-3018 -656-5094 1266--4924 2105--5330 -6105--3402 -5253-8594 5490-809 -7743--9722 9366--1232 -1559-8982 -524--9473 -6120-9033 -1409-4264 5619--8774 -6576--7355 888--2735 -2551--1552 6888-5452 3686--3524 -2707--7653 -8988--545 2965-2607 -5883-2386 5693--365 5465-1435 8940--4202 -8203-1723 4618-2137 -8688-337 -8661-2659 -413-7863 4685--4332 -8797--2888 -7364--7261 -6395-1277 -8785--1727 -6508-1279 -3530-5358 6560-1292 2948-9774 5722-1472 5112--5218 -2441-3194 7170--7267 -212-6305 4500-2164 -8585-1661 6172-6702 -1161--6217 -5752--8804 773-5507 6732-8362 1361-6912 -1619-1013 -4157-1875 133--3293 8671-2598 9566--387 2901--8692 1238--6907 9112-9757 7681--6673 -1508-8456 -7550-1427 -2906--3445 7644--8139 -5952-1564 -1848-1675 -2757--1095 5812--2340 6526-822 6439--4948 -4293-9177 2866--1094 -6015-9594 6502--9410 9415-4993 -5356--6558 -3864-7160 270-4191 -1707-4803 8418--7262 -6592-2257 -4299--6071 9503--236 -5127--2769 -1470-7904 -6266--5069 -3204-7007 -1787-5172 -418--6478 5584-6355 -531-6914 -6572-7191 8002--7005 -6983--6280 9809-2591 -2993-548 -3427-5547 -9322--3861 9561--8243 9821-6204 3620-6550 -2086-3178 8687-9724 2010--5297 -257--8815 -8946--5173 3473--7785 2474--9692 909--812 1928--9953 -723--1856 7544-6480 -7342-3980 -3930--3106 2459-4141 -1645-5357 -6675-5752 -4562-5158 8351--3635 6503-9812 -5717--1862 -1051--2880 5152--524 72--8696 6356-5188 -2825-9601 -9656-8744 -5939--2930 -274-1441 6227--1425 -8407-5864 565--8750 8788--9914 7907--5290 -1174-9097 -1816--9893 -3597--9390 -4945-7546 2498-6627 730-5669 -9990-1921 2268-1202 -4175--7155 7753--7463 -9871-2080 -3696--4207 7347--3920 -33--8517 -617--5889 -5829--1323 -7016-2267 -2141--2419 -6376--8840 4320--4788 7668-8625 1875-4527 7647-1601 -4984--3596 9318--3200 9137--221 778--8837 9438-8393 2147--7 -857--6968 -8997--1694 -8445-9242 8846--509 -128--8226 4781-5331 -5599-7708 -3662-4541 7973--8010 6337-9524 -1103-9162 -3319-9470 2925-5246 3006-2314 8028--6109 5745--819 7074-5822 2870-2806 -3741-7584 -9077--3162 -7459-5256 -1009-1010 5428--1023 8449-9627 -1551-4075 6400--4522 -6021--4748 -8181-8634 -3135--3138 8255--5525 1963-6377 -8313-4068 -7579--2742 -8810--5477 8296-7157 3502-1011 -2971-4441 -1888--3875 894--2258 -5171-1093 4540-9064 6682-2837 -1287--8007 -1657--2967 -2376-3828 1331--7463 3209-9303 -4610--7409 7415--2383 4122--1248 -9367-4775 4532--8159 -1684-1299 9626-4436 685--4137 -1844-2896 1531--2926 -5389-5406 -7803-4391 -6333--7680 -4805-2956 -9652-3417 -3273-2089 6445-9907 1281--8255 9478-6049 -2193-1650 3204-8941 7563-8257 -598-6059 4601--9187 -4072-6950 -9436--7074 -2223-2310 4595--3779 -3648-2186 -3511--6084 6990-4996 2706--1984 9040-8576 5116--5847 -2484-2066 -2951--6431 -4808-9093 -1441--2796 2264--4150 7617-520 156--687 9573--4255 333--8200 -4679--2127 4374--2204 -9219--4935 -9884-3085 -8386-1176 206-9392 4002--4363 8019-2872 547-8367 6473--3718 821--8383 9334-324 7619-4316 5234-6457 -5861--5771 -226-7417 8123-9698 -1154-6901 -7375--9662 -3706-1666 -6427--7618 -3890--7439 2017--4034 -2318-1282 9063-5730 6791-7126 1919-9071 -9292--1223 -4876--5557 8079--1281 -1219--7026 1106--5328 -3307--6381 -2636--6061 -8542-2041 -2967-9722 -7786-6850 3363--3374 -3393-4964 5114--5470 -2712-3888 6338--6057 -3351-753 -7372--9838 -8169-9632 9186--7801 2973--8147 -88--1639 -4002-4986 7893--6490 -6363-9149 -122-6845 -6479--7814 5062-1395 5817--2702 3102-5281 -417--2257 8986--3576 -4554-5592 -6739-5576 1769--9407 -3287--2591 -5493-7127 -9667-5932 -6180-3023 -7934-9812 7676-6315 -8894--2004 -6041--5140 -6801-27 -7722--3174 7438--3262 7516--5462 -2702-6814 -3146-546 -3573--4769 1860-9104 -5046--3820 1002--8506 6607-2443 8337-6230 4899-6785 -7582--9186 -3570-6244 -7181-5510 -2748--3299 -1091-4765 -3479--3541 -3649--9018 -2504-1689 -9162--3210 6220-5597 -1898-9402 746--1240 -2670--363 5138-5475 -822-2442 3079--3309 8698--1641 -6776--3377 2099-7718 -8868--6158 1617--1574 9678-5519 5226--9820 4790-6105 169--6311 7167--2878 2484--3312 9000--4836 9612--1631 5794-8026 -8270-9241 -7758--9303 -7706-5560 -2364--6429 -9735--165 2813-4204 6821--6087 -8404--4408 -8659-5176 -3252-4136 7364-6046 -5204--7841 9910--3537 6151--4629 9798-4792 8521-9082 4805-7768 -2148-7271 -4311--5623 -6835--4642 -460-3458 1455--1623 -3631--2413 7985--4830 1380--1267 8284-7430 6094--2758 -1033-8498 -3813--2161 -2945-318 -737--7711 -9140-4272 4876--9848 7997--1538 -1539-712 9820--5114 4783--3722 3109--588 1852--4203 -732--8296 -9452-8163 3642-2490 -3298-690 595-5779 -4308--8135 -2278-3821 2811--6301 7885--5380 -5426-55 8907--9215 3508--9647 -9418-3505 5916-5171 -9826--9788 -7348-8095 -6574-2388 6529-9150 -9813-5205 2861--6784 -3842-909 -7634--9252 9910--2091 -323-3508 2050-9019 7450--7297 -7794-2417 9410--3488 -4906--6409 6966--1719 646--244 3877--1574 3997--4981 7637-2093 -3707-9130 -2763-8517 -1746-6668 -1125-7625 -8312--2571 -1738--7800 9857-784 8521--8824 -6028--5245 5574--8769 -6409-6548 2104-3075 9293-7910 -9594-9547 -3353-5628 2890-1681 2255-3895 -312-90 -2943-8845 -5735--3866 -1347--4713 -3008--9506 -6120--541 -1112-2567 1777--5384 -1643-2563 -7558-711 -5713--46 7229-9785 9736--161 1384--5408 -1213--1333 -3080--1755 -7730-3435 -3887-5480 -6906-9254 -6417--3907 -4963-6989 4439--1249 1660--2702 -2614--2303 -4435-4987 3244--7948 -7965--613 -3825--943 8122--5606 8093-2461 -1365-2876 -9088--1751 8609--7000 -9174--850 643-7734 -639-5610 -3609--1314 4898-6550 -4002-2313 8742-2628 5299--4061 -3917--6032 3331--5834 -4243-2353 905-2663 -3704--4380 4213--457 -3373--9286 9942--7285 -6397-2192 5354-2942 -7471-6974 5899--9864 2199--830 4204--9069 1130-8993 2344-5033 7932-9936 8284--7320 -9407-1811 -166--2817 8527-818 -1374--629 -8562--3771 -501--2428 9901--7329 -8126--1467 -654-5633 2928-1631 -4132--4795 -7495-3958 -2278--4966 2198--8342 6051-4453 6335-7218 2476-6502 -6828-4508 -8065--9777 7918--5443 7063-6805 -201-7018 9018-4515 -1914--9210 5276--946 -5509--9766 1411-3765 -3490--6387 -4982-9221 -8580-2522 7989-99 -462-8173 480--9654 -4368-9481 9530--6338 4537-4679 -2664--8118 2167--7145 8431--7929 3156-1232 2970-3086 -9419-5865 7841-6384 -8795-6089 5053--5835 -7160--98 6209-7111 7054-6690 -9011-7007 -5310-8254 -9547--9073 5500-3028 6251--1558 8266--4935 4727--5056 -9961--8600 -9620--6446 466-6127 -5945-732 -6390-8967 -8936-3974 2017-4566 -9070--2149 4567--4279 3874--2945 -6778--9587 6754-1424 -98--447 745-9037 -656-6594 7190--729 -894-897 -2669--5514 -1391-7062 -3509--8781 -8350--5578 -7672-5585 -736-6464 3470--2123 -5010-4616 -2258--3469 351--3584 7556-5909 -8679--2831 2687--5883 5752--998 -9737--119 2320-5759 6680-3325 -6643--1248 -6817--2975 6266--8924 -1002-2529 1246-5648 -3284--8116 2073--376 1973--2492 -4658--7034 -7637--8568 -8810-3775 8120--3211 -8741--5685 -9521-728 -5350-8370 -2534--2715 -4401-7263 247-3919 6244--7995 -8996-5951 6462--2274 9597-6094 -84-6873 5787--8410 2978--2729 7737--8820 780-6478 -5180-7679 -9442-5667 8350--9968 -4845--5366 5397-4193 9347-2054 4085-5539 -1723-6896 9722-223 77--6358 -4833-5595 3461-6675 6709-8539 -7186-1199 -8672--3973 -983-1774 9654-2862 8368-6959 7465--9402 -4631--7451 3256--1039 -4204-8374 -1143--4348 -8494-2080 -3103--7567 -1148--735 -5218--2928 -1884--1023 9096-5113 -5453--1800 5327-7657 -5692-2346 5784-1532 2240-9432 -416--7016 1714--3375 -7036-1684 3226--6132 8775-4831 -4135-8242 -2233--2055 8023-376 1760--2767 754-5416 -7894-9428 9255-3460 -2450--1324 8265--1011 7704--7909 7827-6584 8359-5893 995-811 3476--4110 6470--9091 4846--2408 2226-5004 3963--1117 5639--5770 -360-8092 -4499--2875 -2150-283 -1982-9975 6994-8151 4901--4240 1581-7036 6568-3423 -9252--7786 9829--3003 3660-4094 2734-7261 -4766--2701 -6856-6507 6151--958 884--764 -6067-4444 -285--6213 2712--1177 -8229-4707 8727--6392 3846--966 6322--7008 7966-7185 4899-5513 -291-8719 -2527-8494 -3156-2787 -5483--3896 8157-1522 9717-2944 -2497-7684 2784-3782 -4372-2959 -7970--3163 8875-4436 -1815-7320 -3155--7689 -1127--9121 3593-8213 698--8524 -4014-51 5640--1638 173-7099 6587-574 -6340-5148 8211-2067 -6126-3432 -1899--450 6351-5980 4691-4814 218--3009 501--4834 3809--7984 8272-5772 -2914-8403 2079-4571 4305--3999 -337-2076 -3696-3661 -1369-6223 3480--340 -3047-284 5530-1951 -4168-3683 8676--6165 1243--8001 6278-7900 -8624--9612 -7059--5260 6580--7635 -9198-177 -6199-5246 7593-7690 -6000-105 5247--2500 4466--6773 -683--4273 6355-5889 -9946--5529 5276--8697 -6820--5025 8484--334 3340-1650 -3302--2520 8384--1676 8386--7381 5753--7092 9633-8177 -2315--4916 -220--6371 8656-7077 3492--4957 2383-8470 -466--5727 2911--377 8762-8031 9323-2430 -4372--1549 -534--3009 -445-9253 6544-5214 -2937-7269 -5227-7709 -7977--742 909-7624 1381-4765 -8173--9711 -8677-1187 -6510-6368 -679-4619 8554-2824 7741--7669 8128--7981 -2002-2921 -6367-5712 6022-9843 3966-6271 7279--9825 6199-7563 541--6518 -3507--2135 -4370-6491 -6186--7716 -3758-8059 -9731-9524 3243-4301 8161--791 773-6871 -2273--903 -806-5468 -7272-6690 -2177-1453 -2524-9308 2961--5341 -1525--2840 -6010-6102 8941-5073 5256-6973 2679--1165 3772-663 3469-5641 -4020--6016 -8617-5766 -5226--8489 327-5493 -2124-954 6519--3213 -8067--10000 -2753--8820 8253-3310 1248--5887 2955-9931 8717-7183 9849-6535 5570--4186 5928--3517 -158-3982 9983--9200 -1668-8782 9834-9287 -3528--1428 -3944-73 -448-7659 -1854--218 3125-3624 -5438--7008 5845-4111 -4821-4556 9071-7635 -493--5591 4450--2442 -8049-5483 -2783-1970 -4875-2242 -9263-1000--9700 4316-3555 -2940-871 9056-4461 -1224--6915 -8292-8047 3564-1915 5763-7021 246-4883 3706--5774 3734-6246 -3279-83 -5468-1442 3911-1766 38-6242 -5234--7214 9803--100 -3048-9277 4327-5126 5660-4314 -9929--9236 -1325-6674 -3719--1628 428--1880 -713--4289 2613--3086 8967--2311 -502--4237 -4044-4570 5355--7198 -8276-4929 2891-2689 -7585--1944 -2798-1551 -7619-9930 5847--7443 -8794-9383 -8989-7138 -9345--8685 7449-8942 -3840--7345 188-2412 5331--8580 -7148-1295 -2427-7782 -302-8071 7869-9579 7071--5023 -1135-3083 -5216--7335 -7317--7779 3453-6245 -2467--2636 -3491-6298 757-8615 4889--1758 -851--3668 2184--5896 -6731-3352 6730-6534 -8182-2646 212--9297 4012-3532 -4739-4762 -9159-2870 -7885--8470 4230--4642 7522--4916 -4441--1805 3948-7286 -5392-7278 1046--2747 -7288--8776 -2441-6859 4768--5809 4564--5954 -443--6174 -6393--7184 2105-6074 -1216-2729 6872--9613 -3926-2111 -819-6820 -4005--4722 -7153-868 3354--6296 3497-7161 -1932-3736 -9281--1344 -8056-3142 -9036--3804 7377--6275 1423--7348 111--7275 2770-3073 -4524--3248 1715--2141 -1255-9394 -7338-7748 3008-7132 -895-6345 7773--6525 -4205--1248 3068-5178 7710--9229 3042--9865 -1275-436 995--2746 -1329-9910 6422-2414 -1962-1658 6593--9597 -7957--6838 -9319-5653 7738--3324 -6298--8585 7929--1090 691-57 -4237-5160 9741-7342 -3685-7668 6882--7950 3564-4713 3650-7353 -6346-4952 621-5136 522--5702 6765-3828 3683-2436 2425-1041 7870--1300 7816--3093 1175--940 2508--2479 4930--3293 -1829--1902 -4626--5433 710--1685 -9754-7965 -8835-5585 -8478--6024 5634-9464 4983-9244 2173--5395 6698-3839 -8541-6001 1068-8583 -7325-4594 -9433-107 1048-4840 64-9654 -9569-7842 9813-2675 -9053--5952 -5670-8845 -5129-9418 -7261--1765 8485-7730 6447-4018 8187-1013 -5349--4400 1469-7500 -2047--1767 -8001--2234 2204-1979 3547--4269 360--2601 -1284--3409 2339-7527 251-4110 9747-1638 5375--1712 -1407--6135 -6815-7790 2459-3438 6955-5008 -1853-1832 3258--1057 -4268-7358 9011-6751 7736--4448 -165-1581 9518-7342 -9199--3330 283--788 6727--4658 -8793--5478 8078--3917 338--7542 4795--1206 -7419--5318 8955--2368 7929--4755 6184-5940 1142-8587 -5659-7727 -2913-4670 -6979-8705 -9345--3982 -9815-5728 -5895--7564 -1297--6649 4052-636 -9622--6816 -949-6268 8943-275 477--1307 8398--5549 -5504--5712 -7540-350 7498--7194 7984--9818 -5842-1202 7078-8395 -3063-4310 -957--7319 6514-6582 -882-4372 -1264--695 -8110-869 6538--1302 4126--466 8821-4539 5149--4316 -2417--7902 1608-7319 6849-4280 -543-5109 7485-9316 -8337--8767 7480--4919 9515--8438 4040-7160 7460--4044 4611--372 9551-7313 -6531-7114 -1589-6388 1407--8596 3653--4230 7131--5932 8906--7454 69-4782 -6203--7610 1573--9247 8523--3441 -2486--106 286--3953 7600-2582 -5806--9943 5818--905 5767--2052 -5871--6833 6195-9904 9877--2452 -1148--4921 -3340--8558 721-1458 -2385-2554 9968-813 -7445--1729 1288--6908 -1574-8698 3909--6059 -3419--8095 -3637--8924 -2436-9586 2512--5502 9099--6513 -2714-2524 -7672--9040 1322-7763 -2756--2126 7707-5031 3352--1395 -7559-3079 2728-8822 -8964--929 -3269-2602 -8722--3332 5285--1403 -4802--8509 2560-9357 7321--1649 9136-6199 8494-2554 -425-7831 1068--2493 6767-7141 8273--8137 1198-9847 -8617--8218 9388-9697 1679--3563 -3388-8922 -7596-8623 -7548--3827 -4969-8475 -4799--2535 5919--2274 7871--1498 8298--7991 -4057--1156 -4420--9308 -6328-3182 -5655--9197 -7430-7334 5278-3259 904-6026 -9153-294 -2925--9791 6588--4680 3722--1410 -5540-1276 -6767-4744 -3464--3541 -1490--4628 9742-4727 2992-6168 -4924--3284 7344--9568 6843--191 7648--6223 1245--5213 4454--9693 2759--2544 278-8534 3192--5238 5642--8537 1527--3331 -7175--6042 974--1004 3149-2699 4626--5772 -5306--4524 -6945-7113 -2048--6029 -7147-1410 -7116--5096 8550-4353 -9396--9583 5664--3478 2112-182 -8774--1728 -9096-6729 -5836-7801 -9874--5797 1226-3874 -6597--2124 -8841--5510 -9369--4469 -2209-4069 8491--2035 5117-3793 -4276-2036 -9086-4076 -4228-7999 -194--3503 1258--7025 -1566--5992 -340-3806 -9196-868 -669-7144 -4508--5643 -7500--6670 -8819--4786 -2265--9206 4532-4987 -4230--8635 7329--89 -8310--4520 -9327--1780 2063--9812 -5601-1336 -9183-9569 1016--8010 -7739-7612 -376-6709 -3435--2854 3112--4607 -5710-5079 -9647--6099 52-5519 -4746--2307 9723-4208 -51-974 -6040--3056 -692-4463 -6787-454 2115-2353 6475--8757 5190-2409 -833--9838 -4730-6831 -76-6891 -2882--9199 -4305-3879 4022--8464 1127--5486 -4536-9985 -8967-6778 4587-2476 -9605--6182 -4022-8412 8310--8984 8306--8214 7099-9391 -3282-1433 6930-7625 -8701--5623 5967--2230 -9127-5378 -2930-5373 -536-9221 4174-7139 -4088-2256 -8903-3087 -7790-7906 3227-5545 -3956--2920 9747-1874 6507--4533 -3061--7767 -5312--7538 5346-2776 -2409-1640 -3990--3291 578--8882 8--1667 -6991--7281 -3421-8081 562--5305 875-8324 3720--3459 6467-6052 -7977--3256 6009--2722 -4013--659 4935--8847 -5333--2819 -8647-3349 -1415-4332 512-1315 -8376--3948 3149--9848 3491-298 -9322--4770 -3710-4965 -2344-3225 -1476--7252 7493--619 -459-6954 8891-6927 3226--45 -7548-5854 2955-1541 -7500-96 -3098-3725 7183-9016 -2434--8706 -1505-8750 -7281-1848 4555--9734 4740-6419 -4621-8066 7250-4731 3221--6102 -926--533 -1556-3844 8574-8277 5687--4742 -4135-1884 7708--2390 -5548-1089 -9650-3292 -1489--8014 -4266--2963 -1500-1429 -3955--9802 -1154-6889 -2638--7881 -8233-8668 -7130--4814 3726-4362 -2204--3128 8329-4311 7947-5368 -2633-2482 -4741--2839 563-474 -4257-2638 9087-4468 9177--4560 -6831--2540 894-9734 4924-1959 -7836-4695 -8873--830 -6120-4815 -322--9911 3619--3004 4920--211 3150--3585 -4025-6701 785--1620 1326--5113 8527-2625 -7449-3072 456-5171 -4988--682 671--676 4216-3308 -7253-4840 -256-2541 -3615-7980 -7871-4240 -6178-9151 8849--9565 -5215-6005 4002-1208 -2188-5872 9625--1058 6983-6581 4360-8428 9295-6287 -5480-9809 -5146-6933 271-1303 3259--6857 7100--8292 -9167-95 8102--7369 7745--2528 8568--12 4948-2432 17-9111 -1648-7745 4620--5737 -8487-4118 4501-9672 -1220--8073 4867-2091 1428-8604 -656--2444 -3455-3147 3585-6013 9967--3542 -1389--7101 1249-2186 -4522-7363 -26-2233 5786--2188 -2019--7972 -20--5263 6724-3335 -7700-5843 6193-8312 4835-9879 -1343--4288 -3540-7477 246-420 3148--2898 4349-6738 2358-7775 2698--6823 4457--8693 -8443--1202 1715-6335 195-6810 4828--1298 -7830-456 -7005-176 4396--6251 9985--9861 -1153--7710 1398-69 -9924-8696 -4163--77 1743--362 6016--5865 3093--4690 -3519-3651 2230--811 133-2886 8992-1338 5514-2279 -8497-4140 6824-489 -6164-6428 3824--6479 -5661--628 6320--5690 -5335-2048 -5567-9308 2469-714 7533--8214 2515-4312 -7939-5075 -1765-8788 -9359--9436 -9192--8350 -129--3607 4069-1681 7565--9401 -6971-9359 3243-2607 -9277-255 4747--7887 4217-7203 -3160-2652 -3950-3511 -8529-4693 4364--1155 -2888-2319 6463-6502 -257-3709 7426--2792 -5491--2911 5835-3144 4529--6824 -317-8847 8207--8049 -9453-9034 1254--6334 -8911--2904 -7104--7091 6763--4358 -5564-8506 5417--5791 -5680--4175 -8902--3977 -1215--2308 1001-5128 -8532-6341 7074--9203 -667--5865 -2461-5642 73--6256 3432-3790 4203-7687 -7204-3085 5680--5354 2888-4599 -9912-9186 -3100--698 4930-7118 -3073-7461 8089--5587 5830-3861 170--1056 2480-1655 6826--8468 -8447--2489 -6338--5485 -4324-434 9629--7132 2210--6525 7362-7891 -8794--580 9529-991 2964-5034 -2362--1079 -5987--5761 5670-117 9727--7114 7690-2272 -1612--2412 4895--5301 -8218--9877 9808--297 -1482-9551 -3530-9365 -2641-4026 2722--4914 6228-5840 -4621-3218 5368--2940 -564--3719 9604-8938 -5677-4870 -4706-8781 -7096--5074 1669--9802 6979--9352 321--6036 -2996-7847 3078--570 5231--2700 972-9865 8429-8631 -3752-9607 8557-4283 -8607-5432 -5745--5597 -711--7542 -2357--8822 4049--399 1747-5346 -7136--394 462-8159 -8452-6488 3134-4458 9304-6696 -2606-1700 87-1020 -5168--2996 -2891-4374 5584-1182 6313-8912 -9100-8341 3676-5083 8036-8483 -8113--601 7011--7532 872-5843 -7441-7623 -6870--3269 -4686--5720 -5681-4497 -4122-4225 1562--1549 7827--3859 1111--3151 2552-3989 -5452--7060 -6259-2384 5147--4856 4817--4221 8939--8154 3908-6932 3867--9924 -2864--6164 -7585--9248 -3503--5020 5450--9017 -2296--8771 6251-6206 -1137-7004 -3817-3333 7250-5946 -6608--7967 3433-1677 -729--8066 5150--7705 -161-6574 1818--3805 1054--4647 5363-8007 -5758-3308 -2763--3232 -686-5064 2311-1018 3221-8881 -4987-8816 -492-7622 -346-5669 6646-9319 -6323--8060 3831--2035 8949-7930 -4318--2618 3954--2192 -4453-9262 -5576-6144 -3719--9278 -5822--9481 4387--6886 -3890-1043 7779-9058 -3286--1284 -5246--9975 3239-953 -6221-8387 -3514-3246 -7287-2258 -4003--7256 -9244--8092 -87--1748 -1018--3829 -8899--5907 -6499-139 7437-4471 -4205-6845 -4045--2585 1834--4256 3891--4872 5321-3106 5514-2461 -9437-8996 2676--3925 3016-8112 -9820-956 -3904-1917 -6281--5323 9756-4046 -9347-7208 4178--2151 -3050-1149 -6107-3318 8721--3465 3129--8322 8987--5493 -8674--3437 -2653-2052 8260--7084 -2265-1877 9518-9199 -6713-7681 -7331-1196 792-2317 -4836--1704 4673--2449 -3624-7582 7133-7698 -6978-5190 -1866-7724 4069-2384 -7420--3151 2293--5674 -9430--753 1174--1743 9110-9683 -9841-7977 -8355-6469 1744--8672 -2010-8386 8789--8550 -9297-3527 -7768-4095 -8474-5718 4508--9478 469--1131 -8932-3885 7916--7767 9109--9407 -3843--9686 2359-218 7084-5909 2506-5165 3979--8212 1179--2665 4367-561 -5081--814 5233-4100 6944--9281 -4298-8668 4107--3087 -1553--6222 -7295--5072 488--2881 8661-2718 -1269--8434 -5174--4822 2240--7416 3641-7815 911--7397 4856-2989 657-7599 -513-7022 -7417-9004 8548--5161 -4071--6521 -8420--937 5138-3628 3129-6082 288-6771 857-3695 -6536-3348 -9437-5441 9634-8361 -9653--5791 6436-9418 -3417-4193 6135--1940 -4536-3578 -8328--1333 -8222--2500 1605-330 -5135--7111 2842--722 8608-8628 1441-7721 8043-4062 -1401-1237 -2312-4678 -1768-682 8234-5425 6769--6896 5756--7728 8576--1691 -6365--6411 2120-2089 7981--6444 7780-254 -9713-5597 -482--8607 -7301-9979 -3010-1257 1333--9702 -563-9390 -1653-4932 7283--7757 -256-4692 8629--4677 5913--6039 -4903-5441 -6592--2899 -163--202 4340--5675 -2505-96 -3975--829 -5440--7699 -8183-7136 -4732--7607 2013--2407 -5580--5272 -1663--4728 -3624--985 -1707--196 -6344--8587 -4768-1963 -4925-7588 -5628--9929 -1799--9563 9544--4016 -9231-9086 5890-7081 -7639-5646 -8831-6259 -6781--5842 -3051-5984 7029-5529 6610--8675 -3287-9514 5702-2022 -9844-8719 9252--6398 5424--6603 -8576--3075 3638-7880 4409-3406 -818--5236 -892--6137 4931--4745 -9278-8057 -8546-3615 -9814--5363 -3130-9580 5218--6044 7406-9283 9829--5524 816--102 3133--107 6040--2442 -6677-8410 -1808--2320 523-6307 107-7442 -8719-868 -4775--1685 1473--8823 -7285-6617 9848--5085 -7434--3172 -3824-6196 5031-7701 6902-7159 -4577-8035 5122-2895 -2612--9314 -4950-7856 2372--8812 -388-7530 -4840--311 9099-7058 -4849--1884 9744-3475 -3500--9249 9790--2429 -9025-1363 6830-3402 5966-4720 -8746-1267 6993-9494 -6938-8968 -7980-4604 -1269-2425 -1777--222 -3901-3737 -8866-9143 -6843--9717 -4832--130 -1164-6338 -6201--171 -919--9540 119-7857 -6146--8918 -1721--8039 -9637-8728 -6588--9169 -2311-1000-587 4284-4982 -428-2071 -2295-5077 -7847-9050 -2777--1797 -2623-8230 453--5848 5834-3346 7096--6793 -9243-9303 -3451--2004 1110--514 -3924--4639 3005-4630 -7280-1408 5079--3642 3439-8329 -2303-9293 218--8097 -5876--884 -3871-6715 2990--6063 -6887-7841 -5070-6243 5-7083 8166--3395 9322--9112 -7773-3749 8574-4167 -8728--2046 -3332-9549 3959--3323 -7737-4788 -2465--4994 -2261-4623 -3002--5722 -3252-6336 -4667-8095 9356--4609 -7011-5474 -502--957 8142--5765 155--3984 -4301-5483 -3549-1400 2351--5032 -3585--5110 -9653--2432 6372-9901 5484--984 2712-7827 -4649--9520 -2042-3884 4214--6251 1789--2865 -2206--3773 5233--9618 420--244 1313--4215 7592--4563 4080--7803 -8528--4644 -4310-3368 -3131-9691 4876--8475 -5550-7479 -7453-8068 -1542--1689 -9574--4156 9729-7686 -372-7243 3338-3864 6627-1926 -1460-1642 5469--6442 -6821-4494 787-8672 8076--9366 -7244-7894 -3283-6097 -2473--1526 908--4651 8456-5429 1329--1352 8832-6348 -7396-9602 3369--2697 296-6880 4081--9756 9658--6807 6192--8884 -2574--3003 -6614--3660 1623-4494 -431-2079 -242-708 1923-9126 6620-4216 -637--933 -4257--8887 -2046-1073 -4048-2227 -5650-6943 -5766-5835 8539--7741 -7719-4476 -7830--7243 -6381-5121 -1716--309 9227-542 -3774-2399 -4382--2705 -6841-1055 7863--8590 -4365--4664 -9481-8015 -3891-2639 -7275-246 -6005-9932 -8958--5452 -9831-3805 -6179-7135 -8822-7270 -3172-4688 -2152-2896 -924--7063 -8601--3830 4503-8943 -2155-8045 6425--451 7416--3037 -8520-2010 -5733--3461 -458--6482 -8759--4861 -8321-5159 9038-5591 8641-4951 7981-9268 -6753--3280 -5753--2620 -8738-6377 -1131--9939 -3058-3021 8875-3980 -8393--737 -3068--9136 -6855--3743 545--5073 5119--9298 -9742-1689 -2357-6435 -3864--1603 -5341-306 -4992-565 2630--894 -3391--6877 1220--3807 -1836-378 7575-3348 -6733--3777 7499--9556 -462-9025 8593--7609 7634--1361 -8151-9389 4370-515 8270--2998 -8970-5149 2339--3031 9793-2552 -8732-9962 -6995-5415 9914--6752 -6512-7905 -5315--6365 1609-1420 5992-3046 -8587-5898 -7997--1548 -1858-6200 -1730--7415 -7648-5672 3734-3123 -9419--7211 -3245-2613 3334--6822 6924--8134 -9157-4150 6250--5688 7712-6595 -2476--5688 -8860-8537 -817--8136 -627--9963 9868-167 -9763-9267 700--1391 5860--4916 9845--6226 -2227--1758 -4320--2796 4415--3384 1220--8843 -8602-8132 -1693-9492 -916-9183 -2037--7161 -7484-2719 6018-6906 -4579--8068 -7612-2212 2241-8775 5745--1172 -6074-8880 -8993--5874 -6303-5495 8710-225 -6962-4346 5592-8759 4454-2664 -8028-7998 9257-6169 7755-707 -3753--2930 8879--3182 -1701--4569 4002--8341 -2779-3199 -3889-2831 -7848-8365 3495--630 -6891-6654 4243-1033 -8975-9308 -3349-6586 3673--4915 -2137--1495 -3152--8371 -9333-356 -3365-6242 4059-832 -1543-9604 959--720 5370-5224 9397-4126 6914--971 -6979--8370 5638-2308 -2210--9588 1634--6872 -4932--7797 -1638-7975 7317--905 -9244-2341 4972--3844 6675--5649 6540--2499 -7560--3831 57--1166 -8108--8820 -1242--1881 -3735--7265 9030--3421 -9997--9852 5706--3243 2896-2962 -7907--9844 564-6085 -5896-1944 -7525-8949 8477-8030 -2744-1182 -2228-3220 1826--9786 -5643-3834 5824--9297 -2184--8905 3838--9099 926-6377 -2456-2063 1780--1310 8991-4533 -2372--5529 -978-6432 5383-1751 -7300-4367 -4702-6553 -9926-941 5500-5055 2769--835 -7113--9546 9976-3854 -2759-5953 5299--6964 9686-1213 3693--6365 8262--2762 95--3616 6872-4519 -3081--8749 1231-7190 6521-6302 -5696-4361 -832-2840 -4288-5320 8334-3024 -8518-6094 -7301--562 2405--6681 -3728--9682 1545--630 6273-3105 -4432-1806 -6156--3615 8164--4872 2625--420 -9320--3290 -6506--7852 7137-5024 3203-9362 9423--1356 -9623-1875 1135--6403 -3823--12 -2048--1842 -3683-8078 2057--5102 -4816--814 -8835-3580 6803-7352 2648-3036 -9653--3357 -8178--4031 1703-5402 -5927-4705 -3241--8629 -3213--4446 2091--5760 -678-6763 2100-8078 7737--6401 5251--2071 5399-8648 399-9016 9926--940 3180--5714 6575-7336 -2468-2031 5869--3511 1192--1401 -3155-2617 -6305--2626 7853--5104 -9724-2097 -7255-1330 4632--4473 -4957-9596 -5396--7217 7480--6621 9887-5142 -5473--9093 -6410--1627 -7577-8683 4754--1154 9448-621 2288-6494 -4419-2709 1650-2668 4835-8880 1170-5957 6519--1804 9078-1046 -618--6106 -5874-8793 3473--5571 883-8024 -6880--5967 3810-5461 644--1358 -4359--6355 3292--9431 4520-3322 768--1927 -8887-4763 -6047--5501 -1866-7102 -3317-9762 4332-6646 9357-6037 -8711-5736 -1757-6608 8189--644 5327--64 6068--5320 -5920-4049 -2275-3347 -8741-8709 -8213--1263 -2794--5738 9884--9306 -7039-5571 3420--4070 -7865-7109 1987--7841 5454--3273 1142--957 6392--5906 5638-5785 -1564--8778 -1779--7070 3886--3590 9569--8756 -317-5328 5298-2587 -4512--2737 -5269-2979 -3209-6600 8121-9370 -5859--1776 -2842-6050 -7859--2305 -107-5606 8399-3616 4643--6732 -4060-1462 4849--4589 9125-5177 -678-8869 -2122-1429 9394-2813 -5665-7430 4613-8556 3520-4189 2442-3793 4354--4719 -4882--7554 5207--8470 -6186--3045 -1969--1711 3092--1342 7633-5096 9930-5497 1796--6468 8780-196 -3405--1740 -4267-6781 -3722--821 -2273--5948 2813-1117 1173--9388 -1761--5739 -679-1686 -8925--6808 8702--7169 -9102-2309 6510--3647 -4926-1911 7621--9885 3296--5001 -5973-9416 -9772--3689 5120--7204 5600--7609 6924--5460 -2592-5954 2129-6775 -4298--5300 -5039-1394 -1932--1196 -7935-9987 6021--1197 3822-7220 3511--341 -2994-5927 561-5998 6295-8167 1360--2145 4526-1023 1531--9316 -7157-6495 7521-5400 7309-3190 5511--3378 -6625--9917 -8716--2626 1790-7353 9907-6858 1441-7242 6873-7404 -8576--177 -3276-2348 -7959--2300 3170--1570 -1673-4014 -2119-7503 -8288-96 -2432-6461 9961--2710 -3401--4904 6188-677 1876-984 -1265--6682 -9362--1487 -449--129 5609--2985 1144-6939 422-9851 -7228-1922 -6385-6757 4748-1181 1247--2835 92--1392 -6813-7525 5888-657 -1269--5175 -1529--808 -4214-6393 -3649--8100 -4374--6471 7904--621 -6381-9682 -9764-4426 5534-3032 628-7195 -4421-733 -1269-5429 7987--1428 -8197--4546 2177--5319 1409--1373 2939-8619 9554-1473 -6680--8224 9919--1421 -8880--5700 1511-1164 -6832--6099 7326-8383 7865-7405 -3126-32 -1116-3005 -9589-1105 -7299-4536 5005-3141 4885-4167 7662-1304 -8690--7590 -458-3859 -7166--7933 -7609-5671 -4874--6354 5787--5042 -4260--308 2093--5745 -5156--8688 -544--4350 -8219--6808 -3615--7586 -8804--7400 -2062-8561 -3597-6231 -8937--2891 996-3146 5412--3127 -4826--6561 1488--9589 9596-4474 -3656--9960 1751-2852 7296-1274 -1864--4019 7541--9436 8268-5144 -1108-640 296--4423 -3486-1724 -3089--3056 -8034--4782 6169-2728 290-8631 -8587--8742 -8311--6019 -9639--5953 1219-879 5720-3558 5403--3010 3100--1335 9485--2634 3859--5760 -1179-4178 -1224-7713 6509--491 -5735-4055 -4202--9128 -6544-9362 -7613--859 1049-6703 8643-6347 1140--7741 -2858--2751 -7034-2352 -7903-3315 -1243-5738 -9715--8847 -4637--3371 -5466-1978 9233--8688 -9704-5367 8764--7657 -2806-3583 -9797--3335 7676--4711 343--6567 -2585--901 -1910--3063 -1845-9821 8871--5852 5443--1827 4255-7546 9063-1841 -9905-6877 9520-5297 3524-2996 -1374-261 -8085--9366 -6270-5399 1074--7313 4699-9040 5615--9717 4827-1654 4653--2769 -1706--9104 -8541-1147 8941-6541 -1035--1318 2431-5557 -5815-5374 1458-7653 7946--8633 790--664 4647-9260 -8532--5865 -8512--8270 7724--4709 9308--4605 -5863-1270 -107--4229 -4177-7980 5943-9239 -9420-893 -4937-5008 9325--4067 6434--293 -6441--588 -5680-8377 -3377--4696 4932-5954 8605-6379 -6237-2216 -8990-745 -9670-5115 6291-8197 9117--2478 -3991--8180 5761--6486 2586--6168 -4944-5437 1228--4298 4578-576 6312-8538 -1406-2520 -9083-7408 498-7418 2301-928 -7797-8457 7381-4004 7393-8312 6561--5797 7596--6762 3176--8847 6116--541 -1313-5199 3120-302 8879-4456 -6209-5249 -1875--3926 8864--1216 -4895--2134 -3442-9591 5291-3907 -5927-6798 8810-3389 -3259-4074 9740--2970 9946--6538 5923--2556 4692-9592 -6662--9079 3869-2167 -8222-3348 -7410--721 2430--7740 8629--6863 -8649-3221 -3082--4804 -4788-9846 -6825-856 -3863-3775 1420--2730 9186-2307 -5874--1894 9830--205 8751--100 7524-7744 -6438--9123 2333-9770 9510-3886 -8852--2457 -6557-8237 -8347-4685 3916-1458 9693-2869 -2176--2649 -5871--3478 -1022-6650 2603-1672 -6529-4101 425-3183 -1598--2019 1590-7901 -3784--1017 8833-2513 -4309--436 -7101-5841 -7573--5789 -3447-6496 3521--5400 -6871-5772 4550--2888 1020-5946 804-9612 -8200-5845 -3176--8154 -683-7578 -8360--4987 794--423 -4849-904 9090--2451 -1422-9219 -414--2218 -941--8919 -2207-5819 -4750-5196 -4992-5568 -1945--4343 -6959-694 7388-8096 -1359--3221 1847-2776 -66--6760 -3698-5467 3537-5073 -6104--179 1948--7286 -2817--7411 -1994-3436 1085--6630 922-1871 9069--1119 1450--6655 4675-129 -3726-3571 4421--4412 -6395-8800 186--5940 -4128--8086 -252-7183 -7268--7207 -6388-2637 8373-6769 3970-9948 -9329-6900 3101--574 9734-2636 4007--2577 -1061-4726 6318-1282 -8482--1648 8926--1746 4418--1252 2689--9569 9909-7291 7188-117 9308-4524 9874-2264 -9280-4157 6656-440 4162-8597 -6300--1627 5235-6744 -3696--1008 6843--8603 4130--7714 614--7711 9711-8473 -9938-2613 9116-5192 -9909--9681 8839--9450 6350--5941 -7116--2569 -3058-7795 1842-4944 785--6125 -2903--7157 -513-9811 5988-8983 -9609--4913 439--3067 -7207--3337 -2287-86 6290-1243 -22--4371 -5853--2903 1984--9397 -5642-5732 7724--2249 -4726--4137 5345--4662 5463--6932 -7897--4729 -4168--1310 -530--9432 5040--3041 726-9182 -305--2815 -263--7350 1614--2265 -5742-1496 -9339--6579 -2556-4649 -1951-2138 8050-8689 4457-7473 -2255-6810 -5802-6075 5119-2710 -3723-1903 9171--7026 9577-4625 -6734-1674 -7739-787 3714--703 2136--8884 -4276-7099 9866-6489 -3339--2285 -6679-6259 5382-5939 -2999-6177 -4924--6496 -8280-4859 -6197-3519 -7356--438 -9386--2203 6267--5917 -5373--7713 -2618--3814 8959-1503 -9921--162 5237--7853 5491--8913 6120-5858 -2510--3834 -1495--9080 -4168-2824 -971--7532 3161--3875 -8097-9342 -1379--2560 -4320-4984 8037--183 4897-1294 -3721-6835 1362-3346 -3417--2042 -2496--3522 -8567-9744 -4913-4144 -624--2995 4065--1943 -2956--3613 -4209-3587 -6237-5897 5644--1814 6866-2455 -2905-4065 6922-2237 -5827-2800 -4519-3302 -8274--5334 -5624-7921 -4528--9453 6222-9774 393--2103 -6277-2132 -2043--6812 4994--710 -7337-7780 -49-9241 5947-5816 -6414-3277 3789--9595 1705--4797 5672-3661 -4009--8406 -8694-2716 8429-2564 -8175--4987 -8196-7815 -7069-6388 -1560-2172 -1141-9480 -5690--7079 6636-5865 6968--1355 -1998--2437 -2099-6687 1684--8016 -7595-4973 -6092--9281 8368-4309 1031--1431 3562-8748 8238-7192 -2206--9901 -2716-4913 -9768--7239 6253-7585 459-4759 -6053-787 9338-3084 275-5006 -3853--9739 -4552-1579 3468--103 7484--5775 4360--2342 5725--4002 -1817-2817 -5710-4696 -8893-3258 6214-6414 1962-4034 5195-6912 -4816-4580 9642--5886 -6401--922 4116--3470 -893--6733 5077--659 -9385--6302 -9970-6450 -6836-5046 -1962-7583 -3174-7295 -2346--9585 -3525-3767 -1673--6209 7978-7101 -8579-8768 2564-8934 4760-1172 -5218--1213 -2133--2649 -6768--1106 -6178--592 9399--2902 6335-7694 -5940-8822 8--4997 4019-319 -7321--4118 1501-8362 -8821-8468 8087--3351 -4139-5674 1510-4878 6808-9078 2663--6583 -6057--3018 8609-2110 -5239--1498 -8026--4487 -9086--6660 9548-5442 4463-8946 8017--5861 -6812-1000--4129 -875--8875 -1101-4271 8792--545 517-7158 7296--1649 5609--1337 2652-2032 6454--1580 -7277-4081 1776-3056 290-7803 -8725-8174 -4800-5834 -9997-1426 -375-6995 6630--8171 4810--285 -7701-5474 7239--5001 -3390--3605 -2403--507 -6455-4315 4525--1481 -7565-8746 -1175-8406 -2868-1339 -693-863 -6732-2758 -8459-5097 -4260-7652 4182-7516 -496--1703 8941--32 3696-3534 2556-5177 -8669-5945 -3681--2503 -9323--4024 8876-2594 -8963-4314 -37--2550 6150--7395 -1920--570 -3701--9983 -2203-2823 7318--3410 1292--7014 5459--7390 -7719--1001 2840--9122 8671--510 -6030-3649 5214--9068 -6160--752 2724-2727 6637--3774 -5455--4309 1349-7581 320--276 -40-9044 1321--3833 -8126-3569 -9420-3612 3978--3912 -6300--4316 -4434-5658 -8728-8704 -7192--1750 -5751--3644 -6669--9582 -7944-6801 5238-4558 449--7213 -8138-5466 8944-4052 814--4439 -716--9670 -3110--3122 6724--9721 3016-1257 2804--3382 4409-9074 5189-5798 -8014-7185 5763--2289 6792-1248 1748-3322 -3858--4323 6484-2337 -9701-7170 7741-4562 -4004-8365 -5589-5949 -8259--8944 -322--5746 2510--7344 -2829--9771 -6016--3647 3659--8195 7069-1244 4857-4238 -5590-7525 -962--6920 -5777--4380 -9772-4592 4002--7208 -405-5278 1779-2844 -2234--2849 -357-3691 -3651--5085 -8599--4822 -5199-4610 -5449-1275 6743--9011 -5961-7023 7491-3473 -9733-1566 -563-4938 3751--7484 -288-9037 7306--8837 -1115-9701 8907-9811 7294-5971 -1202--4550 676-3555 -2149--4499 8026-2426 -4272--6824 757--3788 1889--6295 -9975--5392 4160--5187 -9241--6736 -4453-8803 5383--6083 4575--6231 -1839-3493 6178-8176 -7483--8018 89--2927 2376--6525 -7519-665 -7290-6601 5223-7064 4801--5232 -1444--8157 -5628-7288 9890-5996 -9239-9791 2377-2104 774-931 -6264--1563 2251--192 6353--522 9218-8481 -8684-6793 8338--5744 6453-1834 -6513--3913 -4594--7854 9102--1736 -6486--7970 -7864-1452 -6496-8950 6977--7841 8809-9053 504-5543 9017--9447 -7518-4241 -1791--9960 2178--428 5600-3019 4127--3678 7718-3668 1681--7126 -5338--703 -6637--7872 5379-7836 6702-3328 -1003--1797 5625--795 2777--6674 -3622--2986 -1186--8018 7037-6609 3105--8135 7527--7696 -6548--501 -8094--3293 9277-4698 -576--3792 -5159--256 -4785--85 3206--6373 -2595-3724 -787-1097 -9650-7575 358--19 -601-3000 -1557--6257 4785-556 -462--7306 -2811--2522 6743-502 8344--3926 527-4847 6722--5300 5986-3529 784-5872 -6236-779 5936--6136 2005-34 -1998-5059 9967-9206 7561-8484 6101-1621 6445--6016 -2251-3655 -8213--4595 -2145--2737 -2128--7028 -1234--1165 -3471-5710 -4956-9296 -4842--3748 -8545-2660 -6887--2739 -1445--4098 3212-5283 6955-8085 5979--3324 979--3516 -8201--3099 -1542--1848 -2803-709 -2794-1894 6013--6211 -8604-1178 4469-1762 8550-6108 -7285-9765 2236--4850 8703-9991 4906-6725 5851-7936 -4506--9927 1817-770 -6535-6891 3347--564 -2019--8512 -5437-3925 -5237-6998 7234-6710 -2745--3133 1097-3560 -8528--9967 7342-5842 7504--8226 4935--8560 -2851-8382 -3317--8877 1388--3185 9058--9595 -5128--4896 9626-2884 9571--6692 -8048--2015 4126-9356 -9240--9029 5815-1665 2389-3403 9367-1031 -413-9332 6468-1447 6315-1823 -9164--3579 4409-6745 -9538-82 -7122--7223 8394--6104 -6253--4245 6779-9445 -8233-6511 -7613-7115 -1185--7003 4249-6084 -4163-3119 -4575-1818 -1675-1442 6013-7897 442--1568 -8306--7140 7059--1138 -4870-5412 -6503--7180 -3612--6222 -9187--5194 -3516-6876 3593--7405 -7244-6198 104--2690 -7350-6910 -2511--3094 -666--8912 -2002--1506 -3628-7191 9806-9113 657-4485 -280-4657 -5664--9244 -5869--4299 -9307-6504 4721--1465 -7120--9927 801-931 -1994-7835 4096-1925 7980-810 -2551-9280 1642--6487 5863--2354 5119--2285 -5800-9971 6895-7693 2970--8600 -3800-130 4282-8606 -7723-4890 -3688-6784 -2710-404 5267-2308 8764-7995 -660--8170 -495--5050 -2286--9496 -6221--927 8144-2926 -9984-2068 -1593-2840 -3198--5808 4624--8737 2897--2296 4439-7075 6316-8090 6498-582 -994-5802 -309-1226 59--7387 5193--7512 -8184--8715 2553-2057 2660-3552 7989--4959 -4371-8330 5730-6114 8437-3213 -7025--8897 -5075--6955 -6097--371 -8615--2531 -9186--4991 -3819-6733 -2976-7551 -7695--2761 -4214--4292 7110--6132 -2291-6885 6913-2085 4614-3319 -6687--6707 5887--8258 -3293-3833 -2095--8386 -2083-4876 4680--1130 -3443--4315 2598-9736 -3003--2632 4343--8544 -2733-7066 -312--3034 -6497--25 -7172--2475 6229--6305 1892-4127 -9967--900 -3002--9358 9983-3889 5187-8884 -8889-5876 -972--8157 21--6437 -5789-6519 4900--9468 3145-5679 -4925--6642 -9399--2277 9466-155 -4082-8933 -9343-3023 6478--1134 370-5779 -1973-1408 1906-4262 7125--6774 1727-1134 5915--6428 -6201-2484 -5299-4327 5581-2838 -7616-1537 4037--572 270-7079 -8186-2342 1223--5409 9988-8056 -6136--7384 6452-3961 9411-5292 -5691--5251 -3863-2633 7200--6149 4764--556 -4623--1254 2690-9805 -9383--1672 4116-638 4118-5544 -8230--8673 3600--494 1558-5812 9998-3446 8078--9404 -315-549 -6387-4040 -878-4514 -7340-4998 -9917--8302 -142-1740 -8149--8124 9071-9190 9446--8438 3579-7967 2397-2608 7641-9274 -7856-3894 5256-9933 4874--2052 7275--959 -6318--3531 5918-781 4333-7927 2555--3794 -7781-3973 -5552-135 4160-7692 -6255--726 5962--7660 3705--7904 -1351-2454 1026--2306 2109--5462 3280-922 5207-8675 6164-7300 -964--764 5973--6890 5803--4289 6528--188 -5707--3427 814-1989 -4414--4762 -5272--6981 -1782--9109 -8370-7036 2254--7800 4922--4508 -9981-9916 8952--1887 -2796-9080 -2054--7868 4864-5906 -9957-5073 -2379-1386 -4068-6921 -7181--9096 -3167-6966 7928-6262 -9562--3387 1600--8830 6558-1033 -9779--6332 -4666--9771 5231--3437 7185-5316 -1772-7976 2121-6743 -6590-3475 -1595-6083 4120--6760 -1813-5541 -3379-7237 -6782-7332 4497-648 -9738--353 597--8184 -6173--7239 -6829--5165 6748--2815 5373--4055 -2007-3991 -402-1945 -8726-2429 -9938--3761 1788--1042 -4977--7491 -1880--7280 -3763--7091 -935--4201 9766-8889 -4266--539 -336--7666 7163-4925 4554--241 8246-5402 7247-2461 6932--7096 8748-2696 -8020-6037 -3115--3092 -2222-9223 -8973-6179 -416--9099 3129--8664 -7518-2619 -1332--4145 -476--226 3567-300 392-6594 -7505--2305 -1521-7700 -1080--8668 -5370-1367 7271-4523 8869--1029 -7979--3129 9555--5029 3973-5772 -3812-5249 -7290--7414 8967--574 -8350-9141 -7273--2352 2144-6834 1187--1073 -7342-3062 -2659-8953 -1701--7265 9177--3782 1756--844 -9061-2516 -4943-2211 -2130--3254 -6514--6587 5449--7059 -1977-575 -2323-1334 -533-8349 -6033--9236 2501--2000 -4363--2682 5736--7320 2570--5589 256--1527 -2710--7531 9702--4011 -6376-3366 -4456-3194 -4375-8942 4141--3108 -9711-1633 2543-9693 2687-8148 -5671--3759 9697-3500 -6724-7638 453-296 6071--8967 -2308--8216 8574--1522 2041--8510 2443--9387 4092--6425 -9929-5687 6881--3179 -5192-6709 -3057--2649 -6236-7525 -5-3565 -3084-1404 7489--6868 9727-4178 -9907-1406 6551--7190 -5819--1855 -4027-5125 -1171--853 -9-8960 9190-4175 -5508--9841 8577-6957 -5924-3983 1577-5328 -9962-9235 -5756-4597 -7627-6707 -9136--1175 9766-8454 -6863-5586 -3185-621 3181--9686 1141-9895 61-9071 227--2722 2814--2824 -8215--5317 6803--526 -7034--6579 -3267-7539 -2480--9644 -3092-5835 2953-6885 2483-2796 8976--6888 5657--2718 479--3046 2786--9463 -7752-8658 -9206-3661 6008-9476 -8008--3596 -3923--2146 370--1075 -1289--3166 -6887-2829 -4342-7336 -3825--6296 6863-9597 -9536--6585 -638-2358 283--7821 530-7722 -84-9194 -7153--910 3614-5051 -4812--3051 9947--7188 -5012--9145 4391--9198 991--8357 -6392--8633 -6499--6829 -3868-2816 -9315--9286 1779-2501 5219-1774 4184-5608 -9247--4851 -6830--9550 -9228-5135 972-1997 -1688--7812 4040-4637 -9462--726 8825-6977 1915--8196 -3171-3683 3606--3271 -2918--6410 929-9798 -7086--8359 -2125-21 909-6489 -5576-6895 8476--6876 2264-2064 3925-5802 -9491--2666 -9492--9710 -9651--3186 -1639-4631 1183-9097 5044--6842 1382--1917 -4702-6429 1424--9266 -7675--2088 1399-2014 9997--7295 4076-8563 -1425-7483 -2107--5756 9999-2823 1660-1813 6793--5668 2424--3546 8271--1070 -6274--9125 9494--7036 -3110--8889 -4538--5041 9731-3388 8917--5754 -7139-8996 -3208-1460 -4604--9561 -50-3132 -9098--5803 -5367--4326 4744--2241 -925-5027 3416-2834 -7095-8634 1063-2529 4063--5416 -8494--2699 3853--9101 -1183--1190 -5729--2074 6618-2004 9990-1774 4554-3510 -549--407 7707--452 -7229-6707 -7413-5321 6668--7558 9991--4263 7189--3103 4890--8193 -1182-2895 -4477--5335 -4701--9608 -7736-2934 -3866-8074 -6000-2722 7817--514 9229--4310 -4444-4732 2342-8955 -9003--6965 -1807-5358 8649--941 757-1333 8615-2262 -2348--9703 3858--4411 6357--241 2404-8217 9933--9030 -7832--4667 8018--7799 4720--1026 7156-8830 8170--1645 -9448--453 3074--2835 -4055--6133 -2450--3445 -5818-2933 -1831--635 8041--3155 7714--4698 -455-2024 9418--9807 -8292--4098 7505--6656 -5692--6561 3280-2578 4183-5947 -2701--1028 -7545--9987 -7747-8691 1335--6558 -7253-1859 -1540-6562 -6856-7371 -7903-5569 -1950-825 364--9951 3945-8179 7533-8428 -8102-2983 3407-2495 9712--9142 1358-7982 1740--5654 -8417-6907 4959-5227 1389--8843 4439-8686 5352-7200 7772--2137 -8001-6478 -8587-5342 9936--6950 -1766--6896 7323-7932 3055-3655 291--9293 -2778--9118 -8564--643 -4006-3895 7466-4852 -6030-2248 -4868--4348 -3935-1213 -4955--9462 9056--7230 -8583--3577 8661-6680 464--898 4319--5120 -2137--3379 1446--6784 -4300--823 9167-8921 3460--8907 -274-4945 5174-2118 -7584-6101 5563--2849 -8251-139 -3650--2812 -1931--4134 9726-437 -3040--5512 -3417--8906 -2028--9271 -9314-5892 830--6957 7340--2469 1382--2726 -2563-4753 5831-253 5639-1557 -7679-6206 4711-492 -6891-7308 9979-9893 7990-8820 -191-1612 -8429--6813 -4769-7366 2921-4290 5873--6124 7454--2992 -9161-491 3699-3976 6819--3888 -1079-7145 9751--7046 5274-9926 -8033--1400 8582--6301 -4710--2690 -2495--4237 2240-8614 -264-1098 9748--829 -3943--5283 9287-3701 6987--9731 -8438-9192 5542-2570 6884-468 -2588-606 -2406--1325 -3342-8651 -4135--8402 4027--5258 7502--2971 3609--5205 -3835--519 3690-6233 1195-4112 8464--5170 4769--1867 -4014-5882 4213--1918 6663--2936 202-7174 6957-851 -1237--2682 9216-4894 8812--4625 5378-4779 -9057--7425 9086--3551 -9656--4103 958-5332 7000--3779 -6598-1656 -8040--2146 -8384--8045 -3058-8709 8095-8777 3223--8936 -7049--3404 8035--9048 2950--1420 -9237--6998 -1060--4424 -9728--4107 8288--8087 -8658--5492 -604-567 3124--8003 -2360-8682 -3026--6659 3278--8559 4680--7037 4894-7293 1529-9405 6287--8630 -1303--5683 5665-7173 3313-841 3455-1015 -1535--9372 -5109--3636 5998-9322 -3286--9413 7894-9163 4065--2699 -7319-9192 -2343-6575 531-1109 8447-7641 8069-772 -2170-3844 3357--8311 -2853--8349 -6299-7949 4571--5556 -9013-3873 7184--5071 -1415--8620 -7029-1212 1632--696 4854-8969 -9414--699 18-1820 -4921--1779 8759-2077 -9995--7624 3577-9912 -3348-1554 -2751-8994 6399-8616 -5047-8457 7600--7348 -6728-3886 3625--7694 -5951--8816 -2585--4574 8696--1333 2185-4086 -3492-1692 3401-3503 7298-5407 779-2079 2857--8970 -4959-4621 406-4279 1847--9450 8460--3777 150-4615 -4562--5587 -3198--2421 -741--5163 5862--8697 9056--7993 -9083-3756 -541--2696 -6161--9883 5293-6333 4444--2827 5938--357 3115--5927 6718--743 -4956--4836 -9180-1934 -6530--7498 5607--3209 -5163-4445 9102--9467 5223-1000-1915 7176--4414 9868-7749 3020--4408 -2600--6460 4989-3998 7921-9034 -614--7976 2331--9410 18-4727 -9061--4371 3116--8548 -950--3156 5157-4202 -9849-9488 2759-8069 2066--8710 -2262--2469 -2303-860 567--5968 5158--8344 -8065--9682 -1678--1159 577--4665 1437-4143 275--2389 6822--4286 649--4027 -7132--6190 2979--3094 -9971-4360 -6754--5686 5326-8756 2033--6509 865--4261 -6422--3421 4604-818 -8367-8893 5282--364 -8052--1074 1740--9127 7518--1148 -1607-6456 3909--9649 4569--9976 -5860-7772 8573--7256 -1779-6214 -9441--4024 1341-9848 7834--9372 -7073--3124 9545--3436 1944--5648 -8046--6905 4255--4006 835--1653 519-1628 -8466--2964 4912-8889 -8535-9527 -8257-809 537-4440 2805--9994 -80--7814 -9787-459 -3529-3932 3123--5512 6740--3790 9390-9193 8632-5675 -3666--3058 5073-7893 -145--7669 7586-7703 -6326-3944 4580-4734 4711-3517 -890--4514 2050-5177 5853-9320 -6508-4920 5966-6671 4390--7373 -9587-7822 2744-217 -4721--5582 7890--2636 -9288--493 8457--9955 -6021--7850 -7177--6258 -5006-7349 -94--3912 -8833--5512 -8115-1622 8614-1743 -1969-9321 -3229--6986 -9535-9284 -3432--3064 9184-6977 -3326-2036 9604--6046 -7488--1658 -6981-5912 957-8362 5106--3548 -7214--4961 -6490--6791 -9712-2420 -7486--1376 -9531-2209 -3082-9247 8213-2368 8324--8390 -7243--796 1303--406 2113--7472 -158--1377 -4527-7567 -770-5682 -9179--9354 -640--9447 -7648--780 9255-6430 -39--626 6825-2270 -6916-9204 9638-2604 5704--6430 -9467--6150 9377-1778 -5112--9146 4944--1947 -7194-9439 3087-4620 8543-8391 8061-2494 -1704-5027 7728--6456 -7780--5551 2472--4033 -2893--2574 -5711-7063 -563--7605 -4661--3394 4437-3315 -2238--6047 3119-4847 8224--6310 -3756--1161 8058-2165 -7422--3291 -3744--5791 4037--6714 -7834--1986 -1670-6141 5613-658 2336--176 -94-9449 4501-9568 -7544-9704 5024--3561 4228--8742 5009-6435 4993-3558 9019-1607 -3902-4374 8962--9592 6309--7322 -5466-5026 -120--1951 6882--5963 2262--7413 -1068-3966 -8492--1990 2594--7398 12--2064 3165--2314 -8714--6154 7577-4971 -4878-8700 -5629-6105 8556--4178 -4998-9543 2134--6766 1606--3201 7845--4370 2876-23 4329-238 4224-8665 7039--5524 -513--7654 4322--3116 2547-8350 304--4866 -534-8019 -4202-5124 5353-433 -8449--588 2105-7125 339-8617 -8698--4496 4907--9383 7639--6879 -2757--9296 -8455--3136 -5421--4385 4543--6962 1568--5320 3752-6001 8140--1299 4550--3476 -182--5828 -9733--150 -923--7203 -9827-6593 -3457--4151 4447-4268 3035--8900 9157-8532 2657--9943 6746--4569 694-4981 5480--182 930--2617 4257--7281 -9585-5721 -1451--3885 2089-7558 -8449--5006 -7710--4599 8047--8266 5731-5065 8326-4736 9334-1804 -4302-3284 -2719-2955 5906-534 2104-2830 126--7034 -2909-4951 3826--4448 843--8552 9340-7990 -6016-1144 1773-9337 -1363--9160 -7433--3703 -6823--9277 8802--5402 1163-8728 2054--4785 1342--7210 -1498-368 -4447-7012 -5605--9892 -1730--9219 -7616--7452 3209--3331 7837--4867 5826-8930 -6433--6926 9504--6134 -3850--8811 -9751-8521 1693--6691 -3541-1547 -3004-5387 -9241--6766 3194--2223 -1469--8970 8632-5078 -2615-8055 9455-296 -292--2373 -5265--8462 -3506-483 3320--3168 -7142-1400 -2675-2227 -5676-2402 1882--8676 1543-8678 -794--2437 -2627--7855 -4715--9000 -9552-1062 7140--286 -4619--4219 7145--6128 1942-2918 5349-6296 8039-8216 -1263--2064 2564-2388 -1201--7698 -3055-9559 4099--9620 7811--8227 1974-6056 -3164-1765 7200-1540 6407--8420 5588--6641 -967-4022 -481-6214 -2484-5556 5136--6638 -9368--4327 1189-3002 -7120-9349 -9151-4193 8232-6457 3303-2509 6114--2764 -7698--3765 -300-6118 5018--6916 7772-360 -3994--6729 1942--4211 4023--3224 -4348--5774 5242-8200 3539--7122 -6962--9373 -1557-1436 4190-4371 6850--6956 2481-7355 102-5721 -8367--2206 6285--2949 1339-8009 8388-712 -9308--7474 -5888-4139 -6084-4225 2199--7632 4570-5081 -9928--4661 -8706--9214 -3985-2607 -4531-3994 -5149-9181 -8890--4946 4695-4948 2938-9178 5811--3903 -1111-9533 2380-5252 -5956-8640 3228-1590 6146-3168 -6508--9503 -3962--7458 5048--9118 -3411-7589 -155--6845 9456--7669 5011--6347 8581--1092 -9274-8055 7962-4744 -6735--6522 7757-6174 -234-2927 -2874--6666 -7990--6697 1834--9048 3008-3500 3856--6789 8876--9944 333--104 -6513--8886 8122--3822 -1667-7829 -1952-1573 6643-5776 945--326 4488-297 1358--3759 -6499--592 9089--757 2014-5973 4923-3584 -9398-386 2499-3726 -4044-8093 311-382 -7053-6078 8654-7508 -2695-7871 3069-5369 6082--4241 -7576--9714 -4103-4023 3160--8029 6198-1701 7433-4070 910-1312 -3538--1006 -6872--4188 -2847-2673 8125-8245 8699--339 -9997--1578 -6134--1797 5190-5048 -8730--3112 5152--9127 1125--2151 2232-608 -4994--8959 4609--2368 -8609--9966 -3557--9738 -7853-40 -7045-1496 -2751--3985 -8019-1773 5103--2718 221--3828 -7658-2964 -6785-7540 -991-7086 -4285-544 -5107-3871 286-6365 9271--9517 -9554-1173 9828--8775 -4256-6240 2060--5620 -6237-9769 -8642--4237 5394--2243 8363--691 6260--4772 -4208-6457 -9901--3857 -5842-1547 3444--3341 18--2724 -7505-3269 -6223--131 2713--332 9243--250 7480--1716 5000--1879 8942-8346 5824--7231 9372-6419 6840--8169 -7371-9935 -7597-1910 -8338--5778 3187--6446 -1051-7910 5340--9592 -9747--1513 8259-3547 4084--3119 -187--9422 7277-36 -559--4164 -1664--6261 -2420-5892 -7858--3586 6061--1443 -8118-9102 -2684-2509 -4754--6914 8609-6045 -4293-3208 9696--7841 -3313-6680 9011-6416 -4662--9163 2601--6306 3236--6316 4462-8325 9057--2224 -1287--5739 1682-5755 -6005-6120 -3723--7428 -5998-9739 9641-2681 -7889-1478 -9484-95 -8675-6057 -4167-5624 -3873-7072 9334--8733 -2022--7866 -639-3692 1550-5435 -3821-2538 -8820--6859 -8547--9776 6037--2163 -295--2740 894--3980 2842--773 9169--1552 6688-5173 3565--5281 1033--9717 -1547--8519 9690-4825 -4659--1570 4749--1438 344--7217 -488--5399 8516-1147 4255--2906 -7750--9685 -2212--1825 -1334-4317 -5972-4437 -8202--6687 -4026-7833 606-9020 1790-95 3166--8917 5672--4763 -8594--252 -1723-2420 -6248--8629 142-1441 8595-1305 1216--1944 -2411-1187 6227--3741 -6980-5800 -5410-401 -914-1584 4315-7569 -8777--8403 -9784--6399 6214--6642 -7834--5217 9294-6579 -5874--8459 -667-3577 9705--387 4831-2427 -9219--5346 2193--7524 8413--942 -2646-3811 1118-3080 -1977--784 1009--5549 8810--1872 -1482--9832 9378-8695 -8451--5222 -5648-1207 429--3999 9213-4560 -2565--5255 -264-6422 3736-8871 -5025--3227 8982--9640 -9344-555 -1912--2896 7030--389 -9338--2467 5581--1720 -6415--6744 -6732-6965 285-611 -1423--656 -2111-9922 -3603-6830 5742-9176 -1762--5686 4590--5769 -5861-4543 -9173-7173 -5537-2712 -7554-4945 -192-1132 1877--7793 8290-7603 -4017-8329 -8244--5622 7253-6953 7401-4832 -810--3178 3983-1736 -707-50 2379--8790 -7143--4766 4956--1189 396--829 -969-3994 5294-6599 -7917--4054 -3552--7366 8093-7588 8246-587 -5939-935 6417-3199 -6082-8476 894-3297 -7659-2877 2908-755 -409--6029 -7219--9163 -2137-3441 -1856--1019 -6829--3708 4451--2413 -4267--9006 4152-1179 -7912-3025 -7927--8691 2377-601 -4855--8822 3237-5373 -2618-5884 -5706--6008 8908--1145 6367--5016 1355-9183 6190-1100 -1145--552 8693--6666 4626-5513 -5895--4725 -3267-5414 -181--9605 -5608--3254 863--4286 -5921--5058 2245-4164 9086--6968 -3337--2420 -9440-3572 -2033--4221 1212-1372 -5205--5702 6730-6762 4745-2450 -960-9634 -9987--5685 6187--817 2911--4925 -6276--8166 3955-3074 9449-7178 -4318-5905 -7705--9645 -524-8941 -2554-8578 -7777-4667 3000--5996 8474-2274 2070-9792 -8488--2832 7961-2628 -5861-6345 -756--1758 -4640--4201 -191--393 -8647--6892 8972-382 -5462--8822 6608-7435 -8481-988 1155-7983 465--2545 7860--3054 -5930-9989 9608--112 -4544-6293 5719--7851 -5148--4559 -913-9442 3987-9215 -2746--157 -4813--8766 -6520--5973 -3155--5857 -6636--4984 -8996-3140 -338-9202 7456--7733 -5399-5055 -8331-5300 4252--1323 -4092-7109 -3519-5927 -1195-7644 6104-886 -4856-7664 -3858-2636 3159--9526 3582--380 5623--912 8122--6782 -9811-4915 980--9795 9874-4297 5736--4377 782--2219 9266--4524 -3672-9186 -920--1952 3099-7127 -2746-271 5948-1268 -2428--5012 6077-4605 -338--9565 6869--393 -8439-960 -2831-4420 -6805-4756 2397--8311 -2472--6785 -6939-2654 5553--2578 -5848--1914 -1580-8791 -5264-4167 2766--1574 993--7056 -5250-6906 7545--589 970-9040 -8025--8951 -4371-4339 1031--6583 -6975-3074 -7955-8672 -8502-4248 -8027--8939 -3963-1749 644-135 -9937-5047 -6045--8074 -4673--2923 -8067--4932 -7267--8110 -8206--731 -1020--7448 3266-751 -3463--8096 -4635--5270 -5826--519 -9206-8795 6008--5537 -1058-3810 7582--4272 -1834--6501 7070--9052 -1726--7024 -3099--873 -7523-8196 -3206--8972 7050--2609 4801-6932 -8848--7601 409--7582 1441-6485 1405-2499 7192--2436 3613-9139 -8249--5005 7072--43 6664--7299 -8475-5050 -117-1642 9164--7361 -4412-1287 -5959--2267 5653-8866 8316--6196 21--6016 6894-8631 2292--91 -3543-9480 900-7676 4306-1644 3782--2593 1943-7787 -2023--3650 -5807--5106 -2745--8640 -1900--447 2010-9586 -4257--7842 -5970--1969 -327-7650 8116-1837 -7712--7091 2885--6516 3225--2776 -3884--5878 9553--7507 4414-106 -9147--4047 2681--1278 -8704--7723 -109--5915 6632--5295 -5527--7319 1795-9483 -2011--7573 2901--9479 -1946--4259 -6341--2919 5698-1785 3484-9289 -4723-4212 -8970-5825 3748-3205 4941-2694 3366-75 -5829-4767 -507--6609 -7439-6163 -6506--8202 242-8368 7574--6209 -1492--4176 507-4705 9527-8229 9781--836 7304-7172 4040-1394 -7826--3104 2678-8235 4874-2667 645-9261 -1924-9981 227-8912 -4402--9217 -8385-5683 7662-236 7070--7431 7011--9754 3607-5830 7942--9159 4923-1543 -5143-600 1137--1807 -9705-1541 5509-8516 -9261-6040 1324-8134 9312-7666 9193-6172 -4234--1718 -4545--776 -463--8993 -9315--4509 -7719--6912 -3335--7392 -3730-5562 -9772--9753 -5067-5034 1026--8613 -9685--8066 3774-998 -7015-563 -6087-4346 5206--3380 6247-8840 -3249-1600 -4230--3388 1220-3482 -3008-840 -8037-7384 -3992-4934 -548--1393 -4860-8836 126-6432 -4740-3747 6891--8043 8223--2290 5924--6955 -4960--7379 -9210--6682 2395--1062 -1900-181 -5993--781 -9693-6042 9015-9538 -9085-9337 9205--2180 -7175-9398 -9663-1141 -3967-4316 -9484-893 1533--7379 -4634-2778 -8206--2230 -4490-8787 -7147-6472 9110-6523 -948--7350 3013--8359 9132-811 4903--4128 5051-8158 -6148--8968 6085-6250 -9337-6379 -879-2264 839-4753 2102-6183 -1989-2632 9738--9333 -2729--8346 -7062--9450 -9280--7830 -1098-1651 8482--7506 1679-5973 -2233--5978 1807--3354 -1871--6818 -8910--785 -2260--8450 -5707-5729 -2308-6405 3896-3780 7354-6243 2454--5614 295-403 2031--7855 -4347-3870 -4999--4933 -8915--369 4929--6803 7289--2157 7051--3124 3970--3192 -6550--9538 9415-2884 -3626--8683 -5450--4810 -7761--4151 -5160-5448 5856--6805 5795--1109 4178-3419 -2495-5607 5710-4240 5240--9597 7515-3178 -8146--2057 -5434--7267 -8113--6771 -7659--2873 -5688-1727 -5345--7376 -7097-8076 -3104-3916 -9205--1320 -400-8108 9297-8999 -5807-5149 1752-1330 -8575--4107 -9509--8547 -5936-3809 7432-6251 6085-4697 -3635-1204 -3026--3302 3329--1563 -8228--550 -6663--3709 -7729-5957 772--7490 -1967-3845 -2430--3519 -7910-8003 -9676--3962 -6137--6049 9100--635 7861--8997 833-3119 -7160-9521 -7456--9790 -8590--1583 -8538-1358 2735--4227 -3894--7889 4329-2215 -8945--4874 -5866-1000--7981 -6263-9342 -9586-3522 1324--3259 8361-9328 -6335-5610 -8450--92 -264-1564 -866--6008 8094--1525 -9099--3758 299-4136 2544--7296 437-9962 -562-1526 -4788-2478 -7519--7883 4893--4478 9827--649 2665-6287 -402--433 2048--9013 -8190--4485 1948-311 -6150--9235 -309-4787 -4238-2831 -2225-8249 -7413-8853 199-6781 -8544--1695 -4782-6228 3712-9420 -733--2359 4536-9535 -4022-6684 9337-1053 4146--8486 -8986--8081 -9394--7907 -3242--3492 8707--8730 -8078--2969 -12-9136 -7684-3616 -2227-677 -4755--5332 743-8683 -1298--78 4931-2559 -7155-8485 -4633--5632 1408--8642 1195--1716 7996-5709 -4215-5076 2397--4271 -3057--1840 -8366--3936 -3643--7255 6914--2554 -367--8393 -4901-9890 9111-6248 -7602-6530 9175--8359 -2697--2347 -515--833 9845--7343 -3807-6655 -5292--3853 6709--8427 9242--8706 3861--6182 9104-6098 -4908-2943 -1474-9754 94-4741 -3452--7719 -2030--8246 2722-9148 -2819--1583 7978--1505 1162-4949 -5915-5250 -4621-1562 -7096--3698 -1644-8895 -6103-6903 4521-2789 9283-1378 -9856-7014 -3538-1206 -1774--6035 5552-1461 -5975--795 1968-6770 -2705--64 -6886-2418 8329-137 -4895--6668 -9262--5523 36-7940 8943--1165 -4541-3428 3610--6049 -7314-47 2846--3725 9364--9742 -7758-2258 -7733--5587 -5935-7187 1478-5915 -9959-5197 1171--8425 6561--4886 2721-248 3279--2846 4098-2459 3341--560 1755-4443 905--6571 8486-4078 -7049--3205 4113--9075 6406-9792 -1958--9900 4501--7103 -4267-2360 -8787-6323 1250--7666 3363-987 7970-7272 -5361-4234 761-9579 -5464--6203 4939--3545 -1182-343 8165-8115 442-6745 303--6771 5172-8797 5743--9434 8188-8729 6674-5065 -7151--7841 -9305-9529 -7896--2329 8157-7098 7161--1901 4309--4559 928-1191 -2419-1380 -4879-3371 2646--4526 -1325-6475 -360-1198 -3413-5420 135-9038 8750--2661 -9097-1080 1668--9439 9238--3138 5603--1963 -7715--102 4502--8262 -8220--6494 1758-9564 -9794--7929 -878--5931 1820--2570 4224--2898 4306--2311 1389--6837 -5947-6544 -4822--1575 6700-6948 6510--6710 1451--8943 2748-151 -8079--7050 -3173-1797 5356--1045 8815-3706 -6460-4294 -1213-2045 -5690--3824 7824-7130 3584-7478 4977--2010 9408--3026 -5803--375 -58--7942 -4495--4652 -3297-5735 -3907-9472 4379--6655 7413-1260 5838--7140 -6061-3379 3756-1926 1026--3557 4111-275 3690--3847 10-4331 3317--5729 5587-9945 3591--5266 5558--4094 5741-4217 6204-1771 582-8355 -344-9828 1776--943 -8476-9406 -2056-2887 8850--9861 -7285--4313 2555--4659 4899-4232 -1260-3061 654-6111 2351--8071 -9637-9660 -8497-5676 -3829-9043 -9315--347 -3018-6269 7228--2749 1375--3334 -3779--3079 -6801-9722 8877-9341 -8665-2431 5914--8321 -3489-4634 -7294-2391 1493-214 7274-6767 -6051--1427 -8589-6474 3675--3180 9414-7289 -8858-4871 -8215--5393 -2627--7572 1607--9889 -4270-9238 4805--99 4740--5878 -8188--4606 -574-9227 5836-9500 -5501-7294 4260--1349 5318-8204 -9990--2980 9339-2776 3127--1131 9791--1141 -288-1275 7791-9899 -5056--4261 -755--893 -1677-8075 6339--4028 -7582--7656 3029-6036 3665--8291 -3517-4951 3410-3975 -6349--5306 8897--5867 -5207--9902 781--8681 -8602--6382 1212--823 -2486-3387 4978--1057 -9310--1308 6433--6595 3352-3811 -8613--5736 -5852-3598 -5565-8741 -5842--870 1972--6683 -3639--4721 -1470--5159 -7597-8071 2203-1778 5276-585 5143-6895 -6635-1914 -2592-4087 -4670--2901 -8301-5905 9110-737 8986-9582 -7975-1078 4589--5093 -7966--9159 4314-7042 -4517--5258 4710-9685 -3459--4463 3288-3929 -5902--9501 -4899--7245 9383--7554 1483-4833 4313-9468 5949-5362 -8961--531 -8532--9959 3946-9625 -1350-8258 9728--8890 5328-5530 -9433-5785 -1731--3802 -7915--4934 -9435-5168 3361--6360 7783--5316 4591--5509 6325--7883 1182--942 5829--513 9837--9478 -636--5655 3114--4828 9105-6788 2025--464 4374--2421 1460--1167 1356-5964 -1139--7525 4372-7018 -166-7266 8384--9457 -9785--8564 -8917-306 7309--7082 9564--2221 7027-6176 -1829-9089 2430-5623 2234--4650 -4248--657 2407--5739 -423-6366 9185-8063 -9072-9137 6302-7269 8389-7974 513-1616 3737-6673 4388-5190 4093-3291 5214-2100 -5101-1354 -284--1126 -898--3914 -5655-8091 -2009-468 -8280-1655 4208-120 219--8974 -1757-4841 -4230-2802 3306--1755 -4976--8469 7237-4091 1137-2747 -3269-5280 -4932-9653 4420--7776 -9642-4201 -5069-3322 6713-1761 -790--1633 1286--720 -1710--9436 7721--185 -9984-532 9333--8291 -4642-38 -6298--6545 -8685--1076 -8844-1765 9096-5662 -6820--6837 -8325-4109 -9098-1209 4344-9063 8233-4910 -3148--4320 562--7557 4495--1830 -3983--4906 8360--9456 -9825--3877 -1975-2639 4533-2386 5337-4193 1293--7432 -2259-2006 -8237--2195 -5826-7661 -3739--3312 -4443-2334 3671--3335 -4629-8027 -2334--1065 9309-3676 1844--2242 414-1294 -3449-8163 4318-7627 -201--5241 -194--1222 -3186--2295 -3896-7896 -9617-5028 6389-6543 -220--7015 -119--9579 -8608--5405 5064-5009 -4522-2293 -7512-5530 4573--4816 -8242--646 -5003--6622 -9823--4813 -6924-167 5848--1347 -2063--1386 -3825-6503 -9870--1381 -4979--7639 5548-4047 7245--2115 4856--2666 7312-3521 -9426-5606 -6075-4282 1518--7521 7357--2717 -2151-8741 2081-4419 -4091-6625 7389--687 -5984--7284 996--1781 -2670-6015 24-7447 6343--1004 5917--806 -4849-5808 4516--8904 -8742-4847 -7044-3202 -9988--5961 4401-1151 -827-5193 -5986-3319 -6118-2845 7183--151 -7154--2153 3378--37 -700-1044 8467-4178 2963-4752 -8885--9140 -5787--1338 -681-2416 3442--6673 -9977--7185 -1931-8248 -4336-8449 470-5725 -1613-7312 9991--1625 -1789--9374 -6921--8685 6546--3077 9139--5051 -1171-5142 7539--7906 7116--5742 -5625--3485 -8289--2166 -285-1522 -1306--6185 -7373-209 3664-4677 -1695--2294 90-967 8422-8007 4985-6487 -850--2949 -6393-7789 -2184-952 4108--6556 -1370--6489 -4162-9722 -6584--4326 -4163-1700 2379-2619 3873-571 -6793--5592 8116--2907 -6373--5442 -2464-1976 -6981-1322 3563--5592 -4515-2798 9290--1907 -1352-8695 -2226-912 -8071-561 -7667-9192 900-876 -7975-6989 -8603-3757 -5322-3819 -2058--7491 -1266--8029 8596-2924 -4452--4260 2444-1174 -9473--7316 -1844-199 -8352--8032 3797--8385 -1037--2177 6995--5211 8965-3853 8857--9734 1675-1679 -5929--4151 2674-8121 3195-9234 -5408--1417 4147--1162 3544--7381 4885--9213 5468--1611 -8068--4591 -9920--5006 1060-9997 -9727--8157 -9481-6628 -2840--3939 1156--4597 603--7679 910-8050 1095--2541 4044--1164 -499--4798 -966--6932 -7693-581 -260-9648 -9343--5288 -4951-8039 9010--2887 2371--9140 -9221-3009 -9534-364 7454--2600 -7767-7124 -8167-1477 -5332-788 6660--5436 -4340-7964 -1222--2118 -7923--3358 -7429--1924 7853--8743 -2774--2934 7251-829 -9072-9685 969--8395 392--1503 -5416--5917 9036--2536 7396--8899 -348-862 -8952-8742 -7914--9428 -8565--788 4225--1489 -6689-1893 5245-4966 5889--1672 9081--6706 2198--8091 -5366-7024 598-3075 -7845--3606 7231--590 6947-828 -660--2368 7371-814 8717-795 -9552--752 -3067--6284 7700--3867 -1838-122 -6312--4728 -4553-1082 -823-8177 -2389--6149 230--2576 6654--4262 9462-4493 2867-7893 9697-6660 -6157-3737 5345--2170 5443-2379 8031-2989 5837--598 9126--2850 -4794-8363 9815--7140 -3779-7430 -2161-329 7471--2329 -1636--5342 -9964-7626 -1674--6878 1535-5753 -6562-7976 3737-4652 -3359-23 7342--5586 865-4977 -4412--5832 -90-1093 -8821--3858 -1506-4286 3489-3522 -9756--661 -9365-5124 9061-8824 -159-7985 7618-4830 7303-2130 4436--5382 -7990--7620 6983--8282 -7435-679 8352-3073 846-5161 7451-2046 3793-1553 -3155-7287 -7737-2945 1907-6110 5044-5782 7339-8159 934-6551 -5657--6869 4897-8275 -5536--6276 -9661--7410 3817-7131 -3685-7830 9294-3950 6604-6742 -9329-350 -628-9641 -6143-4450 -5099-6930 -7354--6219 8998-2267 -9349--6659 -448--8123 -1905-7893 1377-4642 7631--843 4496-5249 2162--331 -3666--2687 -6275-4594 -5847--1314 -1383-4529 -5768-2005 -2577--5690 3827-500 1506-9912 5083-2725 -4496-6902 -1594-2928 8102--7668 7941--4795 -3418--7013 7583-1842 -7312-1238 -2596-9642 -696-3866 5901--9636 -1265--3320 564--3956 2030--5715 2095--6899 5195--4319 7065-7358 -1008--4247 9564-4581 -9364--8661 5174--4146 9187--2543 542-3846 3893--274 676--953 -818-7127 -3183--5579 7546-5284 -3164--9099 5302-7366 -6410-2905 -8314--4747 -2603-5220 -1431-6875 6757--7506 1574-5545 -6094--704 -8900--4429 8579--9453 -3368-5043 5370--2208 6126--1184 -4034-6496 8868-6598 -1068--670 -3511-9450 -2532-8187 8663--9476 4283-3751 4977-8083 -4163-5977 -9779-8762 9203--1723 672-178 5193--1588 -133-7997 8484-9860 1126-2714 -8062--6726 3802--3923 -4650-2463 -9067-1938 -9576--5770 3427--2581 -2418--4899 -4976-9724 6218-1965 1579-1787 7590-8896 -5417--3944 1888--3551 -6531-1051 5971--5786 -698-8235 -7864-2754 8854-716 -3628-2786 9350--3891 -4521-7578 2945--5059 -8530--2224 -5566-2745 2376-2186 -8785-2901 -8197--1275 -3045--6645 -5703-4878 8464--3831 9690-3042 -6042--5995 -2704--2658 1625-2249 -6423--6053 486--4469 -8071--7574 -1255-9959 6527--304 -6055--9396 9074-7752 -5697-8002 -505-3293 4944-6294 1921--5163 -1103-498 547-8348 1140--3530 -796-5571 -46--9094 -2896--439 -4523-6262 5136-4276 -596--2481 -7046--7366 -4739-3706 6435--1013 8235-8981 -4818--2065 5039-5102 -4872-3495 -2083-615 -8960--4548 2930--9926 7551-2099 -2146-7750 9517--4033 -5317--3781 9959--5293 9720-2700 -1197-9114 -2526-4454 -7573--5696 7765--2722 5375--3157 -9350-837 -931-493 1518-9216 9660-1614 -7330-5514 -667--5731 -1711-8016 6777--4711 9125-2172 3562-8332 7087-8639 -2914-8932 -2848--77 -1283--2359 -5990-5461 -5789--4662 -7927-7563 4424-8598 -3833-1895 1366-3492 9798-7291 880--5147 8098-3816 7328-2772 9787--3473 -5840--1921 6383--835 3328-1374 8447--9201 9528--1400 -8659--7896 9057--6213 -1494--3540 5897-7052 9131-7118 -9176-5242 -9273--7743 -5151-3249 -9684--3506 -6523-5157 5482--7355 -9710--2775 -183-7543 6994--1633 3101-2265 -5516--6856 8797-1066 -3885--8109 1713-7795 2447--7175 852-2698 5144--9917 7597-8613 -4559-1505 -4274--3379 -1390--8945 5878--5071 -569--3213 -1160-6786 3066-2959 3161-7163 921--576 -6947-307 -984-7614 -5636-1283 -5865--4581 -4581--9391 6570--5942 -9438--7366 -764-4415 7312-2735 -435-6882 -8428--1099 6855-9777 1854-6851 8632--1790 211--358 -4774-8198 4922--4162 -2853-9012 921--3915 3586--3674 -3681-890 614-5551 -8901--3557 -495--7408 -1379-3836 9918-9975 -3611-9999 -2151-3022 -4201--1187 5822--2145 -9923-9051 2098--2610 5598--3371 -3890-8392 7162--5402 6197--8774 4420-1036 2666--4799 7222--6106 -425-9241 -402--1966 -6496--4239 -9718--3612 -3378--4983 -9693-2448 -4016-9117 -2363--5993 5338--7262 -5323--4751 -8503--9331 -3718-9635 6130--661 -5034--1650 2705-7821 -5735-3045 -7575-6606 7186--886 1439--9189 5449--2784 5808--8385 -2658--1639 1336--9146 -3271-645 9345-5858 2736-1851 -7234--1032 -3974-3254 2543-4423 -8656-9431 9040--8660 7204--4857 -3713--3368 -8391-9194 -31-9772 6811-4652 -3260--4228 -4087--4861 -7067--1987 -1108-2712 -4683-7654 -8468--8191 4223--7600 -646--667 -1546--1763 5707-6133 -644--6020 -7008--2729 -1078-9229 -5265--60 8913--7236 584-3941 -873--2010 7802-7708 1717-4253 2349-5062 4247-8060 -8466-7665 -9824--4845 -3021-6375 4957--1832 4467-9906 -1461--5051 -5298--1284 -4094-7948 5277-4263 7616--5582 -1777-7603 -5767-6656 -9274-2798 2485--1920 -6242-9656 -6037-1000--2084 6213--4474 4495--6515 4255-8055 2897--6829 -2533--8647 3604--8714 -2822--1563 -7169--3761 165--8950 -3906-4476 -4586-7058 -936--1490 -6396--4383 -9607--839 -1665-7788 -1191-1818 4697--1551 3535--1216 -1608-7196 -810-9956 -6079-2129 9150--4184 -7042--6983 6857-7309 -3606--2066 6575--314 -4204-1030 -9460-8487 -1798--5194 -9033-7484 -2477-3419 -4683-7429 6083-667 -7198--2055 -486--587 433-6216 -8666-9567 4437-5412 -8398--5800 8118--2887 -9773-1998 -9152--6835 8599-2220 -8923--3127 -289-1820 -8988--1696 7927--7525 8478--9077 -4804-5659 3133-5814 -7203-6024 2407-3314 -3491--6023 -5556--6392 3318-330 709--799 249--2884 6058--7969 -4030-7909 -5110--6113 -1878--9658 6791--3251 6093-8684 5270--5332 5709-3897 -5889--1505 -4589-934 -7480--4877 -8390--7261 4818-5593 1013-9919 9923-9178 3747-8587 -3590-7208 6777--9183 -9649--7905 -4330-9801 6686-5204 6731--8323 -8034-1533 -211--9647 4373-3107 904-531 -2279-6288 5695-1816 -9059-6981 -3519--7404 -8157--1705 4729--3172 -2316-3195 1931--8233 1378--9199 -1339-3536 -3193-4015 -9705-6351 7105-7252 6729-9383 -3157-2276 -1657--7311 -6751-463 9091--3829 -9663-5413 -9997--8831 3353-479 8247--3247 -6982--3116 -8644-931 -3884--3181 -1298--1931 8461-8074 753--8885 61-646 609-5557 8042-4489 -1934-762 1638-4763 -71--9300 -5932--2607 4767--649 -7930-2857 -6772-7001 7737-4520 -3119--4925 8914--44 8851-1599 1958--3732 -7679--8975 3304--5283 -6913--6506 2766-2521 -4207--8222 -7776--4514 349-4457 -2986--8341 8034-5244 9650--88 5754--2658 -141--9200 -1954-5304 7145--3857 -2704-1591 4027--5780 1908--2781 -4966--4316 7965-4360 8615--2895 -1622-1334 1588-3312 7643--5243 -8314--5669 8600-5197 -8749-3286 -3708-8249 651-893 -4436-3796 8596--2398 2376-8118 -2861--881 -2038-7197 -8178--9769 -8818--1484 5439--2195 778-6605 -3129-2441 7192--5544 8330-6190 -5375-1545 1035-3693 3882--6216 -5342-5634 -6026--373 -112--2319 6100--8643 -4028--2355 723--2681 -5983--9071 5062-6645 -6329--9153 2631--4129 -7555-9065 -561--9414 -3685--8669 -5713--521 544--6067 -9063-4524 -769-2071 -6548-3752 -2229--8811 1794-7372 8846--879 5340-7295 8231--6097 -6946--9218 -344-6339 -7403-5579 -5449-5413 -8175-7513 -1535--4757 1760--1373 -1730-5343 6195--4252 9620-4922 -7766-7885 -9284--9740 3009-2008 -4106--3221 4197-4069 -3641-947 -9737-7859 -1437--5000 -7482--868 -9693-4995 4131-2836 1009-2197 -7800--9855 -6154-8420 -5506--3802 -8091-2085 5255--5298 -6527--5937 -4729--324 -4078-6401 -4108--4458 -19-5189 -221--9535 -6258-992 -2952--9489 -7374-9593 -8484--3576 -738--6117 7807--1550 9570-100 2201--9103 -798-4367 -89--7118 1114--6142 2221--8383 2126-809 -7505-5628 249-3376 -8359--9826 -1791-4168 787--5320 4297-3277 -9830-9774 -4250-2987 -6378-3238 6299-7763 5006--4903 1721-3743 -1248-7363 -4091--8668 8075-3930 -8977-2672 -6692--4456 -846-3770 -9273-2399 3273--6948 -5831-4931 56--8451 4629--3637 949--7960 -5153-9657 7373-2638 -1921-9099 5613-6638 -2936--2808 6208-5770 9160-2077 6240-5374 6008--6673 2990-2064 5092-3332 -6696--3743 5156-5952 -9006-3729 4997--2161 -9440-1493 6148--3772 2926--9863 -9564--2867 -3831--8922 3682-5697 -6768-3903 -3550--3995 -154-2300 5012-5229 -1967-533 6655-2519 -1267-7896 8339-4850 -3900-2536 3024-2891 5844-2533 -7221--3848 -145-4071 5285-3189 -5445-1142 8616--5595 -7543--4938 -421-927 -2989-4911 2329--2518 -4224-9735 -7388-3850 1800-975 -6325-9473 4496-6922 -329-7420 -4675--3154 2979-3038 -811--4212 4209--7727 -5988--8288 7708--2711 3280-3495 1729-9363 4183-2483 -5382-2396 4778--2830 -102--3574 -1816-6335 -8504--9300 6319-4392 -1539--6727 -2748--1441 1840--5055 -6443--6485 4426-6229 6380--638 -2357-8721 4165-7614 -1823-6611 4277-4168 -7123-282 -6987--9965 8319--6371 8083--9801 -4168--5860 -1049--7003 -2218-1941 -923-9731 151--5275 2164-5743 3968-2171 6017--5402 -1741--9046 6118--327 -989--8141 1710-8799 -7555-3902 260--5175 -9595--4485 -4512--9014 -3015--3904 -5196-1837 -4540-4100 3994-9193 9974--9669 7516-8394 -5073--5566 8728-5143 9445-5987 -2650--957 7211--4891 -3638--4176 -335--430 -7383--5963 -3620-2001 -4727--7035 -3394-9820 7869--3158 -7225--4070 -5154--6183 -9192--8773 1031--1701 -2511--7892 5987-7203 9003--5815 9405-9557 1408-6199 -9782--8687 6375-7550 -8262-5996 4099-460 -6518-6429 -731--1132 -1729-6908 -1139-2403 5811--6213 8315-7012 -3346--4709 -6172-4529 -2865--2037 5889-5520 -6695-8551 3957-7331 9556-5573 -4806-7667 -3309--3358 -3023--1773 -5992--3989 -7197-6328 6348-856 -8139-5263 -7365-6653 6254-6515 -9359--6665 -6198-220 -7870--6235 9842--6403 4570--9849 1131-3590 -4781--271 -7233-1487 -3823-789 2219-9562 4803--2866 4743-6659 -740-1889 9626-9227 1432--7406 -5455-6968 -5335--9942 2957-7634 7274--9811 -5239--9463 8625-6840 -9296--9303 6940-2824 1073--7123 8025-2086 -7377-4327 -6422-5830 -5857-9626 -2236--4443 -756--4611 4158-1307 47--3146 1533--2202 2728-1405 -8034-877 -8337--873 -4601--8352 -5982-3070 -9180-9267 1720-4620 7551--8882 7845--6785 6654-7742 2935--7733 1020-2899 5746--8509 -2394-2966 4289-3087 -6843-4057 -382-7978 -8521-6719 2204--5768 -8159--8450 813--260 3177-10000 3938-8154 4606-3343 -5957-8308 -3182-5766 -4428--5239 455-4433 5064-8821 -553--484 -2992--8251 5082-3742 9859--7346 -7440--5395 -6088-1617 5871-3845 5521--1703 2594-7648 7430--8322 -8306--3553 1646-3823 -4603-54 -235-5772 -934--4195 2406-1621 -1461-8289 9824--4068 207--2842 -5913-7482 8964-5407 -2837--9171 24-6439 -5748--9160 2742-7066 1501--1366 -4822--1168 1673--8734 -1716-5036 -1566--1082 9855--2349 5163-4455 7954--1060 -9490--2744 5659-8757 9342-4883 2506-2365 8499-6654 3023-1283 -5155-7556 -1946--6091 -1508--8436 6944-4998 3498-3858 5172--7204 5211-9580 9353-4866 -9369--5400 -8657-7198 -3130--1516 -7574--2230 1570--6525 -9971-5193 6192--3394 -3381--7900 3232--2284 481--6893 7504--9873 7550--1733 586--8569 1479--2296 -649-5566 -1713--7161 -4815-2449 -6195--5724 5580-8997 -2158-2899 -7516--6815 -8343--4108 -9910--7346 9618--3215 7708-3327 -6830--308 9042-4697 4288--5375 -3540-7666 4099-1678 -7676-3696 3164--758 -853--4638 2165--6601 5611-225 -3496--5082 -8924-5422 838-4214 -126--5905 -7992--7707 6225-7131 3667-4898 -1195--8672 -7870--7336 8747-7884 5103-3579 2676-8448 6946--5291 -4791--2961 -988--7275 1746-9579 5958-1582 8264-4118 -6017--5599 -8804--4767 3389--1934 8247-9190 -3258-1410 647-3916 5953-8087 895--586 -9282-5270 68--108 6304-5257 4137-5112 4672-2218 4581--7147 -5011-6455 -6126-1467 5566--4872 3772--3633 -224-7001 1012-3344 -4340--7135 -9742--6495 6773--8960 6009-6688 473--3859 7513--40 7520-203 -5341--5715 9285--8750 3963-6453 1260-7781 -3331--3693 -3617--543 8238--2538 1198-9087 1052-8064 9301--6883 7750--3260 7422--4277 9560-9629 9918-4400 3943--4314 -8638-8305 7667--7557 -5136-7379 -753-7288 7654--4439 -4947-2246 -7671--3054 6447--9882 8508--5417 73-3596 -1044--1058 7463-3913 -417--645 1406-2599 8002-8240 3377-4075 8413--8464 -3006-3039 -6493-7963 -8096--1988 -267--8073 5037-6183 -6565--5045 5742--6459 9507-9004 2878-5806 -7143--7857 -2384-6199 -191-7633 6695--8940 637--7237 -6361-4398 -680-6958 7160--4389 1842-5369 -4774-2513 8374-649 765-1907 9142--2678 -8483-1527 5237-8618 -3231-6669 -5887-5648 4291-2788 8115-5246 342--2022 335--3830 5871-8163 5585--6152 -6293--2201 -3898-4816 4442-5151 541-1959 8517-3899 -4553--9476 -3094-139 -7873-9768 1864-4677 9112--2593 -6523--3394 1901-551 -810-5555 1415--2064 8993-4904 -6650-1878 -2856--8858 2363--4513 -9594-9659 -286-5171 -1573-6954 113-1912 -8391-3352 -5453-1464 -8492--8023 8668--374 -7255-6667 2443--3589 -1763-1449 -6435--8529 1380--4611 -8-625 3939--5754 -6954-8094 7654--6661 -538-8734 3499-8687 6063-1887 9096-9298 -1307-8124 -9080-6613 3775--7371 3244--9187 5211-9264 907-6062 -9292-1626 1623-9871 5276--7115 -6965--9667 5528--6032 -4936-104 8699-6267 5451-440 -5487-5415 1174--6296 4221-4964 689--2781 5631--4778 -1841-390 2966-6889 6464-6554 -2595--9544 -6832-8013 -3211-9494 -1562-2342 -7440--1356 -8277-2956 -9966--92 8104--2489 9918--5204 9295-5103 4962-9809 5655-8514 4680-2341 -8221--4764 3135-5859 -1608--9159 -4521--8110 3995--7991 -2739-9462 -4133-7476 -9624--2634 -3374-5583 -3071-1323 9469-269 8260--8932 -8033-7979 -5353--8782 1388--5346 -6977--4545 -4447--2712 8045--7365 5758--1538 6998-2072 1417-622 286-4047 9576-997 -667--9020 -4640-795 -8004--7794 9450--3299 -6101--7839 -4094--7201 -5458--8852 -2415--2528 -7628-14 -761--6961 -5449-9405 4776--2158 6983-1871 8845-1383 6030--3294 3603--688 -9637-7731 -9147-6364 -5116-4229 -6545--7818 -3167--6454 -1258-5111 5591-6960 1231-1096 6952--162 4294-2109 5112--4018 310-3109 -9320-8440 7635--3118 8249--552 -1598-9747 629-23 273--594 972--8184 -2758--2078 8027-8872 -9548--4257 -4382-3539 -9373--5450 3673--1070 -5742--8342 3555-356 -7883--8697 509-2861 -3498-4375 3740--3858 -1960-4627 6794-1995 9160-9124 7393-1901 -3053--4598 -8156--5891 -3484-5317 -5654--8693 4498-144 159--5888 3853-6181 -8546-8205 3682-7894 -1629--5150 -609--2689 -5538-4291 -541-4101 -2830--110 3--4119 9868--4961 -5166--1902 -248--9730 -609--3756 -7937--3228 803--1799 -2638--1695 -1425-5381 4830--4595 -2112-634 -6936-9284 -2000-6765 -2472-2659 -2699--2078 -3987-6630 -174--6884 9103-7928 7495-277 -8561-3783 -4981--9277 8147-1596 -901-8006 -8562--7785 9404-6621 7478-4299 4808--4089 -3369--9237 -1972--8707 -8387--4788 3614--5829 -7074-1841 6065-9227 -4343--2368 -8299--4783 -8404-7276 3014-2804 9607-1151 -5785-6290 5370-4301 1175--1456 -8427--8509 -8604--3563 1076-8587 -9205--8073 7338--3081 -8391-5125 -5393--159 -9777-3456 3855-3776 2467--3072 39-3010 -1299--5376 -3388--1885 5086--245 4472-9793 7262-4325 2572--5809 9642-7121 -4141-1507 397-973 9089-814 -3176-4923 815-2839 6003-2979 -8959--7058 8542-3312 -3497--2577 -8503--734 9320--2035 -8365--8121 5440-9219 -7032--7107 -793--4217 3729--6820 -3213--7025 -3655-1775 859--5817 1291--1114 -4186-9194 4651-238 -7973--5167 3220--1382 -8012--8465 -2138--8008 -8585--7913 -2531--8245 2665-3385 8991-2430 3552-3687 8405--3169 -755--2731 -7373--7203 878--4706 3384-7812 8997-3359 -8789-6091 793--1665 7746--3707 -2653-4479 481-5369 -3146--3821 -2963--3500 4133--6729 -6829-5628 8466-5619 4832--4546 7243-3586 5045-2032 -5807--6370 -6781--9703 -6291-6821 1038-5742 9177--3890 -1414-3126 -9388--4354 -2626-1789 9177-6888 -3894--7807 4102-2820 -1898--9613 4775-7768 -3557--4947 -2954--3697 6919--2164 4443-8209 -1167--1247 -5898-4240 4639--4384 438-7370 -1415-3143 -6495-5778 -5007-1771 -3204-9622 -2585--1694 -8800--1213 -3964--510 6918--1023 9141-1417 1252-8872 -3088--7135 2251--5809 6984--459 1488--8469 5818-8575 -3621-8859 -9802-348 -6964-2689 7804-6611 5293-4564 1545-2857 222-1373 -2141--2246 -2390--1032 -6368--1312 5318--8934 -4532--7687 -2330-5120 4711-1098 -6972--610 9928-4342 -5833-9802 6026--4996 -2110--4343 -4181--507 -6619--4390 -5438--7648 -5401-3803 -7580-7572 -1768-7948 9242-8173 2237--3549 -9520-9456 3920-1166 -47-6687 -3905-3859 90-7310 3072-1000-6837 -6750--7213 8741-4356 -78-1628 3515-4064 -9205-9122 -7385--5795 4903--1811 -9461-5925 1354-1193 5344-8500 7170--4922 4687--1003 -6119--4857 3842--751 6859-9229 1862--2050 -2273--4114 -1146-1354 -6171--9887 -4602-3000 1032--8678 5807-9970 -1094--4921 6720--6114 4099-501 -5323--5516 96--8331 -605--9264 -1683-7363 -5845--4078 6486--4425 -889-4703 7648-4818 8433-6250 -6128-6157 -7124-8942 -7270-9441 -4799-4338 -4941-7226 -1273-9426 4534--225 257--6092 2481-9854 -4507--3288 5424-9763 -7481-7248 6037-3597 -6018-1188 -4409-7277 -2305-2135 5987-3832 -8607-2018 -6134-2863 3625--2026 -5925-4682 -8109-5561 -7603--4247 -3207-9802 -6996-8591 6796-3409 -9954-369 -7449-8643 -497--121 -4532--5449 -4701--9593 8118-9968 -1444-5447 -39-2650 -178-6216 -4196-5891 8752-5331 8661-2898 264--9250 8339-7539 -5469--475 -3398--1952 -9137--6634 4821--4550 -4639--8756 8013-3275 -853-927 7177--7385 3700-5731 -3275--4873 -3680-4002 -5192--5818 -1981--2807 3678--531 3549--5132 -1450--459 1995-864 -54-1823 -8747-3380 2485--6036 -1356--2399 822-2773 -6296-2756 6687--4892 -7975-4572 5911--5094 4726--9670 -7126--3592 7135-2248 -1638--8703 -8226-5762 7342--5509 54-597 -2526--4301 4272--3025 -9424--6147 9227-7635 -5056-9225 3985-7839 1867-3866 6936--4833 155--4735 2738--8400 -763--5783 6741-8231 9977--3101 -8217-8316 9919-3750 3794--26 900-6181 -3209--7773 -4310-3860 -6559-3822 514--3534 7963--9146 -6649--8608 -9033--1819 -783-1558 8332--6980 9582--7679 -4205--4902 6825--2422 151-4615 -1400-3152 -8518-3549 -8242--1646 8793-2029 -4328--31 -1596--7712 2098-7768 -3834--9596 -6662--7410 -7347-2072 9991-1907 1945--6701 -8919--2543 -1378-9921 1463--8712 847-6219 -5873--8134 1927--747 -4316-7638 3235-8580 -1224--9680 3767-5714 1425--7178 2311-3171 4146-7631 -1594-3144 4735-5613 -8672--9550 -1032--524 5288--2156 7578--2331 8338--2333 1268-6829 862-8393 3258--645 -2200--3580 3264--3354 -199--279 9864--1048 7244-2832 4033--4908 -664--2454 -5385-7601 5130--8740 2974--9977 5018-5317 4248--3050 -9610-6882 -6454-4455 -9384-6774 -8949--5258 4540-2563 -2371-1409 331--7498 -1016-2309 8106--6068 5845--8124 -8866--4180 5035-8349 7156-4731 -8219-109 6783--31 2282-1060 4538-6923 4896-2967 3491-6336 -9015-4394 1501-8445 3364--7981 2657--520 7875-8257 -9142--2739 -9183--6682 -3848--7624 -7114--5575 -9962-2798 -2937-3150 -8777-6083 -2450-9063 7454-330 -1813--528 4098--6071 788--9311 -4369--159 6635--2618 -906--6332 3446--4409 749--6719 3027--6161 -6008-1849 9838-1759 7708-3978 664--239 5424-811 -8116--2252 -887--1713 -6935--4519 -5807--4309 -7414--7869 -9688--1732 -5197-5803 4452-6616 -9622--851 -3882-3282 4243-396 9752--229 -3667--8578 7956--8075 -6090-7827 8874-777 6727-6395 -200-6067 -8218--5051 4643--223 -2178-5042 -8688--7120 352-9205 -1607--9179 841--4838 532-6934 -8967-1152 6823-7162 3328-7816 -5976--6286 2101--6622 615-1690 -6026--1072 -9543-6916 312--6647 -5979--1067 2360--7200 -5686--1307 -3338-8977 -8573-2656 -9741--4554 -8864--8845 7043-7037 -8999--8472 1308-2673 -8839-7070 -1089--9082 -2670-3295 2902--8133 6039-9967 5322--7537 -4359--2188 -6350-986 -9805-4170 9100-3494 -9781-8764 4329-1198 9068-2144 9452--328 -7477--8785 675-5276 -4615--2581 7847-5918 8453--7105 5863--3984 -6397-2010 -4504-5317 -2854-2808 1275-7555 5194--8365 -5977--6991 -375-3990 4692--7338 8474--5732 2526--5247 -4723-8210 9739-1504 -1892--9308 -7815-8289 -7049-4544 -4287--140 6724-2613 -4433-3535 2747-6361 1716--8762 -9342-4352 -9002--3217 2919--278 8872-7450 -9335-4146 4836--495 -1620-8389 213--9752 -8724-1679 131--4733 1481--5499 -1277-5567 6464--1749 -5621-1880 -2648-588 -4089-9010 9776--7034 -7861-3086 6146--4624 -3451-277 -9881-763 -2557--3562 8678-7083 3460-8211 -9929--4463 6700--5505 336-1617 -7440--8406 -3698-3575 -8767--6101 -7001-2843 5938-159 -7094--7665 -7737-6296 8631--4014 -256-2908 7285--6114 984--6708 6468-4171 7951--5107 -326--4500 1079--3932 -3332-708 -7044--452 6864--4410 5767-6086 -5558-9266 865-5226 -7005-9485 7988--3251 673--6391 1708-6906 -2249--2026 4317--1688 5270--4537 -7426--2191 -5472-8670 -223--6444 6665--9432 5204--3075 6596-7508 -7716--3703 -4584--6290 5980-8389 5628--5384 5806--9462 7158--7412 -6016--1450 4498--161 -409-4350 -7807--4756 -4172-9285 5954--2856 -1565-8052 -2419-1649 -8067-3345 2293--7884 -5483-444 5556--9301 -4357-6341 -3045--9903 4717-4672 5560--4543 5886--2794 -7570--5840 6732-1265 3872-4418 -2764--2325 4126--5257 8832-734 1836--9243 -7557-5563 6419--2113 -3267-9866 7691-8724 515--2645 9841-3432 -7521--6234 8889--1663 -8881--8563 1469--737 -6183-9677 -9845-564 7027-4157 3340--2620 9160--2349 5075--9441 2609--7248 2722-6609 -449--1938 2135--5093 586--6940 -2978-5183 2302--2432 9345-1163 3330-4584 1782--564 3283--4790 3077-5124 -24--6302 3873--3841 6656--9791 2722-9720 -7336-6401 5037--5752 -721--6544 5257-9643 -6216-9221 -2920-3547 7713--286 4388--8633 -9658--4457 -4993--5680 -4438--5758 -8048--1176 -9245--4806 1164--8746 6612-5058 -3632-4871 7320--8710 -819--3340 8090-4705 4913-5952 -3530--2448 4797--8064 -9858--9151 6692-6688 2918-6368 100--2548 -1204--1918 -628-362 6129--1755 -6793-5179 -6589-7692 1970-4061 -2222--9582 3597--2991 6321--6875 4033-7489 -6676-886 1004--960 8787--9998 -4814-3891 -674-5215 -9582-1816 9545-3012 9008--5916 4607--9932 -8671-647 -9669-9241 7919--130 7314--7040 -7955--7996 -5762--2959 -1370--4922 3105--5460 -8405-3186 4997-5272 -6478--9244 -899-9567 1658-8016 -8330--8576 5376-2226 2579-1743 -1669--339 990--7142 -5156-1898 5757-6089 -4350--6124 -9310-9791 -7564--1539 -7113-8892 -9808-5983 -4218--6454 -254-5786 -5651--1009 8477--2340 -2558-3630 -5814-5931 8658-9668 -1494--1800 -8796--1185 -5441--4387 -7709-2798 -9574-5775 -9702-6156 -6082-7694 3131--6971 728-9435 -6876-1261 -7369--6240 -6563-8233 5296--4905 8282--3520 2765--9102 1205-6223 7241-3808 -311-7104 -5927-1333 -2469--7701 -5969-6850 6795-6891 -671--8283 -5814--6839 5372--5377 2097-6140 -6098-8522 -907--246 -3774-3484 6229-8029 3608--3704 -985--3502 724-9580 7661-7883 5849--3145 -3846--3556 9089--700 4391--6267 2123--2526 -9759--4996 6452-9481 -5871--2288 3884-277 -9340--8104 -2376-9064 4767-7349 9145--1883 2770-8967 5860-8602 -1791--5342 8997--9632 1386--1032 9422-9732 1832--9493 141-4093 6012--3024 -6498--840 -7251-2329 8652-8561 9313-3757 6769-1621 4634-9205 7743-2970 -4746--5311 9355--1390 2765-168 4035--2395 1997-6910 4998--4507 937-9163 6474-2221 7298-1488 -3446-7033 674--7348 -1258--6945 9662--9209 -4536-9793 -5638-5930 3632--432 5307--5892 4489--2981 -1700-3105 4796--9275 3565-8223 6709--2446 -380-552 183-6741 -7231--410 8173-5629 -6534-7436 5770--4957 4579-2005 -9488--4388 -2284-1258 5556-2576 -6379-9328 4564--6239 4554--2230 -8641--251 5345-2586 5976--9802 11--7342 7082--3107 -5397-290 -5613--2813 -4630-2310 8297-9875 -1536--4330 3538--8372 3663--6722 1235--9509 -6645--7806 -4429-7089 5997--272 -1358--9555 3631--5377 -686--4527 -1020-2061 -5220--2404 624-9764 5366--5591 6161-1112 -2115--3655 8003-1855 2295-543 -3361-9105 -1666-7790 2118-4287 6532--6724 5794-223 -9715--4403 -4950-6461 4007--1876 7477--6394 -4393--5504 -7120-7208 -9287-9991 41-7637 5067-425 7628--4098 3803-9848 1271--5408 -985-9117 -5731-7141 1868--5120 -4231--5722 -2953--4582 -5599--7592 8304--3798 1782--7299 5614--6912 6069--922 -4605-6457 -8105--6616 697-9565 3207-8234 -7824--2690 5899--5425 -2955-4226 4686--155 6531-3474 -7247--4308 -3707--9662 -6029-5920 -3733--4098 7858-1672 2478--7871 416-4038 -5674--6894 3144--4015 6034--7615 4750-2101 5497-9312 2475-2208 3373--9998 -1444-3226 6099-4616 9664-3257 -900--488 1486-7601 4752-4180 -6309-788 -7276-3692 3021--9733 -9591-9676 2090-7057 3328-8494 6524-4005 7006--1891 -6660--921 -5170--2835 5760-1158 658-6175 -8877--5374 5374-3706 -5366-5669 -5669-8856 6162-4734 4171--2881 -1208-1664 3952--7856 2551--938 -3601-4448 -9842--2355 -238-780 -1238--8907 -9691-6129 267--4022 4961--6044 -4455-6999 -8034--4110 8364--9521 -9597-9049 -8486-1723 -6193-5662 -1570--5761 -6138-2557 9870-5493 -9018--3010 -1090-2780 9625--540 2309--7687 -1331-9645 -4453--7059 5012--1431 -4532--8011 8958--6681 -3286-9890 2471-2101 -1847--424 -9242-390 -9747--5308 -4596--8077 6787-1387 -117-2313 3375-2958 8663--283 2685--7216 -9826--2847 -4028-9155 -7529--3904 -4304-5399 8779-1780 -4431-2921 6168-7521 -4762-4193 2600-3981 -5295-9042 -5519--6829 -9393--7794 -6468--297 9725--2739 -4043--2554 -167-3189 -225--4067 2448-2079 8969-3017 -2724-3567 2260-8279 909--3737 -5835--7003 -8333-5375 151--7620 1927-4127 5647-3651 3061--4764 1751--1994 -3643--8215 8062--5603 -5668--9038 4865-5640 6327-4542 5687-3889 -9951-1605 1433--9460 2694--3704 4517--9208 1246--3465 1797-7718 6964--3259 6842--8318 -6891-3384 -1856-8818 -8476--8438 -5708-5181 -2862--213 853-5040 -3349--4765 -7607--758 6200-7364 1481-864 -2102--7287 3221--7564 867--2003 9652-2425 -1336--4530 -7731--7842 5669--6546 6935-4428 -1163--1316 9071-5795 6331--6731 3159--286 2137--7729 -9424-8383 9754--6796 3796--29 1511--1996 2362-4439 -9930-701 -5131--190 2925--5330 -9588-4838 7467--9290 -2606-7283 9779-8432 -741--7777 -5318--4511 -1156--8091 2231-3007 -6737--4276 -2288-9416 -9134--3132 -1759-3759 -201--1070 -1146--4234 1850-6353 138--8533 -6677--6511 4173-2405 -8331-323 4832--3296 6205--1678 1576--4495 83-3141 -7892--627 973--7647 -8625-5335 616-4186 -8749-6880 -6691--5151 9055--4570 -9864--2358 -3079--3069 -695-6228 9969--9952 9745-7067 -4517-1579 -6264-3579 -546-3278 -4877--482 3811--8101 4503--4518 9341-4187 5861--7194 -1952--1285 2346--9652 1736-9065 4513--3113 2600--8475 9828--8121 -4490--5799 186--1151 -4604--198 7754--4451 -7429-541 9386--6356 -6430-8703 -90--9159 -4351-726 9831--4931 -1566-909 9908--6124 7927-8340 8990--3899 -1646--3717 1678--179 -8011--9125 -2466--6781 -2872-692 -131--5767 7927-7186 -3881--5541 -1710--7448 -3409-5238 379--2036 -8774--2999 -4047--6593 3641-6769 8745--8454 7054--8970 3042-8402 -1595--1099 -970-5205 9858--7710 1917--6489 -8332-4871 -7840-8542 3103-8838 -4750--4811 3735--7420 4344--8886 -2568-2176 9769-5311 5283-3562 5894--3946 7400--3849 -5120-5630 -1990--2628 7258-5931 662-1184 889--447 -1918-5496 3656--1411 4923--4026 1849-3538 204--305 2738-6862 -1613--4062 -6706-8607 -9762--8191 -4178--7311 9220--5508 897--1324 7020--7705 2820-9999 -736--8325 553-937 1068--2636 -3732-4901 -2389--1123 -580--386 7922-6979 -4896--6972 4616-4126 7670-3418 -2709-913 793--9392 -4425--844 -4569--8293 -3994--5728 165--5599 5513--8249 -4620--3656 3224--4658 9669--1211 -9448-942 -3506--5027 2139-2917 9283-9784 2340-5981 -6650--694 9063-5892 -6158--7057 1673-1115 1546-894 5986--3305 8613--9597 9462--7581 -7561-4818 -8551-9595 -3135-61 9501-8525 6295-7815 -6334-783 -8866--7489 7887--1399 -5375--3301 8084--5542 6354-3793 -3083--1546 -7383-7270 4414-5488 -1259-9949 -321--8655 -5334-6946 -9606--4757 -1275-6082 -5353--5907 3885--5103 -4645-340 7828--734 5404-9034 -5801-1000-9618 1251-7508 5943--5689 -8928-1952 8747-1660 -4793--2540 -856--2792 -3116-1580 -2177-7463 -9558--7538 7860-4050 -1104-7057 -243-2695 -7096-964 -4958-9404 -9295-8338 2870-669 8460--2369 -1259-2843 162-5186 4257--9732 4646-521 1360-3534 -3393-5688 5073-1114 1094-6049 -9956--2841 6783-4501 7881--2859 4706--2458 3067-7257 -587-2768 -4987-2783 -3062--9997 7195--4012 5984--6203 4434-6949 6231-5809 -6291-3368 -3678--2162 4748--7693 -5156-2549 -403-1167 -1467--6369 1163-7879 2162-4303 -9275--3372 7986-7124 -4631-6104 885--6117 4092--3195 -4713-4919 951-2261 6192--9919 1346--7759 4534-6750 -2341-9777 6486--1691 -7044--6335 -1247--9872 -9893-3056 -5832-1803 5560--3276 -3970--3671 9979-4894 -1508--2503 4881--9743 -7061--4362 3659--1765 -8169--45 -1864--3840 -7647--553 -8092-7594 -6843--524 -6122-6867 -3382--4177 -4056-9172 -954--4323 5597-9007 -4726-1002 1279--8449 -8724-9671 -3814--5201 3461-4738 -2282--3432 9111-5540 7336-3629 -7819-5155 -259--799 6216-2027 5788-6011 -2896--7855 -5355-575 -9368--7032 -7063--2553 -8108-1222 -6743--86 -9024-8180 5886--7440 -4735-9831 -3439--7412 -7027--8443 7720--9517 -596-1195 3318-8705 41-455 653-2036 -435--2805 -3728--7210 -8422-2166 -7902--5859 -5628--3097 8434--6861 6624-3853 -1284-7683 5594--6067 -1368-1838 -464-135 -6624-5429 6467--5981 -13-4976 -7728--4933 -2514--7422 -4869--9438 -5149--5201 -5061-5701 4708-1414 -2897--989 5868-4477 3594-5699 2682-5932 7911-1263 4220--5539 8380--9214 8743--6646 -8497-2122 -3744--4189 1895--9016 1082--4645 422-737 -2646-3571 -7856-4383 -2230--7563 1212--5966 -8577--9833 114--3862 -8096-5991 -7412--1631 1917-3008 -7844--9782 3185--7230 -2733-6627 -3325--802 2790--1559 4208-5337 -3524-4099 -5321--2291 6186-6410 -8500-8407 3026-7883 9563--1746 1994-4208 169-956 -2556-4920 5313--7852 2592-3212 6315--5418 7984--292 3409-5757 -7177--2772 -4978-3740 7210-333 -473-2218 5671--762 1711--5673 3893-164 -2196--6586 -6723--4583 3840-9067 -3450-807 621--7690 -2695--2850 9053--7090 -1399-1905 -1550-6706 -5282-2668 -3589-465 6247-9340 9372--7658 6138-5485 6797--6816 -3015-7456 -5114--9713 -6178-8014 -179--7001 -1599-9554 9523-686 -7030-3329 3899--6925 7504--4644 -593-7787 -7971--5591 2857-8724 8000--7281 8856-3865 6931-3694 6653--6824 5041--8456 -1400-6784 -8059--7973 4284-3117 -9031-5851 5903--5618 8589--8693 -8061--486 -7629-3012 -711-7860 -1133--2100 -7038--174 -4555--4232 -2340--4609 804-9693 -1953-1383 -1131--6024 1876-3418 -4014-3902 5806--9965 4258--1763 1764--8442 -9209--6816 -6595--6585 -9498--7178 -8985--1456 -7182-9477 -9533--4596 -9501-7565 -8004-1886 -3670--1526 -6688--4180 -6854-5892 8773-1493 -6944-5694 -9803-7172 1930--6607 1362-6721 -948--1726 -6142--2026 -3335--9704 3836-2048 -9736--1836 965--7310 148-5282 -7568--1806 -7927--7240 96-3733 -7886-7020 924-2735 6-6890 4528--8602 6976-7448 -1563--2718 -9519-2713 6940--46 5906--3321 -3145--3724 4863--9219 -3687--9231 2316--6661 -2675-2828 -2476--2219 -7113--1623 975-1928 -5043-3632 6775--8768 7620--9375 -5659-5672 -894--1122 -5334-6395 -2980-8502 4136--2527 5306-684 9929--5787 1079-2069 -2174--2804 -2139-763 7795--1482 5797--1429 -5944--9530 -9865-4907 -6338--1719 -4349--8668 6721-959 5085-9016 1267--2172 -7429-1647 728--1418 -4451-8186 -590-5579 -6182--3764 -5241-4429 8361-4258 6215--8032 263-396 -8026--897 7114-2442 7861--9505 8138--2680 8932-3193 -1557-976 6578--4607 8337--3846 222-6840 -6290--3545 -5719-8010 687--9514 342--3367 -5991--5600 -3087--1663 7881--9841 9028-3503 2827--6079 2750-3042 5511-6277 6384--1969 472-4059 9996--6038 -364--6087 2442-2578 -656-2729 6093--1363 6482-1058 -2080-4650 -6954-3123 1092-1134 -5075-4307 4458--8003 -5141-4355 -4298-6310 -4390-1376 -7104--4560 1218-5473 -3759--5856 -8063--2285 -7003-5857 7204-2861 -5980-9048 -9460--9162 -8058--8413 3324-2966 -2531--472 3468--9260 4150--9769 3368-3526 -3240--3388 -8262-8495 -3707--698 3101-2487 -506-2228 -6692-3618 -9318--3642 4539--8470 -5278--7661 646-1330 -31--4659 -1455-6830 -4144-5728 9207-776 1260--8437 9866-3995 9439--6840 1677-8151 -8980--4034 -3118-807 6397--3013 2980--2579 -5798--3674 7876-817 5278--1642 -3196-6101 -2803--5560 5938-9712 4421--6590 422--8791 5180--4714 -8660--8519 3832--6562 1010-7412 2212--2940 -1022--4309 -9322-7177 4433-6337 7575--1676 -4176-6620 5655-6924 2144--4619 -9360--7535 -9430--6683 5798-4291 -5410-932 -4542-9724 3570--9839 2980--13 5473--2678 -4521-942 -3566-3499 -2832--4154 -5031--5580 -3622-8509 2417-7056 -3065-5072 1258--4466 3264-4204 -3028--4445 9785-6047 -4480-4768 -8876--390 -1147-8640 7353-3400 -5110-1771 -2572-3550 5922-4439 -7059--7323 -3018--4728 8540--3402 -2714--8420 8595--6136 4403--1003 -2117--5624 -464--8895 6892-8375 -3433-7977 8885--4177 4561-3575 -88-7298 -7889-9461 2838-3624 332-6303 -9249-1451 -6180--8656 9188-6894 3294-6959 -9281-7829 6786-1941 -9105-2025 -8876--7455 -8437-6578 3935-6365 -9578-2668 -7660--4881 -1069--4426 493--9916 -3875--242 -9515-7212 3381--2974 -5201-5615 1103-8077 -3358--2174 -4557-5828 3058-5998 1104--1997 4536--2627 4980--2541 8804--4536 -569--592 -374-9921 -1918--8017 -973--1263 5749--6589 -3159--7971 8193--4113 9763--3217 3851-2673 9058-4169 -2506--9981 6783--9342 -4806-7665 5198--3451 -7296-3674 -5196-7560 -7626--6753 -5005-216 -3391-2622 8127--8726 -6008--4907 -7503--7942 8190--2077 -5156--3334 -3913--8975 4914-5300 -4252--4323 1279-8983 -5676--266 -8200-5796 4695--2681 5107-1437 9816-7574 9038-9623 -8237--3996 -3387--1183 9556-3499 -6226--4536 7833--9796 -824--3793 7338-9291 -8013--3362 -8217-3357 -7157--3605 6977--5153 -1235--7757 1974--6967 -1002--3578 4660--6848 -2795--1028 5222-8029 1322-7403 -9925-1760 -4782--4798 -9606-3547 -2017-7522 1542-6922 -501--2731 -2243--1667 -8546-4501 8418--870 554--2810 4773-6309 8675--5224 -6611-4113 1596-2494 -7530--236 1379--3778 -9731-6826 -8949-1479 3617-9046 -4101--5131 -1884-1110 -9378--8571 -1017--9946 2030-1501 7866-4848 -2819--590 1718--9907 -8344-8890 -2895-3971 -8470--5394 6976--7997 -2122--2490 4584-3520 -3782-4308 760--2388 -567-7170 -8812-8425 8866-2536 9858--666 4667-744 -5655--8676 -1280--49 2008-8966 6173-7485 7884-7624 -747--5769 2755-5162 -1043-7876 696-8757 -3233--680 2753--6394 -3367--4407 -4266--9138 -7633--4825 2426--9889 5635--5911 -3261--5503 -8892-5142 -9627--8946 -4725-2143 -174-2235 8998-1736 1156--3393 -7327-5604 4012--4783 -9709-7621 -4351-6897 -9376--6667 -7978--8811 -3042--8928 2618-1882 1981--2724 7754-2307 -5521-5034 29-6021 -6691-1895 3913--4598 -2251--1393 8477-7543 -4469-2573 -5273--7673 -7549-8703 7439-7520 7347--6219 -3753--1554 3171--2590 7076--9351 797-7364 9229--7051 6452-9714 800-5981 3992-8498 -7114-5148 6637-4592 -1982-5406 6447--2883 2291-7884 400-3938 3291-4738 6155-7507 2739-6998 -1670--2529 -2068-2592 -1883-1097 9893--5074 7742-7998 1564-9149 1618-3011 -8802--8945 8155-415 8196-339 4042--66 -9206--400 -3741--3726 744--5983 347--1363 4217--3748 -9962-1942 267--2417 -2071-7599 -1399-540 1425-4178 5064-4394 -8277--5747 389--2349 -7207-7859 -43-4256 3189--7646 -9301-7201 8217--4958 -9649-2017 5177-5919 2319--5624 3594-5108 -469--1589 -2216--9961 -611-2757 -9260--2035 -8920-4604 -2135-7197 -9274--1660 -2350--6265 219-5174 2133--3050 8191-207 -6981--3847 1205--8686 7571--4090 1488--7447 4217-8639 6326--9190 4714--4306 5919-4821 -1511--5163 5013-4307 8857-3777 -2222-2280 -4373-9579 3152-7976 -5574-7967 7544-1731 3833--7962 -6165-6779 -3299--56 -2704--8313 5576-3090 -9076-2650 7575--5853 -8354--2598 2253--5621 6172-4378 -8984-2493 1794-4818 4998-131 8347-2510 8876--8642 -472-1980 3757-7737 817--7476 4587-1714 -7611--6907 9638-4573 9913--7911 -4605--3709 7299-5059 -1571--5773 4423--9617 2892--6241 -6388-9320 -995-4319 7608-9136 3926-2805 -9956--9196 -376-252 -2691-1443 7165--3877 -5856-3213 6705--6399 2421-5377 -8233--1579 5115--3487 4920--3904 -3442-6442 1059-6474 4544-4843 -3877-3276 8121-5521 -5380-3547 -363--7311 1030-6543 -5361-394 8116-7276 5566--3972 -7541-3320 5084--9681 -5867--8243 2421--7414 7756-717 -2520--7472 -8080--9118 1873-7612 6986-5362 2518--4183 -2958--2217 8097-1919 -4058--8071 -9465-4068 5272--3384 -9490--7998 8924--3256 -8083-3357 4949-1836 9425--3327 7613--9490 -6495-6323 5316-311 3524--4033 -9128-1897 -9042-6307 -841--3519 6127-8214 -8719--687 -2503--7566 1788-806 -2951-3994 -2968-6020 -5999-982 8717-9348 2903--4127 -7947--8729 -1840-3509 3512-6365 2457-975 -8940-1903 -1495--2303 -7688-5056 9194--3243 5745-4286 4387-6073 -2094--1097 -2358-9139 -9672--1590 -8886--7460 -6415--5061 3515--9508 -6485-9448 8145--8250 1921--4077 -7824--354 -9349-2810 5699--2232 -7992-8033 -7293-934 7064-4524 3853-8231 -1751-4653 5024-3366 5666--7274 1458--9660 -8423--2523 9909-7121 -8854-4342 1751-2423 4442-7394 -6146-9902 -5156--1037 -2709-7331 -4546--9150 -5528-5006 -8099--459 -4341--6870 3186-9541 -9594-3095 8817--5579 8904-3461 8835-1613 -6608--6970 2398-4072 -3756-826 4303-8358 -5134--1580 2144-3619 2443--7656 9198-2906 7776--5079 9477-3881 -7866-4101 2282-5557 -7340-2092 -8609--64 -8178-7547 -4309--9466 -3432--2999 2636--2285 5015-753 5688--2585 -9815--2840 -6036--8085 3091-7397 7008--6336 -1209--5613 -5176--7852 4515--7146 -9167-7327 9236--7973 8861-8766 -4736-9242 4658-7788 1991-6499 774-3556 9494--8357 5164-3688 -8170--3573 -5836-7439 -4871-543 -6789-4861 8515-5068 4069-789 -9044--1969 -540-2497 -7752-4621 -4346--7021 5589--5440 6348--6638 -6981-8124 7334--2705 5859-3481 5551--5085 3937--3328 8106-5009 2211--8068 -6294-3938 9463-275 5424--1686 3650--6347 -3218-3151 7370--7303 2582--5262 3792--3888 -7461--1153 542-298 1672--1432 -2307-3344 8498--6555 2960--5051 3720-4935 4149-6446 8294-9427 4958-3439 6485--5126 -5804-9935 -1716-5840 2017--3771 -9218--5223 3618-8205 4613-4089 -7382-880 6557--4280 8214-3088 6873--7665 -683--9828 6360-9026 3317--8472 -3638-1118 -5919--1080 5108--8780 -873--2779 5567-2420 584-6060 -8490-3226 -4378--9575 -4990-7859 -56--4115 -3712--8682 -2651--9695 -4034-6526 1829--1584 -3284--6104 8613-7745 2085-6564 -4432-8295 6515--8480 3547-4325 9233-6021 7970-5549 -1762-4927 -1189--2840 5659-1106 -28-2698 4390--7037 -4242-3283 -7356--1346 2586-7629 1376--6863 4430-1686 7171-4138 -4793--2893 5417--1745 -1807-913 8907--3624 -4261--2883 2547-7160 4072--8983 7307-7187 -1329-2398 -8566-8779 5134-1926 -6425-1923 -7481--364 6920-7437 5672-9591 -7983--3081 7480--7866 8312--1824 4925--3277 9525--3201 -6165--3511 -8781-1679 9322--254 9184-5191 1853--294 -6439--4395 -286-897 7512--4598 9818--2654 8924-7984 3668--1717 -6373--1558 -9924-7872 -1965-9460 6512-3810 -904-6529 -9062-6411 -8742--5385 -2379-5218 -4338--7089 -3540-8847 2894--5182 -7852-9100 3062--5607 5617-724 3105--2739 1942--135 7260--8791 -1481--1229 8975-7032 -1218-1721 7085--6583 112--940 6764-9018 -5716--6790 8559-9853 1944-4543 -3413-4588 -7656-1790 -4384--3061 287--8312 -9591--6279 -8204-7244 -5715--8293 4501-9486 -4473-6909 9864--9383 5193--5639 -129-4756 826-1000--7807 2452--6646 1585--6833 8736-4249 5561-2362 7504--6981 3358--9901 -4818-4154 8122-3547 -280-418 8792--9253 7049-6546 3908--5159 -6955--1187 2692--8013 -5412--535 1422--4489 1659-2922 5122-6492 -5407--8348 -4839-7307 -9149--8788 -461--1027 8203-4812 829-8407 -169--664 -6718--9251 9227-3821 1336-3847 5111-7401 -5311-6536 9081-2419 -1495-8602 -4721-7858 3397--5412 -7016-3494 -8237--5578 8607--9981 -5349--6674 301-1969 -1760--5947 1327-6057 -3298--502 -8070--185 -6787--2090 7382--5665 -3488-542 3314-839 -5712-2205 3166--8572 1195--5198 4665--4573 5971-7336 -5140--5682 -6809-8104 5259-9762 7050-9640 -4889-4276 2243--4882 -1037-320 -480--3940 895--3294 289--4062 7414-4773 -5767-9380 6189-9413 -7467-2210 -7729--6686 -7950-9204 -1428--8739 6841-8829 8229--7992 -5244--9934 3377--2108 8105--2914 5254-3348 2579-1054 862--1120 3810--2345 7924--2677 1647--931 -3235--2149 7800-740 5890--3574 -5738--1733 6710--7876 7089-5555 4858--6471 5954-6560 2050-8569 2405--3641 5640-5018 -8406-5771 -6016--7302 6401-9919 -7738--1881 5297-7244 -7918-1145 9920-6780 5560--9426 5176-1536 4920--4105 -3321-4621 3904-7126 -9488--9736 367-7169 5406--5459 6599-647 1982-5871 3012-8011 -9283--7631 4731-869 -696--7712 -437--5123 1195--9316 1935--2926 -2143--1904 3098--7887 -9379--8050 -7038--7983 -2058--342 -8163--9930 9479-581 4180--2987 2613-4703 -3552--9024 2679--5593 8421--2665 9139--9303 2202--3128 -2809--1244 8664-6880 -7469--8243 -9227-390 -1549-6208 5223--7234 -3549-5741 9181-7608 9562-4031 -93-1164 -126--3030 7062-2542 -9334-1245 1465--9537 7107--386 -235-6381 7782--1087 -3412--6841 -8481-4292 -8888-4472 8729-4632 8029--9463 6367-435 6811-8880 5931-3526 4775--5246 178-2887 -2507--9962 4713-1648 51--4127 8572-3905 -3119-8643 -714--2264 -8203-2051 -2527--1123 -1884-7637 4918--6724 -4374-3670 -2940-9150 5852--3841 -3803--8301 -1237-7695 2175-5244 -4052--7922 -9221--4081 -8197--830 -6131-9263 7364-9132 7895--5634 9119--2189 -8205-2156 5352--62 -563-1867 4700-3317 -5430-4240 -817--475 9173-3874 -6488-2240 -6552-5436 -2881--8990 2605--207 7095--2155 5350--1564 -7872-8092 8129--3393 3018--6355 9616--2397 -8283--2060 8291-9088 -7169-2718 -3553--9138 -9426-3733 6543--9500 -5024-8770 4236--1031 -8328-1179 9543-8595 9537-8161 3183-9219 -6330--6857 4374-6617 -3999-3176 -6736-7241 4515-292 -8982-6348 6902--6530 1347-7570 7257-1683 -4524--4281 6246--9805 -3419-9880 2180--5140 7347--4921 -8554--9699 -2289--1992 2955-160 1200-3993 -9040-847 -2605-1202 1017-9991 -9009-8222 -6692-5588 5686--7851 -8502--3258 -3348-7719 1549--4496 -3612--8398 -45--8844 -5031-6604 -8720--1742 9342--1916 -4027--5152 3799--7049 5988--817 2124--2199 7495-2390 -7669-9790 -3310--26 9296--3220 4116-7590 5576--7124 -8738--2522 -5549--4990 3869-9045 -6969--6340 8853-3126 1845--6889 1318-4129 -5961-5403 8650-5131 6851--7154 -1848--1029 5935--1635 -2849-6178 -9006-4919 -9812-4964 8450--9015 -5476-6093 -1852--8617 4772-5293 3501--3411 5675-9725 -7521--8592 -5630--2578 -2285--5469 -3459--7469 -9751-1947 -5642--5762 -3320-4839 5163--3109 -7067--4320 1517--1791 -5266--3238 3836--1765 8061-2855 7948-9987 191--5447 -8970-2896 -9487--1546 8019-3744 5118--1523 5033-9725 9221--4373 -5822--1379 1881--5593 6110-1372 9041--560 -7742-3993 7991--7010 -8621--8493 240-9946 -6850-2140 -2860-8734 -3791-4477 -6847--5156 -8539--1067 -6915-6510 4971-2851 -9411--7811 -4939-5925 2999--4220 -4203-5138 2694-4857 -3088--5739 150-3687 -7515--4685 261--4271 4554-1197 -3530-2212 350--3879 8203--927 -7483-2370 -540--9503 4010--9955 -6888-4988 8402--3080 3741--8477 5958--5233 2630-7443 1032--6366 4846-5012 -5659--395 -2251--3339 -4255--127 -2581--3421 4249--873 2627-4022 5564-3442 9715--9724 1543-8993 -8335--9511 -4802-9245 8664--3948 8891--6585 -8875--750 -7200-5683 6908-2813 972-7448 8070--3011 -6586-69 -1839-24 -7642-1495 358-8307 2339-8437 1875-5428 44-8230 -3744-3508 1294--8842 -4090-8181 7884-8685 8930--7032 7167-7532 -5701-152 -2336--4186 -5027--8661 -8952--5426 -2013--2784 4811-7049 -9821-9802 -1199--3700 -1097--3400 4401-8170 -551--1112 -4972-9396 7132-4759 -5010--6572 5754--4671 2291--1721 -8736--553 -6696-4232 -5953-3189 4394--7669 -3065-8638 7883--362 -4287--6703 -8801--6886 -3214--9253 -2205--8798 7878--7328 7471--2467 -6085--2574 -5948--6306 -6349-7547 1098--2082 -7758-4795 -7140--5988 1280--702 6703-9981 -2576--1039 -8597-3368 -6365--4532 5168--405 9712-6770 8522--9671 818--9891 -4984--727 -1216-5722 3008-3855 -8748--4775 -3795--1993 -3760--3566 -6108--5386 660--163 -3879--5326 -1718-5002 -3291-4373 -1772-6993 -9636-1810 9522-8679 -7822--9136 8078-4169 -6457-1385 2033-6141 9922-6773 -7112-1362 4900-9781 -3825-9314 7942--4930 -5149--4318 -7642--2015 -3196-547 293-9971 521--6476 3196--1442 7711--9423 6467--9979 -6843-1994 -596-5822 -4498--8843 -6743--1444 7706-9461 -6392--6405 -6816--286 9944-2893 -8775--2127 -5531-8129 -3699--757 -5955--6990 2827-8722 3047-7013 -1346--1248 8079-5188 7517-1664 8246--2036 -7000-3414 -278--8668 8014--7309 1528-6423 -9215-6128 9410-1227 -9320-4886 4840--880 -5897-2985 -178--9291 6935--5973 7109--9395 -2436-7275 501-5743 -2809-5721 2798--1810 3011--5220 -506--3556 4336-7200 6572-7026 -1466--7198 6589--3624 -2033-5201 -8537-6099 5282-7102 -5166-1944 -6836--5451 9262-9799 -5121--6486 3466-2391 -6766--2239 -9640--2123 682-8963 3653--1049 3398-9505 4479--9087 -8489-5614 -7777-6739 -2481-9507 -8548-3862 -5800-1683 6746--9144 8619-6007 4565--9830 5898--5011 -4733--4145 -1583--72 -5774-8879 64-3453 635-5069 9731--9396 -921--1110 4515--6338 6378-3548 -2760-2622 5916-1805 -6008-9585 -7175-4399 -5894--9477 3843-8912 -3052--9412 7925--9960 -1786-8494 -6082--51 -7282-9040 4981--3058 6842-1087 8236-692 5332-4280 -2906--1424 7896--3729 2470--9715 -3649-1874 -434--1541 6180-6688 5861--1281 -3898-3047 -4549--1318 3487-6629 -2961-9017 6180-9774 9862--8503 4644-7208 337-2889 2023-445 8537-1684 5544-7578 -9542--1226 511-6894 -9704-4907 -8441-6968 -640-6569 6917-3490 -3881--6439 3587-8301 9493-8392 -6211--3477 -8685--3288 5433-7994 9110-4370 1820--8631 -5288--5062 -4385--8968 2286-4500 7930--9783 4945--6092 -959-6717 -4942-8858 4094--1799 4151-2890 -4307-3731 -2622-6620 -901--827 9948-5693 -7619-4521 883--1692 -1774--9376 -6454--2798 8005--4933 -92-5889 3054--9400 8573-5825 789--9755 -5492-6434 -8379--6395 3883--697 9754--9317 1873-3448 895--4896 1603--164 -5659--9719 6907--4235 -1144--5302 -1908-4693 -1792--8047 -7731-4240 5806--7032 8932--4055 7473-5248 1157-8224 9490-5931 -5840-3898 -9602--5040 -9321-5212 7525-2292 -3443--526 -8456--8306 2974--5748 -5860--5677 1745-4002 -8667--6309 -9379--8087 9720--3009 -20-5595 -3868--9969 -5230-3553 -4359--1640 -3098--7294 -621-3615 -2073--821 -493-6841 6779--9950 4062-1457 665-8711 2340--2393 5312--2243 -5424-4092 3141--586 -5709--249 -482-7794 -6844-5338 7392--7415 -2177--7261 349--4617 8081-3687 -5754--7733 -5209-3267 7806--3245 4285--2736 6256-742 -7309-7713 7377--6220 -7752-3952 -1737-7181 1761--8988 4650--3445 -6862-8314 9208--316 7409-4895 -4291-8379 6127-131 -889--9432 -7669--8298 -6572-3469 -2796--1770 4758-714 6857-2949 -2468--5039 -7031--4933 2464--7467 1631--5905 6188-5581 5786-5527 2386-8619 -3606-7655 7167--3529 -3529-2089 -3309-9960 -3619--6891 352-7190 9616--1624 -6885--20 8728-108 3629-1442 4110--3988 8677-3198 5617--7267 1218-6070 4684-3821 -4887--2031 -847--1767 -7332-4088 94-9678 -1920--8816 -2649--6992 -3643-4073 5852-959 6143-5762 -7452-9360 2814--4986 6579--6693 3285--5212 -5585--5181 -3251--1477 -5621--2021 -9930-6331 -1400-8420 9966-6341 6645--3046 7625--9848 -8253-5672 -8545--5682 -9108-3381 414-3747 -1339-3223 9092--1842 -5748-7249 -8089--3039 -9504--4816 -1836--6874 -7285--6721 -9282-5924 -9050--2893 -1558-2753 7040--1603 133-8699 8454-3165 5038-1490 6855--4289 -7645--5873 1432-9791 3919-2664 -893--1312 2541--8926 6312-9458 -7814-4181 -1248--6518 -7902--288 1493-1748 -6785--4364 6825--4103 6369-504 -3850-8581 7009--2855 -8211-343 9516--5547 -3955--976 -2500-4575 1713--1603 -6865-944 2243--3386 7246--8924 -6680-610 -5502--9537 -2020--4813 -637--726 6128-138 -9349-6341 1823-7764 1972--8519 -9941--4210 -9736--3754 -4918-8405 4540--9437 4231-9540 -420--4298 568-3892 8860--5561 2131--2980 -1864--2678 -1998--726 -1561--8203 6125-355 1063-8587 5771--4320 9733--1410 -5433-3368 -8839-6262 211--2920 8509-8361 1539--8686 4537--1466 -9281--1819 6532--9902 6330--9181 5988-9445 -8701--1710 -805-9043 -166--2914 5621--8846 3394-1089 -9380-1146 9891--2441 5366--8920 -3783-5874 -3469-8151 -5602-4740 1244-4529 8189-6054 -1852--6396 1608--3201 -6806-978 -2744-5788 5090--6125 1645--4024 -6759-929 8375--7241 7082-3134 -8707-3016 9093--8006 -5394-1656 1790--2256 -8663-1763 3870-7009 -2243--2058 7177--4117 5243-9410 650--7631 -6050--3377 -434-1066 3504-9299 -9361--5782 -1303-3533 -3774--4717 6125--5375 441--6535 899-1498 865-6055 -1527--8325 -5974--978 7306-6803 -6875--7973 -9049--6164 5202-8746 1594--8409 4586--2493 1198--9767 -8789-2470 -4262--9265 2872-6641 -2654-6148 -4857-846 -6344--9898 -1623--649 -8828--1999 -9724-2066 4940--6914 -5454--8741 9706--2825 7320--6499 -3346--2541 3341--1863 8118-393 -9080--8451 3877-2536 5693-9346 676--3012 -3057--3206 -2069--3462 -8523--5724 -7030--2190 1278--8898 -703--4092 7910--6883 858-9942 4245--4437 1141--2197 -5016--714 5592-8568 34--3381 5432--9998 -3455--6352 7731-4496 -9505--2107 -6606--2551 4909--7967 -7561--6962 5742-7176 -8678--1289 2468-4824 -926-805 -6539--2824 6477-5676 9965-8522 -3423--7208 -7934-3999 -7302-8599 -5596--9747 -554-1117 -168--7460 -9734--1339 -7976-426 -5273-4226 -2609-2061 4294--3988 -136--4298 9686--5714 -3295-6176 9257--8930 7972-6783 -7467--2542 -4255-4917 -742--3679 -2052--9443 -399--9572 1091--6486 4557--6292 -730-7383 -6994--7553 8354--9819 -3768-8719 -9458-3229 6344-9553 -8491--3956 -7995--3337 -6756--1759 5891-1093 4638--3170 -9218--4738 4211-3810 190--728 -9565-882 -4875--1846 -8526--2426 -7733--249 5478--4283 9505--1002 -6515--6555 -4178-6752 9170-4567 8963-8178 -1484-1362 -7252--884 6243-9226 -2858--1187 -2595-651 -6062--8618 9151--927 504-6304 -8166--4088 -9118--7186 -5695--2676 4010-1021 -6996-5560 5086--6358 6132-2730 -3542--1975 2811--6471 7084-5826 -1033--3466 -6502--4793 -8050--6451 7158-231 371-5648 -4441-2593 2824--3532 6434--7204 2709--5144 5595-3589 6696--2031 7959-807 5782-7371 -5252-6175 -5037-7343 -3812-635 -337-7804 -5857--2623 -9964-111 90--1874 -2193-7869 1502--2689 2468--1489 -5889-5614 9674--2307 5876--7923 -6138--7818 -3573--7705 153--9083 9745-2780 7134-159 2847-2307 957-2844 -9848-4727 -5793--5246 9717-6259 -5046--8000 6678-2477 325-1208 5641--3796 -804--527 5869--8616 -6233-8405 4121-7111 9630--3588 6153--8466 -9864--1899 907-7480 -3475--8043 2180--8929 1848--1923 -9969--119 417--3831 -5777-2 -7979--5303 7258-9680 -4100-8064 -3740-9052 6167-783 -2170--8754 -9046--2100 806--8179 -7453-7673 7937-3789 142-4187 -4126-5514 7912--7617 9771-1000-559 -3860--3889 3166-9402 -4322-2193 -5125--7002 -8283-8145 7943-2458 -9651--8599 8384-8913 2588--1834 726-7904 883--9500 8243--299 -4317--386 -5848--8782 8236-6064 7655-7057 -2855-813 5042--3664 -2051-4638 -9381--5720 3781--5114 -5730--4633 8135--1880 159--8967 5567--4406 9241--2122 299-4833 -9780-5489 579-9756 -2580-6216 -9969-8545 5768-8743 -9408--4431 1286--4891 -4627--9099 6799-7308 5040--1839 -2448-9812 9268-5501 -2552--6610 -5742--3883 439-6359 -6107-233 -167--714 5029--8535 -8628--4350 1368-4287 8982--4849 3397--6076 5258-3567 -1441--4348 9777--3998 3723-3129 5042--2032 6770--5895 9244-9420 5670-2128 -2125-4295 172--9674 -2826-5246 9616-8682 6785--8365 2509-6299 -4153-6937 3092--4535 -4625--3739 5390-7802 8512--858 5239-6181 -6086--1575 -4009--5144 -19-5674 -8421--7541 -4260-6692 -3557-4521 -8833--152 -5105--5844 2325--1781 6959-6939 5812--3701 9875-7699 5167-5617 5556-8348 -2155--7782 5858-2943 -1204--7456 579-3541 9401-7308 8468--220 5748-4050 -4575--9770 -3279--4297 -8176--6512 5152-1490 -8282--6162 4904--7759 -628--3755 2471--3413 8364-7819 -469--364 1306--6976 2963--70 2074-7495 -8108--8317 7056-7843 -1554--1343 -2307--5014 4815-201 -4802--4702 2491-5151 3356--7105 2890--6846 -4550-8072 -8941--7885 963--7923 -6144-5846 4-9648 6296--6588 9233--3415 2561-2647 -5674-6904 1784--8729 -3315-5467 -997--8007 8911-5685 5088--9491 -9671-1211 -7920--6320 -4269-8312 -956-814 -4583-7129 9737--216 -5070-6475 3634--3884 -7198-4727 -7412--3013 -2118-1086 -1869-6837 2070-3523 9829-9090 890--9114 -3579--7976 -7822--2098 4835--8951 3395--198 -6453--296 9453--8379 6456--6011 -7491-584 -5579-6389 8574--4365 8683-2423 -807-6942 -7343-3555 8685-2004 -9002--37 -2563-4915 -7788-6208 -6663--6299 -964--6288 -9008-7434 -1712-7596 -2095-3834 7973--3189 103--4028 803--4648 -6148--2872 6344-7193 8249-7975 -7459--4011 1224--7323 -6172-6097 5568--4758 -8280--1163 -1537-111 -1896--1900 -3679--8194 9244-9242 -7821--6920 1503-4365 -2542--3678 3965--6296 7422-9216 1810-7398 -6308-6749 8802--434 -5817-1378 -5771--5819 -5504--9219 -7474-7066 -5585--3094 -1024-7693 7098-2426 9999-2999 1068--6042 4182--6841 -8312--2571 2129--6363 -337-1150 6871-9778 1867-5065 -2197-5939 -261-617 1572-8691 -3670-6714 2996--6383 2893--3141 1285-5485 -981--845 -9025--2282 -233--8877 -6061--6681 -9783--2506 3437-3886 -3463-3655 -1901--7254 7493--6883 -9855--898 4888--8211 6590-6499 741-7513 1462--5331 -1831--1753 -6632-2773 4265--5928 -9635--7338 -4794-197 5822--705 367--9184 -7808--1590 728--8807 -4340-4826 2698--7524 -7947-2726 -826--5247 -2473-2896 -5798-4208 3319-5965 5186-5482 -9804--1818 5318-5559 -9476--2507 -9139--7972 -7643--2440 2504--4015 4980-3372 1611-3417 4708--6058 7071--432 1621--808 9059--9680 2530-6049 -8933-6731 -7819-280 -8401-1760 754-5643 7480-9387 8932-2932 -1231-462 9351-3843 -5576-4634 -8950--4882 -5120--8157 5077-5901 -3069-6673 -90-8631 -7881-9879 -4713--15 3016--7978 -5679--9627 -5193-2121 -1859-1099 5211-813 -7591-1944 4744-4437 -122--3945 6238-6974 718--7838 7136--9768 8835-5172 5605--5483 -976-8062 -6127-2943 -8783--8726 -6221-283 5660-4067 7949--9274 -9207--9343 -2429--3738 891-5887 -5606--2813 -1336--2909 7577--9520 -1268--2162 -7029--817 -974-6654 2541--6478 3035--7216 3321-912 89--529 5354-6836 -7866--5860 4145--8024 -1292-5226 -4182--5741 882-8425 3214--2453 -5752-6795 -4674--1805 -1687-4852 -8529-2833 -2170-79 -7402--1472 2113-6870 7221-6237 4117--4887 6086-6191 -823-6358 -8179--265 4488-6213 9064-8623 -7643--7541 6289-6813 -907-2409 5257--9245 -8628-6048 -6662-8094 -7583--794 -9962--34 5287--1647 3919-2980 9159--5610 -1579--9601 6729-5167 -7063-5131 -4294-2613 3134--6524 -8893-9525 8171-6336 2657--6133 -4780--3536 -4578--805 -8367-2113 -3816-8430 -8358-3442 1446-9009 1219-8691 -8770--9 4492--1346 -314-3079 -7834-2248 2285-8861 -829--9411 4338-4228 -2630-6901 3024-3416 -4130-1522 5412-7101 -7793--7163 6078-8188 5649--7389 6826--6008 -8486-1693 -9144-7491 2350--6272 -518--5018 5733-9399 -4060--4780 -8677-5929 775-9696 8090-2907 6505-2879 1206--6858 -7871-1526 3414-1078 -2188-6691 8175--5538 -841--9922 5763--8684 -3680--5858 1131-3040 -1650-1280 -789-3491 -6022-3862 -9107-979 -7641--2542 7179-3034 -1846-8459 -4648--9288 5969-6007 -8888-2453 -1240--987 -4364--2484 4725--1553 6547--5592 2262-8801 -7475-6812 6161--6184 3602--4104 1432--3857 5175-5548 -1476-3728 1696-4256 3987-4828 8246--3052 3429-8184 865--828 8753--2339 7929-6785 -3685-7945 2858--2009 -3150--7556 -5824--4206 -5783--9422 -746--4645 -2691--3161 9369--4607 1000--6119 2784--9237 -3915-5412 -5339-1757 -3177--3616 -2432--9700 -9704--5329 9312-5954 -1591-2259 3779--259 4124--4127 3427-8085 -6087-9484 -1544-6411 5122--8847 108-4961 -3167--4237 7438-4580 -6038-5234 -167-8165 5608-9660 -7590-4194 -826-7840 -5366-4534 -1096--3996 8090-3047 6268-510 5488--8239 4155-4077 -5900--7278 8799-2332 7359--4817 2565--5881 -305--8376 1527-7420 -1604--5661 -4468-4211 -9056--8190 5420--1699 -7917-7171 -7037--9144 4261--9153 257-1693 -521-2199 5896-9079 9973--8302 6469-3454 2393-484 7908-2228 3180--4456 2839-2649 2498--1351 8553--1193 -1610--7362 3475-7667 -6811--3044 4802--9987 -1687--8482 -1841-434 4452--2315 217--599 2563--8899 -4394-499 -5359--4881 -3775-4276 -5145--3723 1578--8009 6410--6420 2070--8846 -5907-3511 -2262-2993 4023-3003 9957--1495 -2515--1576 7496-5282 7054-7672 7562--7269 -5118-5073 -9489--491 -295--6052 8866--2353 -1438-3319 3965--5329 -5431-5833 -2909-5982 -4227--8171 -4964--4196 -9568--8335 -6421--3408 -9371--8943 -3809-9483 2909-3530 -2114-4976 6763--5694 -1155-7095 493--4318 7349--9180 3703--4122 -5796--9689 -9045-4730 2152--6581 -2378-7782 1679-721 -5011--3887 -9941-9202 4978--6393 5685--8514 441-3126 8213-1944 9406--8301 4151--3599 -9--2782 5839-3583 -4996-2406 -3216--4457 9010-4560 1205-7418 -9030-2199 -1380--1183 7721-3812 -6174-5145 -2152-7882 943--8055 7976-737 7067--7499 3933--3126 8--7560 -1639-7829 -9843--382 3242-3515 -361-2593 4138--7492 1539-8439 -9643-885 -6123-774 -2046--4157 -26-9310 2280-4231 -6334--93 -7940-3295 -3844-540 469--4822 -5789-6219 61--1273 -4008-5817 -3533--1130 9101--8444 25--3184 891--7508 8943--1888 -5535-5004 -5881--7132 6067--3020 3719-9696 -5516--6657 -1702--7563 323-7700 -8745-8676 -3254-4024 8117--3795 6338--1932 -4901-953 2413-6465 1568--8364 -7178--2701 -5663--1420 9303-6067 1849-723 -7119-9037 500--8889 886-8572 -7566-9687 498--7869 3486-3892 3820--146 784--3774 9416--3022 -1154-4182 -3175-8556 -2315--2622 112--3143 -7388--7676 9874-4461 -4289--5420 5861-8398 525--1707 9609-7900 -4659-3469 5887-9710 2756-6752 -3984--4388 -7540--8584 3738--5952 -2591--997 3436--3285 1340--918 350--7175 5331-1485 -1535-7212 7952--7145 -3472-982 2212-1979 8152-3242 7236--8368 -4599--8170 3099-3079 -1592--7879 5452-288 1619-3140 -5528-3660 -3709-7536 -5234--2423 5154--4270 -2776-7172 6336--7926 -96--2173 -4189--4606 -164--1249 -617--7751 1014-6933 7513--9730 -1454--1078 -6833--2463 5197-5170 9816-6683 9053-4313 2965-8881 3882-5773 3395-5412 7188--5457 5291--9117 1140--2342 -1137--2184 -3169--6823 6014--322 5087--5477 4119-5246 -971-7177 -2723-2257 -1830-3889 -4325-417 3896-5868 4653-8351 -6368-4846 223--4398 839-3608 1528--8215 5062-3178 -3595--1469 1747-6010 -5620-9851 6859--2689 -3915-2501 -4601-4102 -8029--2093 2357-8310 -2849-5958 -6939--8071 3447-9083 6477-7845 -4060--4420 433-554 -743-7957 5229-9708 1711-262 -5399--177 -2711--2773 -260-1189 2536--2027 9160--966 -8753--5420 -5775-1691 -1501-2182 -1918-3642 5268-2236 -3848--2884 -616-440 5404--8495 3630--3694 -3640-9381 -8874--930 3330--9014 5731-2683 1779--4608 -3568-6341 -8657--4876 -7859--4123 5193-6458 7540-877 -9549--5678 7351-5851 -3167--983 4201--7968 -5460-9074 -5509-7332 -1106-2508 148-5542 9428--7658 -615-6656 7660--6170 3113-5111 -9686--8987 -3931-7358 -3811--8968 -7328--2681 944-6126 1053-7004 7548--7099 6558--4133 5940-8538 -6086--7892 3234-4607 4959--8678 6625-6435 -482--8883 4946--8489 -7201--3419 -3564-3916 -8592-9009 -1018--9282 4345--722 9351--7681 -5684--1671 -3924-5776 8459--3620 -3851--5213 9064--3949 -9403--6361 9477--2789 -5457-2365 2650--267 -6677--465 -2720-3718 -7267-8037 -3552-9845 -9850--3078 -2547-7633 -6057-125 -9296--4283 -4586-7885 6803-5872 5112--7839 2186-876 5182--9631 -2063-4076 5070-5947 -4484--9502 -4937-8104 -7113-9648 -1077-1259 2292--3788 8462-9182 2262-9869 -5852--2091 985-2167 6184-4126 4315--8249 -5571--9626 5443--8615 2768--148 9999--9881 4986-9396 2227-571 -6666-3095 7036--2390 -2102-1736 -3916-1421 -9806--1330 3499--5024 6048--4592 4872-9327 -3291-6466 -1325-3385 9359-8154 7550--2883 9280--6080 4702--939 8898--8919 9898-3172 -7249--9397 -5648--8428 -9460--291 3927-7072 -3995-5753 6428-1502 3190-9230 8586--6100 8740--2738 -5444-140 3227--1871 4886--7008 7114-8306 6190-1290 -9505-8578 1301-7670 -8505-2236 -4277--2273 -4894--5901 -1221--3548 1756--8836 -6192-8737 -3284-1958 7930-1825 -6123-2446 7006--3887 5354--9135 5858--7888 987-8294 8616-8793 2152-1246 -939-2885 -8416--2569 -8026-3505 2185-2262 8270-7795 7230--3806 5403--3946 5254-5405 7959--4272 9618-373 2707--5066 1838-6688 3563--1797 -4182--3167 -8455--7396 -9238--7560 -4863--6174 -98-835 -5875-9176 1737-8553 -7730--9160 -1220--857 -145-2901 3765--8780 791--7671 7412-5701 5290-6701 4126--2185 -8106-1981 8055--8119 3414--207 6822--3920 -9644--578 4442-4535 8616-9216 -572-5189 9386--5850 2163-7008 8381-5164 -9531-413 -5271-830 -4004-3760 5911--5444 -1101-16 7264-6852 8245-104 -7537-5130 6918-8750 -9265--1855 8070--9282 -9840--4268 3923--1710 -1428--8576 -7711-3281 6467-5637 -9046--6694 5825--1304 -2284-1892 9604-863 -5673-3171 -9953-4723 -4872-3703 8193--7878 -435--1610 -218-7736 -7926-3812 7572-1182 844--8326 -7017-1482 -9374-5173 6404--9661 -5953-9432 828--2654 1126--494 7351-8555 -5240-5404 3990--4462 -1248-2680 -8123--508 1559-3920 4474--234 5974--7983 6311--1404 424-6929 2956-8303 891-9107 -854-7463 8462--1152 -3238-5723 1603-7463 7465-4912 3993--3477 -2365--134 -6551-9983 -6248--8453 -9026--9660 710-6626 5285-9104 -9908-5793 -7276--9434 1365-943 6220--545 -3538-6751 9913-9660 -3905--762 3873-3081 -7895--9204 7993--5126 -231--2081 524--1951 3209--1737 -328-4692 3273-8242 256--9031 2769--4436 352-2948 6194-1553 -9678-572 -5455-640 -8440-1659 -2356--6889 6338-5575 -1870-8377 8732-7402 6810-5254 -9556-3864 -5899-5783 2678--4122 -6231-4108 -7331--1324 764-5640 6571-6547 -1994--8140 5065-173 7221-6349 6313--9691 -9719--8926 3546-8993 -8713-8992 -5016--8960 5658-2984 -6064-2131 430-5126 6071-5458 -4152--7242 -6537--5004 -4987--4023 -693-5820 9384--3367 -2075--7517 1198--56 8971--7465 -8002--9313 -7324--483 -3694-9152 5263-8305 9045--5168 96--5750 -4673-6530 7587-1169 1988--3126 -1907-4966 2889--9971 -75-511 -4898-7368 -2763-1712 -8365--4269 3222--6688 -1932--6948 9438-7294 3537-5211 2977--4331 -9472-1000--9152 -8985--459 -8844--480 -4951-1791 438-6109 -3198--347 8473--9961 3020--3731 -2061--3971 9036--6576 1399--6652 9132--5129 -2228-4343 -2786--5939 9535--703 -6650--9392 -7779--2704 2541-3227 -6773-1468 -2890-3531 3955-8697 -5471--5563 -8304--9303 5005--3251 5424--6430 644-1965 -3712-7204 -5209--6361 -225--9346 -4747-2823 -8843--5816 5895--1379 6491--2325 -4072-4623 -8337-598 5939-7695 4331--3664 9370-4733 -1708-6306 -1592--6752 -4431--3931 -9497--7722 4930-3233 -5629--6074 -5714-3834 -7036-9229 -4182--8921 -8040-8878 21--580 -8863--8893 -9074--2345 6734-7119 -2324--651 -7831--6312 -5310--7593 -4066--9488 9489-7467 3687-4818 -7216--4074 246--5202 9875-301 5592-3140 4620-4879 -2876-2887 9113--6221 -7024--7469 6746-855 -7256-6757 -451-6382 -8117-759 -1874-4324 3110--9329 -5180--4716 -3258--5829 179-4497 5984-8826 -9188-9948 -2589-6007 -5845-292 6385-3679 -4935--5772 -4201-9313 9209-5650 4408-6414 422-1194 -4220-5788 5112-4775 -1963--4312 -31--8544 -4142--4571 4863--6108 858--1754 4029-4478 -3112--7827 -7903--7556 -2688--8740 -6172-9106 9154-2549 8824--4737 2077--3137 -8703--2900 -7390-2440 4111-339 1888--6160 9128--7632 6311--7617 1812--380 8254-2192 6731-1084 6582--3314 5038--112 -3181--221 -7696-8617 -9695-377 -7755--8700 -7030--1927 6163--3593 -1997--267 6745-8534 5561-4096 5487-1995 9311-8817 6699--1558 5281-4038 -6-9160 -7306-5834 9967--7850 7878-1073 6665-1195 7219--8473 -129--7543 7098--9885 -5082-927 -1430-1040 -9684-5653 -3967-8394 5703-3950 379-8841 -8125-8623 2779--3022 1057--1062 5978-692 -7535--5755 -1271--26 -8450--6768 -3812-1200 7022--6165 -7329-8261 454-8431 -4839-1581 6396-5850 8261--1162 6240-6548 2884--3194 -8789-9575 -4606--9914 5266--1312 -6643-9922 -7233-2755 7269--1451 4531-5305 -2723--8005 -3049-8922 -6854--7016 7224-6929 616--104 -3096--8417 -3077-2374 -5111--772 798-5253 7160-2752 -6503--3792 8396-2905 8748--1643 -9619--2813 -9386-8363 -681--5269 9988--3490 4727--2118 3861--8745 4358--6886 9432--8653 4100-4248 -4329--9948 -9029-1079 4889--3694 -1760--1089 3448-6215 -8959-6422 -3361-2507 -5185-7869 -4205-8413 -1951--5950 -7356-6178 7875--1096 7013--7291 -6605--483 394--1206 -5433--1447 9222--6015 -9294--2249 749-9815 9883--5587 -5776--7918 7175--4027 -2982--3652 -2600--4512 4404-6788 542-1429 7263-9377 -977--1270 -1360--4912 9688--3820 6879--3060 -730--1011 -8221--5192 934--3416 9224-9237 -11--7298 -6525-6391 886-4092 2432--9373 -5815-2922 -9302-4173 1120-745 8479--7101 7987--2703 -4680--3247 1593-8948 7222-7539 -3879-6429 -527-7663 -3831--5248 167-8495 8507--1558 3384--1257 8659-4113 -1346--9143 -4470-7241 5857-1324 -4748-3398 -9808-7644 -2172-5813 3976--1253 2384-6106 444-484 7879-3255 343-4039 7702-4331 2233-5839 1705-94 -5044-3190 -4214-9017 -765--6211 -3699--2388 6477--2841 8469--5714 -4784--9650 9376-4095 9067--737 8624-2595 -3548-5593 -1061-9839 8537--6947 -1987--1228 -3847--8045 -3630--3797 -9124-6246 2678--8662 -55-7108 4898--3373 7309-7572 3081--2144 6554-6243 -6957--4370 8134--5264 -5093--1358 4648-653 -9990-9533 2477-2300 5157-889 -1356--4180 4703-3079 -8630-9547 7754-8673 -7611-2749 -844--4906 7550-5698 -9300--4174 -8209-1606 6229-2589 -8097--7480 -6342-2435 1785-9356 -9724-4429 -676--5421 2332--2882 -1817--9158 -9700-7521 1031-8890 6408-3907 148--7268 -8354-1154 2137--7196 -9968--8934 1096--8299 -2939-8937 -102--6694 9220-472 -2518-7988 -5672--5230 1828--8431 1392-3838 -351--6417 586--5478 3401-3142 -766--9276 5419--1439 9938--548 9747-7598 -4510--1063 1099-4555 9852-6692 -880--9466 9560--3296 -6913-7390 -1169--7136 -7227--1665 -7263--4646 7540--7204 -9894-6779 -5321-5837 8923-4526 9234--8895 -5852-6703 -6107--6733 -1072-4589 -4047-4058 -8046-3200 -1825--4188 7099--2462 5129-966 6778-1307 -2585-3793 -6805-9579 -5742-6516 -6714-3464 -1169--1120 -2823--8584 -1848--3153 8463-7907 7332-6078 2343--305 4497-8362 400--7886 -6712--8879 4501-5047 3991--401 7168-8955 -5229--9179 -6796-5199 7822--9131 4892-5938 -4917--454 -8277--9869 6052-3999 1494-7436 3060-5037 -6148-4405 9232-5415 5017--3860 -9244-5250 -9687-59 1714--8827 -6602-7865 -9553-2855 7841-6774 2308-1023 -369--5739 -4805-3138 4756--7110 -3589--7385 4848--3242 3346-2217 1617--3549 -5989-9306 5685-6469 -2081-9687 7574--2352 9380-3952 3889-4291 6897-4988 -320--6903 -8231--1734 2306--9827 -2792-1294 -505--5962 -9817-1460 5984-6858 -2049--8623 4501--7058 -8284--4180 -5690--6238 6572-5590 5709--9307 8940-1908 5167--6069 -354--946 9442--9577 4503-3478 -8986-8725 -5314--5713 -504-2341 -2190-5801 -1315--9637 -8394-4415 9522--5515 -346-5739 5512-4561 2696-6693 -7209--177 6000--2654 1183-8731 -5044-3685 8295-6462 -2140--7058 -7473-1833 -885--5975 -4290--2092 8981--8681 -8964-9424 8861-3118 7936--9754 -2637--1691 580-4451 -376--5426 -4950--4534 8204--1183 -8276--7614 2554-9483 -6891-5088 4215-2621 -1077--6842 -7257--272 4430-7452 -701--5921 -6356--5383 355-990 6689--5830 -2121-303 -8574-1622 5127-4604 560--945 -2816-5654 -8657-1212 9811--6598 -6142-3261 5062-6154 2737-8562 -8483--794 1231--8271 -9336-3253 -1846--6875 8471-2346 1488--1652 -2084--8205 6941--4886 -1284--4319 1389-8274 -3024--4295 1554-2165 3533--3207 -3640--3540 -2120--4939 6154--9686 -9066-5689 3099-7130 -9291--9108 -517--9717 -1594-4215 3663-6298 -3429--1216 8329--9984 -8657--5188 9288-1500 -1726-6022 4995-9054 1533--1471 -5925--39 4858-9930 -5589-477 1146-8372 -3216-8659 -9611--8401 1593-4584 -5818--5627 5829--2167 -3404--6060 1283--6445 188--1694 7986--4336 3560-8100 -2207-2738 -603--8337 -241-2496 3492--1722 -7962-6017 7373--1949 -5609-1820 1687-7730 3349--8476 -8075-4057 7877-1820 -6133--4395 166-4628 -2398--4055 -921--3964 -2482-8793 -9281-496 -869--8744 7783--9935 5527--4652 8780-632 6417--7957 -3365--1770 4126--6513 562--248 5548--7066 7921-5316 -4730-5420 -1816--5861 -6612--6599 4428--7415 3447-1535 3111-8128 4126-6820 4023--665 -1539--7782 2301-6569 2598--3529 -312-2174 -7150--2056 2240-578 -8696-1256 5377--8257 9669-595 1150--2386 785-9215 6771--7533 -1821-1844 -7059--5915 -7715--8897 5968--8254 2715-7616 -6858--6278 -1647-9764 -6498--7448 -2655-9613 6612--783 3665--1623 -2809--5163 -2951-7249 425--6703 -8364-9452 5806--4318 -9965-5623 7552--8978 -9676-9526 -9014-1804 -6299--5082 -5889--5973 -4434--796 9948-2724 -2275--9501 -1297-2197 4866-424 1066-5040 4717-5920 7485--2044 -864--9444 -9863--3946 4582--7494 996--1393 -4020-4416 -3502-6315 299-2991 -4790-2165 5678--2122 2441-2439 -9298-2212 5893--881 -9000--7157 -7092-2155 -9588-7460 6109--4899 1994--2071 -904--1770 -9820--2215 -7820-8190 1295-3475 5484--2619 7693-7194 -5710--8163 1436-1087 -1373-2704 6239-4652 2447-3401 -4390-5376 -6501-7014 3752--4607 387-5158 2725--4057 -3705--5389 -468-1777 5335-1756 -2238--8767 -6273--2395 6425--131 8614-8175 -2275--210 -6249--6716 -5957-8372 7841-4604 -5335--8813 5612-2535 -858--9882 3562--4438 5091-8105 -266-1978 -1585--8396 -1197-3973 8540-5833 9264-7809 7670-6260 -1475-8874 5517-1031 1710--2783 4570--8769 437-4632 7149--2548 -2644-1135 5208-729 1669-2116 5319--3432 -6206--7583 -1384-9285 6257--960 -6968-602 7769--1074 9708-1263 2928--2277 3702-115 -6490--2107 7102--1534 5439--9180 9013-6348 -6207--4389 5751--7845 9828--1940 5226-847 -5925-2343 2694--9589 2184-9638 -4340-2076 6383--3189 5459--9004 432--9166 976--9655 6343-1771 -1882-2697 -291--4278 9915--2340 6483--6123 -1912--8753 -5911--5183 6453--8795 8377--4975 6748-2966 -5573--8960 -3739--9370 -8910-484 7060--4705 844--7939 -424-5312 570--4836 -9843--1060 -4604--2246 7577--8343 5196--2437 7489--845 -247--7280 6213--9331 7870-341 2248-1427 -511--5939 -1783--9298 -1423--7719 4017--553 -9762-7912 -5385--7111 5710-5696 9947--1754 5769--4694 -1124-587 7386-1381 -4355-9509 -6032-4837 -6079-7623 -7731-463 1586-4659 507--6827 -4217-6117 8717-5169 8691-9177 -6917--6344 952-593 -9235-5917 7788--8053 -3532-1500 6048-1609 -7412--4300 -6191--7498 -341-440 1902--4140 -8737--615 2250-1153 343-5330 6353-6047 22-5306 -6382--5336 8398-6109 -7585-1956 -1337--1546 3133--3089 -5491-2257 4759--6695 8259--5302 6003-5184 604--6081 -85--2458 7131-8830 7877-1050 8145-4408 8251-6563 6175-5518 -4178-8399 -6696--6337 -7054-2520 8761-4838 -6605-4794 4137-7906 9060--6374 -9083--5153 1240-5025 608--6128 -3610--6095 -5991-6295 319--5620 -6443--1453 -417--5323 -3380-7524 -5362-3800 -8568--4474 -6729--3604 -4220--8876 -350--2549 2448--8467 -9349--1146 6576-1890 5640-5238 5604--2011 -8657-6382 -9266-1059 -1499--2710 -9665--6179 -8753--739 6885-2351 2383--9086 2194-8283 -2095-1974 8157-7294 -2427--3718 9909--1066 -393-6504 -5298--5458 3510-5113 362--5474 -5524--2798 599--756 -6087--624 -8015--6602 -2546-8642 1748--6834 2328--8552 -5791-5852 -2840-8726 8052-7380 7250--1830 1884-5619 -6935-3396 9984--2707 -8027--4213 13--6183 -9132-6747 -8195--3416 6830--3067 2767-9477 -7550--3306 5929--2703 -8981--6693 7762--7589 -9680--7400 1691-9287 8945-5027 -188--9599 -8117-4064 -7889-1526 7308-3194 3688--2171 -7050-8124 8637--5133 -1344-7948 -1433-1259 -8830-533 3817-2217 -4323-4300 9940--8744 -2541-5750 -1535-6555 -9109-5986 -6123-2422 8269-4212 -4651-6610 -1853-3095 -5770-3370 3926-9925 3504-6622 -3854--9520 846--2882 8082--7000 7041--39 680--6958 -2126--6861 6062-3319 1612--9154 6394--6782 9097--5077 2656-245 6921-6007 6895-7379 1147--7824 6487--4340 -1469--5519 686--3658 8788-2777 5085--1979 -802-3573 7378--2851 -8112-604 8372--9418 7418-3689 -1946-1658 7981--7965 -8033--2247 -7027--2974 -884-3927 7004--7573 5660--7497 -4986--3367 -2335-2454 3403-994 -187--1862 4217-7909 -6161--9651 -7019--6964 -3594--5048 -5856--5405 -9063--1151 -9621--4212 -4395--8941 -731-3513 3346--831 8220--418 9208-7788 7705--1317 7547--447 -8150-3445 1326-8839 -2712--4686 -8092-8449 6529--129 49--4914 -9897-2258 9610-3844 5848-6277 -7988-6089 7602-3794 -4033--4164 828--2233 3294-4791 -6829--7843 2507-7359 5415-140 -4340--2709 -6253--4720 9632--5067 -9892--8654 4941-3041 1246--4936 -4418--3899 8098--9876 8514--7079 -2192--5333 1385--1860 4196-1567 1733--9403 4727--4250 9643-8714 208--1126 -6150-3376 -3696--9045 9688--7257 -5062--2529 -4193--5045 4966--8666 4890-8789 -7318--5022 434-8452 -9494--5399 7035-982 7310-3149 3345--7287 2960--8382 3058-3263 -2948--6448 -8787-4175 5613--8769 -1043--6686 3352--9801 9196-37 -5846-204 -8467-5807 7244--3653 -4398-7312 8304-3350 -9032--4144 -2242-7488 8790-7399 5701--7919 4730--1573 -8723--2910 9470-7375 -5150-885 6103-7035 -6305--9049 -7912-5860 4928-9646 1147--328 -7918--8931 -4434-3881 8630--769 9448-3736 -7047--3656 5409--1049 -1894-2679 4392-3794 7348--7808 -9362--8043 6960--3566 9674--3284 9796--4554 7346--174 -2290-8382 9698--1430 -401--9774 -1545-8573 1807-4184 2590-408 -3962-3956 7892-4282 3468-5497 979-1149 8868--3187 -6307-3680 -8205-7373 5181-9185 -5509-7252 -1529-2406 -3012--7114 -9007--7565 1316--7407 -2236--1751 -5359-2911 -1494--8325 337--4035 5902--1550 -3638--942 4270-9413 5199-1250 -7919--3469 -9365-1000-903 -2341-2059 7818--3820 -7804--6224 8953--9778 6176--9388 1921--5918 -4663-2041 -2463--4733 3644-7615 -6833--6736 -88--4773 -7358-4186 4063-7974 -2654-2389 -4926-601 2824--3419 3671-8820 -1208--3546 9781-9229 4353-5446 3148-7086 6644--9402 -5901-488 -9698-2752 1277-3480 -3983-5761 -201--7189 -1930--3196 -4774--4671 6978--9795 1590-5132 -3305--2499 -7499-5045 7258--5001 -5302--5017 818-447 -5177--864 7777--2540 3712--6466 8206-4051 -5909-2723 38-509 -5238--4395 131-3152 6084-8194 9960-1747 -8607--4887 -1861--4231 744--4159 -5660--1064 6444-7818 8294-6185 1483--1621 2973--6245 -2380--5405 -2599-4830 -5921--6363 -9809--7132 -5718--9114 -6949--4970 -726--9604 6348-6390 497--8435 -2616-3214 5730-7989 -8664-36 2377-6458 -2315--6809 9752-4325 9104-6957 2733--5901 -7485--1287 -321--2029 196-5571 9350-1224 -3753-7131 -9199--4382 -3734-5682 8308--5617 5433--4690 1037--6823 -7856-3650 1989-7312 348-637 -6758-5290 -466--9413 -1112--9802 -7820-8801 1917--1321 7400-8652 -7038--2893 8155--8713 -4913-2420 -7701--1758 -847-5626 -7520-2217 9419--2944 -2724-2148 640-1558 6086-9814 -4390--8788 -2379-5227 -5906--4344 -9812-7929 5250--882 -1542--9469 -787-8793 -1198-159 -9563-9072 -8880--473 9398-3788 44--8599 -193--506 1438--1226 3831--6524 587-5620 909--2450 5643-1709 -4349-6707 4242-4258 -5670-6793 -9670-1535 -3593--5740 -674--7284 -5473--5827 4217--7111 -3622-1799 -3346--9499 2145-4491 6182--4396 8262--6477 -5344-3143 9217--5969 6883--9281 -1138--7425 -6030--9929 9064--8250 -2296--8367 4932-9431 -5598--4272 469--8385 8147--1165 -2900--8766 1753--4161 8720--4001 1610--8193 2226--3657 -8997-1242 -6160-4999 8909-9984 5361-6416 3502--4350 7922--3948 5197-4048 7568-3994 -9833-869 -6493-9973 1183-1923 4593--7542 -9467-8438 -9639-127 -8891-3534 -4495-8351 -3498--2434 7487-8285 -5222--9913 2909-870 -3964-2888 -280--2253 900--6441 -7537--8935 8309-1957 6475--8931 -1834-9058 -9992--6402 -457--5632 8892-6672 4273--8063 -6415--3872 4032-6203 -6723-7490 -6552-4412 8938-6144 -3522-7813 2393--2334 -3062-2077 5382--5527 -5340-2779 6369-7800 4381--9110 -8700--3559 -6482-9026 -4710--5417 4703--459 7128--2424 -5136--7257 -6315-3276 183--1400 5685-1463 5383-3126 -550--8063 -3549--6801 -1279--2248 -8887--8060 -6517--9123 2878--4030 -7353-9242 3886--990 -3957--8701 -140--1962 -328-1965 -5270--8007 -1014-2748 5549-5371 1679--4518 1515--4799 -3243-8443 -9221--470 6470--5768 4791--567 634--7660 -1676--8486 -376--5344 2090--4692 1297-5641 -5696-900 590-87 -3234--6495 8816--6946 1311--1252 9121-2782 -1137--7748 2597--38 7005--5191 -9115-156 -3936-7718 -9250--3550 -9864-3657 4206--4580 -5526--1031 -7581--4223 -257--9165 8605-2926 1034-6389 -9350--8514 3555-1839 3904-9141 -3030--4103 6942-1333 -7385--1587 -6336--7938 4175-7616 -2404-5792 -9352-4333 -9106--9284 3202-9793 -5181--797 601-7645 2819-3166 102-5558 6658--1763 6135-2818 8000-5161 8853-6504 -9439-73 7079-6141 -6048-4272 -3725--4092 -8396--8965 -9305--4699 4776--7763 -8212--1549 4238--9078 7436-807 -2259-9203 4758-8050 691--5877 6853-2425 1508-7569 8537-9264 6849-840 -1183--9897 1362--8919 -3341-7021 -3590--6617 -193--4191 4614-9856 244--9083 9714-9566 2050-4729 6874--7185 -4600-8184 -2802--4282 6850--5985 -6370--5795 -8022--9027 -8579--9884 -7235--4181 6622--540 -9238--9750 1871--4569 -9913-2519 9112-8205 -5153-1552 2857--3106 -1343--8685 1421--3510 -3418--354 2183-3645 4760-6917 10000-1273 -9719-5419 -2254-7071 4521-3132 -9989-8790 3887-6889 -7583--5291 9553-2246 6396-5832 3352-5873 -6496--8027 6596-8031 2984--1432 -662-3022 695-421 -2339--6473 -3767-4772 3797--4283 -6767-4129 -1902-6556 -210--5207 -1612-7706 6248-8540 -7814--6311 -9416--6136 -5976--1555 -5665-1668 -288--4484 -1156--7577 9245-4337 6433-1625 2139--5303 -2044-2105 -9059--2876 -8469--1896 -5498--5548 5885-8393 -5489-7542 5985-7591 -5153-6844 4949--5188 -6142--6711 -5621--7123 5560--2724 9073--326 -2142-4129 8260-5187 -3441-6996 -1011-3263 5145--7083 8152-9736 5236-9596 -1288-6411 -5500--4731 762--6604 455-147 7667--355 6752-6606 -3661-204 -7856-3843 -1803--3289 -7231--8201 5180-1895 -5487-5270 -3157-7690 1056--2096 -7380--9540 4228-6588 -1858--3368 9093--7530 -4692--8161 -4950-338 -9261--6203 -2191--7808 8422--6935 -7475-3050 3341--178 -523-9923 9486-1791 -402-4986 3535--4590 9277-9151 -8881--9127 5404--2159 4531--3582 8562--8562 -8537-2496 -723-9592 -9960--9393 8996-6861 5093--5258 1260-9428 -583--286 -2729-6898 7784--9121 -3932--5277 -7033-8928 -7967-1371 1711--4625 39-4056 -2936--9202 7692-5303 3722-8315 -9675--1083 6069--1999 -3766-8092 9042-4061 -7618--6764 4925-6850 -3581-5124 8595--4329 1752--4098 2491-2315 4167-4907 -7432--8749 1245--7911 5555--4864 -9206-3473 3414--9302 -6190-2280 2236--8327 1083-6392 -166--2276 1549-4811 -5011--1939 -5903--6513 7353--6591 2890-2467 7723--6013 9077--9932 5274--9399 7638-4265 6398--8493 -9426-5891 -2492--1752 1081--5703 -6150-9429 9827-3956 -6023-4188 4277-9837 233-9864 -2339--7676 -5249-7455 3863--7779 -259-2577 -3949-7709 -9271-9100 -3703-4432 546-2680 -781--5195 9313--8305 -421--5254 8383--9756 8185--5196 -3579--9649 6111-4849 1843-8036 1426--2761 3567--1840 9914-8076 -3454-4031 -5058--3235 -7804-2306 -9128--8991 -7895-2774 2358-2419 9321--7465 6914-5120 -2720--3786 7299--1873 -5389--2270 -9691--2788 -5620--9510 -7874-6123 6119--8379 -8145-8776 -6073--3435 -820-49 -8237-8310 5403--6015 2877-3448 -9714-8129 9977-5169 -5269-5587 -8769-1544 -3912--2939 1523--3239 -9375--9621 -5976--9408 4801--6928 -1337-6035 1479-3390 5031-9408 6466--8287 -1939--5793 6707--2495 1450-1116 -4083-1051 471-469 5570-7203 -9887-7199 8208--8334 -6308--8156 -7605--151 -7534-345 7550-4161 -6078-2766 2653--6437 -275-9206 3681-1408 3942-7642 408--513 -7003-8767 -4955-9562 1279-7489 -9874--5972 -8171--5410 3080--4321 -7982--551 -4208-6226 -3670-8413 -6386-1189 3443-8685 -3321-2215 -7546--9371 -3312-9434 9367-5736 1328-3388 6950-4169 -1971--8175 -8018-1309 -4734--4047 -4424--2699 3522-3821 -6273-4160 44--2911 -3671-8610 -4230-5192 7341-9029 4001--4848 4772-1125 -6487--3536 -4901--3927 -5463-4987 -5693-6281 826-3262 8546--7055 -8636-3393 -5029-5767 1785-6863 5831-8783 -2085-8390 910--911 -2379--8771 -9766-4173 1839-8973 8925--1234 -9808-9908 3785-58 1006--7720 -6508-9208 -1282-5610 6592--3883 -1062--5301 -6464-7578 7842--3958 -9421--2573 -133--5948 -4333--9951 3612-3009 8801--4582 8710-6543 -6274--2596 -1078-2725 -8601--867 -8462--4510 -7738-5737 6908--4211 -3529--8835 -3502--9544 8576-4346 -3549--629 1136-6499 -7106-2017 -8191-3275 -1970-3871 -9540--1128 9623--9477 -9741--230 4503-5836 4905--8162 5491--62 8982--3522 4448-3639 -7990-4683 -1858--3165 0--696 6355--6031 1194--11 7878--5442 3519-2557 2667-5161 6438--5475 182-1712 4066-9919 -794-7440 4641-7711 -2949--1972 -2915--4131 2979--4749 -6127--8065 -8656-3764 -5370--892 -6125-77 -6170--6566 -2426--1376 2426--456 -5524--7236 3765--1587 6131-8745 -2662-3917 -9836-458 -7637--8949 5337-4696 4865--7390 -4907-624 -6674-9733 1819--8272 7353-6611 4233--8368 -7169-6277 -6860--438 -293--6050 -4179-9813 7047-5025 -8423-5301 5448--6050 6568-2539 9475--5255 -7725-1261 5973--2913 7148--3718 -3794--8221 -4395-9086 -9164-4897 9813--9809 -7986--3713 3584--4974 -179-4790 3626--3047 -6752--9272 -3285--4181 2203-9282 -3889-8980 -2547--5168 -3597-1385 -6721-4560 1989-2600 -3671--2795 592--9204 951-9268 3055-2944 4536--9107 1635-6130 -4188--7609 615--6050 1758--4683 -6431-6041 -185-5113 -6113--4542 9776-8558 -3779-7188 -3495-6746 5566--7061 -2523-2468 -7804--3491 6831--1497 -208--2577 9459-4697 -4030--6139 889--8783 -7371-399 4170-6928 4390-2746 6733--419 -5339--626 -6476-8564 -2523-9315 -2976-4107 -7735--120 3465-3079 3314--8409 -2181-4324 2703-683 8355-8143 -1548--1856 -4079--5320 9464-2969 2460--6215 6154--1989 -3892-93 -5267-1240 2263-2567 398-9795 3166--3907 -4950--46 -8386--3737 -9975-6747 8132-2700 6500--4590 -9712--4621 -8919--9186 5053--5321 -8064--8726 -7025--5305 -4403--718 -883-1763 -4420--1276 -3605-9453 3108-8663 1361--7527 -8804--6568 -1101--9037 4238--5898 2994--363 -9142-7753 -93--3778 -6093--6673 -9025--3681 5283-5592 -3346--664 3755--7410 -9548-7390 1838-4399 -7595--4230 31-3325 8347-9123 -9024-4331 1782--9476 -44-7054 -1102-9200 -1219--4157 -8782--8784 667--190 -132--530 -468--4409 1617-5709 -857-4387 2347-6705 21--174 5827--7231 2120--6870 -1013--1865 -2387-1763 -4249-357 -7721-8006 -7938-6716 9905--3815 -4394--1767 1236-6465 -6639-8977 5023-3380 -1074-6954 -2174--7435 1224-3420 -1073--7884 -1367-1165 5171-9774 1753--1107 4780-8142 5311-2890 186--4539 1720--7868 587--4849 -3216--1275 -6967-3172 -9384-1336 -6149-5059 -1689--7659 -837--1332 -7689--534 -4927--1165 -3319--6080 -9630--1852 -1609-2415 -6367--8942 -3112-8710 4066-630 -8733-4316 2976--6092 3053-6727 -2100-9534 -2996--1355 -1563-560 1467--9706 9858--6498 4758--2823 -2491--1334 -7213-6409 -5942-2247 8357--8754 8133--2023 -4365-1379 7152--2247 -3749--9456 2631-9956 -4861-3360 9988-9248 7745--6982 -4166--3914 6172--7385 9747--7842 -5263--4613 5366--1012 -457-8461 -3017--5457 -3581--3155 4592-2517 364--4754 3727-3721 4831--1034 -5372--8745 -6130--9024 1568-8022 -6092-8683 -2868--1911 9216--895 -5893-5558 -1471-2071 -3590--3165 -5431-3959 353-7686 6751--7880 4544-9486 -948--2565 -7581--6400 -5012-2540 7819-6560 999--5295 8381-697 9596--5505 -5180-8715 -4998--6679 -646--2122 -7560--678 -5953--1521 -5654-8548 -3454-6135 -2460-8176 -5944--1318 -5777--8319 -1833--1001 5964--2341 -3008--6975 -1917-9103 -6919-2517 -9273--4808 2456-2732 7957-4786 -8751-7963 4168-8487 -9887-5528 1839--5744 6322-5823 5956-4516 9942--9024 3520-9733 9721-5586 460--2361 4250-5699 6488--115 -8371-4441 -8656-2893 -5740--8728 7645-6921 -6291--5280 -9787-2125 2675-4890 -2778--1768 8340-3941 4299--9645 4978-8192 8351--174 -5696--4243 3339--3252 -4726-5398 -7365-6226 7389--3028 720--9792 3727-2779 1990-7939 -1234-178 6223--1186 -2421--6652 6289--7585 5544--3556 4595-1953 2944--3064 -7855--8932 -1018--7483 -289--1711 -8310--4596 6933--6 -1808-5812 -6391-722 4769--8665 -4789--2186 2709--9053 9469-7693 -6170-3831 9892-8892 -6351--4738 3197-4080 8266-1420 3693-4042 2121-4666 5151--9036 9692--7172 7692--4412 -8055--1867 -2910--1225 1821--1373 -4395-2087 -6865--973 4343--2477 5389--1682 1940--3981 3338--6418 2713--423 -2183--5922 -3354-6829 -1615--4882 -3384-5155 -593--7595 -2693-2099 -8371--2003 2383-6638 1636-267 2169--2561 -2123--8562 -8181--1851 8691--2223 -3895-1957 -511-836 -2363--215 -1422--4263 -8945-6251 -6777-3211 -6112--8434 -8118-7334 2677--4510 -2094--4034 -2985--9052 1421--4460 -9911--4038 4737-4441 -6036--9819 -4405--4421 1709--4819 -4576-3619 -6246--6595 3662-4533 -957-3884 -8541-7887 -1930--7900 -9773-6571 8180-3108 -1924--6158 3283--5414 -6927--7549 -4696-8263 82--4700 -3690--8892 -9910-6569 -6480-4747 5539--2312 -5988-7090 9644--5332 -1775-7906 6512-7425 3817--9183 8356--5954 -6347--4556 8774--6347 -3591-5207 -4644--2031 -8305--4058 -6693-9280 8465--9894 -58-1000-7554 -9867-6471 1705-945 -8180-3579 -75--1061 -1255-8476 1952--540 -5265--7904 584--7750 1122--3851 -4890-4511 8958-3606 8896-7626 3462-6337 -7132--5420 -8674--7293 -1535-6411 -5855-5661 -151--3849 7093--460 7241-5979 -8807-3032 -5574-9966 4778-8399 -8142-6951 -8908--8980 4021-3202 -532--4382 -9827--2927 -9035-5106 -9752-7074 -9346--7888 -7370--1432 7367--3385 -1842-5228 -4128--8326 4464-6620 -5738-6224 -7701-4991 -4183--7686 2008--3099 7976-2029 2141--9378 -2353--5758 9748--6260 -3154--35 8825--8572 -2867--2348 -3688-7927 9992--7946 9099--7420 6241--9805 -4157-3944 6290--4697 6681--9994 9712--9890 8492-6409 1616--3610 3843--9691 5011--3034 -6611-7460 -7817--1271 6224--9222 -8432--8703 -401--8083 -3036-5027 -7839-4295 9131-8538 -6870--955 5595--9073 4001--608 259--9252 6386--2217 -4739--2800 -8271-7206 -627--780 6601--4278 4951-6114 2426-7427 -2384-1815 -8160--8844 -2467--5497 6883-836 4179--5396 766-2016 -9518-3478 -5562-4567 2036-2685 -2805-6673 -3773-7466 1868--2817 -5250--2626 -1408--7120 -2961-7363 -2355-8964 -4181--3960 -5105-2364 6652--5876 -2101-6904 3184--3573 -1263--3013 -2278-6785 4960-8984 777--8184 -2331-5570 1033-4795 2893--279 -2034-929 3961--1696 -3106--3575 9020--5293 -9947-3405 -6285--3438 3438-3533 4783-5523 1919-1256 496--7901 -6940--1760 4337--7163 3829--3465 -4648-5687 1082-6639 -9896--8739 1923-1063 -3648-6876 1928-6842 -2537--3280 9932-979 -3527--1865 3696--9967 1729--2381 -3638--6911 3429-8850 -6898-3417 -5328--4913 7779--1880 -3497-4482 8517--1576 8313--3539 -745--4881 -3588--5915 -4653--5724 -6736--9352 -9698--8767 7709--3416 3694-5155 5161--8166 -4516-6800 -3306-7240 -7461--3106 -702-311 4186--8460 -3419-7869 680--9665 -2045-8364 5146-1084 6040--4408 -6997-4474 6065--1961 -7182--7213 308--6056 8633-8173 -2439-5003 1556--1665 -5988-8382 -3655-8639 6995-7749 -6610-2498 2448--9301 -5721-7400 -1476--7620 8504-8931 -2737--556 -2130--9767 -8747--7796 7844--2426 1418-5697 6122--7495 8243-8419 3084-4918 -891-5211 8836-9166 -2147--5284 5288-4591 -7548--5006 -1548-4425 -2412--4614 6709--3203 -1900--2584 8203-8224 -9221--6890 -90--3924 9440--1141 -5701--4599 6416--7685 -6502-8067 1882--8900 -7426-5534 2011-9938 -9763-287 542--1600 -5211-2820 -4082-8719 5677--7632 1097-1852 -8199-4779 8495--9017 7302-4965 3061--9264 -1252-3830 1993-3090 7866-1877 -8282--5246 -9570-2790 1160-2752 -5393--7088 5898-1767 -9028--6436 -3547-8213 -263--2972 2893-2142 -6013--9484 -1102-904 3619--8021 76-6197 5138-4611 1725-3752 -2096--317 -9739--129 4326-8848 6454-6735 7509--3662 3463--5501 2783-8954 5500-1269 4218-2147 -6275-1136 8421--2602 6875--4581 -6370--4405 9740-6547 15-2122 -1863-6139 1241--2931 6846-1862 3374-325 471-6512 6176-9962 7594--765 -4063--4693 -8279-1803 -8331--3769 -6271--3625 -3207--1775 -4802--1089 -2628-5624 5508--4443 6101-1506 8014-4862 -5416-8430 -5236--2677 -82-6281 -3713--7157 -5636-3852 8345-760 -8565--7174 832-1121 5432--311 -9621--6375 9767--4732 2752-7926 -9949-5058 -3540-3924 6633--7309 -8552--6996 8956--8762 3043-5427 9504--5340 545-8656 6379-7712 7611-1151 -5754-4872 319--9587 3362--2678 1009-386 3938-9050 -851--1549 -7294--1952 9156--7438 8280-4387 -8963--4296 -6962-1379 8844--7611 4157--1827 2344-4025 9609-6999 9377--3514 5990--3541 889--8376 -9031-7912 -9267--9304 8627--9584 287--4757 -4590--5637 -5597--6028 -8893--1278 -1423-4026 -1100--6521 -7253-1646 -3302-9445 -4612-8657 -432--5460 1328-428 -5042--7844 -3100-7910 -9199-3653 9038-8456 -6445-1141 -6735-664 1555--277 9670--1444 5256--4574 217--2147 9409--981 -6577-3424 -8295--275 7675-8044 2460--8499 7415--541 -4588--7641 -6256-1679 -3696--2236 9925-6479 -8178-1411 -9791--1982 4143--8612 5306--8557 5934--9779 4442-8853 -3161-5934 -9376--6343 -2097--2892 6956--7526 1545-3487 -5441--3114 -7786--9651 4056-7673 7810--7912 1546--328 -3524-2877 -3438--8969 -7557--7435 -4537-1459 -9119--2540 2871--821 -7196--5144 -2705-8759 -1890--3382 4557--7374 -4303--9395 1553--7427 1194-6927 -6005--7526 5659--1517 -8142--6549 361--8463 2280-6015 -7211-5142 -5025--1525 525-3134 -3275--2592 2156--3492 9170-8588 3260-6402 -5772--859 3953-5468 -1253--8807 -2977--5472 2616--6421 2733-8092 4055-9781 -9635-9474 2535--1948 -8933-3101 -8957--7294 4543-7994 5614-2868 -6530-600 -6536-4109 -492--6014 -1952--2739 5453-2597 -4436-7250 -702-6747 -4778-5195 3714-6575 9763-1496 -7226--5173 578-6268 9738-7911 9432--3749 4952-8650 -9518--2352 8821--4966 2502--4110 1263-3020 1981--7367 951--2630 4014--6879 -305-929 9402--8115 -168-1369 6943--5949 -1486--9788 2686-7726 -1320-4903 2778-3326 -5316-9761 4585--486 2263-378 2369--1957 -8171--2917 2715-7908 -1031-5816 -9608-2779 -3190--2435 9499--8145 -3746-1949 -2754--2311 -5752-6329 -833-3914 1968-1202 5398--6877 -4773-7990 -547-4869 -164--9673 1170-2806 -2476-8871 9443-3266 -944-6439 -8056-3040 6917--8683 -7242--9318 -8888--8770 -9538--6137 -901--6379 -301-3820 -1222-8600 5336--7766 -1400-4922 -8045-1891 6124--8925 5096-1519 998--6771 8889--3025 650-5659 4391-4780 5921--3751 2407--9794 8266-4950 -3658--6417 -5496-6339 -6522--5107 -1298--562 -9567--5881 1320-5914 -4925-9731 -5223--3795 3988-5391 9724-2278 6386--9808 -7868-9203 -1256--7710 8396-6441 8256--5422 9738-6154 -8480-7535 5946--462 9154--8837 -4186-3682 9197--7244 9827--9326 5131--8650 8495-6074 -6917-9645 -7415-9362 -4679--2947 -7811-2818 -8885--5570 1008-3246 1744--6233 605--4016 3816--9186 1205-2791 -424-308 -5514-3549 9213-8230 -5399--5531 -9579--8883 -8034--7519 4594-8676 8233--8183 9286-8064 6254-6367 9441-7367 -5069-367 7601-8145 10-2386 2070--5712 4332-601 -2131-1907 5674-271 7842--5921 -1757--1870 9275-123 -7894-9629 -420-2308 -9616--6814 -7581--7785 1847-2391 -2442--9831 -9555-6373 -8824-2988 1749-1775 571--7600 -56--5286 -382--9765 9958-8166 -9343-8339 -5490-4129 7807--9966 109--5983 -9617--5437 -7128--7281 -3312-3291 6988-4530 -7824-8277 -5212-3763 1276--5126 -874-4683 -1028--4157 -3896-4835 -817-8339 -6958--5455 8698--2766 -9774--2932 9698-8033 -4420--7038 -1708--2133 -2884-3640 2664--9928 2337-2172 -8714-9398 -9143--2660 975-1707 -6240-5305 -1280-5612 -9864-351 5845--6262 2598--8564 -3565--7571 9462-1990 5937--2761 -8283--5170 -79--8356 3908-4570 3227-5455 8949--5544 7979-6363 -3030--4709 -4784--4737 -370-8812 -3453--3496 536-7156 3836-6246 -8216-1790 -2408--2445 4567--9735 8377-5469 2824-5411 9176--675 -3051-7526 -1261--4982 2978--4671 5853-773 3080--8514 5394--10 -3811--398 6737--5402 3841--7324 -8620--1097 9864-88 13-480 -6535--2737 -6522--93 -6062-1143 -9156--4581 -3470--9608 -1289-4784 -4549--2475 -7787-5611 1182-7891 -8709-2926 8365-5256 6927--5961 5346-1407 7491--8109 2626-2642 6365--1922 -5411-5026 8978-461 2111--9071 -4264--987 6541--7409 5871-6104 -5769--9912 -9048--3910 4045--9213 -2856--793 -6967-3022 4128--5110 -8641-6168 -3881-1381 -7227-8218 53-1188 7564--9421 -3872--9484 -5477-4117 93--5116 3636--9579 2252-9065 -7195--6485 -8263-6354 -8191--5083 -1807-5574 4734-2121 -9974-79 8960-7492 -4525--2211 4159-6179 1838--9199 -7567-6526 -2394--3368 -6247-638 912-3743 8014-9241 -9824--6578 5523-3394 4524--6665 4420--604 -8547-7704 617-2169 4386--2331 9610--634 1912--3220 47-4424 -2204--95 -4562-1636 5696-1823 -3376--3832 -1089-6404 -2158-4092 3761-4860 2283--187 -3157--4068 5025--5983 -4353-9500 -5201--2326 -6252--5842 8284--9031 4078-8400 -6510--9376 -5340--6836 8262--448 -1698-299 5621--795 4881-714 -4203--6541 8361-7774 6841--7415 -466-4768 4238--6821 3224-6247 -7025-357 -2492-3993 -3653--5611 -4110--4247 -8334-4583 -9305-2366 2256-8356 -2782-1869 -5089--62 1590-7800 -3880--4532 -8256--5914 4772--4510 5010-7954 -3437--1955 -2593-4579 -5368-8275 -4786--5287 8846-8538 4964--2477 1124--6089 4767--2241 3253-6365 9130-4064 7053-6423 -7011-6852 -8315-3186 -4675-7800 2368--5746 -5689--9619 -6578-8387 115--5986 -7879--9181 7445--3622 9124-5350 -198--255 4771-2169 5421-9502 -8879-6211 9372-2908 546--5018 9775--1255 8493--9257 -2069-7419 -1485--1993 -3367-4641 -2913--5321 -3828--5877 -5581--3332 4655--6100 -3569--9000 5677-6040 5223--9510 -7566-9539 3401--9866 1972--1038 737--5970 2619-1086 6627--8863 -902--2089 9526--1504 -8064-2937 990--9798 9788-4134 2780--1868 -6525-4311 -5691-8282 2821--5435 -873-6777 7421--3690 -3908--7222 -8740-7155 7943-9629 4621-9640 -2427-2069 8451-1480 6702-3923 -8897-83 -994--2395 3410-3308 -6312--3096 7710-8945 9613-8179 1856--9945 8696-7943 8552-5311 -4811-6646 9586-2207 -2834-19 -9112--9627 -2199--6439 -9390--1252 3526--2641 -5021--5960 -191--539 3189-7546 4294-1006 -6309-2684 -9279--8093 -1360--4878 -4049-1814 -3547--1282 9137--37 5991-5613 1756--3714 4950--5476 -5991--901 6044-6707 1544-9068 -2777-4624 3456--2709 -8839-1537 -6731--2497 7001-9906 -6368--9232 -5606--2084 -569-7307 -8459--6283 9494-2173 -8016--5878 9869-1949 -1004-2864 -3990-3539 -9262--3992 2382--2206 2059--4558 -2800-3235 4227-6814 -9602-5463 8756--7524 5912--7840 -3275-365 3803--4905 -9537--2722 652--9311 832-2551 4492-1186 -6763--6814 8675--3952 6809-6396 -8940-1854 -2023-6881 -451--1591 8201--2168 -2247-6496 3731--6638 2915-4291 4714-7729 -5269-6667 3592-1423 8540--3655 -3678--1147 6447--6361 2888-6517 3603--8010 4266-3683 9578--2622 -8632-374 -3539-3079 -6604-3703 1379--4712 -8950--9585 4440-8317 -2113--1994 2677--8208 9704-4994 1630--5043 -4406-8930 3530-1742 -3621--6630 862--7550 912--7123 -5551--9986 7414-8311 6434--6164 -2577-4980 1428--7951 -7509-255 703-3548 1273--5574 -3656--1427 8781-8064 -2706-6126 408--7490 9865-526 -1745--6275 -6123--9060 9389-902 -7230-9089 1601-442 2070-3583 6117--7924 427--8185 601--4645 6487--2966 7-4983 -9606--7278 9595--7288 -7154-5874 3149-7815 -8204--105 5690-8433 1514-4273 6050--7138 4015--858 -4346--9499 -9651-7715 5226-7442 2351-6321 -4922--3890 -9541--9178 4036-5112 -6718-6420 -3297-7572 -4023--6884 -7085--4954 27--177 7230--2740 -2516-7378 8737--6623 -9330--8103 -1900--7652 4668-8031 2199--8588 9828-9651 -7410--9385 -499-6560 92--654 7529-2874 3279--9349 269-6818 -3410--7909 -971-2362 -5203--707 7415-3791 5045--6079 -5586--6443 8495--2619 -5942-4308 -1167--1024 2384--1264 2925--1430 4856-5613 -9828-6258 6156-9966 -7864--941 -4956-4189 -7863--399 -5888-6048 6713--932 -762--1005 -8340-8367 -1844-4559 -8902-9637 -8297-921 1905--9084 -1586-8247 3542-1380 -7586-1855 -5600--4198 4678--1724 -2149-7746 6196-8050 -2076-8762 9210-8322 2421--4174 5726--906 -2032--3935 339--6468 7871--4860 -8728--3277 2378-6651 -553-6604 -5060--116 -2944--7209 -6447-2881 7607--6569 511--2110 -805-3601 5902-2044 -4050-2866 3071--2313 3928--3890 1497--5776 -5807-5504 9008--3120 -2607--2831 -6431-1576 3806--1935 -6568-7098 -6102--3459 6159-5470 -489--9649 -2713--1437 8523--4231 -2884-9432 -4142-3118 9370-4497 -8601--6260 4838-9401 -2900--2147 6928--6925 -322-4647 -641-6153 -4449-2160 -3356-2617 -8944--2063 -1840-4427 -4809-8981 8653-3619 -1855--8371 5574-491 3476--7512 3150-7630 2326-1397 -4236--484 -4498-3340 -7082-1000-386 -5221-837 -8686--2202 9656--4767 3132--8823 -1720--5773 1860--3716 -7107--4289 6318--1101 3303--5001 -8801--1451 -8085--2824 6582-8454 -3621--1769 2740--3919 6135-8559 1610-4864 -5804--2884 -5399-9660 1068--7574 -1137--7744 -1901-474 288-3787 -9297-9942 -8113--7802 -3500-2692 2667--2631 -2714-2258 2956-116 -8965--6032 137--5140 -7842-7529 3678--6317 5754-1990 -4242-1031 -477-9061 -1387--5088 6416--2012 7617-9020 450-3315 6467--979 -8739--4057 -1787--3780 -4626-4668 -8431--1083 3028-8723 9697-6648 2998--2124 -9857--1540 -2540--267 6052-9025 786-7955 -2498--2699 -6866--3825 -36-6460 7521--9278 1109--3033 27-2935 -519--366 1098--4813 -8291--806 -5143--3861 -9089--7111 4528--2779 -4848--3856 7818--272 -9515--1389 1612-3364 -5552-8400 -5695-5451 8525--8931 303-7687 9726-2321 4603-4095 9472--2012 -9822--3669 -7833-7251 -4545--875 -8382-927 -8017-1810 7226-7498 -5675--6287 -2665-2446 -1197-827 -5628-1992 2195--1831 8202--4640 -7846--6260 -8323-9606 44-5926 -5556-899 1699-6941 -4570--5175 -3044-2866 -4037-5126 -1697-1022 523--3594 -411--8595 -9083-8508 6296--5994 4620-883 4204--5954 -7437-4535 9248-415 -6474--5779 8654-2010 8136--4106 6792--7849 7377-1414 9462--2558 -3025-755 6053--8301 -432-7020 -4003--7561 -2131-8687 7573--373 1981-6838 -8844-3707 -4712-2787 2950-6679 -9811--6382 -4344--2197 -9182-521 -2791-4322 -7698--2229 -4915--9683 -6609-7555 7264--5883 -9459-6842 -2983-757 9021--5726 8450--1971 -8530--1105 2483-2397 2164--5161 -416--7777 -5116--1353 5280--4404 7568--4288 8237-6082 1211--2724 7824-3363 510--5899 6277--6707 -8267-307 2965--4766 -7190-8004 -8930-1959 1026--617 9796-8759 -2490-4236 -6117-9958 5582--139 -1657-6746 -8085--5591 -3413-7193 1808-8687 -3306--6026 2710-3389 -5355-1773 973-7006 8396--7290 3566-4701 7392-2374 7426-218 -2128--4329 6907-8790 -2516-734 9888--8470 -2430--1788 -4279--5304 8233--5614 200-3175 3806-7064 -6848--4641 -4790-4941 4556--2568 -2493--6234 -263--5502 708--9010 4202--996 9892-8130 5683-2661 -3628--1139 -2741-978 -5224-5451 5718--5432 -116--6684 -3418-6606 -1703--210 2605-8465 5341-7624 9438-700 -5675-9241 -4277-7891 -9398--4042 5999--875 -4013--7928 719-3184 4317--3688 -9648-2850 537-8728 -5989-2152 8636-1852 -7549-406 7587-8464 6057--8348 1002--4587 -9173-1188 5494--8744 732-3982 -5075--6644 -6156--1942 5077--4803 9341--1169 9099--268 7775-703 5197--7158 2829--1071 4585-4512 1092--4319 -4276-8405 4737--895 348--8840 6568--9642 2966--3254 2639--9134 -7393--1081 -8472-7182 -5723--9216 536--8233 474--4133 -1764-3604 4385--6507 -7670-4430 -427-8534 -1415-5787 746-2711 6974--5300 1301-74 -5739--8972 -866-1862 -3699-8443 -4267-8699 1808--2400 -7109--1273 1507--122 -7512--9628 393-5270 -3787-1545 7450-4558 -138-1341 -3665-1273 -9057-1130 -5369-2251 -3114--4377 3225--3137 1680--9300 3067--8972 -7398-8975 -2862--4031 -4718--6179 -4242-4939 -7336-8674 3200--9214 1220-7095 -9737--289 -5714--3003 3117--7397 1288--7064 8098--2263 4176--5796 -9963-4472 8797--8853 -5819-6183 3892-974 -8490-6420 1294-7577 -7397--9264 1728-4389 3454--1048 -9336-4985 2847--4199 561-6847 -4458-7692 -6832--1907 6684-6257 -1674--5448 7552-4980 4368--6787 -3377--447 2650--7659 6638--242 -2131--1501 9166--1917 -3667--3614 -1054-3019 -4775--7534 -2708--2945 872-4050 5105-461 6384-6793 -7056-4198 1094-8149 -3583--8318 -1463-1376 -9022--6809 -9968--545 -5581--7718 5338-3335 1536--2122 1431--5902 -9903-4148 7517-531 -3024-418 -2914-2912 -6882-743 -3115--9312 1154-8597 8808-8688 -5706--2816 -7937-8148 3031-4994 3013--2695 -5278--3870 -3483--6154 5811--3173 -5264--4268 7426-1809 -9902-7598 -4232-4928 -324--2859 -772--151 1875-1590 -1984-1266 -2751-2962 -6533--1285 -1091-1707 8670--3166 -9003-8435 2341--3489 -8425--5887 -9275-4684 -3953-2166 2129--3713 -8401-5032 -4049--5528 6535-8714 7396-6210 6399--3647 -1972--7566 2355--750 8293--8559 5000-5485 6151-353 9310-9870 2911-4819 7840-8226 -1938-3504 9477--4282 -3915-39 -6609--1266 -7496-1160 -4122-6012 7967-1640 -5255-9259 3187-2933 -587--7774 9243--3000 -2485--2641 6675-4946 -6718-9705 -3117-9142 8787-5179 3307--9708 -4173-9640 -7828-9579 -7380-8094 5268-2490 8394-4547 3034-3627 -7423--6269 7298--2783 3674-4618 -7095-3289 9415--6404 -426--677 -6398--7475 -2175--3869 9187--7382 1953-8616 -9163--9510 -6592-5384 6251-4933 -6463--5969 9542-7909 -9844-7366 4369--696 952--8772 -4502--2664 6864--3969 2168--7442 7531-8013 -8492--253 7461-2999 -7405--1299 1678--4132 4150-1073 -4240--4009 7404--2606 1896-7530 -619-1231 -4861--8072 6739-8254 -6862--1786 -8636--4741 -6241-4154 4442--3267 6338-1920 -4046-6882 8379-4042 8076-6310 -8512--4577 7926--6522 -3567--2727 -1317--6873 -4493--1724 -2555-4820 2590-965 -3745--9786 7216--2072 2505-1881 2342--1311 -5779--9018 -8538-1229 -7351--6912 -8601-8699 3691--3233 8607--3994 1260--8173 7475--6085 -7766-7693 4227--4279 2008--882 -1101--1857 7247--6782 8747-3508 -2616--8064 -4056--9711 5987--8648 -6573-1394 8114--5040 -5063-850 5349-6096 6754-333 -3914-172 7915--3629 4169-2947 1965--6050 -6935--2866 -5361--395 -5683-961 4081--2412 1801--3720 3780--4256 -1227--706 4303--226 2154--3168 -9480--6775 6277--7893 4423-6693 -3126-3130 566--4428 -3613-5282 9139-4124 -8239-3312 -3606-7028 8201-6991 4359-1615 3803-4197 -2952-5850 7397--535 -4919--5830 8783-7848 -6255--7939 -7887--600 1096-5454 4982--790 -3881--4049 5336-7017 -5161--6676 6845--6760 5939-7236 -8273--9202 9406--8601 -6856-8753 8806--6891 -9570-1660 -9870--711 -9064--1937 4467--138 8235--2250 -1549--1194 -1529-9680 -8827--4762 5673-704 9095--2515 9766-1133 4378-946 895-2243 -6954-8724 -3400-3410 9318-9173 -4187--332 8648--8355 -9715--2284 -3876--8753 -1463--7917 -5188--2755 7988-7768 -1371-9510 3055-4579 5527--1431 2039-416 9953--4195 -2503--3429 -1021--7522 -307-3525 -2959--457 9499--8575 1646--8546 4904--2378 -4995--2351 4425-3279 -1231-7257 -4975-6517 -2000--45 8299-4588 5440--7690 -8334--1932 -4138-6372 1296--6463 -1314-5564 -411-4652 3785--3276 -5453--2380 3131-5694 7845-4781 -2928--5343 1161--8493 -1064-2657 2730-5328 1441--808 2064--7236 -8487--1490 6753--4816 4314-1708 -6634-874 -1457-4420 -3550--8730 -1797--709 -9452--7145 -4451-4100 1043-3812 -9499-8045 -312--207 2854-4533 -4861-3159 1258--2990 1034-5944 -9376--8262 943-2614 -2077-5848 2880--1451 3892-6856 2754-5748 -5689-2883 1441--2347 -8789-4072 5850-848 -9125-3406 5160-2080 9927-5294 -4306-3524 -8953-9672 5293--3572 -2928-5801 -9155-8626 -2704-2034 2981-8242 -4459--1931 -9078-3049 -6154-3012 -8353--9575 -8559-1875 6146--5412 8854-8622 -8798--9189 2562--3589 6022--9519 3562--8221 -345--4068 -3362--6868 -9987--5575 2111-711 5102-1866 1137--2289 1921-3797 4433-3547 -7411--1042 -788-4298 8471-8720 8827--40 8967--8792 650--7929 6201-4597 -5222--6143 -3756--7632 -3818--7446 -7973-7339 8592--1621 -6100-8572 5692-4866 8668--9259 479-3779 -8903-3859 -3418-806 924--9535 -3423--4590 -8760--9934 -462--8097 4721-5763 9553-4642 -2142--534 3938-9440 -3420-8636 -6101-4296 6465--8577 -8602--7270 -6561-2607 -6457--5719 5945-6186 -8691--1817 -8755-2068 -6132--4802 -7367--6044 3780-8714 -5269-2177 -7532-7793 -7362-3846 5891--12 9934-9563 3727-2876 5598-4553 -856--1877 9835--7547 1831--9744 -6841-6781 -2971-5398 -6665--4711 -1325--1793 -4105-9149 -5702-3249 8336-3984 -6237--160 -6142-4721 7984-602 4739-131 6830--716 -4147--4937 3455--7761 3184--2684 -6320-6405 2960--1693 -6481-3358 3261--1672 -1363--3267 5880-2708 850--6078 -890--1304 -4404-9492 -7606-5796 -760--63 4091--5536 1647--1390 -778--2230 2322--4659 -9096-8999 8666--7896 -9732--118 1669--6283 7917-97 9332-2698 -2827-6548 4729--353 3589--9169 3609-706 -5127--6302 -7384--9962 3449--6222 -3981-2099 -4453-8315 4497--3447 9410--8426 -4933--778 1910--8948 -9611-5176 4859--2950 4184-5971 -7278-8515 7930--6260 8725--1966 -8526--2714 -1870-3340 6032--4305 -6921--4170 8567-6789 6629-9880 -5968--2634 -9678-5247 -7740--2805 -2570--3328 2808--6483 1576--4007 1907--1034 -4410-6890 -7670--2336 -5600-5571 -3331-5295 -8075--4835 -9013-6451 -8189--8737 2817--9172 -3924-2438 7651--90 1593--6549 -2373--4468 1091--1979 -3041-6045 9501-589 -2226-842 -7806--677 -8282-857 -9128--1576 -6448--5187 -2353-4107 6660--7898 7335--2872 6133--1233 2241-2084 5530--2943 -8907--2241 8554-4758 -4197--1633 5020-5283 -878-103 536--1605 -7494-9978 -3119-7268 -7199-9859 1537-2200 -5604--2290 6507-8805 2012-376 -1440--3420 -7270-7405 2735-8755 -9779--3540 -3330--5736 6996-4526 -6412-9396 -9885-8987 -6075--713 -2082--8770 381--1266 -4917-3881 8882-8169 4153--374 9651-8740 6747--7480 -1030--578 -5591-5256 -3193-8439 -7702--3098 2453-4067 145--7965 7554-5776 7679-2762 -9614--7549 9073-4859 4596-2688 1064--6731 5254-2805 6323-6175 7004-4392 6974-1210 -5509-5408 -8287--3492 -4088-3912 -6817--4525 -6813--5838 980-4334 9753-764 -835--7047 7413--6697 -6029--8937 1546--5501 -809-4837 4951--8441 8544-9029 3365-3355 -7713--5890 -1074-6671 1839--279 -2556--9731 -9101-775 -4410-4060 -7984-6899 4721--4447 -1738-8889 2996--4319 -7539-1064 6591-4232 -7838--2531 -7354-6012 -2171-6731 -1543-6941 9496-5670 -6193--3635 9149-6763 -3843-2453 -2434--591 -902--9990 -9593-2479 9370--7950 372--7433 -1929--8260 9896--9005 -7357-409 5549--7481 -905-9697 -185--8974 3041-11 9489--5551 -1853--5874 7236-5883 8062-2545 6544--8946 -7365--4036 8894-928 -3280-8801 -2671--1810 4998-8461 -4643-1850 -9983--1342 4816--7133 5692-1821 9938-9988 -3241--7309 -7598--5902 1075-756 -7938-6583 6571--5143 -3540--930 -4119--1054 5821--1477 3950-8556 -7621-2542 -5959--6837 1295-5708 -6091-5340 6857-405 4709-5347 -532--903 5764-5134 1355--8379 2477--9121 5028-6342 -7170-7048 -4294--4 -9874--4717 4444--6064 -373--6429 5713-155 2570-6998 7941-4551 2455-4477 1855-7952 -9622--8413 6762-11 -1479--4129 -827--6798 3870--4797 -820-7235 1212--2913 -787--5243 4225-8957 222--9494 -13-5254 4110-4598 2710--9048 -825--2627 7627--191 3735-3370 -1474-9432 2215-1078 7533--9535 -2706--7635 9646-2764 -713-4749 972-6454 9905-9573 5561-6385 -6177--8285 7969-3949 -3593--3046 2202-2641 -9300-5171 2941--5509 4107--795 1879-2659 1925-6193 -8507-2399 -8465--6674 -6101--6817 975-1540 6250--253 6796--1076 3954--3360 3090-385 1829-7096 -9955--7542 -6169--8286 -1815-590 -864-2333 -9907--3383 9735--3720 8101-6832 800-7935 -4692--720 -5117-7853 -3525--1142 -3717--6582 -5774-5340 310-7029 1642--4213 -3118--649 -4724--2960 6476-3585 2814--555 -9396-7503 6520-5290 3918--1530 -1587--7857 -3670-4987 -5850--2150 4847--1925 8756--7692 210-2632 -2045--5299 1772-4852 3454-4702 7756--9266 4972--6916 -5657--5511 -5720--7413 -4024--8866 -2408--4064 7345--2069 -867--1828 1866--137 -1487-4133 8323--5483 -4814-4256 -2982--5477 7265--6654 -5686-4540 7076--8500 6299--2936 -1941-5340 719--2303 -8595--8420 9160--5484 -2044--8516 9344-5596 9408-8995 -5310--4553 -8660-5261 7029-2314 -4215--1540 7195--7961 -8532--6386 -9467-51 -1918--5404 9505-3976 -4476--5553 -2467--2344 5102--7068 -7056--7718 -2984--2849 5647-1000-2321 -2798--5065 9581--3089 4386--1886 1989-8299 8811-7864 -6072-5507 -1564--368 -4495-8679 -8318--7978 3508-7404 -916-7538 -9147-7978 -7540-9585 -6107--9226 -238--35 9435--8311 -1387-3687 4049-5237 -7833--5982 -4730--6229 2622-741 -5771-8545 -1654-875 -9146--2343 -7161--4863 2741-6113 -7310-1740 -4287-6410 5972--1327 6673-8398 -6743--2293 -5985--9035 4873--6880 -4091--6840 356-1668 8451-3530 -5646--7513 659-5424 -8373-3928 -592--6616 -4521-1458 -1018--8836 2799--3048 -3648--5765 909--9219 -7664--8825 -3011--6048 1999--7178 -9851--5468 6196-7739 7896--8002 -5400-267 7942-5417 4341-7941 4706--1932 263-4135 6289--4114 -7856-8393 1521--7198 8307-3077 -4898--2011 5885-9134 -6066-9412 -7885-62 -9534--3653 5868--5229 -7923-1572 -880-4520 -4270--9297 -5006--8805 -7701--160 -2676--1854 -4416--7083 7066-9285 -2132-9103 9571-7362 5206--7502 -4250-3079 2275--9277 -3328-2863 127--1050 2220-1762 3051-8871 5030--728 -484-4462 9947-7896 8540-2075 -5941--4948 5834-2554 606-6200 2193-3404 2654--4497 -9385--4411 -8088--8554 -5241--7039 4359--3115 -992--8612 -9268-937 7874--3195 4486--1860 -7015-4344 6258-1902 4535--1304 505-8883 9910-8121 -7874--7789 -4678-1213 5225-1557 3200-6601 -6774--9096 -6741--5054 8709--8515 -2573--1984 6895--4452 -867--7560 -7903--6899 8816-4127 6589--6589 -236-4204 4562-3707 9050-920 -3077--6908 4148-7517 7696-564 -5844-5244 -2098--3332 9793-1069 -8621--227 7952--2144 502-7949 2206-7928 8738-1420 -7196-7190 -2534-4644 8797--1256 -4323-9581 8499--5459 -6639--942 8326-5372 -8132--8167 -2922--8402 3838-8978 -453--6091 1873--2085 781--5714 9724-4781 -3528-9555 3051--2288 -3183-8091 -1858-4148 -5604-2006 7304-2722 5735-1010 -5456-3012 -5634--6095 -7718--4232 -22-3253 -3082--2086 -1986--3733 -7783-5647 -2305-5954 -2929-9543 9864--4702 1954--4389 36-4861 -4781--5436 -4511-549 -9918--2138 -9790--9851 -3807--8151 -3877-5261 -558-7892 -4539-8783 9360--3771 6267-2928 6141-1020 533-4748 2583--1675 5581-6107 6605-2975 -7991-5636 -7607--5756 -2688-2843 944-3158 -9301--5024 8239--9221 -2247-4510 -9317--3561 -7877--2635 -6811--3241 -6141-3404 -964--1616 -6502--6601 -3608-9084 5452-1529 -946--1682 557--9876 6191--5397 3003--9675 895--8672 2981--8723 -6696--9380 4780-5014 -5998-292 7293-4904 -3716-6482 -3740--3407 -8922--889 -5319--9369 -9793--62 -2332--3981 -9806-9423 7804-8048 -9829--6439 -38--5446 2863--5609 4514-1543 -54-6749 -5767--9982 1656--16 261-8503 6278-2800 -8539--1000 -3604-1229 -1341--5224 6655--4323 -9012--1105 8846-4266 7754--3743 1859-8044 -8545--8386 -7313-538 1001-6393 -4443-9169 -2081-5590 -3659--2416 4433-992 330--9033 -4582--6220 1058-3329 -6042--9961 5541-7105 -4951-4398 3302--3907 1842-2841 -4654-2882 1068--8427 2578--2300 -1589-1261 3809--473 6390--3853 2731-25 8740-314 -7253-3251 7161--722 -1551--4587 -5843--201 5330--6160 9536--8751 8479-3370 -9465-9250 6673--1201 -8217--6866 9290-333 -8493-91 7109-8081 -2097--8359 -9158-7222 -487--6670 8902-3697 5958--5473 -6121-7233 9774--9285 2603--5084 6330--2878 3763-6616 7727-9366 -6944--8005 -9604--1349 -5219--1853 -6263-2196 -7724--8863 -8782-4615 -1672--730 6208--815 -747--6746 553-6444 -7648-135 9869-3711 -8941-4956 -6002-3301 2185-5644 5809-3684 -1852--8072 -314--1514 -1970--9002 7594-562 4227--120 -2420-676 -42-3988 7954--5257 9753-8135 -9040-3509 -9179-9061 3521-9413 6466--40 9085--2777 2811-3293 -9657-5533 4038--6314 -8421--9311 9672--4818 6441--7699 725--2648 4182-8858 -7023-8335 -7553--3830 -6002-4767 -5874--7921 -2175-5989 -393-4360 -82-8168 -5657--6214 -7565--1487 -6431-444 -7392--2723 -7815-9807 7420--4608 9881--485 -9447--6645 6523--1731 -3365--1745 973--9259 -2829-5760 5381-3403 -5308--9476 9315-604 -1725--4664 -6552-2956 -7827-8548 -4427--3981 -36-4416 5789-3672 -4682-5052 2115-1253 9874--5866 -2430-5752 -7659-6346 -4231--9148 756--41 2320-2946 -4950--5885 -5851--1130 4341-7061 -4305-7650 1352--2124 3237--7098 5642--394 -1599-9467 8694--1338 8641-8730 8643-8421 5378--4092 5839-8122 -1616--7598 5896--60 4132--2552 975--1241 9256-7579 -1333--1763 8427--9655 -4909-9959 -3946-4413 739--8551 4954-3125 9083--8569 6082-9600 -3838-3126 -6480--6760 674-8320 -565--6439 -9268--8453 945-4677 2132-4112 -7006-6475 -4205--1517 -8566-8289 -9079--9054 -1146--3859 -4990--7118 -9275--7526 -8024-8180 8125-3075 8986--3452 9494--20 9597--8618 3468--6439 -7804--24 4804-2270 -6234--634 -398--9546 2056--3432 -6174--2610 8876-4827 3051--9587 8829-2550 1401--2589 -7239-5099 4622-2722 -1479--2424 5127-2217 6757-2596 5445--9969 -7989--6883 -2013-7390 6332-4478 -8456-2351 9622--5185 -6267--9370 6543--6439 -6705--3245 -5382--7695 -4217-8624 -8225--5707 -9112--9915 -3608-4887 8937--7789 7462-8207 7260--5099 6148--7538 -2587--9666 -3041-3660 3520-3729 -8336-2 8461-5484 -4146--5959 2352-414 -4782-2733 -8092--8124 5735--3065 7718-2326 -2058-1000 663-4680 6526--5537 -9331-8432 -4092--6502 7702-5901 -9116--4295 -5193--6381 -1078--1147 1455-9319 -7966-1733 5157-5522 4868--6381 -7480--8365 -1674--259 5910--5361 -5726--7162 -8034--278 -5425--30 1708-2378 -5014--2002 -4184--6380 6873--2907 -6474-8097 3320--4244 7735--5504 6270-253 -1411-3596 1647--4018 -515-4432 4900--6248 3676-1583 -7678--7598 9281--554 -1380--6249 5208-3945 5969--3561 6026--8370 -1557--9594 -594-7523 -339--3189 1746--6913 -7377-4581 6043--4917 718--1772 9750--9586 -927-3255 -490--1833 -3372--5993 -5806--2981 5154--6968 -3056-8693 -9136-8404 -6803-2410 2027-8831 2837--3667 8186-8153 5892-9484 7750-2527 -8383-1047 -2780-4063 -2025-4161 -1670-6117 8470--3883 3428-9883 -5189-2779 -5853-4833 -7714--5151 3443--854 5989-8442 4398-6615 467-4650 -9049-5342 -5883--1500 6607--2693 -2116--5018 -419--3635 -8301--3615 -9003-8133 884--7153 6644--1916 1796-6264 -706-755 5147-2779 -3060--3434 8405-2862 -4723--9525 -536--7499 7013-5071 1320-1019 -3693-5900 -7931-1786 -2740-6646 -8751--534 -8475--1861 -8758--1697 -1902--2378 4358-4591 5093--8866 247--748 27--4591 5473-1034 -3200--5636 7520--5085 -4392--6654 -351--3619 -384-9588 285-7287 -8582--7415 4294--9975 -342--6540 4319--7547 6952--9136 -3349-5125 -4830-4000 2646--5279 -1252-1868 -9221--326 1051--8342 -421--2620 -4191--9880 7189--5631 170-4808 5630--3200 7661-4020 4511--8560 180--1788 -2257-4340 5660--7819 8351--4755 -2635-3015 2361-617 -7509--9883 -2475-3991 -2210-7500 -1290-1531 -8097-5801 -1651--6888 -1724--5719 7942--6892 -1629--4363 5243--6094 9674-231 6438--1447 3789--2562 9725--3714 -6695-5610 -6791--9496 -652-1505 -3710-4789 3299--8932 5561-1766 -8946-593 -3678-3359 5128--6246 8007-1205 4460--7063 646-338 -8346-4165 5777-943 1401--7851 5304-9545 2104-7673 9203-921 -3309-1016 -421-8454 8891--3096 6016-6806 5087-9936 4295--6654 8240--3053 7324--4031 3267--8342 -5071-9038 1244-9553 1795-6201 1467-1900 -9905-8102 -706--5743 -1924-7720 7230-9591 -866-2027 2362--8351 6476-2836 2849--2844 -5034--9379 -7168-5531 -8698-6781 4673-5685 -5237-2942 -4113-1842 8421-4057 -4104--934 7077-3021 -2755-1888 -9022--5123 -1333--9221 -3820--9543 -5235-9333 -5945-2063 -7720-251 -8090-3352 -3774--4917 -7375--8714 9492-7153 -8934-6567 -9717--4266 9357--8358 1605--5706 704-6037 -3062-5446 1474-7831 9634-881 -9783-9538 -4250--6826 -9393--4076 -3338-7343 -4034--4233 -5622-3458 -7268-9838 7196--9891 8403--8155 -2076-1626 5124--2257 -6649--7215 9211-894 -6861--2738 9774-4168 1595--9677 -638--1258 6125--7718 -8411--462 8298-5450 -3079-4393 -5788-1286 -9427-3894 5153--2695 813-9111 -3699--1995 -3465-1682 -6473--8555 3905--9464 6068-3065 750-8541 -4297--8882 -1435-5877 6572-4499 159--2421 4890-4470 -6039--4477 -1794--4246 -352-2804 -7430--5396 -978-5891 7931--2298 -488--6699 -9483--1347 -1344-1475 7550--9443 -6336-8615 9373-280 -6674-6865 3001-7852 5480--231 -467-1160 3726--2014 -3997-7564 -300-6689 4732--380 -4214-5960 -2698--2924 1255--7367 -7402-2603 -4348-2351 2507--6786 -8491--148 4662-2847 6730-2897 6260-5542 -6063--3387 5184--7340 -4957-5928 -9595-4342 -1697--3512 9575--9050 -155-3012 -3209--4013 -3386-4440 -8613--5269 9464-6810 2079-1461 -8687-1040 1106-7327 -2967-678 -1615--2851 -8662-1554 4218-6440 1980-8120 1182--9489 -8265--6757 4031-6646 3935--403 -9200--2388 -3930--6924 9367-4638 -4774-8849 4949-7278 -2360-2825 3126-9411 2023--1737 8643-6 -833--2261 -3290-2141 1679--2716 -7698--2478 -8014--1177 6317-4943 8846--7846 7399-9212 3543-1421 7691-3748 -2698-5398 -6069-974 -174--2561 -935-3133 -7756-475 -4243-3768 1133--3498 1847-8331 1802--2175 3704--1923 1646-2763 4084--1934 500--5306 -5533-293 9417--9232 9245-4437 9058-9844 -5555-8792 109-2634 2054--7854 7903-6331 4236-1202 1234--1768 1696--8444 -8031-849 3403--3604 160--7633 -5525-9686 -2106--3119 -5975--2799 5362-2882 9770-8174 -3572--4972 -3151-9782 2280--5889 -2158--685 -4622--4215 -3298--1816 -8351--6691 1300-4740 2442--2531 6760--8439 8031-6495 -5245--1743 7184-4697 -4322--4073 4463--7096 4332--1198 3783-6165 7187-1758 2630--1868 7802--4722 1218-7060 6686-4676 7117--9993 -6262--7095 -4988-9800 -4170--1164 6385--4850 -339-3960 -7890--6521 -1281--847 5823-9831 7360--3503 -3130--3089 -6230--360 -9667--7243 9025-3067 9663-5817 -7874-3797 -6874-7899 -9499--9434 -5166--9843 9045-4874 2964-7678 203-8464 -6379--8723 6262-9383 2475--2379 -8011--4091 -7462--7111 837-8488 -6476--3328 -8000-1734 -8672-6331 4705-7865 2624--6745 5449-6345 -2686--3454 4561-6000 -415--4938 6102-4323 3911-6309 -6304--1050 -337--3494 -2641-2930 -6263--5505 -1037--3606 -43--1073 -6053--1422 8458-8684 -9777-6436 -2167-9390 6677-7465 6651-18 7210-7797 9266--2450 815-3356 -1981--5960 -3490-9223 1836-6130 7828--8393 4201--98 6074-1311 9709-6422 6897-8763 -6697--1640 -7892--9001 -9647-3365 -8790-2697 -3753--8719 7960-2322 9206-4085 -1486--1449 6444--5153 9315--723 -478-7895 4702-4445 -2623-8965 -5124--3428 -2414--366 -2477--6542 7029-3530 -3628--5452 4954--1107 1323--3664 220--3140 4831--6688 2227-7195 -5599--5575 -8359--7546 7939--8587 1371-6647 1084--9952 7378-6408 8102--7955 -8572--6337 8105--96 -3737--5951 9760--5765 -1487-7138 -3073--7159 -8950-4877 -2282--2617 4047--4517 998--5102 2158--4923 9420-1804 -4049-5196 2968--7420 7750--803 9754-6018 -5887--9719 -1393--1157 2305--7196 8752--9226 6333-2670 1564-7539 -1959-8436 9892--3044 2688--3156 -7901-2413 -6011--6090 7782--9870 -6269--4921 7817-8577 4120--5122 -5295-3398 -3572-9232 -9119-4623 -3964-4427 9613--7439 -1742--1962 8323-2299 -9854-3670 6086--2937 -1457-140 -2707--115 3258-3747 -7327--7273 2534-8336 4586--8028 2188--6569 -816-1016 -9472-8776 -4741--1641 9140-6904 -5684-1418 -1730-5049 5463-8456 -5902--1090 -6434--4270 9186-1505 -9872--8118 -6694-362 -7854--6975 -7226--9488 -4024-6394 -3502-1320 2509--2912 4293-151 -1790--386 8817--1454 9174-2490 2895--1122 -3334-8668 -6560--2379 5980-5221 -4886--4708 8671-4063 6346-1528 3275--256 5578--1797 -5016-7542 -9866-7835 1686--1123 -2376--420 -7965--9196 -8266-1113 7815-6323 -5545-9720 -8652-8787 7769-5906 -9157--7303 -1354-168 2284--377 7652--1316 9255-1000--9217 -6471--2148 -529--2678 8598-2586 8153-7639 4341-1518 -2590--4188 5249--2901 -3000-8412 2264--7257 -8480--4057 8849--6355 3640--7362 787-4307 -1580--4411 -7717-1101 -2025-3337 -587-9784 8510--6134 3206-4407 -5717--8499 2701--181 -780--8453 651--1930 1126-7735 -3126-4686 6547--6293 -6772-3406 5291-6279 1512-3900 1698--5141 7523-768 -1490-3572 -1461--3738 -4718-2805 -7210-3209 6454--5407 6456-1089 -4612-2939 676--9806 -6197--7342 -9848--8052 8319-3474 9396--5745 5734-3810 -922--8307 -5173--2521 6894--2171 -8066-2298 -7500-4584 -6689-246 5579--1160 977-3516 -8240--9628 -1658-9147 141--2078 -509--9597 4325--3445 -2692--7631 2952--6188 2971--2816 -263-2484 -680-2560 4719--2240 -7284-9417 7638--8205 1741--899 6648--175 -8009-1914 3606--4812 9368--6380 -2741--7721 9997--1002 -3162--1811 3640-9592 7029-4101 5989-7753 9950-5708 3929--4333 -8027-5693 8311-6074 4984--9633 1930--5484 -382-3851 3489--205 7554--9901 4249-7938 9487--739 -58--676 644-9705 8953--6646 6951--6114 9488-9575 6984--3906 6234-1689 -5531--7874 447-7909 -7974--5971 8464-7080 8889-7368 971--2950 -4182-7615 -1458-1865 -3059--6855 825-1227 -7078--2935 -5498-4246 337--9883 300--8278 -3446-903 4615--8625 -8613-6320 5728--8350 -6816-1271 -6153-3701 1252-6373 417-4370 -3717-4549 -5332-5626 -8067-9893 9431--1805 7450-5440 -6517-9513 -770-6002 -1150--901 -7401--4658 -9157--3365 -7331--3048 -8077-3844 -5017--6023 4214-8943 1329-7360 2804--6182 -7877--7822 -9027--946 -7148--193 2745--5434 3233-7195 6758--4486 -8817-9121 -6943--1543 -4585--1585 6091-7939 -5096-1352 -596-2883 -3005--2807 -556-4859 -6321-4216 113--1302 2218-233 3775--8992 -4298-1731 -2505--72 -6322-3492 3712-4031 9497--8822 2998-7923 -7393-9192 9292--9401 4689--2038 1368--2631 -2237-3561 -8524--3242 816--6263 3657-4786 -4803-5683 -3635--7620 -9142-7844 8635-2800 -8495--2152 913-2977 4720-9816 -1473--59 -9891--3148 8768-6150 -5805-2770 1346--5837 -782--3134 -6658--7856 -4587-2039 -7068-3795 5932--3717 7341-8708 -3603--2001 7109--8752 8559-8923 -2393-2501 -3305-5146 -5039--1247 -4863--4385 -4145--9962 -2373--5456 -7137-6809 7685--969 2338-2593 9771-4971 8002--2153 3177--3775 7844-3446 -1662-6465 9574-8389 -9705-190 2710-6779 759--8504 -7408--6069 2363-2338 -5274--8320 -3587-6580 -8657--1958 -89--7033 6733-8803 -6496--5307 -5839--1165 7368-5514 9359-5711 3679--1934 6747-9648 6762-7439 3125-2434 -3179--5094 2841--7645 9072--1254 3065-8913 4727--7172 6420-9714 5978-175 -3671--4209 3760--1428 5655-6493 7886--514 846-9648 -1725-8278 9046-8859 8516-6146 5382-1821 9546--1521 6318-5267 3891--6375 6330--4218 -6829-6949 2783--712 -5887--881 51-4835 -7333-5822 3887--7230 6908--8744 4935--640 8004--2285 1485-8834 -7328--4160 3856-1890 -8006--1240 -3865-8855 -6177-6074 -1515-1366 7536-9558 -6711-1397 3870--5059 9186--8632 -1631-4563 1974--4615 6230--9901 8301--421 -8807--7637 -3931-3795 -2904-2992 -9017-7609 -3328-237 -4191--6957 272--7047 -3664-5762 -3603--5338 -551-8535 4700-8504 -3489-5407 -5807-8696 2411-5605 4930--8677 793-7874 -4941--2946 -9604-5159 -5178--541 -6639-70 -4642-2939 6724--8320 4022-3907 8428-4021 8314-7346 6129--6648 -2262-3540 6126--989 -5978--8153 4749--1606 8698--8684 -9127-5714 4487--4119 8684--9709 8871-5262 1803-6809 -744-3426 -156-3983 9096-9503 -7948--7174 7796-919 4514-7369 -4463-4620 323--2804 -848--6685 -3291-6011 -1042--1133 -689--9573 5608-7330 -2732-2110 -7315--2090 -6857--6295 -9146--7154 -8825--6076 8680--5329 -9759-6232 -5007-6842 1328-1477 -8413--5635 -5296-3578 -1168-9567 9879--1448 5744-9541 3614--4412 -2167--4835 8105--1731 401-250 7455--8995 4828--5257 3570--5490 -4382-9551 6165--9507 -3790-170 -8625-1473 1839--8706 -1201--3763 -2261--793 -8498-4891 6750--8475 5330-8591 7209--7888 -4852-9043 -3585-2691 -1722-3889 -8402--8250 3704-9790 5560-8915 -944-1985 9778--528 -8115-6853 -6482--9666 6629--5037 625-5209 -6363-9764 9622-8517 4870--7582 -9276-8033 4471--3796 -6664--1183 -2257-2118 9127-8606 -856--4949 -5908-340 8374--3280 1395--3375 9395-9256 7916--6235 761-255 -2931--8548 674-2527 -4157--5440 2000-7818 -9379--8027 -995-3852 -1702-5943 -6936-5855 8702-9980 3770-6667 -8459-3630 -555-1263 8500--9520 4091--6464 -6052--8803 -7651-8576 8376-7642 -1073--1473 -3169-3532 111-5191 8624--9077 8153-6057 6272-2251 4327--481 -9557-6727 8815-1477 3600--6959 -6315--5140 -8999--6907 3178-5216 7697-4083 -7531--5355 4680--291 3209-9010 -4352-3952 -2281-7068 1026-5921 568--998 3134-4330 -5512-6165 -2400--2718 -4329-3806 8369-759 -1873-3068 4351--8000 -2020--7440 -80--1361 -8807-2587 8088-5285 4376-1734 -818--2941 -5855--769 1757--8249 -5191-5923 -3672-6365 -9023--7450 -9415--3263 1777--4676 -8153--976 5661-8034 8917-6995 -9663--6737 -1770-9308 9550--7709 -3873-9842 1956--5830 4787-5628 -8641--5003 -4504-2892 -8897--8339 -4556--4314 -2496--5349 -3428--3509 9168--6966 -5793-8020 -2310--9922 7970--6133 7423--8263 -7089--5805 -3900--3566 8768-4535 -601-2298 -1813-9039 -9956-6347 9615--5084 718--6471 -8836-6225 6544--7339 -4777--3898 -7147-4525 7441--2696 -2442--3876 -2376--8705 9913-5258 -548--6796 -44-7769 -5958-2215 -3064-5422 5650--7559 -9902--8275 -1012--9736 -9089-6737 -7127--7417 7691-157 814--3022 5890--3678 -7209--704 1150-4879 -9697--8919 930--8971 960--4164 7906-6635 4952-3244 7497--1757 -4723-5368 8283--9055 -9268-485 -8273-5234 -891-5316 5025-624 8019-4412 -5878--3386 7884--1675 -5210--2050 7203-3760 7876--2691 2480--7080 -5752-1833 9204-7144 4866--5576 9597--4364 8805--9152 -7768--8658 1240--9940 8524-2292 -3538--2082 3283--6654 -3326--8409 4366-5440 2403--5822 -6177-7010 4804--5536 -3387--3366 -7285-4152 -2024--6546 1978-8315 -2514-8108 2196-145 1992--782 -8606--3193 -5507--9189 7558-1293 9629--9901 -9727--4122 -994--6431 -9587-3447 -1670-4999 9294-5020 3841-3765 5053-4108 -3684-5469 -7014-8823 -2733-7061 -9244-6970 -8360-5792 -8239-5474 3710-6006 8751-4283 -639--4226 -1070--1458 1723--9764 -5469-5673 -2118--5162 -1101--4488 8802--4269 3570-5291 93-8689 -7030-242 -7433--9759 -3471--3786 3520-5815 -2522-6395 -9219-2260 3837--9592 1741--2015 1065--9575 -2163--9013 -9502--6422 -5715-2320 -3669-9241 -4481-9884 8922-9850 9508-4052 4312--1062 5735-4012 8002-2260 -9973-1835 -6194-8633 -7316-8325 -8687--8898 8910-1407 -4681-2493 1259--7099 6823--7556 6720--945 3201-4801 306-8971 4741--7203 9808--1173 -4792-7415 -1292-3663 -7544--8920 691--848 2561--8541 -2367-1592 7429-8771 -4928--8347 -760-9588 -6947-5251 -9534-2804 -7099--9831 8081-537 -9237--7252 3443--9101 -1733-2797 295--4592 -3920--3362 -4102-8418 -7181-242 3458-7104 3993-3498 3787--1949 -7714-5463 9282--6372 7361--2870 -1549--6615 9960--3087 -722-221 3848--2136 9723-5386 8099-6357 -7185-2044 59--354 -1298-8664 -4023-466 -1927--8623 -7842-5658 9701--4157 -2715-2710 -9935--2900 7513-9919 -2683--6807 -1267--2975 -9003-6848 -6364--8949 9929-5578 4400--1204 4929--1444 3136-7320 5479--3254 7578-1000 -8869--9019 -5255-7982 -70--1387 -1725--4658 -3201--9001 -2530-717 9711-296 -6855-5843 -5076-6893 -7234-227 3006-301 -9552-7746 -8977-2669 -7786--6139 4956-8960 2742--7580 2924--8845 -5765-3718 -2842-6370 -5852--5545 7637--192 3106--3146 -9354--7321 -2666--3364 2918-7046 -9599-5896 2449-5783 -6979--3428 6630-8503 6497--2954 7623-9625 -1289--6060 8851-9578 6266--8694 -5779--2508 1266--7973 -5639--5353 -2249-6147 -2131--4162 5382-4369 -3215--9654 -1847-899 -7362-9403 -9521--8079 -4335--2182 -2301--4995 4692-3279 -9353-7104 -4045-8188 -8648-7065 -2445--1533 7617--3312 -7997-5815 8674--796 -5440-9404 358--5149 -7058-5802 -4150-6446 5619--6986 3339--5036 252-9868 7812--4637 -1427--9596 5418-4690 -3545--800 -6022--8993 -5865-2602 2613-7991 -95--8358 3706-5887 -5882--7633 -3891-281 6406-2087 1098--3793 -3055-9653 3413--4599 -7734-9981 2817--6344 3208--8555 -4077-7530 4742--2297 2711--4199 -5515--438 3205-6734 -3337-3685 -6055-1504 -1488-8824 3101-8946 5346--393 1565-5766 -6756-3014 1166-9546 -2707-9287 2956--8240 6703-172 3853--4995 -6183-2801 7757--4816 -8675-6559 -3249--324 9047-347 221--7782 -4107-773 -5718-6758 2867-6967 5220-1935 -416-5521 -9952-2708 1845--7589 3766--5167 -4498-921 8300-5422 -6848-3501 -659-488 4861--1443 1565--7102 3445-1620 9882--9279 -3200-796 2685--6893 -9606--4381 2437-5922 940--6005 6304-73 7185--7807 6147-3111 8724--1668 -3472-8980 -1365-8232 -4649-9026 -9182-252 2790--9161 7655-3251 9772--7706 -2274--9866 -6999-8819 -7955-6200 8056-997 7589--5422 6496--4951 1745-81 -2486-1530 3681-2277 7316--8794 4615-55 -9335-7088 7126-6842 2284-7947 3005-915 -8892--52 -7617--9496 -391--1044 5945-8079 8420-7244 785-6502 5367--8141 9449--9403 -5963--6377 -6237--632 -4492--1602 4594--2110 -8493--1014 9526-5902 -3818-981 8090--7761 -1070--3347 -9421--5448 -321--8903 8527-3762 -5374-6098 4695--4233 7645-1956 -7033--9928 -9226-9696 -6841--8049 -840--1673 -3871-8094 -6935--7660 -2777-4858 1121-779 -1955--8869 -7032-6282 -8251--3647 4465-4335 4970--8441 8862-9638 -9087-8773 -9140--4793 9694-1232 -8805-3720 6373-4871 -1808-8409 -7606--3946 4315--9317 -8851--1235 -3219-4752 -8121--1676 9398--5388 -9034--6034 -4419-2982 -1371-4609 -7862--6400 -2896--2248 8405-754 -2665--1036 -7362-7688 -1725--1549 3661--5324 -3761--7768 8067-9950 -8334--4827 1017--3795 4972-7302 -8222-290 -7586--8853 4934--4936 -5189--4363 -902--4699 -2634--5522 7854-902 690-4914 9-332 -140-1812 6294-2525 3705-4948 -9651--8817 8075-6929 -4548--2288 -1735--7580 -3384-3152 764--3640 -1562-5937 -6052-7615 -150-8726 145-5357 953--2750 4765--6664 1162-3147 9097-5238 4777--2192 -6673-303 632--2640 -8384-3527 -4900--2168 1161--6572 -2073-970 6961--7919 2458--7405 -150--9078 3343-4149 -1258-529 -2796--755 9777-6853 -3890-4800 -1558--1140 3742--73 -4794--1891 -5343--2545 -3135--3938 -2120--3933 5230--6738 -736--2167 -984-4379 -9502-5219 -2387-5447 4581-6157 -2773--113 -1233--9839 3314--770 -1892-2629 6469--1798 7906-5898 8274--9064 2497--1756 2097--6490 -7178-9407 5207--584 2687--1017 4208-8346 7679-9159 -2533--7170 4578-9694 3366--4266 -4012-2582 6249-2903 3988-8563 -7984-6658 -5451--4271 4186--2020 -771-5540 -2181-900 -2913-1877 1055-8918 -5696--2849 -6100--891 1222--2076 8633--5070 -6806-4836 -542-4815 5711--945 -4353--2845 -2495--4 -7229--2012 -7685-6889 8223-8778 -5149-6369 1881-1277 1983--8870 6099-9440 -8493-2022 4053--8413 2376--9606 -7760-5060 5796-9789 433-6345 1974--8797 -3046-8385 -1104--218 9291--7140 4688-5816 8199-3127 -2742--289 -7256-3315 -7251-3940 -5517--7869 7241-4031 2111--4625 -6095-6139 146--3348 -5366--1252 -2753-1685 -1355--5382 9206-5650 -8739-8204 -1867-8328 4481-9432 4876--7407 -9027-2192 -7017--3084 -3098-7759 333-6975 -9128--626 -2169--4346 -1364-9858 8010-3075 -4989--9778 -430--5666 -5506-1772 -5923-2533 -3002--3086 -8320-3038 -6964-6962 -1365-6378 -9074-3316 -4655-226 2851--9533 -9309-471 5486-2165 -7081--6987 3646-2694 5178--8009 -1308-1290 -1644-8039 8886-9095 -7514--7940 1285-2946 -3457--666 -9778-2558 3412-1000--4315 -4669--7827 1646--441 110--792 2550--961 -4170--6521 3246--5395 -1343-5292 1217-4624 -6598-2446 -9270--3005 -4551-8959 4673--6696 -3785-9255 2271-6364 -1363-9570 1851-1171 271--544 5345--1426 6888-8888 5717--1447 -5974-2188 3846--6043 4561--4211 9852-324 -8907--8475 1708--6052 5872-4813 9848--3434 -4273-2355 7460--6733 -1277-2938 8097-9071 -4454--7663 778-4717 -4361--4127 -9735--8963 6252-1751 -9998-9453 4898--180 -5226-4080 4401--3822 -5281--9685 5106--7234 7299-2750 -7403--4010 -5684--6283 -4555-1675 -136-1993 -941-5565 2244--6482 3897--5735 -4628--6161 3248-9253 -3362-9575 2253-1107 -6214-9521 4455-9646 -5515--8629 -9143-7494 -7414-7179 5522--8504 3533--3511 -9696-6817 1057--5589 7473--247 -7656-3663 -6269-3729 -8319--103 9706--7036 8083-7293 9717-8931 2753--4819 1151-2154 4921-8354 -8434--945 -1755--3210 1860--9178 5447--6536 8532--3823 6968-6875 705--9682 8446--1173 8199-5518 5268-6251 -6324--3942 5130--3832 6297-4584 2720--5095 -6946--5237 -4485--7057 4138--5936 -1502-6308 -2072--9750 5481--2676 2114--9783 -5435-8868 -9938--4650 -2393-3776 8782--3652 2892--3231 -5471--6619 5936-2703 4509--3331 -2196--2358 4057--1708 -462--5898 6555-3027 -2160--4796 -3856-5801 484--3973 2820-2843 9222--5972 4054-4732 -2425-5183 873-6993 -9173--4082 1457--5646 6144-8652 -4461-4922 -2833-3840 -7663--9423 3522--9844 2628-2203 38-7901 -8587--281 6484--5317 2068-5106 3393-6567 -8510--9956 -5424--1503 -1741-6580 -7457-6190 1914-8738 6655-5574 5246--4495 -4918-3505 1359-7237 8176-956 -4129--9825 -7540--4832 -29--8517 -4211-167 -1140-714 -9165--2321 -4039-4948 3259--5984 9332-1629 8769-5018 8374-2968 -4093-6851 4002-640 8735--1619 4353--852 -1228-9321 -8677-1624 -4929-1715 45-4237 -7688-8083 737-5994 1834--4676 -9095-8643 5391-3395 -9570--4486 -7313-314 6239--2878 -9036--3380 3525-2749 -3014--958 1278--2304 -8781-9088 -1177--1062 -5762-7600 -9537-2891 -7997-9015 -7842--8273 -4833-3417 558-4988 4542--8585 -6576--221 -3076-2247 8910-1103 1226-3526 3671--9036 1610-1257 8097--4482 -3930--5157 -706--5935 9308-539 336--798 -5712--2637 2021-4162 -5889--8009 -7644--4884 -1719-7278 4158--7840 -7792--8194 -4843-1799 9132-3654 -4471--5735 3263--6858 8819-4081 3692--674 -462-759 -4123-8771 -4413-8386 -4944-9698 -4007-4913 9476--9956 -7594--62 -2685--1561 -5700--4914 9741-1734 -5727--2410 9603-3210 -8603--1563 -4140--9044 3862-5936 1161--1381 350--8733 -7890--8025 -6977--704 8888--8098 3142-4408 -2492--5259 -7132-538 -2282-2529 -1090-1229 -2243-4059 -3346--8029 7049-1234 -5618-3068 1001--7116 5531--2424 -205--1902 -2117-7196 -9488-6088 1520-5161 5634-9696 -5110--3165 -7274--4118 2407--2526 -7083-21 1855--5260 6416--8421 7407--2518 9332-9027 -7870-2534 7267-80 9428--9573 -6078-8230 -7298--5834 5108--9141 -6927--6231 5119--9549 -9016--247 -1619-8092 6392-6289 -8468-7495 -935-5375 5675-6732 -1996-6206 -7431-7814 -2467-1445 -1889--389 9680-9638 8676--5343 6072-2643 -3222-1044 4842-1054 -4066--9614 1050-901 9382-4740 3794-9328 8770-9322 7275-5314 5899--4639 3912-5411 3745-494 -6615-8410 665-8869 7318-9720 9292-5563 7829--8175 -9231-2978 -5673--7030 8220--4803 4472--6075 -4989--1997 6405--3016 -7898--8570 -9054-3441 896-121 9049--4501 2638-6263 6695-424 108--7582 -7260-8931 -4733--7091 5032--2686 2978-5319 8169-9304 -7226--4592 8701--1465 -3328--2778 5505--2500 9378-5695 7101--6436 -9131--5748 5417--4514 -9385-7671 8819--7618 -3890--2869 -9231--9322 6671-7981 -9703-6427 5176-7412 5355-6895 -3842--5943 3396-1849 1829--8307 7444--931 5271-2670 -988-1970 5230--9163 1057-294 -501--858 -9425-5780 6075-111 2601-7059 2612-1496 261-3260 9259-6473 -1581--2942 -9186--1218 7778-3442 4333-237 -6512-792 6735-3350 3509--3336 1241--6145 3212-3620 3031-1841 -6664-200 -9497-8989 9113-2231 -6082-7418 2335--3293 732-9138 -5087-3007 3615--5570 2136--1048 -7978-3435 8421--5281 -1160--5741 7064--438 2523-8410 6560--2171 6156-4351 -4559--9033 8378-3762 -8699-1303 -7692--9243 -8111--7058 -3929-6037 -3944-4261 -3396-2294 8054-9998 6337-6388 2323-6783 8359--1496 -7258--1972 -8275--5532 3965-1679 -8419--4495 1141--9252 1268--1153 6196-5959 -7913-4184 8632-8677 -8304--2924 2984--3459 -8742--9957 2046--7694 -1525--4302 -8212-555 -4419--5981 9446-8042 4864-2190 -5605-8820 -2960--3835 7582-4359 8217-3455 -2045-2330 8785-7480 8569-8635 -2423-270 7032--325 7018--1320 -5163-8926 6236-5741 -7439--3468 6117-5442 -3013-8255 -4432--5203 6943-4150 -6884--3797 -1452-662 -3664-9254 -7558--6061 1373-6737 -5698--5746 -1285--1684 -2616--580 937-2375 -5531--755 1388-4731 -8644-3240 -6027--157 -2242--8256 -6479-9509 9633-4463 3616--9010 1200--6954 2670--6648 -1700--8745 7033-6529 -504--7974 -2864--1973 -6356-8117 3608--5870 7168--2988 2124-2788 8862--2365 -8828-9438 8009-1454 -7557-3587 8528-7392 9650--8164 9555-4671 -1753-3471 9841-7694 -4827-6004 8628-7829 -2457--1713 802-8945 5330--1967 -5403-4114 -2303--2157 2372-2636 1862--7512 5259-956 -2292-175 8308--4696 -2212-7092 -124-8261 -3927-7097 3659-6562 1460--6019 798-9127 -6589-1241 5391--4478 9625--7977 -471--2058 -1844-474 -6488-9454 2008--7865 3032--2323 6299--5469 6362-2635 -7316--1742 -2816-2290 -220-18 -8806-3007 5341--9698 1948--6478 1552-4536 5761-688 6720--1283 -6631--3399 -1421--733 -8715--7688 -6451-1131 -8865-7388 6113--7350 271-2672 1576--6882 427-5961 1989--7619 3297-3896 -8602--6778 -1082--5507 -6045--9059 -9914-2264 -8080--2931 -5484--895 -9309-6383 -6935-2049 -1186-5308 2868--1749 -746-835 6398--3358 -2740-8323 8066-7351 -772--4952 5229-3230 5094--8412 6454--5053 8782--9741 6427--6725 -150--2781 8343-8348 8958-7062 6947-642 -5626-3882 -5152-4292 -8946-1676 6168--3908 -5823-4287 -754--6677 -9603--1872 -1780--3332 6379--4552 965--2703 -9387--5047 5135-1676 9729-3059 -4420-2368 9288--6367 -5964-440 1914-8557 -8042-9477 -8631-481 -4776--2418 531-9048 -8414--1450 2160-6773 -5084--64 -3538-2050 -3407--3179 6361--3585 9383--7085 -7124--5751 -3784--5343 1857--7175 -3399-2745 -5264-7770 -6231-1279 6629--5321 -2214--9024 8069-7337 -8554-9601 8619--2215 -3485-6826 -7661-5301 -9059--7338 4841-8679 9692-5311 -6007--3210 8367--1634 -4347--7101 -6055--8531 6230--3696 -3418--6870 7449--190 7269--6066 8634-642 -6322--8973 7418-4798 -7181--7174 4122--5099 5645--4728 5091-7579 5208--8419 -259--8980 7833--1221 6641-9367 8271--1589 -7195--4263 -5052-1370 -7422--8524 -3093--4646 1177-7407 -7576-5122 -8694-7926 2143--6020 -69--5455 1359--5622 6770--6641 9800--8675 1346--4387 9911-4177 -9942-7400 2580-7884 -1450-5508 8942--9009 7995-2317 -9275-8664 7671--859 -8049-2101 -2018--251 3737-5327 8149-2033 8718-6970 6169-1345 -1948-8585 3581--4137 3200--1826 -1154--9822 -899-7547 -1123-3497 -9930-749 9809-7409 5221--9343 -288-367 1906--3852 -8015--1837 795-9127 -3661-2598 1766-6997 4913-4869 6844-4307 -6671-6456 -7840-4696 -1239-2189 4693-2167 2598-8904 -4785-6198 -4413--2604 -5324--357 -3309--8872 110--7943 8810--2127 -6392-5285 -9134--8228 9290-7021 -4302--1608 9374-634 -949-4677 5419--3528 5047--2475 -1989-375 -5946--3412 -4753--6225 -6850--9646 2456-5916 2873--2539 -3378-7427 -7645--5197 2239-9890 3119--3560 2712--6774 -1332--4793 -3550-8384 -8752-1030 3362-3489 -8311-9548 -8188--3780 -5176--7520 -2487--9846 -4484-3738 -5669-5692 -4694--6568 -8353-6596 -1842-4295 4442--396 9766-275 -3972--7006 -4516-849 -2054-3320 -9016-7873 3425-6975 5380--8441 4735-6905 -995--813 830-9214 -4205-7259 9884-3815 3845-8545 9479-3042 -8525-5874 8210-1485 5708--5664 -5687-2793 1095--5344 3956--841 897-8356 -1528-4035 3886-4177 7357-6316 -1069-8546 4240-9410 8602--4671 5269-135 -4805--9671 -2748--3958 -7192--8871 5411-5873 -5286--5569 9092--3574 -9751--2646 7048-4031 -8311-4793 -6713-7328 905-8014 8233-9053 1687-6518 1018--8578 -5872--2426 -5278-8086 5312-6547 7558-7645 8107--9222 3435-1069 -6512--1755 -3880-522 8326--7515 2293--8814 -1705--9301 -5468-986 8342--9187 -3784-3140 6485-7194 6913--9553 -2919-3769 -5033--264 -109-4817 3319-6998 6374-5816 2879-6437 -5097--1457 -1456--4988 8961-2022 2705-1247 517--8840 -1053-2133 -998-1637 1558--5894 6379--8379 103--1944 1793-6567 -4445--153 7797-312 991--4321 -8075-6474 1563-207 -1440-7360 -8345--357 6164--2274 5367-129 5860--1522 -2341-7418 5118-4832 -5454-5706 -687-13 5941-4398 -7073--5282 -4891--9291 -1275--9644 -4679-9670 6197-394 5175--7768 6400-8810 -2010-6795 -6177--1512 -4209--21 -3096-4737 327-2054 8263-1454 -8637--6248 5824--2391 -5468--2431 763--4419 -9529-9302 -7233-7071 -8223--7871 -2514-7593 5720--5060 -4949--8461 2277-6304 7090-9624 -2382--1875 -8979--1931 -8384-6366 -311--7185 -6643--3747 -2783--3501 -610-6034 -3438--7257 9596-7129 6968--3436 -6560-2858 -4736--9956 2757-3868 -1593-1487 5343--6577 9537--4740 8871--6949 31-2797 3939-7517 6514-7774 -9594-5963 -9116--8508 -7258--1977 -372-4805 8599--3119 4338--8756 -800-4305 -160-5408 -4926--562 748-6008 -6942--5261 -9708-6654 -3288-6904 6429--3221 -8206--3721 -2004-797 1561--3946 -3958--3988 -4115--5778 6649-9057 -8909-1359 -3578--4763 -9401-8372 -3094--6793 1789--7661 -6192--7437 -7804--6211 7051--6031 -9338--564 -2540-4800 1901-9682 -8621--449 5797-5332 -3584-8245 234-8056 4190-7186 6967--8587 -693-6385 5281-3302 9536-4190 -4915-604 3584-3087 -8892--2953 7366--479 -8846--5566 5886--2227 6689--883 -2891-1156 -8605-8796 -3507-3405 2848-5902 6233-7317 5395-9911 5954--8960 2169--6462 -4966--4936 -8202--4274 598-131 2594--5474 2886-9115 2510-9933 -6996-5341 -5726--804 -895--6896 2780--6845 9542--4315 -1257--3793 1932--3835 -5644-8666 -2744-9738 7854-7417 7274-6724 -7893--2243 8050-383 3243--955 2122-1649 7745-5392 -8476--7838 -3295-2952 5368-6758 -4271-6902 -2534-4894 -8909-8491 3137-6502 -2899-2843 -1375-2721 9948--5924 -6956--4610 -2931--3444 -448--28 -1730--5991 7774--206 6544--8303 -2906--6608 578-4704 -8632--3326 -9516-3300 -1311--2242 -1779--8830 1345--3185 7052-6330 -6018--7864 469--6866 -1103--6907 -6193-151 1145-2591 -5132-2123 5065-2468 -3502--6656 2081-8425 4267--836 3899-4773 -4548-130 -2736--2973 2875--2874 3080--6817 -8524-7986 -2232--3604 -9357-1392 -5571--2383 -6345--6806 5314--7146 9783-1342 -2330-1733 -9291-459 3265--8498 1169-1546 6789--6774 8508--4804 3517-1295 2824--7263 -8323--5711 -483--5779 -923-2797 -3344--4256 -6690--1243 5848--4057 -7171--2405 394-8139 4701-1072 -1646--5561 320-3630 9333--4562 -1300-8025 2754-1715 5433-4871 7295-4619 -1693-830 4406-6623 -2233-6864 -5040-6684 4543--201 -1383-3691 9118--9535 1471--9989 -8109--5784 4790--8218 3457--6757 3516-252 -7734-537 -9753--8321 2906--8743 -5888--3525 3395--5447 5328-8744 -6742--6560 5268-8991 -1118--1608 -5440--1585 -6985-8725 -9514-1021 -8509-4403 5493--3093 -4315-9095 -1650-2524 4879-3743 -3689-626 -3939-2713 -1979--2028 -2953-1777 -1564--4099 3511--7037 -1082-1832 -5151-3266 3774-3113 -3850-7663 -5826--5253 3433-7898 2017--790 4618--4799 -7011-8370 -8024-2709 -7150--3108 2114--8844 4163-768 -496--6942 -3483-259 -9148-4067 6908--8360 -8296-1000--7249 5824-3627 -297--5792 -2295--1962 -3108--2763 -159-8604 7910-2881 7433-2689 7726-1522 -997--8485 -6283-6760 5342-9420 -6984--773 2607-2415 9491--4124 -1911--4150 -4489-570 -3657-1537 5524-6409 352-6796 -9653--7804 -7101--2091 -5597-6888 4117--2222 978--764 -7108--5925 1655--5062 -5811-820 -3191-8935 -4531--5222 9017-8255 -4707--5263 2077-2742 9715--8619 -2958-3637 7222--200 8558-6074 6139-853 -3635--9148 9746--7924 5550-2494 4369--3804 3185-7 -1542--6831 8955--3687 -6617--6789 -2282--5996 -5617--3664 5418-2140 6362-8100 4992-1598 -9954--52 -5524--1549 -3490-2658 -9655-3879 -6291--6862 3983--3594 -9624--3025 -5839--8965 -9844--5687 -4092-791 6110-8966 -5404--1318 2387--546 -3234--7366 5546--3115 3452--3172 6155-7209 -5803-1265 -2998-6680 7693-7852 -3207--6911 5890--2066 -5229--7014 7565--7697 -9759--647 -8536-2128 -5737--5464 6448-6174 -7286-5002 -7431--5289 -7938--9592 -2745--9315 727-4134 9175--1410 9413-3310 -2423-7897 -7064--1037 2180-7313 8345--2313 91-6276 8899--6748 -9688--6263 -8819--5405 1242--2679 -2074-2924 2178-3964 7253--5640 -1359--6777 -9446-3862 6902--4582 -8675-3185 -8872--4440 -8895-1924 6055-7673 8550--2185 -9244--7686 -8243--6069 618-1927 -805-3076 -6967--8043 -8279--1616 9222-1070 -9089--8755 -808-5991 0-2436 -2614--463 -7379-5782 9718-9802 -3934-4829 5962--9018 5699-5454 -1938--7955 8356--2797 5921-2813 3061-5046 7921-5034 -760--1865 1861-9201 517--4554 23-9911 -2057--5512 -4119--7529 -4134-6535 5895--5920 -5154-8481 4688--2599 -6290--4347 -5248-293 1303-7941 -9799-911 2898--8058 6856--9268 -1689-3056 8683--4784 -6894-148 7350--4928 4538--3292 9240-2687 -1977-2165 -2028-2522 7227-8354 473-6149 -3118-7414 8220--90 -4318--3623 4474--342 5655--7149 8363-2383 -8666--3532 5122--2432 -410--1855 -6096-5681 -7284--3652 -4022-5454 5032-3806 -5862-831 1221--7242 7425--4201 -4501-4904 4641--8598 8329--9134 -5541--597 -6326--2722 9119-4524 3679--9014 -2350--2750 4077--8342 1166-7039 1809-8655 7008-4001 9172--3991 -9474-6473 -5393--4791 6320-8972 955-4339 -4749-7768 -1047-1047 8889-912 4824--7838 1541-1456 3863-7488 9296--5274 -7707--3504 -4846--3182 5254--8774 -3542--1446 8643-5455 986-8389 1843-5052 3001-445 -6549--5342 -2686-731 1185-2056 3240--3189 -8469-4971 -7930--5041 -1800--847 1321--6549 -7764-3794 -3288-450 -8254--8870 -4575--9728 2288-5464 -5980--6900 58-7333 6161--5236 7546-3651 9256-738 -765-7041 1082-8339 -1013--4725 -6176-6136 9999-227 3988-6510 -511-2721 -1708-1014 6028-2564 5689-1679 3760--2269 3028-8572 -5279--8942 -7053--6129 -1919-2935 4357-8448 6903--9003 -1692-9883 -4043--8327 -8644-7439 23--3767 1404--1162 -8395--7028 -4085--6250 1767-5947 3737--8408 3212--8592 -2947--3273 517--6756 -9158-8397 -4947--1270 -4502--2020 8603--962 4205-5681 3200--3919 143--3662 -1997-935 -6137-4726 102-5258 -8892--5122 -64-777 6636-2786 3602--3070 -7919--8526 -2505--8751 4546--2111 -9286-9948 -1438-2645 -2482--6926 -3893-8936 -3104-3288 3425-9030 -6073--2675 -7600-3694 1797--332 7495-9362 8278-4358 -3884-5094 4000--3720 -8472--8784 -4527--4729 -1814--578 -6992--246 6823-5386 7406--4470 -6768-7642 8699--9086 -5730-3309 -2949-3588 -129-9966 5607--2877 4740--8227 -5225-1564 -8125--2216 9567-8844 9181--4243 7121--8748 7630--9146 8920-2479 -9508-6848 -5816--6782 -1856--8855 5083--2201 285-565 -4990--160 9849--5472 -375--1824 -1384-5600 1416-8528 8144-6496 2186-9912 7319-6481 4213--7383 -1015--2547 -8918-485 -8592--2033 9152-3662 -987-3915 -3754-4564 -666-5650 6022--5563 4062--6267 -2799--156 -8413-1736 2826--6566 617-898 -1543--3013 -4091--3920 6631-3706 2799--977 7586-877 -1966--3507 824-7789 2290--6231 9941-5448 -620-5384 -3040--5420 -5809--3753 -682--4009 7815-8517 573--3933 -1640-4694 3526--7416 -248--9072 3290-3982 7376-4678 418--9694 4564-2422 -6481--5759 379--1453 -1051-241 -6316--7454 -2836--230 2283--3716 1900-3850 805-2385 -5394--378 -1906-6673 -9005-1364 -7019-1794 -2950-4398 394--5768 2464-7707 -4341-3750 -5687-9421 3212-3997 9356-9405 -2488-6132 -7885--1204 -6945--2282 -9933--917 -336-8462 1429-5124 1416-570 630-3983 6377-5802 4397--5871 9008--6320 8764--3990 -510--7463 -1828-430 -3845--5254 -1644--1858 968--5299 -976--5326 5248--1846 7460-7474 5144--2462 5795-1061 -9032--2196 4469--2113 4639--7240 -3891--2505 2591-6454 -5626--8194 4526-9426 9018-4882 -3211-5847 -6017-481 227--164 -16-4273 -957--794 8965--5409 -1439--1670 -7511--3598 -9224-9529 -3767-3823 7100--2746 8761--9814 2051--2925 -3402-5976 2095--9768 6845--6953 -3941-2789 -6119--4503 9335-6250 1579--4805 161-2281 -3683--7295 7875-2937 -9713-1527 -6416-1298 9821-141 -115--322 -5005--868 -2415--3241 -9607-5730 1770-5867 -7250-9334 5582-7438 -2798-3398 9043--5574 4806-2226 -6885--7456 3110--7356 8463--87 -9676--4886 615-1451 2780--4841 2243-5817 -6769--4207 -693-2126 6053-2534 3633--7835 -6561--5148 1126--1206 1043--7406 1036-7646 5242-4247 247-5401 -5440--3087 4086--6509 6827-8980 -8110-5713 -6188-9438 -6677-4198 2733--7950 763--4808 -4138--7925 1963--5547 9585-6163 4131-9701 3856-7368 -5795--3600 -6375--7797 -6297--940 7916-3645 -2800--9156 -2908--9068 7101-8495 -8206--8286 -8421-9210 -4748-486 4429--7692 6558-8566 -2087--7336 355--2991 -9249-3158 1549--8422 -4126-3579 -4494-6156 -3154--9295 -6233--4134 4071--9646 7524-5295 272-8805 -4916--2912 33-8225 -4927-7999 -4026-3350 2281--960 -7764--9558 1885--1821 3761-6334 9865-713 3030--6125 9967-6702 809--8856 -3942-7039 -2386--874 8757-9429 -9818--1262 -1749--9474 -9116--7516 5144-9309 3865-1452 1495-7387 2772-4869 -9183-6721 4806--2626 1816-8999 30-5103 9552-2243 5941--2398 -8146-8207 6212-1724 9207-8033 4883--7085 -1959-8792 -3352-5899 -4872-470 5823-165 -4730--3072 4471--3694 -5009--1343 6662-1523 -9466-6511 1682-3892 1574--4393 -5639--2760 7507--7748 -252--5932 4859--363 -9181--5672 -1861-71 6309--2353 -4296--7051 993--5205 -7638--6338 4253-4102 3498--9013 -8522--9491 -4724-8421 6210--2558 9352--1704 -1581--5 5880--4908 -359--6920 -4936--4819 -1618-1674 9096-7461 -8624-934 -3820--4462 -7935--4628 -4752-9859 7970--3590 -5836-340 7300-2074 4797--4729 -9746--5405 9379-6515 -4073--9282 3668-192 4989--1822 7547-591 3885--6764 -7749--1557 825--7517 -6446--2744 9502--3133 6225--4340 5263--7508 -9099--5736 -7391-5742 -6029-1057 -7358--9817 -676--1138 9244--400 -1530--1765 -1720--8660 1764--69 4333--4394 6604--1661 -8586--9090 -1450-6377 -4938--1339 5067-9547 -8208-2859 -7079-2113 8151--2421 -9752-9251 6764-6058 -4662-581 -2126--3418 -1954-4270 -2892-997 7634--235 -3156--6266 9882--8146 -6765-3791 6430--9753 6959--4352 1736-6129 4944--4028 -5574--1915 -9254--3239 -2168--5431 -9001--1713 -880-3831 -2990-8303 -4400-4230 2263-1552 3019-5256 9444--3846 9509-1385 7112-5039 -3373-8268 9419--3254 -9952-4402 6900-5429 1910--1081 -4928-2438 9452-9374 -9017-2248 -5624--8862 7254--9003 2132-2969 -5882--1214 8810--462 1095--3746 6581-4883 6744--7888 -688--5074 6000-8313 -656-4380 -8512-7145 -2897-3182 -6853-1360 -2282-6241 6633-8435 3103--5900 -4228-3401 -7375-2053 -8878--1439 -9625-9702 7115-9379 4161--175 498--5239 6590--5349 4380-9662 692-6353 -5656-4013 1932--2192 9859-3475 -3984--823 -7444-952 -9875--2196 4186--1670 5998--729 -3605--2110 6695--8130 -7741--405 -3207--1406 272-8687 -2812--628 -9098-255 8153--3521 -9258--6822 8106--3785 -8699-5481 -7802--5124 6385--2359 3327--6589 2604--4442 5676-4841 3883-2434 -6189-1433 8565--2930 -6789-575 1011-6849 9073--4969 8000--4530 -9134-6055 1168--2421 -9833--6554 -2151-8235 8153--9093 -9153--3706 3357-6840 -3647-9236 -1608--9630 -2663--3609 -8914-4223 3450--8407 -6225--7608 9510-4219 -6384--2778 4459-3807 664--6727 -4189-1728 -6921-58 1135--1151 -240--8792 4038--6895 -7728-269 5393--4627 -4808--2042 873--7877 -6633-613 6256-8801 -5082--7348 -8930--3136 3535-8375 -523-8711 7781-9051 9670-9697 -382-869 -3659--4992 -2524-1390 -4383-1381 -985--582 8935-3004 2003--5274 1078--7639 -4146--1254 -3150--2839 3747-8765 -3679-1907 -7751-8846 2936-2732 -8678-2035 -2313-3297 1946-3744 -1278--5345 1999-334 -8769--3068 -7405--1112 -3094--6969 1132-2292 5632--2351 -7163-6054 8018-5391 -6977-7304 -9667-9310 -4311--6069 -3475--2881 7462--1476 -6156-4524 -7974--394 2077-6095 3105--8634 5584--5061 5952-4204 -5391--5458 -7351--236 -5794--3231 -5066-356 -2581-9942 2874--4868 -6550-1523 -881-2630 -2953--8680 -2658-8071 3111-7750 7813-8703 -8037--7725 -7189--2271 122--1653 -973-7234 2223--9211 9348-2204 8604-2867 -8648-9563 -1674--6405 -301-6325 -3290-4036 9170--8216 -3518-3765 -2511--781 8811-2245 -5649-7702 -5882-8099 517-8629 -7226--8250 -598--7703 3839-7551 9760--7515 4327-2242 -9935--2075 -9011--6450 2392--1709 -7687-5072 -1733--8540 2579-1443 1908--8816 -397-5065 659--5346 -8105--2062 -3225-8718 3458--3725 -5844-9143 -5129--6737 -3144--2308 -9597--4817 -6920--6530 5340--9306 -859-4952 -5100--3338 39-997 3995--7965 307--3476 3971--9347 3070--6214 -2541-5468 7689-8148 9162--8344 -4544-8325 9630--6482 -3438-980 -14--8998 7200--8163 -3613-3663 -5197-5750 -2490-1893 -7310-1389 7526--5885 8888--8079 2196--7848 -6339--3033 -3127-348 855--6870 3256--4479 1602-3981 -2272--488 -2290--3251 8214--2236 5699-6360 9509--4418 -5085-7966 8216-9315 -5823--2286 -7700--1868 1480-497 1898-4654 243--2034 -5004-3896 1699--7602 -6699-2787 7238--6560 -4935--7664 7058--8557 7850-4666 5328--4736 -1185--7397 -3789--726 308-4082 1911-4187 8068-2136 3552-4873 3854-2541 -3615--5396 -1015-9557 7152--673 1069-4875 5726-5080 -5782-1783 2348--8901 8214--8698 -5398-2131 -4233--7312 -1527-4848 3014-5744 3334--338 9402-7875 -2372-2557 6110--4131 -219-1504 -4403-5211 -7263--1998 -4114-8076 3917-419 -4156-8309 4404-9529 8787-2671 -6802--5624 -2015-2319 -7241--2365 4393-4240 5607--6230 -6258-2338 4398-9301 -4012--8718 -2506--2820 -7219-6695 871--4272 -2533-330 -3866-5487 9820--2551 -5436-4046 3203-4122 2413-1402 792--8113 -1104--8690 6951--7469 8728--5993 4298-2912 7191--9251 -8134-9965 6401--6530 1053-1802 -2706--4067 -2148-3942 -1883-7062 -7336-9662 2667--1533 952--8712 7447--8136 2206--723 -9657--975 7049-7488 5076-3113 -3983--7162 -6194--4321 2586--715 -7402-4024 8376--7149 -7869-7383 8674--5990 137--8036 8094--9294 -6967--327 6054-1922 -3434--3255 -1091--2169 -7546--2514 4623--8502 5136-4235 6558-1227 5801-335 2909--226 4363--4645 -1501-9270 9659--4662 -9480-9407 3410--248 6289--6354 -5288-9807 1536-1939 -3933--124 6451--5596 5630-2363 735-7763 -3479--9759 2526--3884 -183--1195 7209--987 951--7371 2287-5737 4765--5200 -1467-6566 -1101--1783 1459--9009 -2799-8407 -725--8029 -9722-9986 -9036--1477 5925--3091 -6924--5872 -5700-7241 -7483-5235 9346-6602 -6971-5124 6553--4610 1275--1342 1181--9989 -8800--4308 1166-8830 -6724-4103 874-1705 6418--7231 960--1955 6400--4315 -9234-843 -6722--9092 8747--4164 -3478--5150 5506-7786 8580-4197 7780--2672 -3090-3677 4185--1227 -7158-2743 -4188-871 -2615-8125 -2285-7986 5362-9411 4638--2973 9318-5021 5787--3734 -7776-3046 2328-9130 7194-1000-62 5099--8677 -9673-6966 -6338-8406 8007-1572 3661-8079 9770-1131 -3531-6603 -7285--9427 -9921-7859 8143-4017 7649--7381 9750--3412 2640--3330 -4217--654 -4805--6855 883-4325 4006-7150 4432-8273 -2746--7922 -7044--6918 -7626--4377 -7481-4074 3414-9891 -6070-1987 -1626-5506 -2603--6819 -5382-6802 -7481-936 -1583--4061 -4526-479 3809--5377 -275--9949 8643-9972 3082--792 -8011-356 -7259-598 4355--559 -2411-771 1076-5500 3310--8512 -50--9308 -3640-6416 -1689-5268 3818-6759 -5717-9351 9400--4117 -5722--425 -5799--9504 -4559-7637 3059--592 5056-7457 -7350-1560 5940-3475 -7280--7066 6055--4312 -6707-9618 -6764-4140 -8040--8854 -5647-215 -461-4513 -6425--31 -4422-6833 5535-1122 -1572--2985 -960--8363 1739--8430 3444--54 435--2937 8315-1187 -6086--7675 -75--6770 -9320--5164 8486--2672 -9533--3226 -1879-8731 -6989-1494 9988-7825 4799--6594 3220-3805 6930--5072 -7747--4376 -463--5593 9938-197 -143-1210 335-1294 -6134-6962 -3346-1981 -8515-9446 9268--31 -7520--7707 -9333--7457 3672-6366 7464-1549 7694--5180 8882--3250 -565--2602 983-9882 -387--5776 -1801--7932 3762--3145 8818-7083 5514-4691 5257-1842 4283--6432 9926-4015 5397--3956 -8558--9100 -5300-5214 1404-5426 6550-8046 9416--5142 -616--6473 -9197-2423 -6851--4679 -3050-3379 -2894--2639 5707--1057 -7476--5664 4272--5510 5145--2670 6511-1505 -9861--9967 5375-8176 2524--3458 88--1057 5099-6858 -2370-4254 -8134-9235 6782-3331 8009--2030 -495--3932 3110--7698 4069--9076 -4503-963 9760--3455 4994-9644 8440--1691 7435-3811 -8770-9170 518--3474 -1172--5522 235-9350 -7659-4249 -1453--1989 6956--8120 3573-8286 -9899-7772 -662--323 -5129--3960 -4351-7818 9797-1967 -4289--6991 9359-7995 1783-4753 9384--2296 6544--5523 -4392--8587 -6387--7516 8837--8360 -9278--9970 -8246-444 3032-4756 -9834--6216 -5876-2569 9884--2100 -3791--7851 8640-617 -2346--101 8869--9957 -527-4526 9825-1584 -925--1858 -1733--6176 -5601--8989 5692-7308 3846-4302 4727--8414 167-7978 -4353-3260 -9287--8656 -9237--7374 6370-4504 353-7127 -3546--8036 8055--4705 1913-6269 6942-4335 8384--9690 2132-7036 6464-447 3064--4263 -7548--6807 -1169-7497 9217--3056 -7491-1734 -7132-8277 6683-3003 7577--3636 -4930-2703 8505-41 5967-1959 5160--441 701-6429 23-5357 -2223-3962 -2706--4875 1568-3351 -2392--3830 7989--5434 -3916-7036 5124-4589 9443-8168 6300--7445 9190-2220 436--3701 4012-6855 -5073--1017 -177--6366 6534-5831 5663-5519 -2804-1481 -3425-8928 -7929--6555 2450--1160 -9103-3346 5548--8321 4016-5444 6598--2394 8646--5741 4646--5552 4780--8711 1589-2841 -6602-7304 -1976--6235 -5822--5503 6062--8033 1725-5501 -4186-4510 -7923--9692 4108-7520 -8180-7423 358--1601 -7021-4335 -3932-167 5875-2090 6339-8616 -2660--8473 2920--5502 9877--1297 -9582-3493 -5265--2358 8925-2250 -8214-6388 4873-5094 -7848--9430 99-5706 1465-6150 1025--9602 -1303-161 2162-6390 3099-6184 -8084-1291 8459--9634 6515-7806 -1614-8228 -2746-9618 7272--3851 -7025-8031 8668--736 8463-86 -3328--4428 -2790-7694 -7339-5282 -7782--1830 -9313--2378 7837-8496 8479--8202 -4875--3974 3623--5548 2689--7507 -7682--3715 1006-1742 -8408--993 4709-1907 8889-3482 -7352-4954 -2559-277 -8941-2479 2259-7411 5566--742 -4474-2764 6788--1306 8166-9632 2204-7029 -5264-6622 -8595-7344 7722-4722 -2402-4687 -341-7554 1980--6030 302--3803 7203--2888 -5703--7626 6271-3845 -532--7951 9704-8464 7474--8806 -3816-7296 -4304--6339 -3519--5398 6011-9626 5563--4190 -612-9358 -5030--7181 3757--8871 -3909--9775 -9451-1042 -1102--5404 -813-2166 -2684--9087 -7659--7087 6492--7449 -5129-4073 -8317--864 5714--8964 -5524--1686 -6734--6967 -8563--4251 -8541--7537 5168-353 2586-1414 -8610-3161 -7749--2777 6764-6885 2931--1807 3252--607 7606--9409 -4457-5265 3625-7156 -6719--3653 -2640--527 403--6895 -8819--6812 -6406--130 2477-7815 9539--3217 1197-8153 -9424-570 -9176-2331 -6306--3245 -3197--8079 -6535-6919 8394--3628 -3601--7702 -9339-3075 4707-8089 4972--259 2230-4479 7258-1857 -9387-8552 -5928--6729 3518-8598 5805--8686 -14-3247 -2754--7952 6455-6812 -2689--2425 5907--7489 -8610-1161 -2126-9783 9597--8931 -35-7353 5016--6678 -7740--2909 -1405--7086 4884--3537 9515--4495 -4330-5566 5144-7963 -4329--2702 -3551--5343 -980-7479 5449-8428 -8844--5983 -2145-235 2734-2339 -934-1459 -1075--8611 4717--3373 4369-7963 -2290--4696 -4131-3820 8367-5486 -9581--9318 5353--119 9478-1067 3861--5861 5155--6498 -9145-6829 -7193--6601 -7949--7169 3568--3593 360-9224 827-1199 7226-8172 -8190--3790 4547-9625 -1676-9457 -7166--2018 9120-6909 4581-4657 4601--4666 7554-9343 1274--8793 9511--2990 -1219--6308 2750-768 5090-2262 5449-7129 -5792--7063 -6040-194 -7048-2847 8861--5685 882-2495 9523--9672 8335--9981 -8462--5227 7445--8647 781-7804 1384-8329 7040--8299 -4815-9552 1919--3780 5288--6310 973-5378 -2319-1172 7256-8027 9192-6034 7598--4732 -9538-674 5192--4432 -4494-7309 -4761--450 1007-9262 3673--9263 -1315--2876 7398-2480 -1593--881 -9940-5553 4450-8235 -9057-6047 -6667--5918 7874-8038 -2315--8499 5647--5791 -4384-4183 9381--1194 9123--2715 7296--647 6281--6525 -9536--9246 -7147-3255 7361--4108 6418--8091 -325--4683 6062-8914 -7254--2410 8163--8766 -667--4485 -26--2703 -9090--651 911--1108 7956--5822 9636-773 1717--6379 1690--3665 -4695--2052 -6045--5439 7019--1814 -4917--7927 4718--7839 7210--7926 -3557--9652 -6546-1199 8078--4194 5108-6881 -1696--8700 -7847-5214 -9423-6664 -7620--3021 -2315-2608 8564-9888 2241--5431 3701--5022 -8203--7398 3729-158 -1437-4686 -7541--1937 4403-8737 2917-4355 5439--3601 -8624--2019 6868--8049 -9723-6391 -7767--4013 -1334-392 1136-5898 -5032--7690 5927-7170 399--5399 2104-1806 -836--1110 -5719--6018 -5785-7838 -5793-2404 -3346-4605 150-5523 -4911-3893 1932--4477 -902--3136 -2523--6602 -3881--7886 1989-2856 8219--9153 -3368--6296 -8388-6435 8630-9216 -4603--8373 367--8726 6870--1653 4588-2701 -2028-48 -1391-5065 2725--4365 5339-6337 5201-9215 -5961-7255 -6467-1057 -9555-3638 -1034-5247 5883--8772 -4299-1195 -3681--4967 2130-4914 -6468-2371 5382--6813 3884-8046 -3336--7663 4585-6600 -6074-222 -9825-3864 -80--9876 922--6016 -2288-6061 6251-9337 -3818--7181 -6370--6522 6072-8474 -5682-9779 1068--6972 -9053-8730 8270--6988 8270-884 -144--1058 7747--8902 -9016-4094 788-6423 810--1854 9227--7295 9018-9385 -6383--6167 -451-7397 -7561-9134 -8003--9430 -4549--4054 -4149-20 1175-5256 -670-4873 3205-9851 5336--596 736-7625 3368-9263 -4250-629 -3747--7150 2171--2534 -2492--5475 882-9373 -9015--2104 -5560--9 4607--6859 3175--8769 -1554--4495 1081-7045 -5431-7530 6379-4493 7240--2712 5024--7021 -2805-8917 -2640--7539 2254--3205 2739-6227 -7436--8356 -4041-5252 -8063--9475 -1286-378 1700--3844 -8260-3127 6255-2520 2809--2625 -6330--2530 4463-6394 754--1786 6833--6563 1261-2062 2225-8765 -9007-74 4947-303 2152-5303 -7355-3292 -732--9501 890-5785 -3020-1698 4792--4957 -7421-1414 -5094--744 -6042--4569 8977--7726 8322--749 -4052-9798 -5829--1717 3593-7013 -6717-9987 479--1499 -2512--8925 -4132-1247 -4282--9278 5826-1179 9959-6028 9091-3435 -4097--1168 -9389-7600 -8503--7378 -8072--2427 731--5647 5918-2463 -6034--9241 -6499-9981 8047--2658 -6561-8918 4577--6617 2937-1581 6241--9054 3346-9541 3671-5561 -7435-2449 3996-6172 4302-8120 6423--6448 5633-2248 4728--1226 -7096--5337 979--2798 -7916--8354 4225--6759 7243-6727 833--7348 5220--3370 210-623 4409-5375 -438-6615 -6881--604 -4916-5125 -503-3580 -8482--6669 -682--1328 7563-2146 5590--1723 -6333--533 7740--8021 -3780-2787 1101--286 -9693-116 -3842-8812 6832--8430 4628--3937 -5515--4628 3869-9429 -6697--8974 -6107-4371 7482-4877 2469--4842 4824--4953 8783-9751 2837--8979 8496-1867 1800-8088 5580--7725 -5134--9166 -4842-4764 -3605-4107 -5724-1160 2762--8709 -6707-5642 -551--7460 -3711-4556 -4889-640 9192-4618 5610-8020 -5011--4130 -5043--887 9572-1541 -4521--385 -4772-2132 -4912--9537 3519--3800 788-7676 9275-5282 -130-8135 -1363--7081 -229--6847 8809-8958 -6492-9915 -2310--9902 -2219--1293 6456--9726 -9615--2805 7684-8569 4076-4469 -4166-9500 -4288--1958 -8355-7271 -3334--2013 -6295--8256 4871--7588 -1726-4274 710--3408 8165--3787 8648--8653 -5790--3435 8456--8546 -2081--11 -3671--3227 -2688-2096 2441--4995 -9398--7205 -31-5047 5110-436 -1991-8030 4042--1642 9520-9615 -884--9803 -1964-2571 1579--3690 -2724-1595 6304--849 7129--6336 -4130-7234 -9800--9871 -4863--87 6134-6659 -5816-6680 -2700--3946 -4647-9965 5297--4678 4471-5669 -3362-2993 7652-7724 -1166-8007 -5499--8364 -6329--8337 -7490--9143 -5050-3675 7969--6658 -7596-311 4269--4472 809--7902 7606--1611 5566-72 7608-2791 4800--3954 -6254-6057 -4845-3613 296--9140 -2995-2374 5959-5380 -1018-2377 7132-4276 2546-2070 5713--560 2722-5325 -2297-825 -2617-9260 4816--4913 2583-3710 -8089-7677 2210-1997 5344--4978 4611--9709 1593-6174 -741--9856 -7266--4617 3587--7971 3047-7960 -4360-8379 -5366-5489 -371-1150 -3220-7926 -8788-3526 -8665-1773 7174--9069 1939--2652 -2707--3578 1923--6017 -6693-1133 -5435--59 -2995--4738 -864-3464 -2034-7613 -7423--2017 -9711-7996 8135--1816 -8654--2135 9448-5185 7613--1425 9971--8619 9426-6144 -4427-1343 4293-1143 9640--5616 7195-7622 5008--1074 -7099-3337 -6043--1706 9525-5925 7814-6314 -60-6083 9228--7083 -9088-4706 2546-8940 -384--5994 9839-6695 -6831--6703 3814-1752 8519-5290 5489--7067 7296-891 -5787-6338 -1546--3684 172-4396 4069-1596 2328--4573 6837-4217 -7866--4809 -5384-8637 -8005-3650 1475--8589 -7757-961 93--5462 2612-9776 -6381--8925 -3387-7849 4487-563 -2664-233 -6635-4114 -8992-6032 1051-5761 -6999--4918 -982--9825 -369-5722 -2505-7774 425--4492 7176--6465 -7818--8313 -1505--2169 -3815-2797 3643--3307 -8828--4270 -2204-9662 8734-7366 9284-8386 3694--411 -5201--4206 2880-2014 2859--2254 7130-1856 6740-1472 -1761-6816 -3724--5287 -8750-5403 -5905-926 8457-6182 4275-4914 7809-543 -1289-951 -7408--8779 -8336--4830 5141-2794 756-3801 -6993--900 2779--450 -1241-7938 8388-9054 -3478--856 1212--4579 -8815-287 3787--5830 4249-9722 5593-3928 3991-8839 -5727-6182 -4405-5766 3110--5136 -534-5756 -2051--1153 8675--6739 7108-9228 8908--9100 2293--8667 511-6025 4477--7315 -1521--8330 1933-5297 -2224--6736 -9517--5860 -866-8981 -4114-7143 6251-1886 -3531-999 6445-1764 -1553-2782 -1364-8480 3665-4346 6739--2672 -937-3138 -8446--5505 -124--7201 332-2886 3146-9912 1385--3331 -1469--9244 2142-6902 -4803-5967 -306--7513 -1677-4482 3609-6072 3197--5800 9985--9791 579--6422 -7359--9938 4845--1077 3932--488 -8286-6537 9838-2331 609-2383 1296-7583 -4379--9915 -9745--7029 2157-6725 2914--1485 6819--9202 2973--5391 -4107-2784 3701--6909 5361--8441 -5529--1536 5569--1113 -1467--2164 -4986-6681 5817-8883 -5739-8335 9741-2026 -9800-9747 9404-5963 -4151-3047 4194--2597 -7270--7142 7689--8860 -6284-9669 3241--8912 -7103-7716 3299--6637 -1185-2531 4958-7300 669--9949 884--9941 9346--3151 -2648-2650 2177--9111 -9364--5938 5836-5731 -3387--8895 -3746-7782 -3637-7304 1400--6079 7275-9120 -6337-3546 -2629-2580 7654-6563 -5751-6328 3914-1000--4643 -3808--8788 6987--9480 -6877-8905 -3140--4121 4459-7222 1185--7928 -7181-9958 -740-2926 -1722-66 27-8551 -9602--2413 7703-506 3349-7923 -7966--1462 -2042--2993 8806-4028 1674-3600 1357--9549 -8580-8430 -1918--1401 -5094-1677 -3224--9270 -8388-3577 6015--1966 5336--5966 5132--1768 3020--9746 -3087-3608 8149-569 -9293-5613 -7355--6233 -6009--5798 -1031--4854 -9966-1309 -2802--2367 -5991--8386 3097-4934 -9207--4713 -525--143 8509--4716 -9676-2925 978-6887 1199--8753 4243-5122 -1979-9389 974--7324 -1910--4664 1246--8643 9837-7280 3542--1970 4858-3775 7057-6360 5035-4267 -4680-4648 6086--5329 515--1134 -8704--8650 -861--70 6826--727 3731-7207 -3474-6957 -1347--5321 3359--8664 -8669--4517 -9816-2748 4565--2735 -5594-513 -5646--2785 1791--3764 -3710--9727 7807-1915 6020--5889 148--9514 -1459--2074 -2778--2616 -700-2848 7652-1152 639--1401 -4946-5362 4198-7653 4124-966 -6012-146 -8042--8591 6614--2527 5785--5786 3275-7846 2022-1866 -8051--5879 -1217-1745 -3541--3855 4218-7713 785-9022 -2424-5689 -9374-4807 -2408--6351 3344--5853 -1047-3207 8690-8047 1859--2918 -270-2028 1945-9172 4009-780 -5384--3851 -3233--3965 3824--6913 2748--1175 -9127--297 -8110-155 7041--8598 3810--6284 963-1216 -3458-7617 3962--7720 4399-363 -3397-6491 -1720--126 -1573--5539 -1082--3856 4747-7518 7054--1177 8470--6301 9045--5399 3606--1661 7340-3968 3237-6775 -2479--7925 6535--6859 2429--9178 5637--3984 1699--4544 -2626-9709 -7765--1901 8440--8489 -7289--9563 7518--2747 8977--2432 -3353--933 -8222--7931 -9959--9177 -2912--8195 -4119--7016 -9835--7246 6259--4137 -4529-8340 -3986--4735 3962-702 7737-9794 9304--8847 -6449-8747 -5453-3118 -5020-8863 -3053--7300 5123--409 7897--1709 -1973--472 -665-2767 8488--4807 -6239-313 -9--8364 7869--6103 6907--1415 -7243-1734 -8837--3877 7851--4015 3456-5984 -7851--164 -1496-653 3807-6694 288-5018 436-419 -4363-3880 -5906--1884 3225-9849 4095-9057 -9569--8628 -9950-222 -7858-3492 -8428--1700 -9052--2942 7117--7612 7626--6256 8551-1495 4777-9596 -4734--496 9063--3996 -2484--772 -7786--184 8052--201 -5139--9455 -2020--8010 -4934--760 -8112-786 -1263--7685 -6559--2004 8608-5938 -7210-2992 2651-1609 3468-3325 9412-7336 -8407--4001 -7589--8259 -2543-1059 6541-3759 3732-6700 9946-6290 9126--3029 9368--4124 -5879--2389 1561--218 7430--2614 1848-2317 -3083--7858 -8583-2795 2656-9036 4467-2250 3235--4948 -3564-6118 1462-4894 6676-6208 6322--7687 6999-9233 -9066-2491 -1650--7056 -6980-8094 -1207--5091 -5989--7597 8249--2795 5053-6078 783-7673 1231--886 5068-1651 -8254-840 4279-6613 -946--8701 9459-4315 7851-7293 9114-6645 -7065-4076 8621--5182 1939-8958 8517-2440 -3581--5013 4466-154 -7125--2133 6124-4794 8131--3953 9929-9956 224-7761 8279--3800 -6082-1186 6250-7602 -5449-6239 2724--9823 4031--9348 -6787--3451 9893-3256 7581--3296 1455-8391 -9977-3748 5503-1457 -5282-8829 -264-6965 -9542-1078 2389--8143 1153-331 2805-3167 9148--3705 3783-4715 -1210-3733 -4536--8703 9616--3121 2837-3991 6549-4549 5075--3395 -6538-5577 -3214--6791 -7747-4855 -6718-295 -6053-9708 -7342--6614 -3342-9480 9204--4030 -5430-6949 -3482-9722 7688--4836 9206-9643 -9079-6185 5963--9308 -829-1775 -8659-8958 8143--2346 -5634-39 9104--482 -8946-3438 -8455--7381 -8719-1714 -4144--2962 -8726--7298 970-9548 3077--421 5399-5818 6059-8103 -9183-2797 -613--7276 -2824--9160 3757--2219 -7025-3616 9502-62 5933--901 8897-3339 3962-4602 9713--8547 4524-248 3404-6360 5214-519 78--7373 -5257-7701 163-2584 -1567--4562 -3071--1222 2781--1099 -3601-6978 9115--1107 8579--4262 -6087--8331 1442-4065 7096--8326 -5171-2940 -415--6895 4405--3396 3087-9590 2625-1646 -7602-8044 -2903--6627 -1939--6643 -9159-266 1878-6422 -4866--2114 9391-8007 8483--4028 4154-990 -997-9307 -1203-3344 2627--3863 8847-5723 -7940-403 5260--572 1341--9513 4174-1707 -2444-1492 -1781--3636 -5863-4633 571-1327 -8332-2363 421--8353 -3824-229 7440-5915 3036-2128 3462-7130 -3395--9207 -5024-3729 -1949--2578 2725-5942 4853--8050 1315--8266 9808-3472 -5988-6532 9437--8643 8791--9901 926-1945 -6544--3102 -305--3604 7893--3976 -1672-5087 6812-5595 -5589-4989 -2047-1299 7012-1241 2813-7313 -5185--6453 -7479-2736 7016-4143 -7370-7681 -60--1559 9770-9614 -2298-9437 -2516-6742 6358--8468 -1371--3430 1774-7305 6405--3097 -6932--3680 6437--4911 5255-3368 -462-1440 -8695--2986 1293--9602 6581--1276 2533--6329 -1158--4020 -9844--5335 -314--1990 -519--4965 2664-9879 8941-3859 -217-4925 -1875-8430 -4904--4021 -9737-5084 -5619-4275 7292--1695 -4465-1578 6223--4699 8900--7452 -9730--8931 7608--4524 -3294--4671 -5264--4745 -8444--9842 762-7478 6733--3852 7691-2685 1841--6693 -1633-3157 -9792--9479 -9735-1533 9287-1156 9745-3207 -7814-2466 -4260--5210 1619--7855 -3317--9175 -3247--4079 -514--7498 -2066--7926 9822-9800 9683--5940 8631--7070 -3305--8344 4298--3513 5617--7387 -303-4075 2980-3290 1176--2355 -7924--9449 1575--3818 -4804--6241 -8956--3128 -6760-7445 7186--1439 7363--2675 8915-3587 1312-8504 6526-8815 9456-2188 4700--3164 1419-7715 -5305-6544 6190-4904 -5308--9006 6652--5981 -4423-8559 -2599--6313 -987-270 -6488-3091 3617-2317 4018--1144 -4421-2023 536-90 -1643--4834 8560-8040 -7463--7586 3927--6023 -7136-4801 -7111--3146 -8873-7018 -1748-5466 741--5078 4135--9424 6024--5260 -4792--409 1961-8928 -4824--8333 -811--9494 -5202-8854 9579--1355 8835-2777 5693--162 -4662--9782 3283--4640 -6674-1395 -3225--9321 -7683--2208 2153--8047 1003-2699 102--8562 2974--5969 -6343-3242 4394-3851 -823--9918 4721-7062 3304--1756 3009--3631 -5906--5364 4628--1458 -528-7590 -785--6559 8963-4915 8551--5916 -8950--6068 2778--4571 -1370-7532 -3637--4448 3411-2102 -9513-6651 3233-1841 -9589--5413 -9250-7174 2121--9307 -7130-1097 2353-906 -7149--7442 -2846-6206 6372--9582 -3553-8024 -9441--3856 -1990-3227 8079-5671 -1035--5991 -2477--4567 5159--9952 -1277-8046 6008-2364 7854--5180 5140--3611 4711--5198 -4973-6477 6109--3771 -5658--1836 448--5765 6705-4221 6261--4269 -8514--7003 8718--8618 6016--2732 -2826-3320 -9923--5432 -8443--642 -5729--623 1344--8384 -2424-548 -6677--7368 -8810-7332 -5925--8568 -7139--5326 -2642--9539 -5474-4369 -9039--1344 6761--5695 -2347--2693 9042-9751 -2909-5933 -1071--7848 3590--6027 3464-1092 -5609-1634 3958--3740 2316--2983 2773--7220 -1961--946 1100--9044 1814--8387 -474--2608 -3107-1047 -7482--9923 -8104-9548 -5117--9084 -5377-5462 2279--8536 -9444-6406 2709-9406 -1788-6711 -592-6531 -6165-1595 8067--4702 9593--1280 -7189--618 5135-7345 -2279--8776 4276--3871 -1667-3788 9521--1306 -2535--5393 -3290--5088 3769--2081 -4111-1002 3541-6564 9016-714 6153-6315 -2555--5278 -131-7906 -5881--4019 -2573--3874 -8508-2492 7325--7762 382-8951 1986--4951 4981-6434 -3205-7720 5572-4153 5813-1737 -1758-5981 9407-507 1486-2910 1899-1393 8298-715 -9634--3020 -4965-818 -7340--8102 -7222--1155 -2633--2722 8310-2106 6897-2270 3993--5868 -2045-291 -4500--3422 7766--5518 270--1070 6791-4267 -7765-8087 -9360-141 5137--1285 6833-6792 1225-5184 -2027-890 4251--2908 1056-754 7209-577 6721-5866 -6133--6969 5659-45 -4912-3621 -4866-7415 -1970--4493 1003--9479 4234--9108 1194-5586 -156-8244 -6924--5415 -6980-1617 1177-2283 5879--7595 -5523--9646 7416--3800 3976--8954 5635-1472 1426--2060 2798-4472 -3905-436 -2503-3522 -6494-3987 -4531--2979 -8921-3040 3949--4663 -8056--333 6623-3218 -6395--5411 -1127-5859 -3848-4796 2213--7708 -2125-9018 793--8442 2307--8563 -2078--6566 1900--4863 -477--8730 6949-3059 4887-7855 841--6331 266--3423 -6219-1772 6427-8965 -9729-6352 7604--2750 7100--4692 -8019-4111 7784--8057 5580-5513 -6011-2065 -5793-6468 7748-86 -3022--601 -6457--7596 1961-4933 -2865--5276 -182-8885 -6365--321 7483-1455 -2548-5843 857--7358 -8058-4302 7653-2438 7633--75 9200--2255 5215--5381 3135-6833 9699--8717 -9672-4569 -6334--9865 -3822-7 8802-4570 9824-198 2672-5961 -2418-9606 -2495--6752 8017-6001 6776-4750 -8088--5120 7639-3900 8585--1371 7379--5741 -7618-3099 -7801-4586 -3603--6225 718--6627 -2852--6313 -5160--9777 1885--4325 -8086--168 6782--5546 -9242--3468 -5398--3108 -2996-6516 -9585--9151 -5076--38 6243--6053 -7679-1583 9722-6621 -8959--1602 2796-3767 -1146-5668 -2043--5369 -1780--1995 -6018-6381 2734--2030 -7342--5623 8065--2771 3630--2032 4082-4683 -7002-6076 -3632--4910 7752--9083 531-1380 -2056--6752 7162-3660 -6603-2408 8276--9441 -5925-5174 -4510--8791 8545-916 2944--7329 619-9549 -6821--2626 -5763-8271 9067-142 -6461-1653 -9488--1923 -2975--9808 1035-6550 -6042--2203 7190-2082 342--8064 6384--158 5074--3951 7784--6110 -6716--4039 5043-9994 -7496-2027 -4325-6631 9088-4490 -5916--8758 7869-4790 4073--2936 -673-5865 9657-9763 5019-466 -8544-5502 6066--7434 1125-4266 -1934--2933 -4265-231 -5635-1819 8003-6122 -7161--7282 -5572-4973 -5215-7288 8312-6330 8193--7356 -6146-6936 1069--4149 -2229--9562 -1198-3674 447-2492 9117-2536 6515--8176 4529-6327 3767-3955 9162-4191 9102--4964 9798-8441 8046-6930 -6594--3300 -4639--6989 686--5813 3748--4088 -2336--5290 -9008--6112 6853--116 8438-5608 -3445-3672 6678-3465 5508-991 6622--1474 3344--4591 7428-5471 8517-874 -141-4209 -6401--9028 800--6781 5269--4014 3179-4029 7770--4830 5072--3116 6235--4948 -846-2281 7186-3886 2641-4510 -3128--1190 -214-6799 9296-5711 8616-6179 8450-4164 541--8506 911--3111 4133--6692 1511-374 -1578-6048 6946-9992 8212-6675 -6437-4920 6664--9406 3654--4715 -1442-2759 -3729-6653 -3485-4952 2862-2115 602--3438 -5626--8568 4070-4989 7796--1837 -4406--3311 6522-9737 -1700-3408 -4483--7563 -5069--2368 1135-4959 696-5489 2085--3027 8095-3310 -9596--8704 372-6204 2129--3946 8003--7391 4912--2459 8518-9887 -1942--2430 7498--6105 -9193-8367 9067--8098 -5124-4742 -1989--2645 2706--5152 1088-5013 8330-1160 562--8727 -4518--3106 -7668--8856 -8418--4554 -5249-3604 9934--7683 -7428-1145 -9540-5156 -9664-689 3814--3871 7387--9797 1325--114 4206-461 1386-8870 1193--6939 7849--8222 -2176-2136 -8688-3048 -9445-5836 -1145-7319 -3012--2828 -9697--7285 -957--150 -5153-2248 -3608-1850 -761--7160 9285-8185 5796--9130 1555-8284 7852-7554 -6898--5917 4776-6652 -3391-4464 4856-4031 -3207-9942 -2468--8027 8979-3478 5406-814 -2040--8456 2416--2809 4044-9757 6523--9707 -3756-7216 -1280-1384 4160--5593 2809--4120 8502--614 -6354-487 -3735-8193 9969--7809 4436--2585 -4813-5832 -6042--9845 1740-3708 2406-7348 3089--2176 267--6223 -8440-3639 4975--5816 9344-533 5521--8531 3470-3489 5425--2427 7623-2047 -7006--1504 3134-5921 -480-4829 6957-2806 209--4727 5441--4384 4399-8091 -6696--9842 -2518-5835 2544-1315 -3561--2333 3939-8391 1037--6527 -2598--6251 -1211--2061 2732-8245 3130--8957 3406--7120 757--2698 6786--2776 -5058--912 988--8649 -9295--4141 -2778--9410 448--5948 1885--8097 7614--5573 6304-4260 2240-5476 6644--4365 9913--7068 -6870--9960 -6921-6179 9222-7174 -1422--5890 8252--3990 -6763-6045 -7808--9157 -8187-3989 1109-1513 -2549--3067 1512-4151 904-7382 4678--7703 5859-786 6965--687 1662--8771 9285-46 3873-1731 -6027--413 6188-6144 1904-1000--3710 510--5053 -8052-9266 -8715-6705 6164--1091 9997-6217 7596-5306 1351--7109 -3812-2777 6060--5347 1641-5513 3642-332 4300-8730 3931-3324 -250--3250 5614--6865 -7434-86 1559-1701 6317--4389 8077--429 -3202--2814 -6888-4240 2391-8118 -2558--427 4244--1709 -4032-9546 421--9959 -7492--5475 1489-5814 2162--6568 -6042-5580 6961--9484 -8633-115 -1152--9166 -547-7649 -6019--9968 -9463--788 6126--2793 -8434--1334 -5416-8272 5718-164 9436-7847 9148-125 -8671-1404 -17--8177 6968--845 7025--803 2767--6782 -5763--8486 841--6385 -5653-5309 8766--874 6384--6571 -1546--6460 -3772-7998 -4314--5032 7408-3128 -9642--3813 8712--4602 480--7629 7141--6611 9806--2035 3068--1292 -1746-2390 -508--3450 -1324-1673 804--6435 -1008-7432 -7531-7341 9158--3452 -787--8746 -4624--8417 -8948--7952 3866-56 7942--6818 4335--6740 1801-7403 -9633--3223 -412--1295 4097--6558 -9434--9102 -8546--2366 -5950--3279 -1105--8514 617--3106 9907--5869 1631--7198 5943-6849 9510-7393 -1795-2571 3537-6929 7532--3721 -9344--9525 -5262-16 -976-9720 1165--1000 3779--7274 4248--8913 1521--3152 8356--913 2077-866 -192-2214 -1525--2031 4481-4019 8626-1593 1096-3746 -4985-6169 -4025-4909 -3355--9568 2124-9611 9291-9674 -5190-3234 -7861--6792 9608--7846 -4460--5482 -9696-5337 2354--6063 -1627-3869 -1359--8241 5243-8776 -7183-9216 1573--8518 3444--9698 -5112--880 5799-822 -920--3140 6176-7113 -2050--6305 -3840-3711 1883-4734 -4104--4845 9955-1675 7717-8403 -2941-9062 -5436--2202 8082--9340 -1008--1320 -44--2389 1179--5766 -710-5745 -643-2424 -6753--7711 1391--8866 8005-7804 7032-1319 -6013--3661 9271-7364 3575--8108 -9399--5275 -5354-1909 -7877--9152 -1474-9651 -1231--1548 -1677-401 -5681-9680 -5423--1988 4744-9651 3169-7614 2130--4640 1203--6255 -2651-8858 -8083-5805 -3652-7358 750--6156 5697--6916 -8700--8260 7249-7944 5448-9937 7467-6911 -1722-2456 7492--7763 4248--5775 3146-370 3755--8199 -6124--2591 4487--6936 -6042--6766 -7289--5441 2969-9871 -6980-3045 -9245--4939 1374-9124 -4295-6150 9709-3728 7158--4341 1085-1366 -8575-3820 9136--9811 7218-1482 -7292--2157 214-8551 8799-0 -1421-2767 -4244--1263 -2176--9366 -8585--8689 -9164--6624 -8265-8615 -6940-3040 4323-5324 5587--6732 -9317--6747 941-6705 -9528--4858 2203--7594 -7524-6056 -4443-2088 413-6237 -9505-8559 -3005--4980 -1833-2734 -7217-7872 -2029-460 6151--3224 -9238--4089 968--2579 -4466--4332 3003-3754 1247--118 4380-8287 5737--9305 -5562--8981 5633-3106 -5868-4479 1342--347 -1511--4086 -1207--3824 3771-3786 -728-287 -3148--8584 6389-103 -3116-7481 -1036--1299 7279--9393 -2416--6992 -9340--2118 -2276--7122 986-659 -2451--4673 -5868--5821 -4776--6920 3564-8019 -4142--5830 -5286--8155 -8369-9355 3162-9609 -4012--7380 6043-89 2871--9643 6882--3681 -543-1310 -3179--8551 -353-1664 -2396--1353 -8199-6245 -9222-8261 5323--6804 -6575-3486 9537-6084 -9385--3040 5711--1893 -4858--9704 9755--9606 -5759-662 -5367-643 -2030--6174 9181-7790 4964--8796 -9304--7443 -6139--2266 3620--6293 475-7864 6554-645 -2988-9317 2582--1166 -196--9935 429--2041 2014--3628 7009--6896 7494--6605 -9220-1683 8832--2739 -6508--5951 3456-216 8363--8122 -2982--7938 1601--800 9881-9561 1443--9076 6805--9419 -7448-3306 -7240--2996 -5263-2249 -8251-1262 -2707-3125 -232--775 5112-4507 -8836-8328 1379--6592 -2856-9131 -3058--9319 -6353--7247 7569--2024 -7222--3005 2710--3076 3082--947 2375--7360 -2018-7511 7274-6377 -6789--2065 -2135-3047 -3629-6864 7385-1503 -4686--874 8595-2457 -4755--8785 2992-3938 6369-428 5362--4936 4547--1055 2105-4939 -1997--9096 1457--7692 1173-7285 239-8301 2871--1597 -8937-4769 -5967--6355 9397--2160 -9833-3453 -1617--6526 -6935--549 -296-1626 -7883-8148 -4066-5326 4969-2653 2745-5348 -4166-7630 -2056-3182 7311--9909 -4446-784 -9381-9264 8792-4327 -7677-2490 570--8086 -7981--7556 8079-1293 7062-1678 3614-8397 -3462-9878 7475-5868 4495-8245 -7313-319 1203--3986 4854--961 -3549-1322 -2563-8871 7336-9979 -2294-3059 3268--6778 -4690--5109 -648-4422 -5541-7078 -5500--1773 650--8659 2306--7452 2632--3376 -5169--5287 -2208-3002 8423--4218 -6375-7697 988--2011 5100-4290 -2506-8882 -988-2500 -9642-6170 -5142-8659 -1269-497 9261--8882 -3378--5595 -8896--2090 8198-3668 824-8369 4396-7800 6935--8719 -147-2710 -9252--7768 1434--2634 8277-1933 7890-2277 6111--549 2827--5221 -3683--3774 -9605--1743 2358--4131 -4752-6438 3389--8018 -6968-990 64-8708 -7179-599 6964--328 7789-8436 -6450-5418 -9196--6081 6304-6579 232--1096 -8123-863 -4512-5969 6452--7085 -3854-5337 -8689-1315 -1797-399 -8201--8642 6054--6699 6530-3829 -8041--3127 -8286-187 -3917--6424 3027--4548 2911--207 7849--8998 2005--5917 6672-5280 -4765--295 6278--9477 6963-5274 -6825--1837 33-1228 -4211-4412 -7408-1603 4123-4752 -3754--7699 -1655--2788 1193-8459 -5762--6651 8573--956 8239--5203 -4967-1985 2330--8390 -4178-7897 -9298--5987 -1739--2280 -3778-7508 -260-8256 8586-1839 7874--4452 -9409-5770 2613--9236 8510-1026 -5070--3405 6184--7001 -4502--6618 -6790-3412 -2616--1687 -2547-9779 -9606-1974 5821-3696 -7888-27 -4092-8512 -9663-4373 -236--3978 3322--5440 -5748--3440 -1323-9556 -9491--4948 4549-9100 6868--9885 4958-5373 8633-6071 7210-7990 -8961-7513 -2141--7401 1200-1106 4577--8290 -4028--6821 2509-3744 -3170-5931 2778-9521 -4325--228 -7864--746 2289-4965 7301--9477 2037-5786 -207--4167 4302-1935 8734-8843 -3445-7690 -628-9438 8938-9618 -2974-995 -7903-479 6046-7748 8435-9687 -393-3412 -8384--6198 4641-5436 5199--551 -280--3593 -723-313 7086-5065 3961--187 -1634-4460 -7571-2631 -4519-567 9349-9952 868-7257 -4953-6869 -2552--621 -60-1857 -7359--1250 -7506-1460 4638-9206 4793-5479 4220-7383 5715-431 -5572-1046 7969-6600 -1183-9801 -2449-4657 -2795-4985 7849-1996 -7655--40 -9218-922 -4862--8859 3379--8316 -2583--2405 -2278-3975 -7283--4677 -9634--1981 -9191--3758 -5889--472 -3958-525 3864--4019 6968--9473 -4665-8320 5550-4888 -2999-3187 -3004--2362 7453-6513 3311--1727 -825--9223 -6037-5021 -3587--907 -9189-9568 7107--932 -9067--7896 6922--2080 2161-9398 -3633-1876 677-2747 -1885--1177 -5398--8343 3993--6957 2130--6093 8617-3390 -8161-3986 1495-3477 -2606--2862 -9507--8441 -8357--6761 2907--6630 2543--4715 -2464-5126 8059-2484 -9848-1642 -4598-3232 557-3579 -7101--9197 1791-3771 2218-5352 663--5877 -1698--5530 -6152--1330 -1728--6115 4350--205 -4550--3767 9360-3897 7340--932 -9550-7412 472--4800 2938--2544 2947-3991 5860--4461 -2249--4444 -222-8802 -7354--8314 7094-4412 4083--6003 -4933-2787 -1534--3239 8701-3058 -8451--7646 -307-7889 -1560--1026 5471--7080 8899-6887 5403--1278 2526--2623 9168--6814 -8368-560 2939-4153 -989-4639 -6730-6507 4067-8654 -8613--8871 600--601 -1191--8328 6658-7184 2745-9876 5--4912 -6317--9882 -3914--1158 -3598--2494 6991--1188 6089--7180 4146--6009 9265-8522 -6535--9226 -6346-1300 -4830-7106 4449-8553 1273-9821 551-2233 -9176-6538 5265--7016 5805-6014 -450--898 6639-8606 651--1858 -6292--1648 -6829-3518 1620-9744 556--9950 -101-3065 -4316--6316 5807--4483 8222--2308 -8933--3940 -9210-7721 3041--2745 -5824-5771 7648-6229 9522-891 -1523-5428 -744--9062 -3199-7640 -1841-604 1509-5141 -5659--4264 -1752-5347 2724-6723 -1114--7295 -5642--5040 3244--5582 -2929-472 -1189--1439 379-4172 8017--3647 3989--1557 3194-5162 -4976--8132 8679--8889 -223--1268 -7476-5088 8336--6729 8462--4716 905--7546 1155--1400 -2416-8338 -2511-5649 6154--2248 7067--2481 8661-9489 2258--8734 9127-2706 -7734-4558 -721-4601 -3388--2593 5029-5291 -8726-36 -3502-3766 3478--843 -8976-9901 4934--9152 -4029--7924 8597-5767 -6444-7672 -7899-6569 -5270-4539 4381--3301 -798-4454 3109-2595 2156-1331 2830--9870 5472-6897 7126--178 3694--8818 -6196-7294 -309-4091 -3940--2052 2911-8358 1752-6899 -455-7800 -737--8616 -6579--3336 515--3604 611-1324 1981--4255 -3192--5928 1352--7203 3130--696 -3039-4753 -2844-6267 1537--3604 -6885--1391 -348--5775 2843--3284 1121--7993 -3309-2857 8513-1470 -3-3293 -4884--2017 -650--4183 6201--5331 -3521-7141 448--7371 9904--9545 4001-3780 -719-6736 -8636-896 6935--7592 2695-3770 4285--7165 812-1063 -4675-9964 9680--9481 -7555-5032 6822-8184 1799-2009 9005-1845 -7402-421 4417-5579 3426-8331 7682-5091 -8544--4134 -1716--3317 -929--9274 -5371--9024 7701-254 -8839-486 -7697-668 2076--8969 2712-6227 4433--9530 -8030--4242 9606-3155 7459-4883 8301--5244 -9358-5316 2748--1273 -4407--2168 9330--2935 -2593-5818 3473--3750 -3686-3180 -9580-9895 6472-854 6441--5116 4488-5344 -2840--4153 715--2084 299--2188 4363--5104 3947--4487 6508--5544 1866-6369 8855-3232 7564--3718 9779-3918 -3123-2112 3240--3771 -6034-4919 4929-9023 -9116-7101 9230--6454 9493--3554 -4445--8435 316-5918 7961-3476 8293--3055 -7377-1969 1095--6832 -7754-6486 -9329--3743 5824--1388 -9966--9282 -4909-6471 5519-3994 -9355--9813 -2277-6361 3070--9893 -5872-8958 -4134--6331 -6347-1199 1120--10000 7825--4684 -4178-8348 8961-1796 3214-5443 -5533--7802 456-9253 5663--3838 5024-5677 -7123-5826 2369-7952 8427-6130 -1201-85 -8546--6611 -432--7113 4376--8121 -7288--5243 -9790--7271 -1066--5574 3639--2153 -3492--4983 5457-5739 8139-6633 1998--9395 -9206--5066 5638-3596 -3260--4339 17--2356 1-8227 8560-2309 -3357-1315 7399-979 4536--9587 -8817-7855 4597-1958 -7503-3940 9079-9999 6015--6161 -4723--8645 -401-1478 3017--1044 2244-1692 -3619--9211 5969--2811 878-1338 1010--9494 -3121-608 -6112-2535 3651-9077 -3222--7705 -4060--2835 8867-9465 -7677-6355 8574--9703 7834--6571 -6299--8597 7697--2001 -9466--4548 -5311--8016 652--4901 7308--3204 1443-9550 -6924--6258 6042-1456 -7591--3860 -820--8549 -6538--3739 -6447--1063 7584-6924 130-9374 -1465--8299 413--1906 -9035-1577 141--5363 -8639--4872 -1299-9395 5948--5988 -5196--6606 6324--3163 -4712--8033 -673-269 -4629-701 -3799--7912 -3004--2484 -5124--5242 -1690--3325 -6065--9706 314--8877 -6955-7494 5346-6830 -8290--5467 8725-9222 -9678--5725 -6357--6167 8865--5091 8449--2653 -2131-8509 -6007--4591 -4539-347 -4228-6196 -4491--7616 -4331-2807 -8410-8229 2220--1462 -269-1198 -5035-9198 -2452-5014 -704--1654 3595--5653 -5076-5787 -672-4978 2914--7740 -8059-5633 -5631-9420 5280--9728 -3393-1166 -2026--7440 -9235--4324 -7331-4058 1604-2900 -8675-8212 6271-6407 4899-7288 9895-8579 -1081--4521 1692--4781 -7388--9703 -2373-7025 1190--1239 -7187-843 6988--5966 -5114--8434 -3476-903 -218--7974 -2633-6084 -9583--858 5047-5766 7440--5459 4625--7009 1503--6298 -6662--4172 8330-8290 -8486-2501 1869--6705 -614-9812 7732-5748 477-95 -2672-7285 8203--6778 1476-5721 -8567--2230 -8687--6205 8005-7936 -6441-2221 -423--6586 2336--6394 -2188-3991 1528--5039 6705-7074 -8656--6923 567-4421 -7412--4958 -8678-9593 -8181--4488 -5300-789 -9070--2741 1552--9468 -9088-5513 5597--9302 2094-4894 2969-1933 3943-5778 248--4011 2311-4687 -6687-7640 -9164-3537 6211-8242 -6061-7139 1234--2577 -58--4662 1625--5565 9947--9183 -3631-8172 -9485--8281 -1579-9983 -3430--9105 5679--9636 -6361--936 -6481--4849 2494-22 8524-9216 -8979--4286 -4749-4469 -5752-9841 -1633-7377 -3569--6501 2906-1000--8968 -286--5948 3582--8856 6907-6387 -9709-3685 -5011-3401 -6775-7540 787-2033 3568--9942 1590--4686 -9861-952 -9392-8780 9580--1519 -6592--5717 -4900--1129 -8458--8795 -8033--4084 -1268--6565 -5682--9043 -1309-1031 -2392-5887 7664--6611 2728-4566 -3304--2984 -3706-6501 -358-1036 -1321-4280 924-7075 -7469--486 -7789-5335 -7073--4409 3685--8201 2977--9982 -4440--1992 -820--5933 1026--6333 1300--183 -3697-977 -7815--1896 8845-7032 1788-4637 -1234--9488 1874-2150 9165--853 9041-6413 1687-6775 1607-4257 -8436-1818 4339--7445 -8568-123 -1700-8240 7288--1533 981--9059 9716--5165 -6488-7692 -4173-5473 -8836--7570 -466-7573 4033-3866 -2492-8962 4235--7709 5744--2472 -7732--2324 8039-3224 -1655--3926 -5469-8225 7736-2480 6346-6138 -2508--7090 669--8 8038-6634 -5513--1537 -392-836 -4557-6654 -5917--7940 5128-3480 -8013--6950 -6227--8230 -1442-8418 6925-7222 -7359--366 3347--8926 7822--415 -2257-3676 -9607--7606 2411-8718 7756--705 -8699--5959 -4785--5385 -1702--8437 -8745-9571 7446-9279 -5492--7044 1328--295 6034--5369 -6434-256 2158-8065 -4062-3830 -3301--3980 -5110--9593 -5381-2785 6310--5595 8751-9085 478--2248 1906--990 1776--4439 -841--3414 -1399-9508 3562--3630 -5276--3463 -6648-1194 2190--6653 -483--3709 -2902--9445 -1524--3170 6086--7684 2798-4985 -107-9195 7827-3099 -7749--945 -4142--6059 -4882--772 -6176--3390 2830-3615 -4757-3911 -6750-3848 9864-8 4419-7409 1704--2749 -2675-8075 -6741--6576 -7237--7993 -3188-7956 -8703-7825 -4735--6529 9724-5601 -9558--1528 -4087-9519 8890-5386 9123-3980 -9360--5711 -1988--8836 -2670-9268 -5622--5096 -912--9884 3034-3757 -2449--2862 -9400-2235 9404--9165 2565--7902 -7951-7162 9105-5617 -687-1142 1249-2688 -4195--8543 9717--8685 9095--113 -117--2232 -4116-4991 5065--3438 4937--9746 -9929--4766 2391--5047 3873--4473 9032-3222 -4934-5964 8236--388 -1325--8993 -9966-5909 -3203--2633 -5946-8416 4008--1175 -4007-8091 344-4894 -2004--9473 144-1856 -7630--4919 2096--812 1907-3538 7541--5951 -8997--7798 -9061-9174 -4497--1178 -3538--4253 -7035--2422 9841-2388 -3452--8429 3486-411 8148--5159 9722-5211 -3068-4587 -9154--1672 -5667--4512 -4473--1341 6666-4746 2137-5159 -7361-3108 5848-4771 -8645-766 -1425-5745 2328--6774 7146-6919 -6765--5277 -9830-4798 3185--1353 -750-3732 -6956--4017 6059-7407 2587--7657 5122--9071 -7072-3274 -6231--2093 -5699-4919 -6910-511 9899--6363 -8331-6467 -3193-2207 -4034-1897 3440-1802 2297--3357 7742-2185 3872-5981 -1638--504 -6190--693 82-5298 6086-8364 4351-5204 -5700-9882 -1153-1540 -1394-4148 5811--187 2902--9047 5243-1891 7241-4611 -60-9382 4137--9603 -1093--5223 -9475-7853 -2871--7544 -9375-6677 6682-409 5723--1246 9959--1036 3749--5497 6623--5188 9997-634 -2901--8257 -8900-9501 9899--1618 -9869--9351 9625--6364 8071--1452 7468-7425 -6800-4962 3964-4233 2104-9698 13--5525 8578--7281 -7765--1208 -8065-2143 9892-7769 3629--8745 7238--4464 7336--862 699-6167 3780-654 8051-9836 7323--3971 4361-6880 5855-7459 6096--351 -1856-4291 3966-1205 3544--9858 1621-7431 6352-7268 1668-5147 -5215--9059 -1398-7145 -8447-6142 -9177-7570 -1539-8774 6655-382 8754--8700 -2220-5014 -8470-6329 8381-2509 4790--5400 -8710-1433 -6256-5138 6054-2613 -9647-7128 7434--4689 -529-6039 -9418--6372 4014--7939 2527-3858 -6278-6095 -7358-3742 6839-3635 -5245--7081 -9877-6842 -7237--1349 -2622--2293 6370--4900 1906--9687 4088--7820 -8323-8832 1170--5013 7488-1299 -2629--2449 5862--8932 -2531-3355 2640-6527 3876--6321 -2982--2825 -1256-3659 -4509--9031 -6472--6595 -3475--519 -3347--232 9140--9839 -2806--5093 4752-4321 -6540--7149 4933--7873 -4094--5206 -3486-6337 -8156-9538 5345--2141 -112--2807 -4524--720 -8561--9030 -9063--3939 -9133-3532 1334--4071 -7909--6453 5219-5604 8198--4224 -8920-3822 -2633--60 -9241--9896 -9193-6498 3105--2542 3766-4561 -1941--9426 6719--7822 -4148-7585 -4154-6512 -1875--1095 1716-7061 -6706--4644 5916--2576 771--7241 1089--18 -5048--4928 5100-1330 3749--3059 -9045--8122 -6344--6657 -9888--9029 1109-4586 3214--6442 -4208-1313 3124--705 -9475--626 -4064--6010 -2274--6478 4216-5591 -4160--13 6540--1509 7286--5788 -1153--9980 -3208--3808 -3789-4100 6599-2590 -5325-3732 -805--1945 -3625-3185 -7002-4292 4265--1873 -3497-5493 -9062--7071 1880-7035 -7978-5316 6989--1742 -1026--2827 -7139-935 8749-1169 -2988--3686 -9670-2596 -2177--4030 754--5630 8178--3236 -384--1293 -514--3804 8774--1904 6251-9983 817-7186 -4053--4257 -3930-7616 -7231--9591 5320-3821 -1985--6253 8091-3369 -9936-9747 488-7713 7993--9858 -8566-8095 8325--1040 966-7100 8079-5318 10-5388 -9748-6447 -2679-2334 3354--9147 9468--12 3898--6993 3719--7443 -2931-7442 9509-5184 4149--6666 -4401--6698 8596--1432 -9218-8939 -3382-7237 3882--5783 -5735--6676 -9648-7111 1626--9784 -9736--7952 2686--2947 -4937-9162 4687-8539 4238-7782 -8242-1241 -8192--3565 2858--4912 -2427--804 -9449--463 -7155--6044 6342-9060 -2891--1638 -2601-1784 6419-8927 7896--4725 6392-7900 6476--1368 -8838-6703 4312--189 -4313-4711 3385--8676 -6023-7669 -5744--274 -782-2820 -611-4614 -5833-9727 9800--119 8324-755 4197--9678 -3629--2621 2906-4357 9435--8717 4459-4680 2658--2188 -6433--1346 -5691-6675 9-309 3528-4537 -4439--4425 6669--7975 1236-119 7195--6386 -2562--2518 3427-8293 -4687--7480 1075-2416 3878-9628 8301-6837 9795-238 2036-8862 9069--2031 4954--7796 -4764--4835 5108-6603 5441--1694 917--6305 1309--4019 4488--7373 689-1174 -6281--2863 -3802-9264 -1719-6208 1114--6402 8688--6687 9627--9483 -379-2613 -4883--8526 6408--6778 -5575-5641 8819-5861 -5207-6558 -7547-9389 -5120--7739 7526--4743 -7738--2032 2039-7450 -1388-132 9330--6461 -8705-1599 165--4240 2354--3737 1642--3551 4556--5854 -9265-8961 -1219-7485 -4836-7265 -1377--9929 -8692--9809 5379--2119 -894--8472 -3741--6458 1408-7102 5993-3535 -5745-7693 -6819-4348 -2269--2281 295-4419 -9338-5152 3702--1423 8525-9672 6148--3179 -3052-7371 -9604--5754 -8436-2170 -1371--1597 -2160--1054 1296-7472 6947--5438 -4736-4372 9970-4578 4923--6962 -1048-5382 -5076--9585 7837--8623 5793-5454 481--61 2080-2856 -3862--7269 7691--81 -6745--3050 -362--8159 -4256--7993 -9995--8217 -279--1350 7057--2044 8934-9846 -5213--189 7923--5518 -3685-5988 8634-2961 -8945--9534 6118-7518 -3600--5608 -797--9894 -9300--8117 -1531-9836 -1307-3914 3435--5032 7478-3310 -8174--9872 9978-6155 5465-9224 -9309--9051 2999-6680 -455--3537 5909--4470 -6504--9173 2747-2100 -437--9696 -3903--2656 589-3935 4418--4520 -4021--8817 7221-5785 -9418-3816 3256-6775 9903-1868 -7552-5004 -5614-6919 -3837--6218 6622--9063 3449-1119 -2107-5682 4051-925 -8893--5727 -3477-2233 -4205--8847 -6644-6460 -4266-5559 -4139-4028 -8909--9007 -3051-1238 9792-7562 5286-3011 4288--8976 631-9143 4809-9128 -2361--4583 1163-3073 -685-598 1172--7629 -2925-1680 -5634--4108 -1374--501 -7128-4031 -5457--597 -1266-5393 -8177--4763 -2062-3247 -7742-8773 7483--4326 -2300--2892 5692-939 6796--3584 -8278--8045 5630-4884 -5197-4203 4214--4487 3625--6888 2194--7121 -2759-2144 -8971--7693 -7556-2458 5648--301 -1916-3928 3422--6372 2442--1713 8202--4010 6422--6547 -1491--8878 -5194-2681 -6234-3015 7012--8666 -1992--6370 -8775--5238 4925--5754 5652-8500 4283--5423 -2273--6885 -5568--773 -5531-3134 7134--1689 3144--5062 -4901-754 4174-5248 8026-7712 -1649-2734 -3347-8015 -9807--5185 -3873--5360 -6685-5017 5179--1184 -5384--5654 2925-9799 7139-4296 3963--3092 -7904--4191 866-7605 -7175-1199 -8908--2387 6168-230 7591-4924 -5316--4856 925-533 8578-1752 7693--8481 -1656-6911 2680-4966 6185-8766 -8084--9526 -8838-5351 -8333--5006 9784--5207 -3283--2603 945--2225 4411--5997 -1286--408 -6962--4155 1798-6699 -9379--1312 -7542-3310 -9778--9860 1699--1464 7150--4288 3961-7955 3373-6011 -3644-3499 -4798--1069 3565-579 -5379--4744 1706-4943 -5934--4597 5087--6988 -4205-7678 4009--32 -8596-4871 -3384--4911 4457-1596 -6389--3184 6917--3103 -7465-8786 -6506--9630 -7019--7995 9852--528 2035--7860 -8692-4734 6088-1150 -7669-7790 -1109--8911 4822-3566 895-2535 0--5200 -355-7175 -1296--5707 -3336-9813 -3289--5610 1091-3738 3143--1492 -1689-8727 -4430-8229 2860-8034 6503-4240 2363-2204 -3373-5187 -2284--470 3559-5186 8262--7007 7218-5147 -2414--7960 1747--8767 -4212-8760 -6002--1746 -5786--6999 8302--560 267-8227 5372-6172 -8951--5353 -2329-2807 -1510-4377 9964-3384 9938-4532 -9447-2327 1299--3118 230-9405 9931--4264 8856-3482 326-7 9204-4458 1327--2891 -3127-2806 6955--4155 -8156-5652 2487-9362 1525-5939 956-7902 4456-8282 7955--5944 1527--582 -8302--2492 8289-5858 3542--4059 -915--466 -5250-9345 -2226--3356 6152-3649 -4349-5390 697--8560 2652--1175 1268-9907 -3848-8453 4053--2819 9902--2187 -5863--9365 -7634--8079 4984--5619 -5324-5350 -1167-5469 1861-6735 -6589-3010 -1053-8124 9291--8526 -8467-6555 4047--613 -9781--8511 9834--3805 5812--2113 3263-1 4179-4396 1400-4913 -9415-2997 -4828-9918 -2193--6859 -8510-3134 8512--4147 -1747--1748 2233--1937 3828-6255 -5174--6140 -1745-7158 -6176--882 -7817-3678 5581--3569 4886--3499 3140--6331 832--4382 -8510-81 -2522--9461 -5940-8312 2743--4774 1665--6573 -9951--2541 2486--7123 -6933-4051 8986--791 7281--4014 -8293--9530 4683-4271 5107--277 -7620--3707 -9399-571 571--617 -1105--2078 -6184-2464 7302-2261 -2223--7752 3451--2509 -3080--5761 -2979-6081 7479-7402 5210-575 -8155-9868 9938--812 -7889-6839 -2491-4821 3921-1280 -9671--1650 -4260-5150 1813--4081 8269-3685 3039--9006 2485--3178 -2525-1360 2074--9830 1203--4482 -5194-3794 8405--3628 -2025-1243 -6506-8097 -1726--8846 -3183--4840 -8024-4410 -8738-6313 367-4726 -9963--3083 -8583--3959 -4212-8762 -3427-6229 -6283--9679 9679--439 -2741--2671 9467--6460 -4104--7900 7899--6142 2281-233 -5693--9105 6503-392 -9343-562 1612--650 5161--6395 9433--9712 -8342-2208 952--5568 -2045-7352 -3518--4796 9819--4186 8019--9654 7871-7255 -3587-2878 -8053--5792 5507--375 -8260-2065 2464--5413 -4240-7431 -1097--1949 -149-1345 -3632-3949 -7113--9519 -189--248 -8414--4136 8066-2592 380--6147 -6884-6791 -816-1854 3560-5640 -9363--9994 3607--773 -6808--1986 -6811--2229 -3925--3050 -3997-291 8427--9993 -307--9198 3557-1497 -6440-6341 8799--8199 3212--7972 554-6503 -8624--550 228--5744 -4497-1422 7570-2724 1388--6008 -7536--8579 -2062--9008 4104-3137 4844--8813 -3182-5153 -2555--3445 -4456-2637 -768-6858 -9055--687 4180--3521 -2705-2404 6518--5239 125--1732 -4391-1166 1888-8487 9565--6500 -9556--6505 1837--1488 -1694-6246 1532--7795 -9323--7801 -5305--8439 -5585--9558 -2920-5122 2314--1472 -14--3208 5206--4295 6--7034 -9828--1226 8164-3803 -4015-7979 -3725-1132 -6359--9147 -6698--1393 505-1620 2737-4594 1013--8043 -9501-1690 6059--8883 8810-5054 5125-6950 1411-7357 -7851-8938 6250-7949 -5996-4746 7831--4105 -8606-8499 7084--7389 -6996--4402 8182--4465 -2629-6168 6327--2565 7065-5861 -9594--3419 -4785--2009 -6862--8861 -8855--2111 1944-1865 -2068--2981 -3787--4352 128--9432 -715-1149 -8546-6001 -4245--8811 7677-5935 2735-8199 -1161-1039 5106-5390 -8020--386 5987--6248 8462--823 9306--78 5355--5645 8408--5974 -5238-1401 1478-9043 2962--2274 8474-1000--4690 2600-7662 8497-2763 -2972-8389 8551-9099 -7424--7974 9064-111 4661-223 1470-7849 4247--3551 -2957--1163 -431--9032 -9295--381 -775--8736 -4086--2123 984-6891 -7517--1997 -8098--8551 -4349-4073 8350-4453 541-9356 -6400-8323 -5975--2000 -7007--488 9027--9326 -7053--2429 1766--9500 -7851-7604 -2620--2035 -6116-8193 -764-9857 8726--3519 9516-5857 -4121-9181 193--7483 -5290-933 3353--4 202--232 3114-2100 8281-6277 -3790--3942 -9133-896 7654--6332 7934--997 5849-480 7522-3545 -3043-4042 -6712-2566 2746-672 -4770-9567 -2793-8703 305--7396 -3848-2470 -9776-2547 -2939--2650 -22-3437 6602-3479 -5719--232 -1542-6305 -4033-3108 -2905--9470 4397-9382 -4537-956 -4867--2677 -218--9172 2027-1429 394-2786 -3979--3263 -6326--1931 7469--8178 7144-7905 8107--3797 7762--7572 -7973-6546 -7627--6139 9836-3689 -1713-8949 -4263--4396 9828--9582 2948--1176 9479--2796 -9741--3650 -9526--3982 8273-9461 -9337--370 5148-8112 7630-5615 -9783--4254 -3433--8581 -9968--4987 -7712--3620 -9704-7145 -598--2238 1495--7712 2883--7919 6251--2935 3930-2458 3029--8392 -6436--1784 1770-8501 -4358-7120 5214-7847 9945-455 -5742--810 -7668--3696 8885-3278 -5899--6365 7436-6130 -9570--1990 -3360--2510 9258-1228 -8153-9648 7834--4880 -4360--9129 -3164-3893 -9720--9057 -3126-2205 -9856--5914 -9029-3668 2896-3747 5660-918 2395--601 -6640--963 5136--5409 -2143-886 6692--7726 4431--3883 5421--2917 7599-626 -3608-1302 -9589-1781 -4288-4237 -705--7684 821-8331 3272-4849 -1287-9311 8784--2898 -1092--2764 -9067-7646 9071-6411 -3196-7600 -8470--8337 611--2549 -9523-9411 416--9755 -6850-3939 4243--7851 -2339-5781 1214-5848 -1908-5297 6431-77 -1406--9214 8995-8758 -6074--3365 5456--6000 -1050--2319 2356-4537 -385--993 5861--3763 8666--2519 -6386--2804 -4168-8914 7997-1581 1083-6902 -5344-2911 8766-1113 1862--6844 965--4715 -7733-3990 -1624-9525 5616--3074 6355--2983 -9811-2757 7969--6059 3871--6905 1415--1556 -6948--3975 -346-8184 5183--9469 -1636-3657 -3672--4826 -5206--9450 5082--7919 8475--6347 6804--5847 1904-8982 5900-6007 6765-5110 -738-9315 3247--1204 6789-4865 -3118--9327 9425--1383 6816--69 6710--546 3916-5978 9726--6875 -158-119 -4872-5666 -3421-4283 6182-4548 -918-3496 -9040--4978 -5840-4191 1317--8277 -2786-2655 9080-1128 -2623--5072 6570-2041 6255--3979 5116-8436 -2062-6650 7446-3526 6277--210 -3768--8653 6924--2212 5717--3293 1963--6159 -233--766 1421-6651 -7203--3990 -3301-1943 6005-7576 -4568-1782 -1814-9531 3442--1099 4435-3353 2257--4228 -1075-5593 -315-9608 7784--4689 -2017-7337 2307--4700 -1631-3504 7787--5560 -2628--1969 -9558--9525 4066--9645 4386--870 -4693--1764 -7679-1644 -9426--9976 -7612--7152 -443--5128 -9008-3505 5352--9555 -46-905 -7354--8150 -8359-7497 -6889--2190 -1152--8732 593--4607 6628--6001 -310-2353 1897-3239 2121--8923 1335-4610 -4558-4150 -9553-9172 -3927-5199 144--9213 148--8873 25--6059 3421-5965 9953--3950 -7597--3176 -7887--5888 -8818--7795 6645-1146 6728--8138 -7570--4168 8526-7375 -6994--4681 -6331-7937 4966-9657 3319--2828 -9834--7892 7700-5303 5036--8100 -7455-4849 3876-5542 -201--2645 9467-1307 -8270-6535 4405--4683 -876--8310 -4594--787 2022-2578 -7046-8541 -8964--3498 -2883-9032 1766-5308 5564-5323 5608--2340 9923--4919 -9528--6842 -8826-8022 -3595--7910 1615--828 5828-5830 7439--7855 -82--2101 -1384--1997 -7536--5370 -5106--4567 -2088-4956 736--1693 7140--5745 -3691--1563 -463-5610 5221-2206 3624--2834 -8309--3038 4203--5853 -1352-4535 -740-7444 -441-4728 2438--3024 4947--248 -5875-2461 7955--4331 -339--287 -7455--1793 -8542--9846 4354-9638 -7439--4670 5953--9198 6369--9193 9416--6442 7593-2188 -4703-8360 2839-3917 5491--9686 -2708-3257 -7082-86 5137-8108 -3517-3832 -7396-6818 -233--8126 4638--5679 8910-5865 3732-9237 -9024-5347 -4253--2533 -5089--10000 -9129--6196 4051--9163 2794-2622 340--9674 924--428 -6182--3904 5317--4364 -2997-1332 -1027-8818 4747--967 226-3350 7444--4828 1875-9325 5728--5708 7442-4757 1887--9827 -919-9527 -8743--4047 -181-6647 -3062--3332 -9346-9143 8978-7004 5936--4335 -3950--7003 2085-3742 1620-9997 -3085-2372 -385-5594 7678--2866 2194--6810 3555--4095 661-3192 4690-14 -4783-3192 -3224--768 8770--2884 9584--8566 2831--536 1621-7546 4634--6246 -9307-1588 4994-3698 1934-9892 -2609-3970 -9732-8436 4061-4438 7006--8625 -728--9958 -4847--5769 330--4652 6832-998 -4491-2802 7853-1911 8559--9449 -1542--5479 8583--8914 7406--4228 9735-6765 6439-4224 -7682--3365 8389--8993 -4744-3819 -9019-7548 2241--5576 -5763-4840 -2383--3844 -6100--6139 468-8383 -6518-4884 3825-8713 1778-9231 6802-2832 -4480-2484 -4346--8334 -431-7334 -9278--3661 -1431--8994 -3454-2917 1107--9304 8704--4829 -7220-361 -9825-2362 3881--586 -694-994 9468-513 7274--8656 114--9439 -5300-870 7021--2005 -3837--8153 -3454--8082 -4674-2408 -1251--5032 4972--2858 -6480--3846 6720--684 6473-4931 -8653--6115 5110-177 -2398-4354 -2555-4135 3225--4062 6116--3522 -2627--8957 -9796--1860 -5289--2851 -8189--889 -1337--4308 8117--7351 9834-8443 1498-6013 2633--1287 8482--6079 3880-824 6036--1412 3265--5224 4481--5535 7460-6028 -8065-9171 3471-7502 5789--3677 -9556--8108 -1366--3760 2009--3561 -8824-5813 -5878-4114 1267--5062 7830-6306 -2938--9041 1878-4646 -8745--7581 -8120--7593 6850--3673 9689--5204 56-9090 1916--5227 4237--5762 939-1528 -5905-8742 5523--6940 -3268--3733 -4179-6813 -8098-9089 4951-634 -59-209 -4151-9317 -3556--4687 -3645--9884 4842--6055 -2392--2062 -3528--9282 -4455--2288 3423-1945 -2382-9000 -4196-4761 775-5707 -6763--7897 -1329-5926 -2209-4076 -275-8254 -1872-5077 -1264--9464 1304--6420 7232--1522 -5617-2171 -4445--742 6538-3519 9781--5767 -119--806 -1299--8195 789-9284 -9164-5476 5772-9368 -6540-9863 -4163--3751 -5036--9393 7604-2332 427-5174 -3526-789 7361-5395 -3234--8357 -5124-2031 9962-5396 -673--3622 -6584-5326 -5509--2155 6236--3769 588-2090 -9950-6155 4992--3412 2822--4035 -7375--3469 -4597--8061 4205-1415 3265-17 -7566-9774 -9349-5369 -4418--3341 -7210-6614 -391-9942 -6986-5199 4482-714 9361--2656 5576--4380 190-4973 -4544--8383 426-6229 -8585--2413 4393--5598 -718--589 -5033-1906 6004--6211 4912--9113 -3718--1359 9981-8338 -8544--8593 -8817--6018 -6420-8586 -8175-663 7411-228 7220--992 -3673-9389 -1695--7119 -4898-4893 5387--107 9657-4869 -512-8774 7592--7505 9638-6500 -4784--5292 -3000-4681 4019--1256 1038--1408 -2113--2899 837--555 325-6749 -7107--4084 -748-7878 610-3846 2537-73 -1466--3150 -1466-6089 -9491--3533 -672-9361 7886-3980 8860--9530 -9735--6494 5872-7611 -352-8898 7103--1816 2271-2281 4967-2841 3610-3981 -3497-4721 776--5394 9534-7622 6982-6224 -8502--1080 -2783--6664 -7745-9627 -5415--6061 -5199--1736 1970--8085 973-7640 -6204--2913 2648--9954 5630-338 -821--8860 -4213--6721 -7654--211 -590--6794 -2416--3687 4234--5164 3781-6542 3775-1127 3038-8980 -1668--8068 -4450--7572 1769--1508 -9678-4846 -1204--9837 -1483--4947 7352-4537 3079-7436 6761-7158 1662--4741 2223-7511 568--2529 7045-9168 -1350--2872 9057-1282 -5413-8214 8578-9230 -4851-3202 -5424-2316 981--936 7368--7564 8590--6641 23--1325 89-7044 9844--6469 -9158-7983 3227-7626 8152-4200 6383--6024 8477--9867 -582--6389 288-570 -4853--2476 8036--4561 -974-1767 9301-3916 -8338-3072 9102--8962 -2459--2073 -473--6358 7999-5484 5857-8984 863-1940 4808-4605 6471--2397 -8160--7652 -1478-9009 -3754-4212 -1876--577 8043--4581 -29--2398 1193-186 -1029-4584 8516-4727 -1809-623 -5181--5 6737--9495 -4381--3621 -4916-1364 9699-6822 -8785-6458 -2211--2589 1339-7048 -4580-2831 7179--817 -8908-329 -8255--4466 292--7678 1638--9645 -9215--802 -8357-3923 -1370--394 5565--739 6477-6643 -746-7795 3655--325 8094--8388 -6097--5487 -9997--6807 -7266-5115 -8607--2100 6951--9243 -440-4496 8284--5723 3078--6957 -1990--3516 7831--1197 -9951-4173 -6855--1164 2622--7510 -2866-6866 2607-676 -6922--8587 7067-6053 9913--7938 5530-2082 8501--39 -4908-8225 5138-9346 -6302-571 -3788--2049 5277-8532 -1216-8024 7071--3601 8292--6367 -1268-5558 965-1866 828--2198 -1255-6385 6348-2398 7114--8203 -9789--4840 9959--7247 9231-5924 2435-634 -1501-5837 832-1887 3025-4850 5018--5336 7470-8255 -5030-3651 3668-8613 6021--1262 -9171-1480 -4514--9148 -4171-1781 4130-2038 6088--5309 -5568-1988 -826--5097 1639-5276 -8027--3285 3785-3185 -2143--3425 -458-2582 1218-3625 7250--9236 4222--7190 7487--5548 -3184--8210 -5363-3803 -9664--852 -8052-6906 4867--2747 1435-7991 6711--809 1769-2165 6907--8976 -2884--2093 4920-2078 -7256-4769 -2793-9869 -7277--9706 5674-3600 2333--6469 6146-3797 -4955--6826 5637-5309 -4164-9806 -9913-4228 -9630-2406 9552--2116 -4210-4493 2804--5853 2556-7768 -5167--3884 3777--6596 8453--4565 1163--8806 1099-7968 -5824-7738 -8266--5368 6251--7680 7790--5122 -6790--932 8571-2781 7270-9731 2006--1828 6647--1945 152-1749 -9375-1853 8811--9169 -3094-4962 3619-1172 7025-7806 4937-1970 5467--6309 -8872-5950 3777--4137 -793--3776 1815-9430 3236-8744 9134-3634 -6561--7155 -4567--2909 -9343-6499 1422-6222 -2411-1419 -7346-4052 6842-5316 -8890--4966 -6953-2677 2903-8243 -521-4962 -8424-69 -6850--785 -907-5230 -9656-340 -8411--6019 -1476-4663 5026-6955 -4982--1592 -8321--9949 -577--2336 -2855--2793 -2767-2081 250--5029 255-7104 8469-6339 -9017-3078 -2201--7856 7371-2968 -1822-8811 3672--3459 -6675-424 9365-5609 -8346--3776 -3507-1014 1217--4870 -7903-5021 -3645-2104 1590--7669 -9436-6159 -5331--7529 972--5214 7384-998 -9223-4291 9986--8716 6941-3407 3568-4234 6001--2423 9394-8218 -5355-9891 -4372--3889 -657-3591 -4220--2952 -4743-7638 -4199-435 -4175--5803 6613--3351 -9774--6899 -5288--1558 8677--5806 -6959--1244 2388--1164 1322-9233 205-6309 -3998-9298 8744-4543 5454-1675 -4747--4729 6316--5178 -8800-5358 6450-3887 6565-3461 8469-5964 -7320-8343 -3564-7845 -6776-7231 3580--7968 -6406-9507 7634--3258 559--5872 5137--4172 2061-2199 -6911--8054 3319-8351 -1261-2324 6539--2049 4226-4760 -5633--2597 6309-1627 -2806--3532 -5832--6965 -1084-4857 8430--4003 -1541-1023 1304--9201 -8615--8264 -2488--2618 8042--1812 -2616-8543 -6586-5323 9458--5947 -7524--9046 434--5687 -5084--5383 6603-7874 -5163--2744 -2595-1636 6486--1717 8212-4255 9624--7568 4754-4481 1773--3610 -6873-1391 -3965--8875 -3385-154 6518-1777 -896-3818 -3294--9943 -91--1354 -2611-7152 4608-2059 -5991-5973 -2891-7542 6916--4476 9659--1577 -4428--6621 -8433--5855 50-2193 7737--9701 1527--7222 -8890--4859 -3147--4870 9297--8278 9890-8400 477--6514 -7918--1000 -8387-3165 1926--9679 -2286--156 5520-923 -8792--3210 -4803-5361 -1716-5080 3023-4558 1336-9607 -2412-5225 5941--1865 -870--5299 -5505--8744 6519-8760 -5432--4867 -3589-2303 -5828-7465 3193--47 2861--5968 -8825-4646 1075--4480 -8026-1170 4424-5576 -3891-3961 -9146-1958 9459--8734 8161--5124 540-1931 924-3295 7648--6237 9691-8090 -5678--8579 824-5933 -640-3283 2365--1321 -5795--8400 -4156-3056 -2865--4503 -4800-1142 5317-4570 -2471-3203 -1992--3277 -7221-1041 2574-856 2093-1896 -6032--5411 -4517--91 -265--6795 3084--7292 -7471--3680 6494-1000-759 8526-7683 2686--1413 426--9012 9413--2487 6696-2472 -7654-208 7471--6681 -2153--6680 -9799--9208 -4313--3187 -4326-8814 -5966-5024 3847-8664 -8110-3672 5780-8533 -4284--7856 -6802-7626 -2473-4327 4662--1060 -2535-2456 4172-8399 6956-4017 -4152-9788 4637-8660 -6197-5230 220--5560 2457--8185 7036-9019 -8367--7384 -5072-9636 -7146-8416 3434-8303 6977-846 7781-5746 -9686-4953 -4813-1478 4286-3115 1726-6733 -6008--9311 498--5134 -9512-8534 3189--8494 -844--4894 -2684--7294 -7914--1057 6939-8126 -1731-1629 8840--5666 -4811--45 -3649--3698 4885-1258 -5936--9641 7929-9450 8511-4457 -8256--415 9335--1227 1753-6266 6128--6494 6546--1536 6495-5334 8548-1769 2893-9793 4065--6678 5928-3638 4590--7681 -5071-1797 -9529-7172 3722--4357 -2141--8068 -9513-1194 -2774-6097 -4487--9126 2771-6497 -1874-7584 -1469--9321 -3806-6201 -3236--1951 -5610--7629 -4868--2232 -5358--7381 1074-8862 2526-2232 8646-4338 -4154-3838 3491-8411 2501--3998 -9321--1918 -5404--2875 -2755-5803 -6011--4593 7646-1088 -6691--6760 -9587-5104 -8463-3724 8748-798 7104-2740 -2452-510 -7916-5674 8035--1067 -47--3568 -8768--1535 2880-9456 6294--4340 -3718--6133 5715-1185 -6816-9215 -5872-680 -4437--8026 8266--6149 9118--2019 -3807--5068 5918-2196 -3156-9878 -7179--73 -92-9091 -8233--8411 4273--9996 2161--1585 -4096--8917 -4249-6403 -5724-6118 5212--4741 -3088--4573 -7229-8766 5621-2707 7128-2977 -8461--2702 96--9656 -4196--8273 -4789-2285 -4617-3396 -2550-8554 6242--4658 5320-1954 2536--3002 -574-6677 -6157-4398 1438--3368 4023--5465 -7501--8492 -9699-1803 -4210-3964 5040-9399 8841-6717 -7783--265 6433--3261 4521-7481 5052--1787 441--9113 3801-988 -1670--2015 7671--9293 7652-1582 1112-1824 1160-8532 1095--6400 -3190--5563 -4685--5871 7396-1392 -6047-2343 -5231-4508 -4569--5213 9476--437 -9993-4101 -1219--1126 4846--4926 6176--7634 -7547-9056 -9781--3037 -9140--8818 604--6807 7782--2244 -1194-4279 -1201-6952 -805-5302 8819--284 -9148-5435 -2466--120 9673-4012 8900-469 635-1839 937-5993 5239-7596 7250-9369 1654-9123 550--6279 6332-3186 -2741--8729 -6062-1637 491-6753 3166--5404 -6157--612 8568-3758 -2749--2698 7494-1549 -8544-4590 -7071-7849 379--3006 -1495--3028 3497--2759 225--5906 -3659--7973 2019-6323 -7427-3559 -505--6 -3288-7853 -5215--4496 -7519--9386 -6452--1372 3812-619 -5872-5578 2006-4213 -9485--3624 546--6418 -4783--450 -5963--6622 1453--6723 -1349--766 -6706-5480 -1593--6478 9147-8789 -4692-4232 -5257--6659 -7840--4239 -9708--5312 1977--3139 7040--4548 -1073--6079 6684--7348 -6481--3034 4792--5054 8829--9709 8391-3302 -8629--6365 9563--3297 314-1721 1498-5963 -6690--1034 -4268-7973 -3951-3738 7886--13 -894--8166 3825-4682 -9836--4843 6191--5641 -6015--9805 -6313--1881 -8719-5825 2696-9055 9724-6263 -635-957 -5101--9937 -1460--7738 8043--7034 -2833--9089 -5721--462 8065--3124 5484--1269 3716--508 9270--9406 4035-8856 -7411--4028 4630-9210 5100-3580 1214-8989 -968--1116 -163-7793 6551--7962 -81--7606 -5770--2694 5279-3347 3594-2683 1928-6892 -8857-5499 -2490--1594 2905-6882 -1742-7484 2702--1173 -6794--8840 -4612--4996 -6213--2689 -4335-9849 8598-4775 -6925--947 586-4534 131-8253 1053--5705 -6181--6731 -7232--9203 -5012-3111 -3128-938 8579--2063 5364--6490 -8034--2014 -3940--3379 2042-5860 3107--9410 -720-3684 -5784-7130 -177-6924 -7421--5642 -2839--4069 -2569--4107 -4371-437 -1234--2555 7778--6786 6678--5399 1375-278 -7841-8743 8878--2672 -328-5056 -2864--6891 -9705-9919 -1223-1314 9128-2458 7976-9039 -9536--5489 6061-8267 6273-3577 7655-8764 6907-7715 -6062-7297 3653-4571 3304--6963 8391--7289 4090-4238 6453--1338 2687-3962 1118-9831 1805-7970 8341--4014 -5737--6681 -3980-7445 -7450-806 1949--8946 -3193--885 9483-8295 -1262--5218 -3865-7000 7751-7280 989--9203 -1286-3567 783--90 4787--1000 -8977-2069 9050-2391 -7174--77 -9152--8457 -7090--2474 -8489--2325 3510--8502 -6769-6742 -2799--2702 0--3366 -6999-3106 -4942--5229 9460--7798 -5552-8560 -8032-1015 -8549-8268 -6923-9615 -7756-6721 -3657--5669 -8337--9273 2202--4475 2165-3968 -8189--3107 -2200--577 4064-7251 397-979 9968-6235 6070--610 -7634-5196 -4227--5764 -4979-6005 -5513-8580 -1259--9044 -1576--1323 -2794--4028 -201-8251 -6890--6537 4246--4307 -2052--4430 8195-4163 872-4844 -9553-853 -2210--7319 -5474-4194 6896--6670 -8238--5787 1266-4865 8179--4585 2141--5993 1857-7065 7016-4769 7504-9024 -2486-2297 -3138--9589 2677-9106 -4834--8130 -2614-1830 -7697-3004 -8726-8986 884-2059 315--2913 -5721-8471 6201--2023 -5239-681 -123-2086 -5646-9934 -3426--2114 -9593-9008 -7797-5039 -1435-2031 -5886--7526 41--808 4491--2676 7452-827 321--1813 -5412--9196 3314--9215 4298-7598 -6304--169 4415-9581 -5670-8091 678--6736 2274--7486 -8788--365 3161-6293 3137--5523 -6682--3976 -4632-2563 -3982-4981 -3576-3671 6666--2995 -4806--5917 -7046-4083 -1354--1513 -9289--5863 -185--4813 6209--8164 -5136-2476 -2997-7723 -9664--7287 -5279-9037 6978--8760 -9292-3391 -7030-6487 -8312-5105 9596-6817 8810-3781 -707-2784 7555--6690 5905-9022 -3924-3335 9894-9022 9804-4912 5205-887 5680-6015 -4522--5979 3405--2735 -9886--3711 -4696--7614 9291-3430 -2725--1956 417--9808 -2890-7639 9593-9906 980-6280 482--9797 -8812--1082 -6640--1119 -7904-4740 -2518--2094 7908-1702 1515--1324 -2238--1562 -114--4143 -9750-8872 7021--3509 2449--6483 -8858-1387 427-4211 -6177-8039 1397-6584 2753--4452 -381--2481 -800-204 -4973-936 7123-8713 5047--833 -4403-1012 1113--7290 8621--1495 545--2187 9167--2158 -4309-5229 -2870--235 -5335--1047 5502--6029 7089--2910 7601-3534 4092-4458 -3668-7109 2335--8924 -1288-1029 6847-938 -5491-7165 -9314-9767 -6218-862 4980-7317 -1991-1168 1106--8668 -4465-3156 370--3714 9686-7481 -8396--6509 4508-8023 -3740-5705 5078-7462 5772--8871 -8506--3508 8207-1794 9847--859 -3762-2515 -1430--944 -8094-8502 -7982-1096 -2813--9165 5843--1580 -7468-7147 -4360-9807 -8265-1359 3063--6659 816--6366 1985--4124 -6820--3191 8497-5523 -9778--1581 2016-4300 -6153--5479 7958--2131 -4148--5296 -6751--5103 2971-7776 8546--1560 9475--4093 3127--6447 -5882--5456 4360-9141 -7186-4549 -5383-7137 881-1525 3987--3327 6393--7465 -9167--5020 3549--6123 -2998-5310 -5778-6450 6698--9968 -7061-608 6813--6312 -781-5477 5737-8582 8860--6548 -7888--5060 -5753-180 -729--3743 -5710-2581 2609--3836 -6302--7885 -6897-5671 -8434-2178 -14-2821 2368--1564 1999-1683 8069-9112 1613-8449 -647--7203 -4549-8111 -9278-3409 -5066--6699 8912--4165 7588-2922 -1647--1129 -9689-753 7474-55 -9036--8358 -7567--7793 -495-7494 -1816-6251 -1508--3987 2950-6171 -6655--6613 -6142--2811 6470--3674 -9065--6269 -876--6808 -2184--7655 -6447--3991 -6095-9805 -957--1692 -2895--507 -7564-8775 5174--5451 6353--7791 3995--930 -3271-4595 3235-2542 -3001-7257 -7846-7300 -508-2895 -5439-1894 8151-83 -6038-3790 -5419--3914 -2715-8091 -2339-2148 344-8660 2977--9656 -739-2407 -6490--712 -5381--8308 9659-3866 -9128--60 -7366-6910 5176-3715 8928-1430 259--9740 907-5629 -2926-6925 5255--6821 -8869--9083 -5297-6228 4726--9726 -2348-6459 -5934-4415 -5168--6260 6547--601 -6843--1544 -4774--6638 -4026--2090 2582-9090 -5900-3989 -3838--2148 2836--6036 -7477--1962 7741-6579 -5185-6397 2581-5791 3143--8511 1842--5690 2195--5850 2283--1097 6728-7924 1038--8536 -7606-4641 8660--3841 -8287--1462 7056-4438 580--5531 -4339-1014 -3230--8954 -7500-6483 7782--824 -2961-856 -8107--4266 -3957--4675 -2100-4403 5324--6903 -356--2331 9848-8967 4726--9457 9179-5955 -9140--5733 -7588-8064 8973--3855 5420-5221 -8702-5626 -1516--1267 7440-2309 -2693-2090 3411--5688 6127-2454 6889--1494 -6684--9169 -428-7257 7025--7701 1034--5974 -4985-2280 -1478-4042 9005-4673 288-5686 -50--8692 -3885--5072 349--1492 3829--8933 -6589-3656 311--4738 4495--7405 -8976--8480 1262-8573 1511-2203 -9540-200 -6831-1881 -3743-6600 1268-5913 761-5772 -6176-1572 1727--7742 1199--7614 4717-1523 -8229-6980 -3674-6077 3609--1931 -9460-6077 9057--5531 4710-9518 -9280-4409 3540-9149 1682-1717 -1142-9415 7634--3581 -5366-7004 -1750--1054 -2460-7161 -6459-5922 -79-8117 -7439-9024 -6135--3274 -4738-9346 -1774-1296 -8949-614 -3570-3413 -9588-3653 1023-6646 4635--7194 3078--1813 4786-3553 1153--7053 2325-6870 -843-6113 -6871-5667 3175--7035 -7397-165 9306-9935 4641--8918 1113--2428 8996-6838 -3766-1974 4091-1525 2015--8474 9048-1536 7168--2986 -5324--6050 5199-2440 2732-4995 -499--4600 -5559--4936 -1146--521 -411--1443 -1444--1095 3958--9729 -8611-1031 -7678--6673 -87--9250 8144--1358 8682--8063 -5184-8034 8583-5975 -7803--9539 7623-3966 -4854--6029 -1594--121 -5615-1164 5182--747 -6160-6579 3223--3186 -6545-791 2446--2958 4917-5706 8782--7538 9871-8653 -8482-8101 -6908--8205 118-3104 -6223-7816 7774--6075 777-1078 1994-1953 3763-914 304-8334 -2781--970 4143-7814 -5412--1383 6453-9987 -4376-9728 -4526-5845 -7002-8240 -4560-3864 9486--3356 8625-3059 9976-2852 -5531--4665 4036-5997 -9646--2670 -3207--7441 2649--3883 7938-9569 4909-2706 -4201--7163 4561-5124 -3375--893 6372-1229 -5263-4615 -3288-5378 -3775--1978 -3266--218 9583--6105 -7194-7253 9769-2866 3662--5937 4275--1280 7693--4543 -2988--8520 -202--3349 2203-5838 48-7724 6805--2734 -7085-313 -909--964 -5431--3020 1604--8770 -3732-150 7397--2344 9587--1033 -5517--1647 3804--4303 2433-844 -3961-9195 9128-9735 -8671-8407 -2614-8399 5806-3599 -7407-4871 3939--5027 9008--6800 4333-7463 6580--2222 9983-4130 8529-9317 -7232--7578 1706-7180 -3101-2287 -7314--259 -2004--597 6993-8448 4833--1195 1986-5123 7815-6006 -2998--6506 -3988-9784 -8587--3144 -4491--5654 -6565--9196 -9427--9531 5226-2606 5238-7081 651-8887 8999-1677 3194-4224 8642--406 7109-9630 1126-174 -33-2295 -2465--604 3425--8672 545-1514 5085--3863 -4529--3466 3931-7359 -2051--2647 333-5963 -666--1541 9237--4491 4958-1465 6905--8 -2685--1252 4267-2076 3743--7683 -4794-4755 -1055--4180 -181-5284 -6584--397 112-7736 -8566-8247 5369--8492 9530-8133 -1384-1033 -187--9685 -4325--9558 -2881-9259 8568-3143 3917-5316 -4420-507 -1511--928 364-1783 -7422--1870 -9801--3559 -7723--9353 -7504-8579 4587-4388 2120-2819 -5473--9422 9963--2541 -1399--849 1911-6057 -3415--7681 -7265-5048 -5646--6821 5250-8605 -2638-8868 -3622-4808 -5217-6517 -190--3702 9146--4801 -3293--7802 -7661-1661 8198--8306 -5495--3531 -8954-8720 -7062--6350 7321-2386 -8377-6768 -7043--5488 -6520-1019 -5937-3639 8576--9511 911--273 2054-7923 -9118--6533 4545--4533 9173--4078 -3334-7755 9288-5461 -4452--4821 -9300-5796 -6514--7838 -7032--7339 -7612-628 -583-372 7912--1730 2974-5217 -8431--5212 2162-9168 -1613-8373 5138--1780 -4678-1396 -9717-444 1286-8387 -3309-41 4974-8036 6883--394 6302--9539 -2096--4381 9332-6629 7098-7472 -2562-4861 9607--9593 4134--4312 5450-816 6806--6834 -2730-1361 5400-9334 -3561-6413 -508-4158 5546--9626 -508--1822 -7794--4478 -8340--8497 1882--5866 -3671-4543 -5119-5255 2044-8671 -9691--5931 -6732--8853 -2994-8039 174-9297 5765-1965 -4273-6994 9423-1794 1834--3747 -5821-6915 -4236-8304 -9848--9260 -8518-1966 -7002--5328 9443--6533 -9475-5831 -3040-1000-7082 -1504-5483 9441-447 1193-7788 -8192--29 -4922--8829 -3955-8247 6494--5715 6664--1839 6486--6082 -5248--9255 2214-1795 -3751--6983 8908--1190 8951-3865 1186-1383 -9604--9140 3145-4580 88-2847 6905--353 -2448-5655 -9350--4309 6075--4515 -5497--6323 1535-8471 5311-5846 8365--7430 -3783--3082 -7897-4086 2645--1259 6080-8152 5994-1992 -3501--4180 1769--6305 5021--850 8638--3817 9740--4656 -8924-5737 9630-8967 7003--5851 -4991--7328 -9869-2872 8264-4716 6211-5529 826-3773 5764-8017 1414--1181 6907-7640 -1573-2300 7285--7808 9894--7593 2042--8415 -737--2120 1442-2130 4665--2293 173-6985 -9648-976 -2231-5168 -1508-9963 -8110-6149 4020-9121 -1598--4412 -7605-2368 1919-9151 9614--2467 460--7494 -2009--9278 -6672--396 -2506-4604 -5675-710 7820--6656 -3666--3264 -3497--9700 -9237--2145 4898--8593 -8343-6494 7113--3306 5692--5440 2147-474 3015-7006 -1051-7015 -3689-1925 -5039--2824 2854-5228 -9939-1400 3394-5041 7254-6534 8292-5572 9111--4597 -687-9106 -5844--2865 2320-6908 2410-213 7025-6889 -5336-6363 -571--9313 7053-3981 4929--2911 -5958-3857 -2107-5016 -8298-1717 8141-6026 -8750--1687 6147--1949 -6490-1710 1458-5381 6792--3395 -4859-964 -6732-2281 -1470--1104 -279--4950 3780-5991 -6391-8562 -7672--7635 -1983-7423 -4351--3276 -3027--2373 9645--1350 -7630-9479 16-7787 7467-3122 -314--1282 -7859-9562 2463--2471 7182--7633 -6212-4414 1180-559 -9287--1531 3104--9514 -8130--7012 1645--9067 -3665-276 6054-2727 -4479-7409 -8899-7379 1403-6693 9506--3707 -4156--1953 -3232--6620 -4129--6717 3628--2629 6898-9359 -5983-9528 2416--1760 856--6588 -1496--7174 -4858--8031 8185-5796 -6475-8126 -5907--4788 -2102-1434 2228-7828 5390--947 9065-7993 8289-6266 7888--7447 -8228--6192 -5453--6967 5283--4352 1359--5209 -5176-5940 2487--4821 9500-5696 -2932-2002 680-920 -2302--9411 -4652--3354 -4957-7969 -2928--1142 5046--337 -2808--1814 6757-7275 -1874--3936 -7269-8089 7597-2064 -9490-7932 2687-7063 -6085--3487 2411-229 -5531-7480 -9100--1581 2938--5492 5770--257 -1163-6554 -5365--1449 -2338--1442 5898-103 -2117-1361 68-5315 1993-7001 2368-5432 -8155-2816 -7642-6996 2765-8044 759-3586 -3460--2456 481-8631 -3603--6500 -6848--3604 2231--9728 4207-848 470-2902 -8500--7561 4674--174 5816-9782 -7628--1870 1401-7560 2127--3145 -3353-7285 9645-6047 2811--2000 -124-887 475--5723 4552--640 1687-2808 8719--9054 7601--1385 -9742--8900 3592-2567 -7935-5168 9531-4185 -707-8488 -3046--8820 5203--8986 -1105-7454 5940--4796 -1923--8682 6674--1629 9272--2883 -9864-2642 8464--711 -8823-1731 -7501-8155 -8823--800 -3857-6538 5605-1952 -5578-3000 -9216--4125 -967--9761 8111-5156 4313--5169 7240--116 -3245-1027 -1467--7932 5884--3257 -6755--2822 1229--2491 -9258-7374 2120-3927 -9435-3607 -2496-4513 6713-5264 -9254--679 976-6959 -4397--3744 402-2705 -2069--7098 7166--7217 3383--8459 8723--5486 3495--1313 7392-6654 -3253--9614 -4620--4301 786--810 -7229--8792 -2198--1936 5345--303 -6511--3682 5686-843 -8982-3112 -1698--2395 -1811--4327 3823-635 7774--3656 -3257--4641 3570--8815 4553-5622 424--65 6878--3949 -690--8628 -4924--855 2805-9106 1730-6612 9654-2649 -6774--3362 6314--4149 -6027--1257 -3055-8015 -7036--8658 -7058--403 6714--3184 -6511--3272 9924--8689 -8370--8142 4211-2420 -3977-3043 -4772--6213 1087--6101 8059--7777 -4538-9007 1225--965 -4507--5746 6670--3850 -1993-2913 6589-4443 -9683--197 -8759--4337 -9490-5344 -2206--9969 -5362--2817 -6418-3617 670-7120 -2057--634 9466--4493 5082-1653 -741-3426 492-5163 -9231-5249 2550--1838 5032-4244 -2922-6317 -2735--2874 2009-7479 -606--492 9861-2936 3586--6028 416-2739 3367-4375 -6408-6361 -4563--1437 8022--2130 -7150-8593 -1654--5666 -3193--5398 8941-9786 -7560-9544 3126-942 9051-3982 -6723--4471 -6105--296 5976--3947 -6616-7269 -2997--1776 5216-4450 -9671--4919 614-4736 -3887--2925 9243--4404 2306-3198 -8558-5785 2993-9938 416-215 -6302--8895 -7019-6134 8553-3413 8829-1031 506--7984 2584--5322 7774-1881 -30-8889 7492--1919 7360--2927 6601--5723 2537--5828 3017--4761 -3140-8872 -1379--3201 3190-4872 -7494--8091 4306-9497 -9655--3911 -8458--2933 -7514--9265 -329--1852 -7678--2068 -2409--987 602-7938 815-7848 9969-9138 3175-5551 -4715--719 -8855-1317 254--8217 2722-4188 5270--7101 1755-8999 6259-7376 7340-6291 -9272-9538 -6711--8154 4292-2772 421-2924 -282--4661 8601-4806 -5118-3678 -5861--8170 8336--7879 -7223--9048 -1121--1081 3095--9186 2853--7179 1292-2444 1053--3781 5066-828 8251-3585 4430-182 -8462--5614 -4562-1409 -8652-1805 5485-6503 -4679-4756 7410--1583 3915--9453 -1944--852 -7792-9233 3941-844 -4024-4953 -3195-622 1895-5670 -104-7076 -3654--769 -6235-897 -844--4378 -55-4049 -7563--3302 -505-7380 -166-5153 -8858-6149 -9744--2714 -7520-3755 -895-859 498--2299 331--8177 3949-9898 9911--6671 9535-2045 -1593--394 -3173-9836 -1726-5280 1707-2665 -7751-3998 7349--686 8454--5625 -5002-7663 -5013--1434 8620--6677 9699--9767 -6133--7974 3807--6225 -9445--2258 9135-60 -7639--2721 -550--4723 -1580-3352 -5653-1342 5005--2443 430--4671 -2871-9378 5804--6436 9936--8985 7369--919 -7116-1922 -8671-8186 9714-8495 931--6517 -4092--4657 3867-3726 -5010-7788 -567--8240 -4887-7865 5384--5165 9240--7219 -6358--3133 7405--6338 -3641-1228 -3759--3672 281--8692 4823--695 3603-96 -2968--6169 9275--5410 9568-1802 -2910-699 -1339-8163 -1975-3063 -4884--3645 -2182--708 3517-166 -3579--5408 7888--3219 -4512-4324 -2335-2805 8084-9347 2693-5261 2688-3360 -2602-8453 5366--7526 5606-7487 4424-2250 5958-9499 -9048-5762 -4975--1485 -4750--1151 -5627--7364 -5126--6128 -7262-7870 3938--5051 -3963-7526 1750-2449 5073-909 -8670-1791 -3306--8440 -80-5272 2766-5435 -6265--4507 -8449-383 -2288--3344 2482--6075 1451-2394 1460-6466 -7663--1255 -6760-9068 -2340--1678 5694-9950 -5396-6621 -5247-3758 -699-7020 929-7436 -9510-9481 3520-2327 -4691--2915 -5601-333 7315--5461 -6845--1260 -9169-5774 -3188-84 1770--4507 -8221-4781 8286--7684 1474-2825 -4460-4962 -8941-9533 5273-8975 2868--7782 173--6449 316--192 4455--3472 -2294-7099 -4655--6246 -300--5507 -9808--4671 -3645-7347 2204--6632 -2252-3373 -3885-9944 39--2425 -915-6138 -1135--2084 8846-3172 8200--3758 -8547-618 -327--4460 -1651--3962 -7825-6706 -5716--6896 7996--7762 875-5673 5259--1083 -9285--4230 3899--2490 9747-116 7888--6341 -2445-7354 1047-6482 5700-4932 -1157-3323 -9888-3526 -9227-1439 -8102--4529 227-3182 4970--1317 -4961-2325 56--623 -5704--4548 -259--3511 7380-233 7795--6671 -139-881 -8464-5973 6892--6550 -8412-3306 9871--9407 2042-9390 -6103-2304 3175--614 -1825-6752 -1247--5438 1861--7101 3495-7844 1512-5364 -8360-9283 8270-7615 9117-6346 -656-9913 8728--1456 -6900-9341 -8889-6940 8017-4773 8956-626 -2022--8564 -1015--7710 -1856--6512 8481-1630 -9022-3509 -8553-6397 -8441-826 8191--9754 2667--5321 -3637--2297 3705--8496 -5294--3064 -8580--9880 2778-6818 8250-6778 7634--8921 -5656-592 -2979--5390 2812-1230 2888-3596 4735--7177 9408--155 2147-7053 150--8836 8851--3158 -7023-9157 8734-7921 7297--2447 -345-2030 4023--7132 -5191-1888 5065-1035 -6481--7189 -8763--5960 3650-3045 5315--4637 -6716-7676 3930--7354 2961-20 7768-9294 5289-6418 9567-4955 8920--1263 -1329-6674 -1592--684 6920--3737 45--7101 -5680--6038 -8305-3379 -3546-1541 1410-6461 1628-8251 6831-3711 -252--7507 277-1158 -2210-1389 -2446-2638 2811-901 3679--7838 -7002--4933 -2433-5634 -6173--3936 -8481--6520 -8351--8485 -8567--5120 -1504--4868 5486--8120 -8882-7048 -6268-9411 -6240--9222 -3769--7847 1160--870 3259-4625 1452--1791 -1890-2240 -67-4713 6118--3415 -7559--5745 6422-5802 8079--8573 2093--3578 3979-9776 2104--7929 5546--5261 -2243--5463 -5530-3039 1470--5633 -9120-6600 8854-6217 -1176-5743 -4874--5788 -9155-7920 1803--4449 6571-10 -2969-4450 6276--8720 1406--5313 5150-8596 -609--6716 -9780-600 669-7770 -2677-4838 -5801-5344 -5906-3578 7054--2870 8007-396 6668-7003 -5264--2650 -130--4926 -5671--984 -6732--4532 -4354-575 -8264-3183 -3129-3401 -8029--7529 -4796--4156 -9397--8516 -4758--6266 1277-929 4543-8635 -5287-5722 -9857-564 -5300--1272 776--8815 2619-6769 4162--9025 -8802-9321 -7423--7432 -9170-4542 8055-3732 2459-8824 6839-2172 949-8156 77-5182 -4314-2281 -4606-5325 8647-9508 -2625--446 2125--4599 1833-4332 3589--6899 1895--5750 -2724-3780 7007--7922 7733--9430 6750--745 -1688-834 9853-1460 -2345-9350 7522--9304 1491--5154 -8821--7995 4111--1929 6187--8862 3476--7876 9075-8149 4997-3102 -570--4166 2608-3090 483--5119 484--2963 -3231-8039 5035-9209 -3135-7954 1005-2705 1906-3267 -1986--8356 7169-1050 1779-9628 -7333--485 -9078--7944 3273--3811 -5942--9942 3310--4970 3753--6323 9710--3095 7664--8277 -6828--829 -5748-7638 -865-1327 5146-6833 314-2887 -4483-5736 -2486--3364 4407-6815 1586--2196 6546--7775 2798--4803 873-9016 -5347-6669 -2033--1087 4338-4946 9391--8970 9265-3077 -6083--1612 -1064--4117 3624--3545 -6733--3414 -9038-4925 4020--2659 -1732--4928 -9466-6392 -6314--5812 -9675-9460 9989--6101 -2418--3941 9230-963 -4792--2413 4473--3428 9101--9943 -8857--4734 -2001-2831 -9485--3958 -9463-3797 -1520--5212 9748--1916 -8284-6174 9910-2630 -8209-8523 -5816-692 9954--3674 4524--1436 516-9340 2163--2577 -7663--4830 121--1572 -125--8921 8916-7688 -2902-9345 -3664-3574 -5656--9237 6849-4688 -9303--4837 6388--1217 8440-8520 217--2119 5191-3521 -4116--7853 -8780-7111 6011-6033 2524--2967 660-7038 -2924-1992 4276-3590 3086-3057 -1306--3260 7641--6726 -2127-4287 5775-5858 -1772--4388 -9566--7516 7344--4716 -4016-4197 -3132-9610 -2755-3157 3402--7404 -669--8592 4655-1603 5860--3377 794-2744 2928--1442 -2924-403 -2841--745 5944-8014 -8030-6936 3039-6380 -6143--4652 -4569--3510 9361--6315 -2311--5860 -8363-459 9459--1997 2804--9109 -5322--7104 9435-5555 -3010-2070 9658-3871 1512-6554 -3958--9900 -9383-3586 4008-1209 -3506--8590 5204-3228 -1214-2188 -55--1093 -5379--6179 2568-425 -8323-6712 2235-631 6240-8023 -3370-204 8871--9040 9669-9411 3390-5430 -3426--9864 6153-5505 -4674-308 6169--8409 787-4467 5523--2665 -3989--8157 -8338--3026 -7296-708 -3616-1049 -2507--2250 -8557-1619 1790-6206 -8893--9299 1220-3457 263--8899 -2763-7138 9374--6635 977--5244 -6540--2623 593--8440 627-2384 -3635--9355 -903--2675 1260--8873 -7030--5790 -561--2911 -3962-6988 -2161--195 -4872--9170 -6135--3402 -5604-8265 4799-7898 7237-3939 -8668-4171 7524--3988 2680-6227 -9871-9706 -1803--9791 -9059-6002 8735--5316 2149-8820 9364--8654 9459-4220 -7395--4982 5174--5423 8702--2617 -174-7087 -1601-9768 -8255-2959 -9432-1199 6350--3841 3844-7411 -2618--1986 -3816-8337 -2200-7872 828--2270 -7863--6236 1009--4634 -3284-5378 4531-8838 5316--5545 -8550--7695 -3357--415 8363-7184 -2513--7623 4108-6001 6370-2587 -4446--3372 -7572--4995 -8420-9769 3791--2995 4248--6327 -4890--6436 2514-8236 -7636--6601 4140-8734 1011--7277 -5046--6680 -7300-6468 4750--1165 -8685--5549 -8866-1533 -2063--6096 -8303--4795 495--5216 1661--8901 -6281--5805 170-3053 7725-7941 8851-3387 4743--6170 4571-5512 -1362-4413 -3547-978 2362--9262 -4496-1000--9989 8965--9802 3823-4075 8701--4854 4735-6272 -155-642 2210-8781 8869--1850 -5024-7492 2627--2208 2200--6670 -5373-6920 -4854--2763 -1065--6753 -2623--8419 -1433--2535 7317--5594 6527-8980 2222--7252 -2183-70 -441-221 6180--4939 4038-4122 7392--7555 -5038--1765 1964--137 -4445-1979 -6119--5354 -3219--4216 9168-9505 -4541--6858 4019-5833 622--3495 -4516--4515 637--3479 214-2129 -8222-7097 5031-8123 -9712--4355 -3503-2032 2013-1284 -3479-2645 1727-1376 -2578--7547 -5291-2230 4095--5749 -8160-6599 2364-20 -348-1678 -8696-1264 6984--206 2471--400 -6226-436 -3527-4022 -6802-54 -4577--8483 -1284--3872 -9669-9738 5009--7329 7521-9322 -1902--7919 3662--9338 -4789--8681 -7511-3034 -3424-8983 1801--9550 -9852--4978 1675--7291 -9574--8833 4210-7197 3420--6318 2029-7401 9930-6279 -3703--1004 -5113-8804 -9272-833 7312--6024 642--7599 -7415-4803 1646-909 -3142-6124 2115--4110 -2907-7302 -9761--2658 -4321-1902 3788-6373 -2309--3396 1713-2108 253--5307 8085--9120 -8046--8463 -6193--8894 -4498-283 9918-2664 2861--6438 -7108-2388 8056-9273 -8137-9451 189--6606 4273-5045 9626-7227 -6610--702 8644--1072 4885--2006 1641--2149 7267--1040 -3207--590 4706-822 -4190-4160 -5057--9943 -5193--8602 8962-2635 6038-2072 1105--9777 5304--2976 -4813--6319 8560-2862 -3949--9279 -1612--6121 -7561--5685 9385--3439 9050-5886 5219--7530 -3006--9243 -4936--2801 5170-5407 2513-620 -8089--3588 -9400-4928 -8862-5488 -7780--805 2065-3162 5726--1039 -5796-8447 6599--7044 -5082--5622 7570-7387 8669--7143 -6778--2556 -1831--9137 8105--9942 -850-7362 -5958-1746 8927-4519 6469--1454 -88-6850 -7869-4113 7429-9038 -2932--8183 8812-1313 2560-4350 -4023-5263 8154-2582 -9080-7116 -9947--8458 -84--8921 -3598-8872 9309-3635 9940--7764 6321--3733 -3074--6259 3861-8440 665-9898 -6380--6992 9029--7696 3655-7196 7169-2863 -6834-4567 -7867-7081 -1612--6743 5160-3095 -2224-3078 -2257--6473 -1189-8891 -4011-1956 6530--9138 -4241-992 -7388-2007 -5938-1689 9775-5506 5035-1108 -6984-6827 -7157--1480 6273--5958 -8653-3557 8197--6397 -783-9200 -2813--8266 9565-4220 -5421--5634 2843--5658 3702-1736 8488-8601 7833-2698 -1255--9436 5540-2433 -5953--7441 8347-1536 8920--8522 6534-298 7709-1178 451-57 9357-7020 -8136-5569 1084--6505 -3643--8391 2039-8041 -6041--7306 -1165--4264 8556-4642 -9837-2837 6243-5756 -3980-9172 2944--5674 -2237--4381 9376-3062 -5652--455 4728--2665 2835--7398 -5788-4278 6327-7884 -5724--8023 3497--7625 -5340--4043 -2618--3349 -258-1566 -7888--8267 -7363--1667 -474-3755 -6479-4812 -7789-4517 8769--4440 4005--4027 2569--4889 4329--2642 -5083--5828 -4885--2526 -9245--3209 -2715--7686 -3608--83 -2681--5071 2009-3651 8396--2388 8210--5215 -6760--1612 8226--490 3396-2400 6692-3943 -5571--2868 -1092--1255 4428-5979 6446--7014 8383-5455 -2423--4706 -9090--5255 40--1017 1965--1778 -7978--4961 9186-4869 169-5593 6309-10000 1625-5000 -8433--6382 4650-5741 -297-6984 -4685-797 -7558--3069 -7613--6599 666--5317 8090--7813 1983-1780 -1977--6912 8391-8643 7543-5107 4199--3326 6596--2130 6890--680 3594-5389 1638--9241 -2489-9304 7553-4915 -7836--2737 -6585-7375 -148--5367 -8860--1226 6377-8302 -2911-5511 5130-4604 -2393--8472 8754-7987 -2305--5805 -2408--3905 5827-7017 7699--7437 4390--4712 -5576-6960 -2063-5025 5489--9415 -2716-5438 7705--2577 8073-2401 5466--6983 -6879-9902 6260--8657 -6150--9961 -5538-4068 -8300-6847 -4333--8173 -1681-3379 -3481-118 -6484-3172 -4761-2370 -9268-5349 -8099--6015 -1544-6511 -5936-5045 -1300--6779 6686--1305 -6414--7193 -9718-3611 -2574-6353 -2175-3440 -8881--7491 -7137--9516 279-9299 -6396-633 771--7524 5638--9393 9789-2306 -2547-7049 -5167-8473 8040--4429 -1857-721 -5396-2676 -1680-8476 7528--6196 7299-5561 8772--5499 -2395-3139 -7594--4106 8289-4448 -5349-6305 -7186-6417 4221-8112 2415--340 9464--5795 -384--8099 -566-6151 1460-437 -1481-8330 -1901--7119 9093-1508 755-8738 -4646--6471 -3317-6116 4828--8460 8365-1191 2427--9801 5243--8160 -3917--9853 -4793-1225 3421-8985 -5209--5480 -9710--4993 -8185--6004 9311-3440 -3445--8041 -6453--3888 2342--9870 5565--1887 -5520-3484 9916--1222 7291-1841 6291--9138 8007--1450 1377--9208 -3494--1559 8200-3870 7588-426 -5247--9768 395-9546 -8239--1580 239-4481 -1812-2198 -7441--9469 6140--2574 -1288-9989 4586-9296 7710-2651 170-5071 -675-2538 -8082-4644 -7755-5993 -2125-2992 -7610-6602 1867--5195 -3575-7342 -6708-3188 -7325-7583 -7713-5238 9176--5840 2119--1961 -9519--9776 2294-4219 2305-3500 -1987-5376 5378--4488 1477--6909 3794--4556 -5414-6990 1958-6835 9354-600 -7187--9609 -6055--5666 4179-6525 -7472-8718 -3767--4302 4850--3288 -2210--6670 -4727-2460 2690--1077 4491--1816 -6149--7126 -4447-8513 -3763--9122 -7843-5457 -8235--5944 -1748--9742 6102--7168 -4684-8932 2211-7636 5460-7209 -6319--7818 6843-7035 -8403--9361 9689--3820 189-2959 391-543 -6207--3433 -8986-1931 -6101--4017 -9093--7290 3593-6856 -7696-9430 1432--8971 -4391-4497 365--1760 -6563-9157 5018--4744 2309-616 9177--7849 -635-2365 -277--2283 3528--8282 6308--4471 -5512-6774 -1145-5210 -2688-495 -1750--7495 -4939--1168 -8802--9979 -2913--1296 -2887-3719 5375--4527 2808--8555 7367--6808 -4568--2794 -6152-3774 5981--8003 -7784-499 8562--5458 870--8736 -4185-6619 -8731--3245 -257-5040 3658-4281 7255--228 -6478--6724 4504-4447 -3327-8987 3221--9482 -7206-6289 4188-6485 9832--6725 -4263--2868 6770--5713 2451--9732 386-6996 5208--4473 795--1622 5441-2334 -3096-5 -9765-1897 6327--6559 6193-2747 4281--4608 -7162-3826 9717-7615 8780--6715 2055--7493 5590--8445 -9571--9939 3234-9606 2315-5463 785--5488 -3983--8146 -6932--465 3942--4405 -7457--9880 -6252-691 8064-5516 5946--7554 6140-6444 -5339--2508 3197--8723 -4880-7550 -3336--4037 2952-2068 185--1609 -3576--5071 4812-2363 8085-6944 8568--520 4865--9542 7091-4442 -18--7745 -4634--6621 -9346-9828 -153-9576 -7917--9472 -3204-7328 9627-6883 2750-8181 9214--6989 -4748-1038 -5295-6080 -8537--7094 -9733-2813 -8529-2911 3014--7875 875-9213 -6892-5614 -6775--4877 9942--4493 -6021-314 7245-8556 -6181-7389 5650--7776 -9257-6684 -8503--2077 3022-3595 -1606-8758 -5648--6228 -4681--8030 6147-7173 -4995-9693 6798-9835 9097--8090 -2929-5334 -7378--2525 -8940-2688 6551--3032 4446--6372 3138--5664 -2462--1980 -9872--3476 -5951--6180 7257--291 -1821-2058 -4775-4897 9356-7502 -9067-3644 3840--2225 -1894-6224 9019--5723 -1889-4980 -2580--2768 -3549--5813 9745-1066 -4956-3203 5934-4539 8929-3899 3505-3072 1974-8505 1254--9807 -5139--9577 -9722-5993 -2225-1305 4301--8741 5942-486 -3270-7883 -2868-8162 4777--9277 -8408-7193 9488--3619 -2029--5334 -8491-5366 -3133--4312 -9005-5697 -4181-3319 -2975-6228 7949-1843 -9835--4150 9955--3024 -8095-466 -6346-8219 -1588-5710 5664-9916 -6046--2679 -8528--4446 -6097--8134 9139--6475 -1750--6775 -8104--6609 -8849-9378 8668-7401 -3158-222 -148--6988 -6827--1458 3638-8091 2188-709 4009--4772 -3303-2073 4133-1701 -4670-5165 -3490--9342 4180--857 -6079-4213 1504--3662 3749-8183 7681-2247 -5644-8274 -2562--4249 -7192-2285 -5358--1223 -4704-8840 -8400-3846 2407-1605 -5101-5797 -8444-4941 9110-7431 4790-3031 -863-5141 8829-9398 9727--5997 -1120--4887 -3574-2759 8729--3705 1232--6274 6394-1029 6861-8850 -8527-8223 -7630-7640 9581-3293 4652-9021 2508-5065 -1611--3744 6727--8383 -4070--9004 -8587--9231 3667--3274 -1362--7044 9817-3822 -1334-2642 -3737--135 4004-2029 -8452--5560 -2212--4619 -9367--9370 -1381-2554 1099-1636 8828-743 -3749--3522 2687-9316 -5352-6225 -2689-2132 -1603--5098 3358-9157 -7040--7144 1389-2673 -568-5302 8963--2123 -5039--3048 -3791-6449 -2118--8863 -6566-3007 4439-1477 187--9928 7519-1351 7803-6129 1733--5745 -5395--4805 5213-5086 -3736--4260 -6914-4795 -9103-6550 -7241-6176 -647-2715 3136--9799 7065-4093 5182-3749 209--9422 7137-9031 -1166--8605 5245--6578 -3187-9581 2520-2644 8067-8325 -992-9626 -6944--7788 -2100-120 -3998--5683 -9043--3452 -5116--3156 8859--4332 -1956-1112 3636--3573 9780--1569 -3329--4560 -7257--9657 991--742 1015-5471 7436--9704 -8490-3741 3973--3672 -8881-3948 -8276--8238 5181--4524 -1870-5029 7615--2328 -1969--972 3947--8352 8533--3385 -2829--7969 -2935-9474 5314--2671 -6645-4557 -1914--8900 -4442-433 7848-3232 -1055-8311 -537--2025 -5352--7535 5795--6522 -2813--1802 -7902-2109 5987--6355 1078-123 8824--9361 -8529--9670 -6313--5280 -1875--7830 -6768-6316 -4822--3285 -5156--1221 -5159-1678 9637--1336 2244-3240 8468--868 6280-1693 5647--9155 -4501--6357 -4490--7167 7513-7907 -9966-9162 2168-5650 2760--8569 -7818-8343 1121-9376 9087--5252 6131-6936 4777-4902 -8996--7654 9190-4242 -7280-8178 -1598--1387 -958-5470 -571--3575 5311--8536 -3721--2429 -6543-6187 -6438-3719 -248-4312 -4391-2967 -1462-8139 3046-3578 3265--1594 -3141-7377 -9999-5998 3542-4478 8987--6445 8182--342 5707--1966 -9874-1358 8018-7564 -3047--3975 -3728--9825 -4018-7733 8734--8238 -9642-318 871--7190 -6173-6274 -61--5338 6034--3863 1922-5755 6517--3925 -9442-8257 2175--2477 1800--1674 -4115-9301 767-3041 -8907--5864 -6898--5420 9367-833 2237-1105 -1367--3699 2081--3817 1351--3623 -2099-3482 -965-6152 -8118-8652 9724--9205 -1281--9603 6912--8128 -3719--7401 -2111-613 -5507--4702 -8731--7955 -1110--2876 -4282-6689 -1888-7079 6064-1206 9775--6652 -4704--3070 -9078--4608 -4548-3757 -1915--4106 9013-6058 8816--7820 -3272--8982 3255--4398 988-142 7976--8228 2833--8690 5648--8792 -9393-6864 199--6360 -1502--8006 -3606-5411 -9808--3812 7378--4786 -5921--2865 -4124-6245 -7193-2521 -5725--5193 -1729-6066 -9243-4023 -7564--9634 -6507-3067 3797--8361 5904-6948 -528--8910 -8692-3570 -1403-8601 -1714-6541 3465-2233 -449-6252 -1962--5638 -6295-3846 7396-3761 -545--1487 -968-5736 205-1884 9938--5358 -3499-4715 -8571--4978 -8470--9273 8788-8189 1353-839 6564--7388 -488--8098 -9264--2661 -995-6834 9976-7483 9750--1167 -4724--761 -8014--3992 -7732--1412 -2363--5927 -913-7205 8029--1703 -2987-7795 -6908-3778 -3602-4754 7760--3604 3466--6413 -8715--7071 -340--2348 7064--5858 5695--8712 2031--8356 -8140--8193 -2153-7340 1879--3836 -6115-6843 8633-3836 -3212-8518 -7616-2895 -5846-3354 3386-3642 730-9596 -1579--8216 -2586--3613 -1800-5859 1952--4909 -8948-6546 -1635-143 -8931-5067 6826--2854 -3706--2631 1163--7872 -1097-3623 6249-9969 312-8787 -4398-7814 8393-5814 355-9085 8976-4423 -298--3957 3338-2888 8162-4886 1150-3696 -6535-2632 -4448--7795 6366-1517 5694--252 -2765--1562 -2530-5019 3525--9986 -5242--4622 -7655--9649 -1726--9045 -5247-2340 -2572-1655 3338-8069 -3285--5222 5889--209 2369-2618 8697-9619 -9708-8921 5638-6195 212-4285 9737-1687 3827-2440 2280--9899 7335--9332 -4572--6256 -6382--5725 6081-4469 -9106-1971 -8446--9317 -3982--5301 2996--3032 5713--9237 4460-1334 -4441-6510 -7896--394 -2935-3803 -4154-485 4321-3162 -8755-2054 -6975-8693 1287--1406 -7520--5214 -2805-7769 6539--212 156-5049 4748--9847 -15--4039 9313-5222 5194-7779 5038--3915 7705-920 8949-6003 -1274--3002 3076--5535 -4455-8344 -3304-6004 4504-1457 -7192-2349 3454-5348 9932-9597 1855--6374 3806--2161 -7830--4930 4211--8053 4513--9922 -4766-3658 -7979--5614 -8060--7007 5748-1000-7025 -117--9194 -4261-6057 9197--2461 -9593--9493 1678-2448 1807--574 -543-1130 -3729-7619 -599-5248 5681-5883 3225-2930 3399--9852 -7886-9427 9959-1930 -36--2266 5036--1376 674--7610 3169-4776 -8632--616 -8034--606 -6611--8953 7287-2617 -7766--1185 5451--435 1939-4211 -3282--4431 -9269--5319 3528-9959 6443--4918 1517-5598 -2162--6501 1763-7958 -3461-4504 242--6220 -8829-3255 -2400--771 6115-7287 -9347-1185 -8957--2904 -9598--7982 5081--382 -6441--7836 9500-6128 3721--7258 -1775-8633 4533-6942 7152-7471 -629-5975 463--1791 -2856-348 -4391-2617 -7426-7283 7341--1239 9003--433 -3394--4826 3156-7235 1008-338 4185-7692 -3422-9429 -2168--699 1803--1802 5060-8459 6474--7087 -460-2959 -5790--9140 -6735-7077 -4596-2139 -8180-6285 6329-3396 -9173--4565 -6825-1113 9054-7051 2835-7343 8914-3895 -6950--2662 -4508-8615 -4817--4434 -3743-870 9672--8793 -956--400 -5098--6768 -3090--5941 8754--1681 1423--6769 2373--9478 -1206-5807 9755-8194 -4523-784 -3652--6049 2603-8694 -8653-5337 -5685-5311 1674--6057 9026-6010 3432-6578 8284-4885 1578--5177 1795--3759 6204--9598 -8114-2519 -7413-477 -3628--4592 -2427-5279 -3417--4177 6564-3217 -3086-4180 -9002--9615 -7449--917 -2855-8507 -2289--9499 -1485-9534 2116--9713 2249-6336 -3330-7524 -7764-2453 4247--8681 1808--363 4557-5373 -5896-9699 1945--4473 546--2346 113--2819 404-2261 9070--2104 6996--193 -7214--8934 9683--7272 -2199-4673 -7889-4154 -2027-8476 -6902--6413 5410-5636 5496-4682 -7680--9100 -5679-5712 3454--2184 4551-2490 1018-3832 -863-9667 5721--516 7474-8816 -5689-8332 6775--7565 -234--3277 3873--6361 1921-4601 3363--727 8024-9759 -942--449 -5694--8622 -5306-8019 9445--4722 -5418-7852 -8121--8912 1899-9322 -7223--8677 1717-9367 -7098--5364 -7561-7194 -7242--5155 2941-2855 1082-5775 -4211--3128 -6110--3440 -1853-7318 2884-8246 6096--3115 8996--7471 -4029--4503 3417--4800 2398--1347 -3858-1736 -4256-9796 -8819--5936 -1022-743 -991-6136 -8690--2749 -836-6756 2412--7972 4074--6327 3131-1813 -3678--6103 -6263-7178 -5048--8594 5799-7578 -8010--8986 -1039-8161 -167-732 -5118-541 5010--1264 -7526-4254 -4601--7296 1565-9267 9814-2888 7072--2728 3869--8447 8049--6515 4835-1841 966--312 -2622--8835 4717-1005 -9060-7334 -9357--5795 1596-3049 -5751--942 784--4252 -463--5136 6943--1664 -9662-4697 -8459-9080 -859-3104 -6669-1927 2285--2401 968-4209 4457-9176 6846--7991 8563--8824 -3608-8194 9831-4650 -9174--15 8284-2467 305-8336 1063-7507 3172--8508 -144--3883 -9241-2678 -8872-773 -4684-7396 -4921-7712 -3709--9594 7836-5246 8789--3086 -1696-7313 -9592-9136 -9339-3623 -9911-3549 1363--349 4266--1410 6109--459 -5438-5854 3242-8179 -7118-6497 -7467--4950 7716--1051 -9085-8618 4252-459 -3190--9545 882-7580 733--299 -5570-9317 7896-1679 6426--7668 -5220--7355 -7029--8372 -6168-7815 8304--4480 1668--531 -2746-7175 -5733--7107 -7973--9579 -7527--9621 8008-5768 4470--659 -7814--1217 436-4145 5719--3113 -959--4330 -6151--3758 9822-9289 -6044-2630 -2859--8586 -7293-5242 -7933--8249 6205-1449 1605--6021 -7952-4175 -2680-3412 7169-3364 -8429-6108 5686--1292 9312--7298 -8593-4033 1811--4332 7677--9011 -9111-1877 861-8258 5695-3733 -8692--501 -7254--2326 6594-9592 -424-4001 -1431-4300 -6118--8060 -2780-3750 3335-9471 6459-5553 908--3740 7062-1784 7449--6386 -6406-6326 6288-3260 -834--6418 1704--5785 160--9088 9594--5965 4690-9784 -1358-785 8249-2581 4550--5073 1841--7793 -9994--9396 -2477-6907 7628--6414 5136--4714 -4467--611 -4525-752 4961-2054 9488-2250 -4504--4276 2113-4899 -1871--1280 2426-3551 7403--9444 -7048--5100 5283--2966 1697-614 902--4080 1437--7425 302--1553 -2991-3429 1188-9369 1327--9507 7778-6995 -647--8695 5805-9055 -6476--7943 635-9944 -4378--3545 -9132-8224 2812--9005 1892-5320 7024-7787 -7112--6733 -4642-1137 -6565-9292 1744-1571 4591--9768 7917-2206 7161--4036 7800--1583 9073-8626 372--5177 9053--5910 -4822--3972 -7539-5867 -7139--3501 356--6851 6836-7177 -3785-9215 5817-1943 -3978--9151 3863--5833 -3794--9034 7064--3856 -1560--7601 -9455--4186 -5282-4611 3306--1478 -697--1174 -8548-2540 -7172-1999 7834-2026 4197-5879 -877--6898 -5612--3837 6608--1157 -6764-2030 82-8783 -7045-30 -4620--2177 -5125-3693 -2566-2582 6100-3887 7953-7729 6165-4855 6216-5004 4251-9200 -4585--1286 8433--4713 -1070-6322 -9791--3903 1620-2861 4664-5201 8555--8048 -8864-3396 8295--9046 -4953-6112 3289-9818 4654-7045 7260--3171 7624--2291 7094-1060 815--8339 -7124--6 8594-8444 5123-3845 5180-3743 -8989-1235 2759--7048 8324--1011 949-9927 5162--3076 5596--1344 8961--1195 -380--3095 -6036--6934 -28--4544 -6282-5768 -2395--6903 -4128--9134 -3639--4299 8552-1228 -6497-3476 -5379--9538 7960--2474 -7858--8243 7330--6688 2491-4185 4255--6388 6607-6396 -4984-3794 -1364-5730 -2442--766 -2093--834 3583--959 -3673-3292 8739-9624 1169-2671 -6611-4713 -6636-5191 7221--1273 3324--414 -9499-7181 8563--8373 -9504--2607 -6105--4503 6262-3854 -825--4595 -7865-6974 2940-2123 -3000--5570 2016--6204 879--9942 3618-8089 -7456--7052 9141-1803 7045-2141 4839--313 -3679--2230 -1364-9895 2814--1604 -8025-4840 -3211--8263 6206--6063 2507-7412 -9808-7956 -7819-6309 9945--851 9103--3900 -3708-194 -7992--5245 -902--1956 -1240-1034 2761-9428 8150-8496 5084--2931 -1248--6139 -1079--349 -3309-8333 -326-6413 -1453-6768 -6247--283 -2586-3446 -6258--2113 -6217-6122 7758-7640 7397-3166 7691-4468 -2267--8516 -3772-8473 7495--99 -9596-8248 5601--9040 -7933-9166 -4764-7404 2954--4095 -1008--8462 -1392-952 -6662--8162 -3767--2969 173--4455 -6400-3414 -3582--457 5705-9470 -475--1384 1773-7747 4455--6474 -2807--309 -2183--8 6138--8671 -3372-37 1626--5948 -6257-3046 -181-2937 -9968--3804 -2047--3860 -5809--3447 -245--3380 3707-4981 8760-9661 4205-2199 2322-5960 -6611-3596 -7155--8805 3623-4936 2583-6948 4500-8943 279--8571 7485-8516 -8016-9812 2423-1545 -8590--1082 6214--5098 -4317-8102 2411-5543 3470--2799 -8808--2299 4277--2176 4906--7484 -3437-5987 8040--6067 -3195--6032 8396-5222 8498-9326 -4788--4773 -4200--4235 1750--6423 -6835-4602 9983-7512 -1149-9318 5580-1692 -6723--6217 -4922-6670 -2724--6723 -9725-485 -9698--6265 1762-7308 -8815-408 -6497--8901 -4560--6268 -393--5756 4693-8052 -9586--835 7678-303 -272-1038 -9994--91 -7572--2323 -9481-8508 7145-9212 -30-4522 9562--6664 866-5371 4476--9566 -7566--8016 1704--9064 -6413--2220 9595-3696 4438--1354 8490-6648 2800-806 -2233-9454 -9500--7631 -3269--3211 4433--957 -5246--2006 -9451--8902 -2837--90 -7000-2082 -5188--9376 -3365-2129 -5475--8441 6795-5805 9622--5866 -8957-8134 1293-2492 6266--1153 4481-963 3667--277 -2462-5127 -6925-5990 8258--6574 -5058--7694 3593--3872 -163--5261 -1597-4478 8227-4543 -679--5249 -6527-8133 7506-1862 8548--8060 2173-7419 613--2014 6036--4902 3554--4617 -942-6382 8066-828 -895--5261 -2114-2572 8542--5969 9712--7418 -7194-4991 -1428-3284 -1677-7008 6655-3118 9814--9567 8331-6807 -5173--1900 -9399--6564 -4539-9944 8312-9485 -8341--7744 1729-5387 5297-6157 -1060--9021 580--2843 -6200--5269 6218--6901 -8985--1685 -3046-2956 -5245-9470 -4142--8304 3518--1155 -9310--631 -6104-5806 -9654--1623 4169-470 9877--1252 7797--2129 -6348--9140 -4422-4183 562-917 732-9653 7860--5738 4284--3604 -7449--3418 -1055--6076 3804-8174 7310-6629 -491-1564 -1582-1647 2250--9209 6411-8104 -224-2648 2812-3862 -1990--1500 -8756-5785 6760-5519 7209--2238 5761-8217 2959-8655 3078--7169 5238-442 -8052--326 9524-3908 -5753-2686 4759--1855 -8585--6653 3697-4621 2499-6766 5070-2407 6828-4235 -9554-7326 7324--2351 -6347--7855 -2639--7375 9492-7302 -9144-3490 7297-5502 -7572-1413 -6522--8329 -9689--4886 6052--9139 -8828--717 -856-7085 4889--7781 -728-8597 2016--399 -7735-3949 -8297--578 3088-8942 5326--6739 -5520-2187 8368-4767 -8539-114 8392-674 7394--42 4467-1892 -9150--8551 -5165--6006 -8549-2194 2639-7265 -4208-4069 2460-1945 -2535-1578 -9190-2674 -7509-6247 -2031-1268 -2394-8152 -2850-9613 4428--989 -2753--4174 -9673--9456 -377--8050 5000--175 -7062--1374 -2682-5109 -3570-9459 2945-1831 4749--4659 3769-3436 -8866--7291 -106--1283 -9652--4890 -3191--391 -7902-3923 6755-7316 -4075--2269 503--4796 6736-7120 -4757-717 -9540-1108 2990--3919 -9581-3874 -1068-7877 -1497-4808 -4026--1056 1826-598 -5103-3932 2009-7253 1123-2390 8478--2250 4054--4816 7848--7872 8540--5764 9017--8614 -7620-9695 -1545--3431 3885-8777 7650-6842 -3173--3245 -484-3574 -4865-8724 -6370-610 -3452-3244 5665-7716 -6690-4425 -6481--6212 9308--5640 2289--7835 -3420--2632 -9449-5604 -8901-2129 3224--9000 7744--7525 9754--4499 9130-513 54--9782 9117--5093 4234--7655 9551-2958 -3938--5709 -7641-3954 9755--1537 -9813--1670 920--1039 6372-5533 -4499-8814 2651-1193 5626--2282 -4080-5054 -4854--2109 4801--8460 -8402--1536 8867-3338 -2099-2505 -8627--4636 8966-4107 1923-4234 5739-3667 -8998--7511 -2145--6137 3398-2176 4561-8744 2587--2897 -1632-3403 -8172--386 6691-229 -2756--541 9816--3099 6834-8162 8147--9037 -803--1843 -7050-8296 6872--7878 -6750-1084 3714--6653 687-6072 3450--3585 -8686--529 -6665--477 8294-2776 -8698-3186 -7769--1023 -6463-2107 2089--1009 -1117--5278 -7229--1114 -2353--8068 -4861--5258 -4808--9272 7167--784 154-6684 2570-5457 3279-652 738--3206 2600-3065 9240-9019 1312--7154 -3183--9257 -8973-5501 -7384-4804 -4042-9727 9031--2105 -4479--6286 615--7198 4205--9112 1145-8409 -8235-1941 3104-9086 -1453--5429 -8950--2774 -8248-3619 5837--383 9786--292 -8506-251 5689-3793 -3193-5351 -866-5597 3511--6373 3804-5198 -2845--616 7759--8954 5053--9598 3629--7066 4403--2789 4171-9078 7582-4709 615-3553 855--780 1579--5697 -8373--6425 -1467-8576 3788--6523 -8427-8566 8506--3358 -78-8641 9002--8385 8945--1465 -5944-490 -9432-5355 6421--1710 -436-1050 -6905--9696 -4845-1394 -8460--3670 8150-2116 4372--5478 -2596-8085 6323--7987 4225-9665 9135--6655 -5852--2492 2007--9511 8858--1456 3116-6646 -5422-1971 7050-9624 -8251--3621 209--8433 -5104-5849 -8533-9153 4255--5640 -3415-3912 -712--164 -8541-5309 -4637-4208 -969--738 6347--7890 -6659--7278 6735-1571 -2122-8077 -1520--439 9629--8818 2922-6341 -9384--6017 8140-6733 -8515--4037 -5102--1722 -4296--7326 5507--9405 3197-5092 -8253-6110 5895--8124 8867-4545 -2242--3982 -4433--7111 -3330--3815 1160--8521 -9800-4387 -1293-6356 -1888--3532 -8732-9209 1743--9149 -1884-7507 -9749--8362 4867-8266 690--7888 7957-9169 -1045--4930 -2685-9950 -4453--1534 -1330-4233 -1561--2123 4340-6957 1427-4329 -1067--2759 6186-407 4072-1271 -6983--6052 4717-2398 -1948-5262 3955--8976 6461--921 -8092--1865 -6112--6835 120-606 2548-2538 -621--8290 2256--3514 5078--7886 4401--6715 -8102-2624 -6301-4750 -4102-8529 5672-7840 -5851-3974 -40--2225 7215--2434 -9887-16 -9072-3175 -7808--374 614-1811 7398-2835 -6336--1095 8626--9938 7247-5475 -6078--7033 5869-1398 3660--8146 3502-8673 2385--7999 -116-9929 -6378-5162 -6226-2508 -9992-1636 -206--6441 -1641-1237 9504--332 9606-5305 -4656--3780 8249--2127 6525--9522 -3599-5458 -5235-2327 -7124--94 7023--3539 9482--9681 -5514--7740 -6415-5267 4404-600--478 -6108--7931 -8257-5437 2598--4905 2017-338 -7003--234 9945-8183 9397--7404 4325--8663 -6162-4135 2082--6283 -1974--8533 -5937--7827 4585-2804 1567-1763 3950-9289 7850-738 -9279--282 4195--6635 3180--4088 6818--6183 2259-8846 9284--5238 -4172--7046 -635--9854 7824-7117 -4078--6261 3804-5209 -3374--2633 6502-83 -1861-481 -2806--6492 -1582--3939 -598--4719 7694--7256 -1906-5724 -7608-492 3501-2172 -4842--5596 5923--6670 8847-1334 2929-964 434-2545 8797--493 -8474--6451 -3851--7197 -5872--1127 -955--5976 -4496-855 -1744-698 -6904--1361 8647-8071 -2896-4625 -4277--9376 -5986-5315 1919-6849 9293-5956 -5109--4865 4498--4876 -2200--1072 465--8458 -9965--8030 6232--3478 4031-3377 6021--9268 1946--5102 -8875--7210 -5683--7952 -5959-2451 -7738-6768 -7842-2549 -986--1948 9261--1132 9690-3361 6702--4238 -7800-860 2795--3178 9225--5152 -98--8795 -6794-1330 4752-1129 6864--2076 -4701--968 -3215-2820 2189--862 -4744-7394 -7140--3208 -8094-3394 -522--7538 -661--778 1969--9285 -6436-7864 -328--4911 708-1006 -8886-3519 -2234--7187 51-3862 -1494-10000 1022-1462 -6676-640 4344--8973 -7699-7373 756-275 -8045-1496 -2986--182 800--4559 -8929--2302 -9042--9214 5073-4862 -1954--2715 -6307--1933 1609--6767 -4673--9403 9382-7529 -7440-2390 1532-4806 1367-7513 -7139--8982 6729--4968 5321-7769 -9037-4511 -1337-9874 1193-9093 -7776--984 2358--7826 2866--2568 8116--6850 9480-8068 4708--7877 5946--4934 1790-9852 1505--3414 -8687-2986 -4768-4493 -7103-3821 -7398-806 7397-4173 5798--9667 -6958--534 -2248-8558 3249-169 3493-560 8554-8255 9438--2932 7384-5845 -652--7256 3320-6716 -2728-6154 -8145-6199 -2110--1645 -2133-2419 -2057-5517 6495--4177 7845--1742 -995-6102 -3625--7143 6140--6003 8956-3307 9801-2880 -424-5415 381-6305 -2513-5549 6375--1415 3041-6274 -7598-2279 327--7958 569--2868 9121-4369 -7391--984 2936--947 793-9590 7076-516 -2638-353 -8318--8643 2438-9645 8373-9079 222-904 -6136-5795 -7930--254 -2105-6493 5832-358 -9781-8251 6130-2479 -1900--6885 6316-2120 1378-2873 -7775-5777 -9640--6508 -7782--2647 8405-6046 -2136--7738 2216-2306 -7663-5273 9942--6600 6095-3994 6659--3998 -572-1272 -5218-6782 5380-6314 -9496--9705 -2579-7328 3392--3383 -1333-4057 8003--5840 615--409 -6616-4377 8588--6919 -9077-4363 1787--1168 4546-2960 431--7698 -2806-8361 -8488--7166 8413--2058 -7071-5337 5932--6070 -5050-5126 -7-5163 -6527--9111 -4326--6186 8127--2854 5134--902 8722--1747 -8435--5882 -6184--2996 -8167-6718 1481-6184 -7498--6290 4460--7224 9151--5512 207--3760 -6292--5662 8848-2410 2572--5152 1729-9204 -7750-7493 4762--6758 -9809-45 6791-2478 2880--644 6677--4297 7890-2184 4864--3102 9628-8183 3422--6977 4232--9169 -4010-2922 7982-502 -8751-590 -423--9109 -852-8776 -9319--7906 -6105--9823 6058--3419 -9986--3674 2085--3468 6546--9849 -3152-5393 6095--854 -9708--6240 4011-8492 2271--9727 -5482--958 6843--7184 6726--814 -5116--3460 -1615--6465 7737--4592 -8460--8317 -9704-3519 -694-954 4042--4159 704-3596 -5518--9264 -9559-352 4141-9203 -6052--2453 -9887--7399 -3010-6303 4032-6197 -8136--4693 8902-3032 6692-1984 4201--9747 -1212--8348 5995-5337 -355--6167 -715-3516 -22-7321 -509-9282 -7435--813 -1528-7692 -3585-5542 5627--7207 -9419-6657 4945--3262 -2783--8507 -3568--1128 8377-8040 -5729--5386 -7600--6993 -3890-7598 -9880--7638 -9842-5935 5767-7062 -8488-6617 -5988--7145 9072--775 -3937-4882 6977-3459 -8779-7448 -3017--1852 2011--3848 3532--2010 1283-4733 5289-1577 -8152--727 729--7720 -1644-4876 -6916-2269 -2294-254 536-7235 3235-8193 -1324-6276 1660-3191 -7545-464 -1970-7336 -57--5314 7320-2017 -2552-847 -7754--4322 -6452--358 -7568--9952 -102-6851 83-2430 3197-823 8093-6531 6897-2654 -2551-9191 7148-7382 8995--1712 -9315--3204 -1757-4570 -7711-2640 358-2059 -9791-9267 -3413--6229 8899-1802 9325-8089 9056--1937 -5968-2156 4957--6510 9620-6560 4429--8967 4206-1198 5778-7167 -6876--8175 -3371--7715 -4247-5064 6466--9609 -7239-7325 7290--1826 -8682-4124 -9064-551 7763--5802 5858--1673 -9313-1719 -8018-8186 -7180-2209 1656-9298 2321--6676 -2849-5908 -7598-9291 -3086-6934 8047-3137 4040--2217 -6407-9571 -5156--8233 4625--8933 1882--2376 4937--3413 9366-5183 9818--7769 -9400--3182 8071--339 8442-4019 -3641--7008 -3401-7727 -1506-7638 9459-9644 -6672--9220 1041--5446 4209-8458 -3638--329 1235-9697 -523-3530 9887-3479 7962--6735 5215-6141 3362--5103 8754--1347 6036-6372 -9981-9068 -5311-7079 870-9442 2633-8234 3357-3034 9332--4002 9868--3616 -3784--1094 4838-1469 -2095--8281 -5483-4474 6832--9693 6608-2411 699--8260 -2460-2971 -581--9770 8537-2676 -9303--6742 5223-4263 -8780-8395 -2030-6858 3196-8243 7010--1781 7453-4112 1913--4455 -5601--7558 3555--3547 1229-8068 2825--5561 -4178--7333 -2993-5523 7924-959 2469--1430 6371-2287 2717--4260 6509-4959 9433--1309 6183-4926 -4570-1538 3321-2473 -8901--7883 -9704--6550 6666-6956 -3906--5721 -4446-8431 2960--8612 588--3081 -8031-733 3316-2409 3127-3292 6248-6719 4398--9281 5831-2219 3396-8544 -2547--4290 1050--4343 3287--2719 -922-5077 -2973-3590 -6296--4342 6682-3280 4153-3374 1977-515 4964--3481 6940--7787 -4118--4436 6055-6308 7870--8716 -2716-2293 4462--9898 -915--9335 4760--6698 9963-4880 -851-5407 8443--7048 1814--8509 -7560--5952 -6287-8731 3006--3656 9897-5837 4415-1705 8668--3429 -9143-542 -8335--8825 -9222-7294 3542--195 5199--4419 1962-9324 3773--2501 -2313-906 5714-771 -5770--7873 -6618-6847 -6702--1158 -2050--8459 7361--2025 6863-4342 -2746--6599 8429--2882 3862-3496 -6402-5721 2146-8353 4257--6196 1732--9070 -8343--1725 -217--498 -8970-7746 3028-6238 3966-7374 1437-822 -5892-2045 8540--4255 -4342--3235 -5483--8385 7558--5206 8636-6150 8771--5282 102-1935 7963-594 6489--377 8264-4231 1472--2267 -6600--4305 5609--5835 -1234-5143 -4933-3105 4962-1953 5289-5549 7216-603 7396-853 -1929-2789 -4763--2803 -4961--3306 399--2690 -7086-4269 9428-7998 6452-4188 -4755--166 6914-4037 -4138--128 -338--8611 -225--286 -8533-2106 -298-5620 5522-5878 6452-2989 6612-1611 -3493-8830 6299--6960 3576-2171 -186-5203 -5992-7520 7449--137 -9811--5013 -6958-706 -2892--7076 5-9229 -3184--8894 -1778-3700 1490-2455 -9649--3106 4288--6589 -7235-8146 -959--4980 -7468-9856 7602--5219 -5232-503 9574-8054 3033--8763 -2439--5010 3286--2647 5296--8699 6041-2497 -7621-1073 3090--6468 2249--4238 3227-1746 -1638--7649 7299--1769 -3523-5442 -2344-1213 -3395-5755 -804-9140 -9754--2475 -9440-8876 4120-1168 9418-3577 -4734--973 -2218-4572 960-6884 9314-128 -2371--5729 7339-750 8322-7688 -2479--4055 6331--8805 1104-97 -2003--399 -4840-179--8432 -2704-2700 -6982--5532 -1817--4219 -955-7647 6747-862 -8977-2838 7423-9555 -2050-5493 -4048-8661 -8443--517 -9514--7387 -585--1161 -9128--2342 2191-2281 -2904-1398 5125-7567 727--9186 6685--2071 4052-7410 -8730-4107 -9253-4737 -2513--4094 5214-5915 -3335--8718 -8123-7124 -5956--4299 9507-7792 -3381--2005 8046--8286 4896-4505 2069-1795 -5362--5216 7203--3509 -4445--5087 -4611--5860 7751--7174 2125--2605 -5339-4839 8488--3371 7435-7760 -7113--4430 3288--4438 706--7699 9687--3431 7025--251 -6699--2395 -9627-4461 3218--5870 6009--9158 8175-2498 8913--2743 -2765-9445 8658--190 7067-9381 -9189-8281 -9825--1648 -5990-1725 5862--7439 1943--7367 -1997-1404 1089-4243 -3583--6615 -7547-2169 4913-1482 -201-5872 -3167-1928 8896--4768 3346-9515 -6423--1487 8621-2233 4799--9809 6177--3798 8365--3534 -6397--2328 5765-6657 -7119-4571 -7256--7753 6124-1394 1858-6589 -8456-7975 -6107-1091 2989--7815 3951--9203 7334-8147 -1657-6964 -607--2930 3675--2811 895--723 1353-8438 -5241-5702 9439--7631 -6847--1357 -4801--7894 -7409-7173 6959-4364 -272--7956 1674-33 1909-5687 -3660--7120 -5646-6477 8872-8857 4293--7219 -1738--5749 3911-7693 2054-5946 -1580--8872 5182--4635 7570--4788 967-3871 -2047--2925 9699-6831 -662-7497 8043--3206 8424--2560 9622--3626 2404--5846 3290--7749 -5437--342 -1818-7220 5212--9963 8087-9793 -2262-9792 8792--2751 -8646-2630 9700--2506 -509-5448 3533--3865 9167--3624 4387-808 -2350--1212 819-3820 1072-6030 8603-8558 9441--4891 -3232--9474 -6203--4254 195--1742 2656-7628 897-7640 -5194--788 1806--8699 -3446--4827 -8698--1453 -583--6840 -8169-6217 -4591--9242 -3960--7426 4473--1828 5556--1676 6371--957 5925-9149 -5764-8110 -8701-3225 -5326--4198 2784--9273 4852-6194 -5544-6159 2212-4750 -7176-386 490-198 8283--2424 -4343--4356 5166-8952 -6533-8965 8397--6683 -5180-6540 2807-2852 -1592-7696 8362--8994 -3456--9829 4006--68 7629--4 4862--1788 7590-5131 -9615--7513 1861--2059 -2519-7198 5174-1444 3139-139-148 -6373-4363 7764--6007 -5-25 613-6493 -1294--4164 711--4719 -8204--6503 -3807--2149 5652--1431 -1202-3274 -6877-6687 -9582-4030 8791-105 -7745--6827 -5103--3266 -9926-8669 -6240--8161 8870-2738 -1856-7958 2311--8957 3046-9287 -1299--5274 -2232--7004 -2722-4481 4134-4797 -2872-2190 -430-6308 -388-7253 8782--6030 -1833-9031 8390--6421 -3008-1231 1885--9369 -9529--2674 3805--2351 -2301--2481 -3633--2506 2578--5431 8052-4222 1747-4639 1004--5603 2011--9058 9189--6674 5251-2523 -1165-8227 3244-5427 -7310--1517 -4045--7198 1271-8095 -9348--9886 8042-856 -2680-3466 4493--8185 1323-371 7011-4918 2936-3491 5716-3039 6575-1421 6699--5267 -5899--9012 7766--4198 1741-8288 4333-4569 8080--2445 4265-3168 -5127-755 -990-6619 -2072-5980 8829--4404 -4563-3827 4233--7661 -9429-322 2767--2674 -2590--1714 5274--8365 -6044--1386 7545-9878 9241--2413 -6485-6928 299--235 2360--1564 -840--8431 -9936--2805 6633-7277 -7498--3050 5741-819 98--1949 -9717--7820 -4955-9409 -8057-6315 2185-8420 -8101--6148 7084--1867 4347--5541 8143-6106 -5830--3357 9176--7039 -328-5259 9478--7574 6971-4841 7156--4173 -7723-9961 -4922-3024 8748-3129 1344-6351 4189-1772 -6661-5339 -8398-559 -4111--3144 3514--9908 686-4764 -3199--4904 8915--6578 -7596--9132 51-3324 1248--4708 1630--1505 7459--7755 -1179-3099 6981-3087 -6820--1371 422-7775 -8707-5139 -2254--5059 71-9995 6547-4104 6033--4553 2621--4707 -738--5853 -7318-9983 3973--5831 -190-3857 -6480-1200 6078-8911 4171-9725 -9194--4660 781--2467 8910-5521 -603-892-1235 -3989-8909 7665--6357 4653--1756 -510-8152 9191-2758 2834--1139 -4354--1350 -8492--169 -9194-9480 -8016-8897 260--5232 2026-7809 -4296--4210 6670--7692 8880-9108 6885-6931 5033--9540 -2061-9668 -8494-4135 7628--3418 790-8394 6474--5568 7451--177 5813--1137 -7959--973 -3950-2555 -7781--6211 6465--2662 2516--11 -7084--5548 -3669-1404 -4723-211 9670--4155 -1122-4272 1966--3859 3469-2816 -3482--6231 5953--6780 -3291-973 -8863--8900 -4772--8004 -2751--9165 6506--7915 -8516--3967 -7717--4887 9161--103 -1928-8868 -1771-4140 7584-3774 -3372--8148 9135-9005 -7990--5192 -7628-4896 9658-4608 -4601--8386 7746-354 -1379-45 710-4037 -9234-9937 1652--3217 -2424-7386 5763-7520 -2701--6073 -4016--9312 7198--833 1360--7992 -1524-7812 -551-8220 6525--2224 1127--2934 -3620-2921 -2864--3366 -9458--2853 1987--4666 -721--6625 1990-1614 -6331-6401 6759-471 3783--7163 -1129--3643 -9353--9146 -3356--1225 5741-2485 4686-2277 -5608--3201 1606--8039 -245-9961 -6396-6049 -8759--178 -865--7203 -7671--6129 -8819--931 1706--7274 -4923-4641 1362-9593 -5433-8469 -8295-6549 6811-348 -7679-5332 5893--1331 6300--4899 -7488--8342 9358-6328 -7092-3440 4067--5112 -5391--7907 3979-1099 3890--9557 -4371-8399 5187--9308 7813-3550 7776-7435 9999-7951 2274-9329 -2441--9575 4991--794 -7649-7685 400-9772 -9887--9574 795--54 -1532-4530 -156--4916 6149--9620 -3013--4780 6553--2034 2749--3188 -3043-7694 -4783-99 269-2814 4883-1929 425--3878 3655-7378 -5058-3512 4199-5665 -8810-3760 -5971--905 844--4083 -3102--1068 -6316--5536 5371-9431 1745-732 -2208--2336 4158--9785 -3445-4597 -7754-5142 -5702--6308 -7100-963 -7370-1274 -3616-4010 -845-6629 -1837-8896 5410-3791 -194-7853 -3826--7276 -9347-6405 2574-4239 5901--8080 6685-38 -2973-2990 5165-836 1591-759 -7666-1152 6265--3254 8501--4647 517-2688 -7988--9740 8036--4660 8603-1060 -7583-7497 -7306-5061 165-8274 -9638-5852 9829--7063 6673--1670 3876-9730 -9690-412 -1183-1553 7647-7089 7481--6300 9308-1488 285--4924 -7113--4518 1244--3366 7672-7188 1293-5067 -7775--3008 568-7995 -9363-7730 3767-551 6674--9015 -6047-7349 -8251-9438 -4948-1537 -7433--8894 5959--4031 -7514--2532 -6917--1169 -9097-2163 -1596-4992 -9869--7910 -6328-101 -4746-3284 7638--1030 -1845-2649 -7754-2965 3093-4088 -5792-6125 -4159--8418 9162--4724 -3425--3759 652-6887 -3950--4890 8504--3451 -7072--3625 -6598-1154 5020-6298 5207--9128 6799--8276 2995--5862 -2393--8598 -256-1455 -5565--5991 -8764--5347 2637--9924 8033--4598 7743--6405 -2718--6097 -2499-5730 -9294-2679 -2234--5052 2219--8122 1355--9650 2571--1997 -7228--4674 2024-5025 6930-3589 5703-3295 -5959--7643 5355-2835 2563--1350 2206--106 4567--3945 -1058-8854 9797-9617 9561-9655 -9349-6335 9288-3745 -5928--6504 -3635--5540 -2818--5266 3121-2780 -1045-8892 -4766--2997 -7961--4025 2911-2329 5270-826 3862-4556 6569--6346 2913-3061 -6964--157 -4647--9855 3054--8602 -1534--7038 3528-7558 6520-9625 -7878-6256 2147--926 1319-9354 2907--7153 2786--1509 -9637--3339 -1568-5296 -793--6277 5653--2382 -2078--1858 -7519--5857 -1093--6523 3034-7887 1801--5840 3240--6743 5975-5781 2476-1044 -9330-2913 -2830-2736 -6622--986 -6344-4970 6465-4582 -1732--4035 -3127-1628 3357--5976 -9888--6379 235-9 1587-2805 6027--2712 -8455-2682 -7250-3010 7512-7299 5366--4000 -1170-2716 -7595--4642 -6219--6148 -8046-6716 -2351--5317 4049--8374 -3598-2607 -981--9190 3145--7161 582-6154 1118-8467 -2000--9438 -5084--9340 3900--2601 -9436--9064 -4124-5489 -8849-9641 -3671--5640 -4900--8591 -3769-7133 -2856--7561 6995--1886 9024--209 3381--780 322-7026 4855--388 -7939-7427 -343-7390 -6381--8491 -6068--7424 -7330--4025 5295-8545 -6720--9069 2098--6638 -2452-1019 9461--4782 -478-9926 -3258--2669 -4800--6425 6857-8687 -5061--1008 2047--4866 -4409-9252 984--7646 8578-3226 3853--3904 -5945--191 3462-6504 -973-6464 7785--2688 8354-6010 -1186--4780 79-3027 1295-3050 -9493-6074 -3702--8987 1536--64 6577-4840 -4076-7128 5323--8983 -293-7888 -1702--8615 6810-7247 7619--2395 -9575-7508 -1887--9274 -8648-8030 7601-2304 770--5791 7140--6455 -5424--2090 2112-6593 -4981-6438 -7170-2414 1327--2307 3547--3402 3189--6359 -5045-6423 6320-2313 152--5897 3150-8079 1615-9839 -97-6341 -1944-2269 9766--6462 -8539--2482 -4110-7675 -741--5833 -9279-1812 -4494--8613 -1704-7589 -3441-6810 7388--3485 -3567--3663 4258--7573 9566-9653 -6977-419 -1856-4354 1300-2095 -594--8274 4162-732 2661-344 3760--9997 7702-5297 5984--4177 5537-2347 -4627--6878 -2454--217 7249--1680 9854--9219 154-2639 -9304--7365 5771--5240 -7116--4521 -3552-8687 -5432-9360 4976-6548 6006--7885 -3782--7286 -3266-794 4067-7844 -3674-4219 -3546-1942 3960-349 -4190-8096 7431--479 5523--8175 -9578--8227 -9099-7202 -131-7587 -5813-8456 7811--5824 1825-240 -9548--2235 1704--9748 -9907--5001 4145--4795 -7822-6132 3924--1943 2716--5358 585-1908 9015--4122 -9190-189 -920-5933 6155--5980 -8252-9745 2375-2651 -5899-5535 -8292-7951 8777-5870 1858--728 1950-6827 5027-6653 2522-8623 -4891-3438 -3203-2620 1716-1423 -2823--8474 -4394-2389 185-2604 -9474--6278 -5724-2249 6913--6823 8796--1572 -6678-3976 664-920 -2130-9304 542--1072 6784--9660 5371-9043 8280-7741 -1490-6895 -7662-6343 7799--177 -8519-6067 -8020--3688 -1769-3356 -8145-8525 7018--3452 7142-6386 -5906-345 1465-6768 -5225-7366 892--3663 -332-4450 1668-426 -4215-5292 1903-6508 -9875-1962 -1222--4327 9434--6354 -6818--7894 9751--476 -1342--5052 -5972--8528 -8077--9533 3250--3199 900--3671 -2684-2265 419--2298 -6514--6802 3565--5175 2203-2631 6434--9089 7492-4242 -1066--6164 1070--8818 6938-6239 5153-5233 4122--7210 -5342--4233 6836-5985 6689-2364 -8794--3184 8437--9952 9423--4986 -63--3208 6460-4644 -2203--4391 5619-1873 9182--2030 7211-7706 -7641--7489 -3625--8944 3656-8418 -7845-5863 7380-7458 8288--5040 -73--8928 526--516 -8028--366 9012--7818 -4483-3381 1583--7457 -6648--5260 7489--748 -411-2290 4179--4534 -4093--8147 -2195-1533 -3637-9586 -2277--6706 -7120--8901 -4019--1138 -7812--7901 -3577-504 -1074-3000 4300-1425 -2557--6131 -7426--3824 -2637--7709 -1823--226 -1632--1017 7961--1997 9608-8911 9248--6409 7824--3349 7960--7705 -9500--6588 9763--4672 1376--7573 8255--5204 -7149-5982 -8625--1003 872--9557 -1137--9555 6319--9676 -3812-2432 -610--7669 5686-8516 8373-546 9094--7608 -325-7552 6720-3201 -9662--9807 5483--6158 -736--9959 -3481--1425 -9587--1610 2613-6963 -4756-7267 3696--7098 -8082-1454 -8962-2616 4413--3265 -8008-2474 -8231--8410 -5653--4039 -484--1564 6991-7503 9157-672 -1842-4382 4541-2603 6817--3292 6453--8822 -3298--8380 -7759--1616 4569-3615 2646--2341 -4053-7577 2686-1359 -7279-2174 -2908--801 7799-5886 7330-5296 9062-959 -8301-4759 -6168-6359 7987--6456 7958--1414 1017--8058 -242-4641 7892--13 -5492-9923 -8660-8304 -5398-9886 6562-8664 6669-7312 8595-8578 9587--1823 5672-2373 1024--2780 -8469-1315 1389-3120 1926--4963 4583--3699 -7480--3304 3298--175 -9761-3644 -7615--5511 2884-5219 1907-6302 9365--2506 2702-9163 -2874-5559 -4502-5507 2660-6577 329-5058 7211-2832 -7976-1095 -3536-3 4986-6158 -7349--2895 -5661--46 -5942--7107 7601--8357 -4690-9154 167--7455 9664-7578 -1485--7050 4247--1751 -6945-8044 7263-199 -9675--7368 -8484--20 -8266-351 -8620--2121 -8740--8563 -6002-6676 -6007--8273 9574-175 -6926--4505 8002--8229 7456--469 3178--2882 2240--7476 2106--3046 9260--4861 -997--1819 3845-1179 5869--9168 1096-3375 5904--9838 7511-2721 9576--6206 8327-625 1994-7875 720--9218 1433--8543 2260--2482 3898--7593 -6329--429 -1955--6327 -7817-5441 3766--9662 9282--8490 6139--2873 -5564--4191 -4604--3018 6489--5698 4013-1346 956--7986 -8832-3100 -7955-8871 1180--9867 -9734-6074 2429--8751 4793--4025 -2965-3302 6619-105 -8185-2943 127-845 -5423-6711 5544--386 -3710--3762 2153-5280 -3332-9740 6648--9555 -4416-5770 -7880-6479 -777-9899 4312-1073 7941--3249 -3302--6852 -2953--8839 -4808-7421 931-1218 215--1336 5506--9972 5933-338 5333--769 -2035-2847 -2303-3516 4546--2606 -1050-4717 3290-7884 5472-4286 8581--7269 5576--9679 -5275-5191 4006-6519 -4794--9122 -10--8094 6837-689 8981--6414 1826-7994 864-4322 -1975-8944 4479-3065 8058-6210 6255-2515 -4999--668 -7493-7325 -5855--8437 -734--2140 5348--7153 -5309-2316 1731-8879 -1923--326 -6142--143 -2470-1852 3331-7161 -5666-9667 3539--4420 7590-6533 9715--9900 8529--6242 -5330-1163 -2884--617 8717-2006 -4717-53 -421-3271 -6243--655 -9932--1214 -3383-4466 -2464--6260 -6657--5252 -8806--2790 -6776--5071 -9170-2965 1481--4509 7607--5698 -895-2726 4990-5450 -6497--3948 4820-9068 -4109--6091 2978-5982 -8229--6770 -674-3605 -9562-8666 -9297--948 -3558--5459 9149--7546 -504-2026 343--731 2394-1069 -3086-7529 66--700 3666--8781 2654-844 1973--2526 7607-9965 8929-3225 3221--2543 3891-194 3168-7507 -4823-9896 6302--1433 7921-4916 -6946--5909 -5971--7532 7947--5331 -7965-67 3623--1924 -8848-4364 -3477-6122 9176-971 -4609-8718 -3996-3837 -3080--865 7253-3592 -354--5507 667--5885 -2534--6994 5170--9239 9296--8714 -9289-9869 -9135--9907 -1985-8069 -2042--4590 683--8566 -8908-9636 9834-835 1030--1364 -9345--4167 5062-4287 3356-7187 -3689--8008 5411-9167 5904--6537 9007-9047 5203--6718 -6603-6889 -8528--2444 8143-7581 8067-5688 -1200--4766 1634--5741 -2422--4742 -1572--7592 2637--5324 -3826--8426 9232--4140 -3805-3168 9401--7070 4904-2607 -304-4815 2926--7888 -6362-2750 3572-2508 627-7692 1812--7761 -5473--6604 -3532--6038 7477-3105 -6482--3089 9881--5836 8100--3209 642--4256 -2169--6630 317-1871 4637--4951 -5123-5589 -1507-1525 7161--5539 5672-3623 5272--7793 -8215-5502 -6613-2036 -9225--7120 8550--9291 6831-1232 -4322--9135 7840--9325 9436--1440 -2571--3529 -7407--6090 7765-2420 -7785-6611 -4115-6802 -4253-5755 -2239--9823 9010--7136 -5312--4478 9052-1568 -343--7054 1249-6207 -1550--7162 2283-9008 -126-4935 5993--8056 -3027--6525 -2498-16-9860 -4911--5186 699-8339 3491-6887 -6330--541 7369--4383 -1636--1222 -9506--3675 3742-4800 337-3437 -1504--6334 -1571-5449 -8346--5121 2768--8717 9555--5957 -3386--1194 7183-993-6035 -1724--601 8473-1071 -3061-1998 152-8944 9355--4119 213--6412 2389-824 8000--5199 -4654--2896 7978--7780 -8949-6629 2260--6399 -8143-7125 7466--1619 -3181-1294 -4522-4846 6631--1018 -1160--2934 8044-8223 -6544-7535 -831--4151 -2218-9994 -4578--5351 -4317--6617 9454--1378 -3880-4925 9453--8969 8616-6264 9455-5234 724--171 -2564-2931 5057-3109 -6605--3581 6169--4625 -3631--1967 5441--3110 1266-4215 5116--8960 2224--581 1875-4961 -6503--8383 6930--2944 -5067--218 7031--3873 6270-4250 -5041--3127 9931--6479 6525-8971 988--9371 311-4596 623-1901 -8109--1640 -3590-667 501--1318 -6415-1176 5917--2087 -4419-2331 1272--3799 232-8748 -1735--7109 -6271-2131 -5903--6857 -8396-6308 2922-2488 -1291--8578 8458--1493 -3004-9477 -9564--3063 -6599--4684 7228-7449 -9612-1336 690-8912 7716-4431 4015-2733 -4461-7328 -725-9184 4534--368 -4804-3692 4578--644 -2509--7081 -7139--9766 9204-106 1600--3908 -9847--7491 5931--7104 6942--9414 4545--8305 3002--7439 -1358-9946 8413-6387 4319-2236 -6938--5455 -7153-6780 6466-3152 5620-4327 -6593--3908 -1455-1433 -8559-9335 4835-3890 -1405-2587 273-4671 -1177--3587 -4517--2718 -9750--9272 1327--6236 5356-5675 3284-9391 -9881--8795 -7949-2543 -3751--4209 -52--7604 -7171-4972 -7749--5006 3107-590 -200--5516 7848-3203 -3466--9059 1279-783 -3705--3267 -44-1176 6624--2780 -9535--8744 -343-178 -4327-1880 -5100--7056 -5109--7879 -7338-9275 -7697-1201 -1920-1067 3704-5929 2175--8341 -9732--7416 1659-4321 -5535--4582 3768--9458 -6614-6140 4044-7091 3616-7527 7601--2591 -6054--5222 2035-9027 8400-6931 8706--4177 9061-6999 1646--8524 -749-9217 -7628--3067 4585--2599 2178--4970 6786--5267 2640-2570 -875-9470 -7376-4459 -3726-1483 -4955-1361 -1309--1613 9399--5058 -9104--7778 -7088-2964 9693--7285 9727--5560 -6087--3515 2749-8095 2169-4090 1682-4443 -7590-3942 6904--9844 3024--9784 6461-6198 9777-9316 4730--8019 -9399--7816 -1925--4586 -5165-2560 -9845--2702 8368-5375 7283--7122 -5252-3131 -8318--299 -5434--2427 6105--5204 -1803-2115 -32--1966 -8800--7273 -72--4945 -3967-8429 578-9896 -7688--9177 9355-8488 5994--7271 -1607--3291 7709--5543 9701-5731 6695-44 8367--9386 7820-4020 -612-2697 -5284-4831 7126--9133 8946--9027 -8204-7778 -2544-8877 3113--59 -185-2434 -3395--2166 -1146-3679 9736-3310 -9840-2550 9422--9550 1834--3856 -5179--7763 9968--3016 654--1503 1814-8727 9468-3059 -6998--7626 -7103--9479 -9090--1892 8185-3507 -8042--3880 -8857-9596 8892--8734 5769-1763 -9761--8091 8945-9544 -6896-4463 231--8352 7593-6352 -6650-2818 1274-8243 5033-1475 -9231--2859 1748--2150 7267--3900 -751--7227 8222--7645 -6111--5524 -9561--5404 3319--8746 4937--1667 5415-6115 -5784-9362 -7127-9646 -53-6392 79-6462 8378--886 2288-8963 -7892--1189 7037-2348 8195-6329 1239--7161 6030-4616 8636--7310 9856-7104 1890--9778 1643--5709 -5821-3252 -4495-5702 8753-8858 4310--5759 -5036-5661 -6648--5608 9352-6948 5207--9126 -7630-3362 4805-1743 7078-2885 7884-6385 -6682-7861 -8857--108 -7954-7467 2995-2885 -2088-7470 -7885-2755 411--5405 7437-1193 2256-5034 2969--8140 1765--3185 8919-4289 -2478-197 -2619-4361 -3154-3259 1711--6535 1048-5260 -1358--9883 -2953--8299 5387--4878 -6521-5440 -1791-1373 -4495--7550 -5812--3940 -8153-8332 -3908-8356 6503-648 69--807 -5673-7215 -3469--4802 7943--9276 -1263-4305 8833--6488 -1245-5430 7943--6366 -9747-8345 -7780-9265 8749--44 -2724--7007 -5644--3871 -4428--4243 2074-525 6372--9608 6814--3325 38--8323 4279-963 -5346-8918 3429-7491 3181-7621 4040-3219 887--8796 7317-8978 8674--8710 8173--1722 8405-1865 -3005--3986 4292--2767 7374--6917 5517--4602 4592--282 333-9633 -5393--8713 -6295-7422 -6192-5167 2904--9349 -3670--2398 5612--6413 -2890-5468 -206--552 -3457-2499 409--4801 -8576-4707 5212--4597 2051-1402 1810-4596 8152-7229 -6268--5651 -5728-6501 3717-4677 -8615-700 5706--831 9526-2960 -3625-5517 -5907--2124 -4454-7054 4046-3616 9481-5679 -8602--3106 -5974-8449 -1853-9010 -7414-5996 8684--2233 3102-6513 -7975--8103 8845-6576 -9626--9981 8762-8076 9517--7895 4391--9840 9190--4383 9312-8576 2398--1273 2468--6599 -7977-9764 2670-2938 -6935-336 -4571-2716 4909-1908 1872--4636 1195-5031 5817-6847 6063-8450 2577--1373 1256--7750 -5421-9949 9261-1286 962-3214 3588--2824 -1587--3752 -3289-9322 -5919-2547 4425--5133 -4106-4783 -5659-946 -9382--4727 -354--4928 -3229-1639 -101--3074 903-4536 -2298-3729 -2116--7419 2288--3848 -9682-6484 -588--3342 -5534-2116 -9485--2348 -9930--5314 311--5972 -3979--1544 -506--704 -5492-6384 -3823--2781 4671-5798 -8306--4318 9085--4417 3387-8836 2177--776 8912--5798 493-510 -1838-2637 -9433-3648 -595-609 4022--4770 -1358--4790 -6156--7969 9655--3397 -3407--8246 732--4923 -1807--6737 6147--4307 -471-8026 -4781--5536 -9-1165 5624-2842 3590--7015 4648-6372 -9367-2703 -4563--2914 -7241--6934 -7169-5410 1943-5684 1980--5444 -8961--3399 9673--3031 -6850-9415 -5556--4211 8022-9031 4593--3287 4590--3562 -9949--5294 9677--9507 -5136--2464 -5940--1020 -1820-3646 -3325-7633 2188--2262 8892-4090 134--3722 8294--3098 2833--5990 2065--162 -9197-5126 1762--9462 1211-8051 5908-8251 -8086--2762 9917-2887 7226--8078 7043--4694 984--3678 -6944--3136 6020--4962 -8874-6649 5908--5930 1857--6540 7326--9864 3593--9807 4086--4878 3149-7157 -320-7057 6290-3198 -5975--5022 2616--8944 6397--5048 2954--1818 -5393-6602 -951-3005 -2483--1277 8254-5729 2572-3168 -2232-2387 -6714--417 -7688--84 2083--4168 -3294-635 4894--9652 -7477--4241 -2205--8501 899-421 -2226-5689 -9353--2182 9793--286 3050--779 2460-1913 -293-4379 2371-9310 7627--3116 -1270-5862 -4755-4993 -5521-7844 -8627-1643 -3146--246 9753-3937 4586--2623 7591-1298 284-1045 -3435--6294 9722-5806 -3257--1143 2196--8630 3639--8282 8264--3508 3845--9714 8704--2256 -6058-1396 2421-16 3606-3819 -890--1402 9800-3193 -7757-7407 5459-9522 4322--7397 -4222--8028 -6360--9711 1302-9050 -12-5309 -2102--6051 -8248--5636 337-9748 -3439-8161 -3450-1677 2513--7011 9838--6614 2422-9102 -2130--2706 -7625-8342 8940-7289 9043-1112 -9508-1902 109--6980 9192-155 5821--4179 6797--570 -7168-3922 -4144-2780 -4684--4095 8967--7062 -8878--6873 -4463--1444 -4816--1201 5530--6132 5577--9539 3054--3935 9098--3204 -4724-1214 5154--7794 -3425-721 -1446-7232 4812--1622 -297-6084 355-8697 -5267-7738 -1018-2617 -9381-1089 -5061--5187 213--6152 8536--9833 390-3841 8466--6509 8259--2366 -2129--7276 8269--8754 -5765-8796 5785--8295 -1489--1782 -169-2425 4203-749 -7518-8088 9881--8300 43-1545 1233--589 -5892--1465 -2611-8622 610--8419 1288-788 8713-8789 -9078-3886 8945-750 3443-209 -574-6428 9176--8461 5262-159 5875--3550 -4614--80 3252--6225 -472-1001 -5005--4456 7389-9728 -1674--4449 4044-2669 -1501-4259 -8163--9929 6757-6583 7318--6059 7196--9132 249--3550 199-445 1788-8545 8429--6795 -4402--328 8878--4932 6328--166 -6363--968 5318-6616 277--4786 -7599--157 -9639--7060 293-326 6650-3680 -5565-1017 -9421--1279 -8770--3838 -6847--6077 8435--681 -1676--7499 -8127-7217 2611--3534 -4156-7008 -8586--3882 6583--4480 7251--4578 7053--7741 3289-5388 6252-8476 -2420--9783 5182--186 -7184--9548 7273-2848 -5244-6638 8449--4835 -1448--7877 9228--4458 -3873--9886 -8210-2777 2017--7055 -4376--5749 3076--5349 -4136-6994 -6929-960 46--4867 146--3872 6958--138 -3011--1230 -2988--2463 7594-1268 1002--9899 -2674--7581 4324-1800 8125-6973 3306--4870 9882--2013 1219-8977 7817--6426 2174--7034 -3712-2134 7920-2907 158--5840 5991-2110 -2971-7873 -9381-6513 -2106-8996 3082-9161 4026--9554 7389-8176 6346--4434 -8767--7693 2600--2519 -7947-8616 6992-6452 5235-9658 -8762--7098 -3124-4167 -5851--6825 1123-3880 -108-2446 -5893-5730 6812--5601 8230-7673 -5548--1655 18--8833 -4479--4064 -4504-4610 -7912--866 -6935--5399 828-6063 -8246-4622 7523--5033 1603-9008 7180--5733 4001--5477 1048-7845 -9093-302 9359-258 3857-1419 -8938--660 -5748-4916 -6331--1169 -8989-9613 -6033--1709 -1632-1516 744-1346 -5789--5135 1529--1008 1624-5575 -9427-9526 734--2173 -4174-3290 1011-7652 2344-6980 1573-1375 -1150--1231 5559-2093 3538-400 -1567-886 -9351--5275 6417-144 -6802--9037 3762-1723 -6864-1506 -4648-8452 -7681-7506 3402--9970 -4094-6730 -2543--2011 5808-3093 6521--221 5956-8196 -9250-206 7936-5836 -7064-5022 -6261-1639 2405--2534 9487--7840 -8219--7155 9--2783 -4347-8679 3714-7966 -3240-8529 6362-2416 -9345-788 -9978--9287 55--6 1241-7796 2371--6969 2311-9859 2225-9131 6668--832 -1742--3756 746--6200 -228-1088 -3147-2439 2251-8418 6366-6049 7936--9528 1533-9971 -3015--9888 3428-6355 -4173--8888 842-7064 2313-7424 -2072--5130 -5874--1532 -3543--7651 8737-3912 8328-3442 -477--8014 914--7495 -9337-9899 -2148--3132 -4597-8613 -8786-1010 3995--8713 -6581-4750 9182-2483 7862--9770 -3296--6785 9725--119 1914-7428 -4149-7372 -8119-9365 713--4107 9821-1360 8755--9536 -2739-4731 5141--9973 762--2250 -1818-8342 -5866-1966 4387--468 -2538-757 321-353 8868-2088 -1567--6514 -1985-9518 3351--7614 1210-971 -1882--84 -6690-9404 8365--8558 -7207--201 -4954--7922 -4083--6702 2052--9124 -2323--3763 -7746--7298 -1778--6645 -3847-1070 -4419-4216 6945-2490 -1987--6198 -1738--9554 7880-8744 -6063-5334 -4880-3027 -6479-3390 857-9701 -655-4534 1955--6142 -4200--4883 7058-467 -4391-7977 -2793--5345 5527--1526 -8622-370 7550--7957 -538-9520 9288--3725 -4178-9897 -8048-2415 2893--4166 -8449--6094 -8498-6828 7132-7076 3724--9954 8046-6022 -6995-8778 296--7749 -8885--7385 7401-8909 425-9005 3043--2964 -5078-2461 9063-6638 338--6724 2279-8480 -5753-5317 9897--4548 -9569--7279 4893-8035 -8430-4006 -7830-9607 1796-659 7593-5857 9770-6337 7833--6977 8340-2328 -1808-7109 -8926--3590 -7159--8675 -7836-5727 5716--3777 4163-8130 7739--2522 9844-7189 -3223--5717 3272--7617 -6734--6692 -8099-3521 -4697-2299 -8081-5626 1562-8550 3792--7622 5265-3631 -4485-6459 -756-9985 -7998--1888 6328--711 9765--236 -7286--3206 -7861-5518 5196--5346 9832--1021 -6551-8227 -1405--2233 272--546 8500--2674 -2654-3001 -5860--6102 1112--8067 -1889-8766 4898--3809 8988-3460 5009--801 -373--9249 -8166--8117 7246-1163 2900--920 3548-3172 -8487--6843 8740-5060 -1077--664 -6450--4762 6487--3493 -9750--3424 -759--4843 -5965--1537 275--1855 8110-5024 -3116-9882 -4453-6174 369-7308 -2704-569 -1789--5514 -2209-4477 -7920-4235 5421-5242 9085--1970 9282-807 8374--2509 -8003--6917 -1363-1927 427-8753 -1334-2447 -3113-6882 -5544-9055 -2956-1571 6589-9410 -1532--982 5918--2015 6185-5996 183--8291 -2737-5966 1410--1893 -9150-4786 -4081--7328 -8317--2492 -8973--4951 6461-9492 9392-4819 -180-566 1090--922 -3578-121 -8688--1415 -4537-367 -6263--1774 -5835--7629 2301--6043 1047-3993 7686-367 -3717-9449 2533-2796 3410-4017 3663--489 9882--9760 4457--5028 8673--1388 9678-1185 -1168-3979 329--1510 4728--2793 5780--6965 -1494--2856 2865--4444 -649--6393 -1306--7601 9597--6629 -7964--2573 -8188--2828 -3356-4870 -7534-8511 -4948-8425 9725--6816 2877-8373 7869-9141 1736-930--8095 7790--1254 -9180--7009 4506--1188 8518-3270 -6208--5648 8642-2669 9666--366 -7279--8241 8806--5426 2100-4367 -6728-7383 6773-975 8077-5319 4553--4318 5177--3083 8748-14 6268-2874 -3864-7679 -7520-155 2547--4574 -72--4780 4300--1585 -8448--994 -8604-1221 7584-8812 -6238-8847 -8704-3504 685--8980 5410--5171 -729-3306 -8129-7614 24-5886 -2637-4281 -6325-8059 5466-1792 5039--5520 7921--1676 2945--7336 -969-3068 4036--9215 3197--5926 -849--2217 8422--2166 -5449-6038 4418-7777 2558--2762 9544--1473 -3121--3174 -4594-238 9539--4254 -264-1754 -4419--1457 -3681--4128 4541--5339 3874--1989 -8874-7358 3938-4050 -2227--7165 920-5025 -2963-5356 -2275--4398 3463-13 2804--6395 6193-7869 3290-5544 31--7608 -9078-308 -5874--9353 -582--9437 -4584--9795 5524--8665 -4976--3901 -678-7122 -1061--5775 5866-3336 -3157-1123 -4988--4611 -6270-7545 8563--1836 1794-5994 -9672-7119 972-9925 -212-240 5333-9336 1671-9476 -1312-3237 3431-4438 -7746--690 -9773-36 8230--4842 -487-7202 -1046--7576 -3257--7208 -5000-7870 -5166--7626 -4035-2008 -9850-990 -4169-8721 -2374--3732 -1378-9351 4638--2954 3599--9705 -4654-2095 -3764--9015 -4543-2443 -6240-858 -8249--3360 5603-2149 -3174--6240 -8190--347 2599--1119 -7488--6849 6133-5764 -7228--7573 -4306--6424 5542-8963 -3182-9624 -4011-2438 8071--3460 -4517-335 -1157-1608 1480-9943 -4785-8676 -4261-1537 6441--3499 -1150-2969 -7403-3403 -9848--5887 -2002--2958 -2923--1651 6317--141 3512-5645 44-6749 928-8585 -1700-2562 2736-7010 7355-9825 3915--2146 4873--1323 -7916--9533 3046-1326 -4509-3083 6528-5026 1247--3920 -3336--4226 9373-198 -8638--4135 -6504-8766 -8405--2806 -5955--8509 7624--8688 -9270-3613 -3991-6071 574-6711 9646--9650 6273-5579 -2338-7403 3288--8876 4453--9957 2691-2691 -5735--6779 5904--3912 4099-1440 -9754--1368 -8460--8490 2868--5448 -794--1643 -900-4232 -2247-3597 78--7711 -4169--7542 -417--4771 -2421--8815 7212-5118 7277-7223 9953-8989 2106--2045 3459-1321 7313-3424 6240-163 5253-5165 3793-9740 -4322-5440 -4395--2822 432--405 -5055-8812 8868--4660 5092-1516 1073--3633 -5524--8995 5694--2129 1784--3159 -71--5928 5678-1373 4503-3774 -5760-2936 9600--4124 1228-1501 6529-8032 -1502-7516 -6651--7716 5268--5301 5746-4316 4583--5280 -3128--9208 3262-3268 7062-7052 -9512-9861 -5022-5854 -526--8051 -5778--5527 -2899-9632 1485-4455 -1653--3847 4240--3587 -7451--2423 -369-6256 5259-9291 4088-8761 8574--9680 -8459--20 6879--5181 1481--9102 1777-2879 -9426--972 -5159-7779 1064-9182 4254--9647 6559-400 -3194-3714 -3825--1337 -388--2307 5216--1247 5430-6831 -2868-8395 -2668--1250 -3985-466 3165-8111 -4694-4728 3057--6496 -9684-9267 -1497-6555 4092-8678 3217--6038 183--3673 47-4261 1444--8803 5636-2132 466--7398 9929-2013 -211--7959 1808-5619 -3120-719 -8593--2260 2584--1052 -5858--8751 7296-3096 1367--9774 -8928--3710 4981-6929 2266--5831 -1781--7455 12--8387 -33-1649 -7735--4007 -6563-3884 -8311-6322 -8486--7756 6153-8082 7133-4917 -4776-7417 809-7840 -5968-6848 9207-5243 -6999-3501 4163-8280 151-6485 -5842--3381 -7410--5378 40-9564 -3867--8626 1072--6140 9346-4864 6935--5170 -4583-771 -142-7396 -8776-6222 -8037--7964 -1733-5643 -1338-2349 -5092-8703 -4203-8570 3958--914 -5736--7330 -65--4831 -2386-3942 -7526-1135 2027--9454 -8385-8171 -7540-8340 -9076--5242 -2495--4290 -7156--6635 -9005-9059 -6090-3487 -1038-2536 -3134--1128 8961--187 -1123-9985 -4371--7239 -1509-6623 3829--7863 4373-9410 1334-2625 -1837-9251 -5070--295 6750-1183 5455--1748 -8244--5186 5008--3216 8876-984 -7588-1338 -9551-2096 -8338-6830 360-3659 -1001-9575 4947-3651 9747--9137 -9563--1706 -7656-6763 4203--7859 -6004--1685 1639-3456 -2954-7626 -7750--4677 1426--9602 -5688-9431 8968--728 -708--4779 2166-1231 2800-6502 -3295-5471 5187-820 2988-1926 5749-4674 7919-3584 7196--7511 -8104--6153 5374--3847 5287--7392 -4821--5011 2547--8804 3655--3787 2948--3573 -8427--6258 -3851--1371 4929--6251 -8226-1875 -6420--2399 -2117-8982 5828-8003 6575-4008 -6433-2201 6700--2554 -3102--1405 5128-9258 2094--4776 7101-4388 -8929--9844 -6621-9745 3721--9942 -8424--1946 -3529-547 8482--2544 -6306--8032 -3439-7503 -2103--8471 -3443--5464 -4586--1127 -6998--9473 -3047-7783 -2487--5585 9456-2249 -4682-4469 4112--9965 -5222--4226 -8027--823 -9212-9400 -3986-7172 4087-3250 4800-9056 6909-2452 9420-9206 9208-2744 -887--134 -5819-9462 -9635-1797 8546--6728 3773--6559 6474--3330 -6633-4332 5120--2614 -1076--8709 -2456--5973 1884--4101 8904--1623 1069--5131 620--5176 -3650--7440 5861--1261 -6061-9452 4487--774 5599--5320 -3015--7986 -1520-216 -7435-2275 9404-3234 5254--4508 -7140--370 -7645-6583 1991--9175 4213-2333 9968--375 -4237-6506 -4331--8497 -2500--122 -5976-7806 -477--3989 -1534-4380 -1997--6240 -7201-3915 6056--1337 -3372--2552 -7064-1851 8794--4829 8340--550 1239-7577 5352--3225 -295-810 3021-7343 -7352--5125 -4739-4357 -232-924 32--8126 -7605--6319 1270--7754 -6963-6778 4687-769 -5766--3141 9785--6548 6038-6718 190--2377 -7733-8634 6856-9457 -9167-3977 -7298-9910 6580--2822 -1829-7941 3708--2705 3587-2210 -1590-1355 1718-4912 9332--2284 -7214--5923 -2413-4991 3775-22 9776--2253 6520-8513 -9026--1989 -7786--8304 -9414--3903 -3252-1361 7152--190 -6904--2757 -5408-9504 4783--8405 -4383--4373 -3927-3673 -4545--2719 -9238-4702 1231--1051 -3860--5541 3970-5124 5202-4599 8980--8962 -8020--2105 -9967--14 1811-5499 9580--1369 1967--8714 -8025-9930 -3585-9813 -5363-9482 -4498-7402 -8583--1542 4119-2135 -3861-795 -8116--3529 9611-8510 -1264--8999 -9615--3905 -4974--3512 8423--8075 4689-6896 9845-8088 -4172-2085 5325-7776 5113--5087 9482-7492 210--8739 5974--4797 -4170--8772 -6007--4483 1025-6930 -2675-2635 3745--1953 -2844--577 -4229-9194 -6441-2735 509-2755 1901--5240 -4655--5354 -169-391 -3503--912 9245--1226 4368--7372 -8137-3497 -6600-7109 1369--7037 -5911--3542 4732--6218 9814-6819 8249-4240 6816--4594 7234-3003 767--8850 -3347-4394 341--7290 1166--9028 -763--7384 6102--6998 -8778--301 -5409-6204 -4173-2719 -6173-2713 5141-5006 -1309--7799 -8268-2559 -7421-8783 -2203--6553 3414--783 291--7450 8900--2758 -3973--2132 1557--5076 -7419--8491 -3520-7667 -7687-4765 -5737-2493 -1651--1599 -3133--4195 -9077-6761 -3943-2355 6831--2743 -641-5157 -9160--5648 -8634--9803 3865-499 -9236--2673 4842-2544 -4263--43 7852--2285 5577--4759 6323-235 -5756--7474 -3760-8369 -3457--5414 -9424--1350 5270-6472 3012-5357 -9277-4039 3103-7815 7346-4940 2091--4493 6336--2035 6246--3703 698-8192 2947--3945 7157--5901 -5883--547 -8468--1403 -5528--5167 5953-8122 -4514-4440 9174--7013 4149--6437 -9571--4917 -9210--8246 -4070-8302 -349-9467 -1644-7976 -7706-3827 -9208-7401 9549-2 9263-2941 6992-2784 6635-4931 3817--1039 -1065-7981 -2940-6573 5836-1389 5466--5447 -7383-1407 -1558--6036 8792-7801 2020-5857 1324-6931 6823-5560 -4245--2996 2552--2951 123-3773 5850--1803 7543--1447 1252-6176 -7124--254 -7625-9996 -4098--1024 -8684--7468 1438--2273 4044--7242 -1213-9110 -2620-5328 -2842-4774 -2572--5442 -3403-6969 3213--6904 1442--387 -1578-6249 -893-7385 1163--1238 -1478--8220 -4126--2568 5094-7778 -5251--8169 2576-3502 -3330--5678 5119-5401 6910-5333 -6747-1940 -3231--6087 -2857--2321 -8833-8862 -664-281 -9015-8548 -7270--9255 -4668--4546 -1539-9510 6370-979 -554-7486 -9929-827 -1108--7491 6268--2394 -8912--905 -606--9209 3820-1231 1334--7455 4883-6758 33-6717 2794--827 -6889-8617 -8666--4688 7028-3164 919-6800 -5224--849 -813--2467 -7298--6456 -8634--9610 -2490--403 -1686-9424 -5117-769 5660--8772 -513-2248 5337--3269 -7235--1818 -1786-9000 -3145-7502 -5497--6337 -8161-9984 8287-2287 -8479--9956 1980-2031 -5496--7442 -7756--3820 -4153--8834 671-9316 2475--798 1232-399 -3604-1195 7891--2825 3490-4583 9802-2520 7424--572 -2328--1576 -1474--336 9268-7854 526--3686 3655-9087 6379-7919 7311--9832 -3646--5304 6909-3042 8475-6877 2103--8449 -7580--1117 -4260-422 9770-4562 -1939-9279 5060-2652 2731-3316 998-3167 -3995--669 8733-8815 -1757--1300 6523-9924 -7586-2279 2424--4981 -3545-563 -1071--1669 -3577-7996 8768--4451 -7963-2172 7398-9596 -74-7329 7934--8977 -740--360 -369-5199 -1347--6214 -8163-3921 2482--8267 4111-6613 5176-7673 2417--3732 3732-4089 2077-3204 8301--2346 -2679-9714 -477--6526 9664-1699 6241--4799 -5595--1861 -6926--1174 8329-6309 8855--5158 -4827-4630 799--6541 4421-1657 -3967--8874 7649--7193 -6622--2169 -7514--5565 3811-6668 -6086--1207 5153-2174 -4007-9072 2740--8570 -5145--1492 -8394--5958 -318--5956 -3902--9585 -230--2184 3436-8780 -8005-2841 -3897--4468 2391-8583 8595-2535 968--487 -2894-6883 5516--8582 7733-4652 4259--1766 -1502--4006 -7821--1439 3043-7593 -6578--1260 -2999--5592 1262-3309 5450-9174 8128--5581 8130--146 -7444-4288 4705-2734 -4754--9456 -2556--5459 -1390--7970 8225-6888 -4209--9917 6149-8537 -8678-8918 9884-9756 -9197-3258 1828--6699 -7094-2452 -974--5675 3696--385 -2774-7995 -711--7560 8564--1055 9938-5232 -9098--3506 -5774--8441 3138-600 5440--1057 7076--3846 -6420-6627 -5016--4486 1876--5948 -8567-6903 4958-3253 -4298-6035 53-864 -2359--8209 7591-9242 5487-3263 -2066--6011 -9908-9369 2263-5189 -7785-896 -9561--7777 8500-5438 -1211--3136 -9928-7211 -5577--5418 2631-7841 877--7103 3759-6174 -7154--8982 7623-7573 6256-2089 7150--9181 2784--144 6840--6930 5815--6706 8371--7884 -6495-4475 7880--7148 3717-8251 -2138-4828 7810--193 841-7715 -9200-2312 3818-3125 7196-7562 -6509-7455 -2455-4071 -1639-656 -1617--1019 -5545-9899 9920-1921 -6610-4629 -1804--5238 5751--6668 8185--7437 -4096-510 4714--6337 2907-2267 -4935--9687 1634-228 -831-7145 -5265--2289 7424--2953 -2515-7890 3152-2714 6393--3217 4390-4189 -5587-6387 -3731-3799 1203-2183 -4494--7388 -7044--8111 524--7937 -5983-7738 7022--6933 -8905-582 -5179--9662 -8752--8554 -8633-8797 -6910--9165 -1508-7553 3701--575 154--3573 -7357-2022 -5559-1451 9674--885 -1182-9140 5045-2082 1218--9945 -8014-6631 5507--5744 8230-940 -2132--7026 -2414--6081 -2084-2780 1937--578 8244-1074 6464-8737 -224-4491 -3782-8554 -8254-1121 8984-8368 -3939--3442 9129-6249 -5266--6097 -8194--5165 -80-8187 -8845--8689 5675--8698 7875-3735 -2003--858 1418--1553 8818--1967 155--2757 -1493--9945 -2805-358 -4467-5180 -1968--2257 -1670-7226 1864--5219 5214--4709 -7779-637 -1047-167--5356 -465--2592 -8882--3530 -7592--778 -7329--5876 -8762-9865 5935--1361 8309--4806 1707--7394 8566-9783 7243-5897 -1048-9101 4403--3443 2634--8615 1530-6634 -2556--9942 -6471--6702 5920-8193 842--7253 9079-764 -9323--7427 6318--2247 -843--4037 1894-5351 915--8559 -9230--2535 7781-1814 1078-9851 -4083-6104 1806--773 8687-7194 -6180--7026 -7129--8334 3099-8562 -8138--8824 2354-5213 2271--4319 1139--3510 8411-661 4547-3293 1628-6746 5067--7572 8747--1361 -899--2094 6657--7292 -5460-5392 -8020-4858 911-2874 4839--7804 3028-7191 -4438--6244 3167-5759 3958--2731 -9-5043 -7093-9458 2029-6108 3678-8903 -835--4262 3692--8176 7766-969 4763-7181 -192-723 -2027--4635 -9462-8869 1707--1712 -4177-5825 818--8186 -6772-886 4660--5672 -7930--6264 -1293-7231 -5579-7281 -8857-1079 -1260-1141 -2447--5389 8207-1699 -7488--4691 -144-8091 -4343-9966 -2201-906 -9674--9118 6519--5898 5455--4919 -752--1885 -7367-1318 -451-3693 -3872--1338 9699-9803 -6829-367 3123--6569 2831-5946 1960--1767 -2758-770 5212--4460 7103-337 -1240-8796 -7567-7135 6849--5171 7107-2843 -8868-1078 7723--8197 -5718--1827 3117-4307 4811--2196 -8652-7340 6282--9235 8694-1443 -8819--8256 8591-3929 3593--5052 -8270-5120 -5078--4876 8287-7677 3254-1056 1544-5931 7395-2482 -5915-1896 5097--7614 9083-1785 4161-3473 2882-245 5855--344 -1892-7703 -2893--2362 5165-7970 -6617-4749 1787--9527 -4314-9366 -2998-6931 -1257--6808 5845-1378 -5075--2477 1745--9295 5832--8726 -8023-8140 -1522-3292 6689-8365 -7531--5688 3867-8094 8972-8785 -309-8227 9900--7594 -4984-4912 773--5452 808-5880 2360-1929 -8984--6609 368--1317 -2243--2998 7727--8553 -6822-5107 -670-1235 2411-6296 3568-2152 -1730--9478 -9155-7223 -3192--5620 6572-7720 3383--8186 7157-4691 9092--234 -2394-3961 -4656--4228 -421--9314 1846--9817 -5984-4714 6304-7199 -3799-24-1036 -8669-3377 -9341-9794 -8451-1114 9803-6370 -4882--6499 4193-7875 -2849-8908 8680-9122 -1254--3169 6729-9648 3691-801 -8065-9377 9846--7257 3914--8906 2241-5661 7728--6820 -4365-564 -158--7781 8584-504 -3719--8097 -3340-6382 6824--1387 7618-9005 -7271-351--8105 -4925--4746 -7488--2288 -8082-4880 3725-8347 1760-1757 7300-4084 -9901-8644 -2873-9393 -3031--2964 -825--2163 -750-3637 7206-7479 5375--7636 -2679-3838 9288--1715 -3898--5205 -9530-6783 5369--9145 117-1084 54-6974 -6178-9830 -8367-245 6203--4862 3376--1077 -3676--8193 -7215--7763 9394--2918 6487--5207 -8337-4318 7895-7779 -4503-1362 -2881-5241 3597-4315 -7366--688 7831--4002 -7068--4427 6478-2917 -580--1142 -3821--5364 -4469--9916 -4681--1361 -7532-705 188--625 -2431-6421 -9691-4549 3330--4868 -8738--6150 7205-3414 -6895--392 -4078-6009 -7292-4291 -7600-9582 -707-9466 839--6354 7513-7458 3870--1771 -3447-9894 3846-7884 5296--123 -8202--5462 -2553--8151 -2520-6044 -4361-4925 759-732 3260-7459 8117--5067 -1455--6712 -7413-5572 5385-5023 6655--3698 -8086-1592 5909-2109 2468-7993 3046-5402 5391--5716 5067-4263 7838--394 1898--6362 82--4467 -78--2511 -5680--3462 153--1825 10--8349 2237--6603 -371-9663 -7285-4436 7255--5653 3714-7444 1838-8181 7629-8836 -7746-6380 2237--3154 -8451--4022 -7434--9272 -3932--5141 9188-191 7774-7364 -480-1335 470--8530 4928-2867 8499-7236 7842-5447 9243--5646 -1725-5478 7901-5758 2682--1480 -8727-6001 7399--8454 -1305-6442 7618--5336 5269--2516 -6035-4702 4297-4150 3780-5360 -7466--6271 -1051-7875 6271-836 -6591--9537 -885-4685 5222--6714 814-5525 -2906-9227 -2879-648 -8355-9694 1780-6430 -2208--4617 7233--8750 -8348-2272 6034--6556 -7784-6288 -899-8410 1634--7496 -9989-3662 -7738-2319 -5183-5468 -599--554 9262-2592 6806--1225 90--9582 -2443-6435 -250-1807 4126-6872 -7052--1680 9752-5837 6634-6481 -5635--6538 -9047--8554 -6646-1653 7381--4894 9689-6862 417--2198 -9345-5961 4218--8509 9508-1650 -6829-6942 906-1167 7314--414 -2508-104 -7025--1405 -6299--7151 6462--4264 -5850-3378 2698-2308 -5687--7128 -799--6274 -8900--7257 5163-4764 -1516--8546 -470-7778 -1766--1625 -5863-6682 -5204-9683 5826--5540 -4544--2162 1620-8955 9322-3513 -7148-171 -1941--2861 8186-4302 5784--4340 -6324-3890 4718--4984 7339--9642 7284-4991 -2240-3589 7990--1456 3743-8664 -7541-9092 -7582-2176 -4328-2872 -6872--2488 -215-7355 5880-3645 -2177--9814 -1327-6782 9346--7082 9042-6925 -9497-8859 5429--9583 8010--3828 -4335--1254 -5522-3238 4428-6125 4438--9095 5908-1437 -8129-5784 -5345--6140 -791-8235 6289--9601 3814-9249 3555-7328 -4873--9342 3241-3609 6466-333 -708--147 -9927--6843 -3046--7692 8995-9723 4706--1892 -6225--3645 -2586-8755 7273-8517 3224-169 9947-7743 5342-7575 -9358-6450 -6595-2476 3099--4716 -3600--9961 6382--1829 4410--4841 3308-572 5764-4524 -5025--9496 2764-7178 -4047--660 6977-413 -8340-4138 1453-2044 -8673-9099 -7333-2581 9687-3528 -7460-3317 4245--8838 3055-4567 4858--6959 2367--7132 -3262-315 865-2869 9958-1703 -5932--6418 6312-9112 2570-7465 6265--9189 -6714-7055 8682-6109 287-2063 -9285-7115 -6452--3696 8729--1329 2396-2514 4453-4421 7076--7208 -4830--9077 -2158--9056 -8598--7203 -9688-9345 -1313-984 -7910--5577 -9966-2315 7500-7420 8383--7006 -8604--7240 -3782-8260 472--1599 8759-4256 -189-2718 -2295--3867 6875--4639 336-3845 1662--8451 6249-9520 8171--8867 -1341--6708 2416--6874 5738-7763 -4789-7936 -5506-6704 -4412--340 1601--4388 -4086-9285 4657--6280 -6371--1349 2120--9874 -4181-8812 -9213--9629 3978-3871 4968-3268 7963-4982 4213-9893 1286--533 6502-5915 6460--1428 9032-5252 350-6724 8361-7238 928--5655 8841-3089 -9187-96 9369-6686 1172--4275 3795--419 -6180-116 1881--4129 3465--789 4056-1103 9935--895 -5653--6381 6086--4464 4338--3173 -3033-7245 9318-5527 2691--5148 -7552-9884 -9357--2259 -4508-1260 -4946-4378 5345--6995 4673-7189 -6939-1595 8168--4073 2606--870 4066-1370 2349--9084 -7152--5825 -5642-7151 7657-5678 8878-5707 4860--7147 9072-6762 -7902-9954 -7863-5445 -1843--9351 1022--1892 -6324-5260 1352--1378 -8585--8246 -8834--5928 1612--2988 6986-4628 5274
− examples/BAPC2014/testdata.out
@@ -1,78 +0,0 @@-92210814-88343466-93671289-87057782-96232690-94638324-92852070-92987572-92744228-97779736-800-200052736-199995410-0-1280-4096-2304-1024-371513194-374362054-377188700-376064444-373665909-376562872.5-364442449-365333194.5-382802310.5-371894230-358267136-368224075-368543700-377758295.5-376702807.5-356447037.5-377131502-377490682.5-378118548-372155990.5-383333198.5-352680168-371294967-376500650-376274258-368283202.5-382473268-368020279-363707143.5-373665106.5-369035942-366940652-370708656-371569688-378140728-373974300-359873951.5-360773601.5-369896954-351975481-359847959.5-367623183-359879556-379433260.5-378837725-364060059.5-357774392-370114715-370832552-357111020-347979354.5-323491260-353187255.5-381838262-189877347.5-361709734.5-351329926-318801902.5-264706770-334690037.5
− examples/Demo/Delaunay.hs
@@ -1,56 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-module Demo.Delaunay where--import           Algorithms.Geometry.DelaunayTriangulation.DivideAndConquer-import           Algorithms.Geometry.DelaunayTriangulation.Types-import           Algorithms.Geometry.EuclideanMST.EuclideanMST-import           Control.Lens-import           Data.Data-import           Data.Ext-import           Data.Geometry-import           Data.Geometry.Ipe-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Semigroup-import           Options.Applicative---data Options = Options { _inPath    :: FilePath-                       , _outFile   :: FilePath-                       }-               deriving Data--options :: ParserInfo Options-options = info (helper <*> parser)-               (  progDesc "Compute the Delaunay Triangulation of the points in the input file."-               <> header   "Delaunay"-               )-  where-    parser = Options-          <$> strOption (help "Input file (in ipe7 xml format)"-                         <> short 'i'-                        )-          <*> strOption (help "Output File (in ipe7 xml format)"-                         <> short 'o'-                        )--mainWith                          :: Options -> IO ()-mainWith (Options inFile outFile) = do-    ePage <- readSinglePageFile inFile-    case ePage of-      Left err                         -> print err-      Right (page :: IpePage Rational) -> case page^..content.traverse._IpeUse of-        []         -> putStrLn "No points found"-        syms@(_:_) -> do-           let pts  = syms&traverse.core %~ (^.symbolPoint)-               pts' = NonEmpty.fromList pts-               dt   = delaunayTriangulation $ pts'-               emst = euclideanMST pts'-               out  = [iO $ drawTriangulation dt, iO $ drawTree' emst]-           -- print $ length $ edges' dt-           -- print $ toPlaneGraph (Proxy :: Proxy DT) dt-           writeIpeFile outFile . singlePageFromContent $ out---data DT----xs = [(1,(1,1)) , (2,(2,2)) ]
− examples/Demo/DrawGPX.hs
@@ -1,184 +0,0 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE BangPatterns #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE TupleSections #-}-{-# LANGUAGE TypeOperators #-}-module Demo.DrawGPX where--import           Algorithms.Geometry.PolyLineSimplification.DouglasPeucker-import           Control.Applicative-import           Control.Lens-import           Data.Data-import           Data.Ext-import qualified Data.Foldable as F-import           Data.Geometry-import           Data.Geometry.Ipe-import           Data.Geometry.PolyLine-import           Data.Geometry.Vector-import           Data.List (isSuffixOf)-import           Data.Maybe-import           Data.Semigroup-import qualified Data.Sequence as S-import qualified Data.Text as T-import           Data.Time.Calendar-import           Data.Time.Clock-import           Demo.GPXParser-import           Options.Applicative-import           System.Directory-import           Text.Printf (printf)-------------------------------------------------------------------------------------data Options = Options { _inPath  :: FilePath-                       , _outPath :: FilePath-                       }-               deriving Data--options :: ParserInfo Options-options = info (helper <*> parser)-               (  progDesc "Draws gpx trajectories in ipe"-               <> header   "DrawGPX"-               )-  where-    parser = Options-          <$> strOption (help "Input Directory"-                         <> short 'i'-                         <> metavar "INDIR"-                        )-          <*> strOption (help "Output File"-                         <> short 'o'-                         <> metavar "TARGET"-                        )------------------------------------------------------------------------------------mainWith                          :: Options -> IO ()-mainWith (Options inPath outPath) = do-    let inPath' = inPath ++ "/"-    files <- map (inPath' ++) . filter (isSuffixOf ".gpx")-         <$> getDirectoryContents inPath'-    tks   <- concatMap (_tracks . combineTracks) <$> mapM readGPXFile files-    let polies  = mapMaybe asPolyLine tks-        polies' = map (douglasPeucker 0.01 . scaleUniformlyBy 100) polies-        pg = singlePageFromContent $ map (iO . defIO) polies'-    -- print pg-    writeIpeFile outPath pg---colors :: [T.Text]-colors = map (T.unwords . map (T.pack . printf "%.4f" . (/ 256.0))) colors'-  where-    colors' :: [[Double]]-    -- colors' = [ [84,48,5]-    --           , [140,81,10]-    --           , [191,129,45]-    --           , [223,194,125]-    --           , [246,232,195]-    --           , [245,245,245]-    --           , [199,234,229]-    --           , [128,205,193]-    --           , [53,151,143]-    --           , [1,102,94]-    --           , [0,60,48]-    --           , [0,0,0]-    --           ]-    colors' = [ [166,206,227]-              , [31,120,180]-              , [178,223,138]-              , [51,160,44]-              , [251,154,153]-              , [227,26,28]-              , [253,191,111]-              , [255,127,0]-              , [202,178,214]-              , [106,61,154]-              , [255,255,153]-              , [177,89,40]-              ]---- readCoords    :: FilePath -> IO (PolyLine 2 () Double)--- readCoords fp = fromPoints .---                 map ((\[x,y] -> point2 x y :+ ()) . map read . words) . lines---              <$> readFile fp---- readCoords'    :: FilePath -> IO [PolyLine 2 () Double]--- readCoords' fp = mapMaybe (fmap fromPoints . g . f)  .  group' . lines <$> readFile fp---   where---     f = map ((\[x,y] -> point2 x y :+ ()) . map read . words)---     g xs@(_:_:_) = Just xs---     g _          = Nothing---- group' lst = case break (== "NL") lst of---                ([],[]) -> []---                ([],"NL":r) -> group' r---                (pr,"NL":r) -> pr:group' r---                (pr,[])     -> [pr]------ maps = mapM (\f -> readCoords $ "/Users/frank/tmp/bikerides/maps/" ++ f)---        [ "nld_coords.txt"---        , "bel_coords.txt"---        , "dnk_coords.txt"---        , "fra_coords.txt"---        ]---- --   do--- --     nld <- readCoords--- --     writePolyLineFile "/tmp/nld.ipe" $  map (flip stroke "black") [nld]-------asPolyLine :: Track -> Maybe (PolyLine 2 UTCTime Double)-asPolyLine = fmap fromPoints . f . map toPt . _trackPoints-  where-    f xs@(_:_:_) = Just xs-    f _          = Nothing--toPt :: TrackPoint -> Point 2 Double :+ Time-toPt (TP (pos :+ t)) = point2 (pos^.longitude) (pos^.latitude) :+ t--ssFactor = 1--worldWidth  = 1000-worldHeight = 1000-world = (worldWidth,worldHeight)---- colors = [ "red" , "purple" , "blue" , "green" , "orange"  ]--strokeByMonth p = stroke p c-  where-    dt = p^.points.to F.toList.to head.extra-    (_,m,_) = toGregorian $ utctDay dt-    c = colors !! (m -1)--stroke p c = (p&points.traverse.extra .~ (),[("stroke",c)])---groupsOf      :: Int -> [a] -> [[a]]-groupsOf _ [] = []-groupsOf k xs = let (ys,xss) = splitAt k xs in ys : groupsOf k xss--subsample   :: Int -> [a] -> [a]-subsample k = map head . groupsOf k--subsampleTrack   :: Int -> Track -> Track-subsampleTrack k = over trackPoints (subsample k)----- | Given the width and height of the map and a Position, compute a Mercato Projection of--- the position. See--- <http://en.wikipedia.org/wiki/Mercator_projection#Derivation_of_the_Mercator_projection--- WikiPedia> for more info.-mercatoProject                    :: (Double,Double)-                                  -> Position-                                  -> Point 2 Double-mercatoProject (width,height) pos = point2 x y-  where-    x    =                (width / 360)    * pos^.longitude-    y    = (height / 2) - (width / (2*pi)) * (log . tan $ (pi / 4) + (latR / 2))-    latR = -1 * pos^.latitude * pi / 180
− examples/Demo/ExpectedPairwiseDistance.hs
@@ -1,209 +0,0 @@-{-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE ScopedTypeVariables #-}-module Demo.ExpectedPairwiseDistance where--import           Algorithms.Geometry.Diameter-import           Algorithms.Geometry.WellSeparatedPairDecomposition.Types-import           Algorithms.Geometry.WellSeparatedPairDecomposition.WSPD-import           Control.Lens-import           Control.Monad ((<=<))-import           Data.BinaryTree-import qualified Data.ByteString as B-import qualified Data.ByteString.Char8 as C-import           Data.Char (isSpace)-import           Data.Ext-import qualified Data.Foldable as F-import           Data.Geometry-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Maybe (mapMaybe)-import           Data.Proxy-import           Data.Data-import           Data.Semigroup-import qualified Data.Set as Set-import           GHC.TypeLits-import           Options.Applicative hiding ((<>))---import           Debug.Trace------------------------------------------------------------------------------------data Options = Options { _inPath    :: FilePath }-               deriving Data--options :: ParserInfo Options-options = info (helper <*> parser)-               (  progDesc "Compute expected pairwise distance of the points in the input file."-               <> header   "Expected Pairwise Distance"-               )-  where-    parser = Options-          <$> strOption (help "Input file"-                         <> short 'i'-                        )-------------------------------------------------------------------------------------- | Evaluates the formula: $\sum_{p,q \in pts} \|pq\|*Prb[sample has size k--- and contains p and q]$ which solves to $\frac{{n-2 \choose k-2}}{{n \choose--- k}} \sum_{p,q} \|pq\|$------ running time: $O(n^2)$, where $n$ is the number of points-expectedPairwiseDistance       :: (Floating r, Arity d) => Int -> [Point d r :+ p] -> r-expectedPairwiseDistance k pts = makeExpected k pts pairwiseDist---- | A $(1+\varepsilon)$-approximation of expectedPairwiseDistance------ running time: $O(n(1/eps)^d + n\log n)$, where $n$ is the number of points-approxExpectedPairwiseDistance          :: (Floating r, Ord r-                                           , Arity d, Arity (d+1), 1 <= d-                                         , Show r, Show p)-                                         => r -> Int -> [Point d r :+ p] -> r-approxExpectedPairwiseDistance eps k pts =-  makeExpected k pts (approxPairwiseDistance eps)------------------------------------------------------------------------------------- * Computing Distances---- | Sum of the pairwise distances-pairwiseDist     :: (Floating r, Arity d) => [Point d r :+ p] -> r-pairwiseDist pts = sum [ euclideanDist (p^.core) (q^.core) | p <- pts, q <- pts] / 2----- | $(1+\eps)$-approximation of the sum of the pairwise distances.------ running time: $O(n(1/eps)^d + n\log n)$, where $n$ is the number of points-approxPairwiseDistance         :: (Floating r, Ord r, Arity d, Arity (d+1), 1 <= d-                                  , Show r, Show p)-                               => r -> [Point d r :+ p] -> r-approxPairwiseDistance _   []  = 0-approxPairwiseDistance eps pts =-    sum [ (size as)*(size bs)*euclideanDist (repr as) (repr bs) | (as,bs) <- pairs ]-  where-    t     = withSizes . fairSplitTree . NonEmpty.fromList $ pts-    pairs = wellSeparatedPairs (4 / eps) t--    size (access' -> (Sized (Size i) _))  = fromIntegral i-    repr (access' -> (Sized _ (First p))) = p^.core----- wspPairs = fairSplitTree . NonEmpty.fromList------------------------------------------------------------------------------------- * Helper stuff---- | Helper to turn the result of 'f k' into 'the expected 'f k', assuming that--- we select a set of k points.-makeExpected         :: (Fractional r, Foldable t) => Int -> t a -> (t a -> r) -> r-makeExpected k pts f = prb * f pts-  where-    n   = length pts-    prb = ((n - 2) `choose` (k - 2)) / (n `choose` k)---choose       :: (Integral a, Num b) => a -> a -> b-n `choose` k = fromIntegral $ fac n' `div` (fac (n'-k') * fac k')-  where-    n' :: Integer-    n' = fromIntegral n-    k' :: Integer-    k' = fromIntegral k--    fac z = product [1..z]---- newtype WSPDMeasured a = WSPDMeasured a---- instance Measured (Sized (First a)) (WSPDMeasured a) where---   measure (WSPDMeasured p) = Sized 1 (First p)---- instance Measured v (WSPDMeasured (Point d r :+ p))---            => Measured v (SplitTree d p r v) where---   measure (Leaf p)      = measure $ WSPDMeasured p---   measure (Node _ nd _) = nd^.nodeData---- | Annotate the split tree with sizes-withSizes :: SplitTree d p r a -> SplitTree d p r (Sized (First (Point d r :+ p)))-withSizes = foldUp f Leaf-  where-    f l (NodeData j b _) r = let nd = (access' l) <> (access' r)-                             in Node l (NodeData j b nd) r---- | Get the measurement for a given splittree-access'               :: BinLeafTree (NodeData d r (Sized (First a))) a -> Sized (First a)-access' (Leaf x)      = Sized 1 (First x)-access' (Node _ nd _) = nd^.nodeData-------- | CVS file, in which every line consists of a name, followed by exactly d coordinates-parseInput :: forall d r. (Arity d, KnownNat d, Read r)-           => B.ByteString -> [Point d r :+ B.ByteString]-parseInput = mapMaybe toPoint . drop 1 . C.lines-  where-    trim      = fst . C.spanEnd isSpace . C.dropWhile isSpace-    fromList' = vectorFromList . take (fromInteger . natVal $ (Proxy :: Proxy d))--    toPoint bs = let (n:rs) = map trim . C.split ',' $ bs-                     p      = fmap Point . fromList' . map (read . C.unpack) $ rs-                 in (:+ n) <$> p---readInput :: (Arity d, KnownNat d, Read r) => FilePath -> IO [Point d r :+ C.ByteString]-readInput = fmap parseInput . B.readFile--test :: FilePath -> IO [Point 2 Double :+ C.ByteString]-test = readInput--testTree = fmap f .test-  where-    f pts = uncovered pts (4 / 0.05) (fairSplitTree $ NonEmpty.fromList pts)---- compareBoth     :: r -> FilePath -> IO (r, r, Bool)-compareBoth eps = fmap f . test-  where-    f pts = let exact  = pairwiseDist pts-                approx = approxPairwiseDistance eps pts-            in (exact, approx, (1-eps)*exact <= approx && approx <= (1+eps)*exact)---compareBoth1 eps pts = let exact  = pairwiseDist pts-                           approx = approxPairwiseDistance eps pts-                       in (exact, approx, (1-eps)*exact <= approx && approx <= (1+eps)*exact)---mainWith (Options f) = compareBoth 0.05 f >>= print-------------------------------------------------------------------------------------- testing stuff----- | Computes all pairs of points that are uncovered by the WSPD with separation s-uncovered         :: (Floating r, Ord r, Arity d, Arity (d+1), Ord p)-                  => [Point d r :+ p] -> r -> SplitTree d p r a -> [(Point d r :+ p, Point d r :+ p)]-uncovered pts s t = Set.toList $ allPairs `Set.difference` covered-  where-    allPairs = Set.fromList [ (p,q) | p <- pts, q <- pts, p < q ]-    covered  = Set.unions [ mkSet as bs | (as,bs) <- wellSeparatedPairs s t]--mkSet as bs = Set.fromList [ (min a b,max a b) | a <- F.toList as, b <- F.toList bs]---- | Naively check if a WSP pair is actually well separated with respect to--- separation s. i.e. computes the maximum diameter of as and bs, and then--- tests by brute force if all pairs (a,b) from different sets are at distance--- at least s times the maximum diameter.-isWellSeparated           :: (Floating r, Ord r, Arity d) => r -> WSP d p r a -> Bool-isWellSeparated s (as,bs) =-    and [ euclideanDist (a^.core) (b^.core) >= s*d | a <- F.toList as, b <- F.toList bs ]-  where-    d = (/2) . maximum . map (diameterNaive . F.toList) $ [as,bs]---nonWellSeparated s = map (\(a,b,c) -> (a,b))-                   . filter (\(a,b,c) -> not c)-                   . map (\p@(a,b) -> (a,b,isWellSeparated s p))-                   . wellSeparatedPairs s . fairSplitTree . NonEmpty.fromList---points1 :: [Point 2 Double :+ ()]-points1 = ext <$> [point2 0 0, point2 1 1, point2 2 10, point2 3 11, point2 5 5, point2 10 0]
− examples/Demo/GPXParser.hs
@@ -1,109 +0,0 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE TupleSections #-}-{-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE TypeOperators #-}-module Demo.GPXParser where----import           Control.Lens-import qualified Data.ByteString.Lazy as B-import           Data.Ext-import           Data.Geometry.Point-import           Data.Maybe-import           Data.Semigroup-import           Data.Time.Clock-import           Data.Time.Format-import           Text.XML.Expat.Tree--import           Debug.Trace------------------------------------------------------------------------------------type Time = UTCTime--newtype Position = Position {_unP :: Point 2 Double}  deriving (Show,Eq)-makeLenses ''Position--latitude :: Lens' Position Double-latitude = unP.xCoord--longitude :: Lens' Position Double-longitude = unP.yCoord---newtype TrackPoint = TP {_unTP :: Position :+ Time} deriving (Show,Eq)-makeLenses ''TrackPoint--newtype Track = Track { _trackPoints :: [TrackPoint] } deriving (Show,Eq)-makeLenses ''Track--newtype Activity = Activity { _tracks :: [Track]} deriving (Show,Eq)-makeLenses ''Activity---combineTracks (Activity ts) = Activity [Track $ concatMap _trackPoints ts]---readGPXFile    :: FilePath -> IO Activity-readGPXFile fp = (r . fst . parse defaultParseOptions) <$> B.readFile fp-  where-    -- l m = error . show $ m-    r = fromJust . parseGPX--class ReadGPX t where-  parseGPX :: Node String String -> Maybe t--instance ReadGPX Activity where-  parseGPX x = case selectPath ["gpx"] x of-    [x@(Element _ _ chs)] -> Just . Activity . mapMaybe parseGPX . chsWith "trk" $ x---    --                      concatMap (selectPath [""Track"]) $ chs-    -- _                 -> Nothing----instance ReadGPX Track where-  parseGPX x@(Element "trk" _ _) = Just . Track . mapMaybe parseGPX . concatMap (chsWith "trkpt") . chsWith "trkseg" $ x-----instance ReadGPX TrackPoint where-  parseGPX x@(Element "trkpt" ats _) = (\p t -> TP $ p :+ t) <$> pos <*> time-    where-      pos  = (\l l' -> Position $ point2 l l') <$> lat <*> lon-      time = fmap (readTime' . extract) . listToMaybe . chsWith "time" $ x--      lat = read <$> lookup "lat" ats-      lon = read <$> lookup "lon" ats---extract = (\(Text s) -> s) . head . eChildren--readTime' :: String -> UTCTime-readTime' = parseTimeOrError True defaultTimeLocale "%0C%y-%m-%dT%TZ"---- instance ReadGPX Position where---   parseGPX x@(Element "Position" _ _) = (\l l' -> Position $ point2 l l') <$> lat <*> lon----     where---       f n = listToMaybe . map (read . extract) . (chsWith n) $ x---       lat = f "LatitudeDegrees"---       lon = f "LongitudeDegrees"--selectPath :: [String] -> Node String String -> [Node String String]-selectPath []  _ = []-selectPath [n] x | hasName n x = [x]-                 | otherwise   = []-selectPath (n:p) x | hasName n x = concatMap (selectPath p) $ eChildren x-                   | otherwise   = []--chsWith   :: String -> Node String String -> [Node String String]-chsWith n = filter (hasName n) . eChildren--hasName   :: String -> Node String String -> Bool-hasName _ (Text _) = False-hasName n (Element n' _ _) = n == n'
− examples/Demo/MinDisk.hs
@@ -1,65 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-module Demo.MinDisk where--import           Algorithms.Geometry.SmallestEnclosingBall.RandomizedIncrementalConstruction-import           Algorithms.Geometry.SmallestEnclosingBall.Types-import           Control.Lens-import           Data.Data-import           Data.Ext-import qualified Data.Foldable as F-import           Data.Geometry-import           Data.Geometry.Ball-import           Data.Geometry.Ipe-import           Data.Geometry.Line-import qualified Data.LSeq as LSeq-import qualified Data.Traversable as Tr-import           Options.Applicative-import           System.Random------------------------------------------------------------------------------------newtype Options = Options { inPath  :: FilePath }-                deriving Data--options :: ParserInfo Options-options = info (helper <*> parser)-               (  progDesc "Given an ipe file with a set of points, computes the smallest enclosing disk of the points."-               <> header   "MinDisk - Computes the smallest enclosing disk of a set of points"-               )-  where-    parser = Options-          <$> strOption (help "Input File (in ipe7 xml format)")------------------------------------------------------------------------------------diskResult :: Floating r => IpeOut (DiskResult p r) Group r-diskResult (DiskResult d pts) = ipeGroup (iO' d  : (F.toList . fmap g $ pts))-  where-    g p = iO' (p^.core)--mainWith              :: Options -> IO ()-mainWith (Options fp) = do-    ep <- readSinglePageFile fp-    gen <- getStdGen-    case ep of-      Left err                       -> print err-      Right (ipeP :: IpePage Double) ->-        case map ext $ ipeP^..content.Tr.traverse._IpeUse.core.symbolPoint of-          pts@(_:_:_) -> do-                           let res = smallestEnclosingDisk gen pts-                           printAsIpeSelection . iO . diskResult $ res-          _           -> putStrLn "Not enough points!"---      -- polies = ipeP^..content.Tr.traverse._IpePath.core._asPolyLine--      -- print pls-      -- mapM_ (print . (^.enclosingDisk) . minDisk' gen) polies-      -- mapM_ (printAsIpeSelection . asIpe diskResult . minDisk' gen) polies---minDisk' :: RandomGen g => g -> PolyLine 2 () Double -> DiskResult () Double-minDisk' = minDisk--minDisk    :: (Ord r, Fractional r, RandomGen g) => g -> PolyLine 2 () r -> DiskResult () r-minDisk gen pl = smallestEnclosingDisk gen (F.toList $ pl^.points)
− examples/Demo/TriangulateWorld.hs
@@ -1,100 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-module Demo.TriangulateWorld where--import Algorithms.Geometry.LineSegmentIntersection (hasSelfIntersections)-import Algorithms.Geometry.PolygonTriangulation.Triangulate (triangulate)-import Algorithms.Geometry.PolygonTriangulation.MakeMonotone (makeMonotone)-import Data.Maybe(mapMaybe)-import Control.Lens-import Data.Data-import Data.Ext-import Data.Geometry.Ipe-import Data.Geometry.Polygon-import Data.Geometry.PlanarSubdivision-import Data.Semigroup-import Options.Applicative-import qualified Data.Foldable as F-------------------------------------------------------------------------------------data Options = Options { _inPath    :: FilePath-                       , _outFile   :: FilePath-                       }-               deriving Data--options :: ParserInfo Options-options = info (helper <*> parser)-               (  progDesc "Triangulate all polygons in the input file."-               <> header   "trianguldateWorld"-               )-  where-    parser = Options-          <$> strOption (help "Input file (in ipe7 xml format)"-                         <> short 'i'-                        )-          <*> strOption (help "Output File (in ipe7 xml format)"-                         <> short 'o'-                        )--data PX = PX--mainWith                          :: Options -> IO ()-mainWith (Options inFile outFile) = do-    ePage <- readSinglePageFile inFile-    case ePage of-      Left err                         -> print err-      Right (page :: IpePage Rational) -> runPage page-  where-    runPage page = do-      let polies  = page^..content.to flattenGroups.traverse._withAttrs _IpePath _asSimplePolygon-          polies' = filter (not . hasSelfIntersections . (^.core)) polies-          subdivs = map (\(pg :+ _) -> triangulate (Identity PX) pg) polies'-          yMonotones = tail . mapMaybe (^?_2.core._Left)-                     . concatMap (F.toList.rawFacePolygons) $ subdivs-          ofs = map (\s -> rawFaceBoundary (outerFaceId s) s) subdivs-          segs    = map (^._2.core) . concatMap (F.toList . edgeSegments) $ subdivs-          out     = mconcat [ [ iO' pg | pg <- polies ]-                            , [ iO' s  | s  <- segs ]-                            , [ iO' pg | pg <- yMonotones ]-                            ]-      mapM_ print . map (\pg -> pg^.core.to polygonVertices.to length) $ polies'-      writeIpeFile outFile . singlePageFromContent $ out----- mainWith                          :: Options -> IO ()--- mainWith (Options inFile outFile) = do---     ePage <- readSinglePageFile inFile---     case ePage of---       Left err                         -> print err---       Right (page :: IpePage Rational) -> runPage page---   where---     runPage page = do---       let orig = page^.content---           all' = page^.content.to flattenGroups---       writeIpeFile outFile . singlePageFromContent $ orig <> all'----- type ValT = EitherT IO---- flattenGroups :: [IpeObject r] -> [IpeObject r]--- flattenGroups = concatMap flattenGroups'---- flattenGroups'                              :: IpeObject r -> [IpeObject r]--- flattenGroups' (IpeGroup (Group gs :+ ats)) =---       map (applyAts ats) . concatMap flattenGroups' $ gs---     where---       applyAts ats = id--- flattenGroups' o                            = [o]---- runExcept'   :: (Show e) => ExceptT e IO () -> IO ()--- runExcept' m = runExceptT m >>= \case---                 Left e   -> print e---                 Right () -> pure ()---- mainWith                          :: Options -> IO ()--- mainWith (Options inFile outFile) = runExcept' $ do---     (page :: IpePage Rational) <- readSinglePageFile inFile---     let polies = page^..content.traverse._withAttrs _IpePath _asSimplePolygon---     let out = undefinedL---     lift $  writeIpeFile outFile . singlePageFromContent $ out
− examples/Demo/WriteEnsemble.hs
@@ -1,93 +0,0 @@-module Demo.WriteEnsemble where--import Control.Lens-import Data.Data-import Data.Ext-import Data.Fixed-import qualified Data.Text as T-import qualified Data.Text.IO as TIO-import Data.Geometry.Ipe-import Data.Geometry-import Data.Geometry.PolyLine(fromPoints)-import System.Directory-import Data.List(isSuffixOf)-import Data.Time.Calendar-import Options.Applicative-------------------------------------------------------------------------------------data Options = Options { kind    :: String-                       , inPath  :: FilePath-                       , outPath :: FilePath-                       }-               deriving Data---options :: ParserInfo Options-options = info (helper <*> parser)-               (  progDesc "Converts ensembles to ipe files"-               <> header   "ensemblewriter - writes a weather ensembles to a ipe files"-               )-  where-    parser = Options-          <$> strOption (help "Kind of input data in the input files" )-          <*> strOption (help "Input Directory")-          <*> strOption (help "Output Directory")-------------------------------------------------------------------------------------- read a bunch of text files, each defining a time-series (ensemble), produce--- an ipe file where each time-series is represented by a polyline.--main :: IO ()-main = execParser options >>= mainWith--mainWith                               :: Options -> IO ()-mainWith (Options kind inPath outPath) = do-    inFiles <- filter (".dat" `isSuffixOf`) <$> getDirectoryContents inPath-    let f = case kind of-          "precip" -> asPrecipPt-          _        -> asTempPt-    polies <- mapM (fmap (asPts f) . readFile' . ((inPath ++ "/") ++)) inFiles-    let polies' = map (fromPoints . take 100) . trim $ polies-    writeIpeFile outPath . singlePageFromContent . map iO' $ polies'--readFile'    :: String -> IO T.Text-readFile' fp = putStrLn fp >> TIO.readFile fp--maxStartDay :: [[core :+ Day]] -> Day-maxStartDay = maximum . map ((^.extra) . head)---- | Find the last starting day in the file, and trim all the lists s.t. they--- all start at or after this day.-trim    :: [[Point 2 Milli :+ Day]] -> [[Point 2 Milli :+ Day]]-trim xs = let m      = maxStartDay xs-              startD = fromIntegral $ toModifiedJulianDay m-          in map ( map (\p -> p&core.xCoord %~ subtract startD)-                 . dropWhile (\x -> x^.extra < m)-                 ) xs----- force'   :: Show r => IO (PolyLine 2 () r) -> IO (PolyLine 2 () r)--- force' mkP = mkP >>= \p -> (putStrLn $ show p) >> return p--read' :: Read a => T.Text -> a-read' = read . T.unpack--asPts   :: ([T.Text] -> b) -> T.Text -> [b]-asPts f = map (f . T.words) . filter (\l -> T.head l /= '#') . T.lines---- | read a line of the form: yyyy mm dd value-asTempPt    :: [T.Text] -> Point 2 Milli :+ Day-asTempPt ts = let [y,m,d] = map read' $ Prelude.init ts-                  v       = read' $ last ts-                  day     = fromGregorian y (fromInteger m) (fromInteger d)-              in point2 (fromIntegral $ (toModifiedJulianDay day)) (10 * v) :+ day---- | read a line of the form: yyyymmdd value-asPrecipPt       :: [T.Text] -> Point 2 Milli :+ Day-asPrecipPt [t,v] = let (y,t') = T.splitAt 4 t-                       (m,d)  = T.splitAt 2 t'-                       day    = fromGregorian (read' y) (read' m) (read' d)-                   in point2 (fromIntegral $ (toModifiedJulianDay day)) (10 * read' v) :+ day
− examples/Main.hs
@@ -1,81 +0,0 @@-module Main where--import Data.Monoid-import Control.Applicative-import Options.Applicative-import Data.Data------------------------------------------------------------------------------------import qualified Demo.DrawGPX as DrawGPX-import qualified Demo.WriteEnsemble as EnsembleWriter-import qualified Demo.MinDisk as MinDisk-import qualified Demo.Delaunay as Delaunay-import qualified Demo.ExpectedPairwiseDistance as ExpPWD-import qualified Demo.TriangulateWorld as TriangulateWorld---------------------------------------------------------------------------------------data Options = BAPC                      BAPCOptions-             | DrawGPX                   DrawGPX.Options-             | EnsembleWriter            EnsembleWriter.Options-             | MinDisk                   MinDisk.Options-             | Delaunay                  Delaunay.Options-             | ExpectedPairwiseDistance  ExpPWD.Options-             | TriangulateWorld          TriangulateWorld.Options-             deriving Data--parser :: Parser Options-parser = subparser (-       command' DrawGPX                        DrawGPX.options-    <> command' EnsembleWriter                 EnsembleWriter.options-    <> command' MinDisk                        MinDisk.options-    <> command' Delaunay                       Delaunay.options-    <> command' ExpectedPairwiseDistance       ExpPWD.options-    <> command' TriangulateWorld               TriangulateWorld.options-    )---mainWith       :: Options -> IO ()-mainWith opts' = case opts' of-  BAPC _                              -> putStrLn "not yet"-  DrawGPX opts                        -> DrawGPX.mainWith opts-  EnsembleWriter opts                 -> EnsembleWriter.mainWith opts-  MinDisk opts                        -> MinDisk.mainWith opts-  Delaunay opts                       -> Delaunay.mainWith opts-  ExpectedPairwiseDistance opts       -> ExpPWD.mainWith opts-  TriangulateWorld opts               -> TriangulateWorld.mainWith opts------------------------------------------------------------------------------------options :: ParserInfo Options-options = info (helper <*> parser)-               (  progDesc "Example programs for HGeometry. Use -h to get a list of programs."-               <> header   "hgeometry-examples - Examples for HGeometry"-               )------------------------------------------------------------------------------------main :: IO ()-main = execParser options >>= mainWith---command'          :: Data o => (a -> o) -> ParserInfo a -> Mod CommandFields o-command' constr p = command (show . toConstr $ constr undefined) (constr <$> p)---noOpts :: InfoMod () -> ParserInfo ()-noOpts = info (pure ())--------data BAPCOptions = BAPCOptions { year :: Int-                               }-                   deriving Data
− examples/bapc_examples.hs
@@ -1,73 +0,0 @@-module Main where---import qualified BAPC2012.Gunslinger-import qualified BAPC2014.Armybase----import           Control.Applicative-import           Control.Monad(unless)-import           System.Exit--type Algorithm = String -> String--examplesPrefixPath = "examples/"---data BAPCTest = BAPC { name      :: String-                     , directory :: FilePath-                     , algo      :: Algorithm-                     , files     :: [(FilePath,FilePath)]-                     }---bapcTests = [ BAPC "Armybase" "BAPC2014" BAPC2014.Armybase.armybase-                   [ ("sample.in",   "sample.out")-                   , ("testdata.in", "testdata.out")-                   ]-            -- , BAPC "Gunslinger" "BAPC2012" BAPC2012.Gunslinger.gunslinger-            --        [ ("sampleG.in",   "sampleG.out")-            --        , ("G.in", "G.out")-            --        ]-            ]--main :: IO ()-main = mapM_ runBAPCTest bapcTests------------------------------------------------------------------------------------runBAPCTest                 :: BAPCTest -> IO ()-runBAPCTest (BAPC n p alg fs) = do-  let dash = replicate 80 '-'-  putStrLn dash-  putStrLn $ "Running tests for " ++ n-  putStrLn dash-  b <- runTests p alg fs-  unless b exitFailure-  putStrLn $ "Tests for " ++ n ++ " PASSED."-  putStrLn dash---runTests     :: FilePath -> Algorithm -> [(FilePath, FilePath)] -> IO Bool-runTests p f = runTests' f . map (both (p' ++))-  where-    p'           = concat [examplesPrefixPath, p, "/"]-    both g (a,b) = (g a, g b)---- | Given an algorithm and a list of pairs: (inputFile,solutionFile), run all tests-runTests'   :: Algorithm -> [(FilePath, FilePath)] -> IO Bool-runTests' f = allM (uncurry $ runTest f)--runTest                       :: Algorithm-                              -> FilePath -> FilePath-                              -> IO Bool-runTest f inFile solutionFile = (\input solution -> f input == solution)-                             <$> readFile inFile-                             <*> readFile solutionFile-------------------------------------------------------------------------------------allM   :: (Functor m , Monad m) => (a -> m Bool) -> [a] -> m Bool-allM f = fmap and . mapM f
hgeometry.cabal view
@@ -1,8 +1,5 @@--- Initial hgeometry.cabal generated by cabal init.  For further--- documentation, see http://haskell.org/cabal/users-guide/- name:                hgeometry-version:             0.8.0.0+version:             0.9.0.0 synopsis:            Geometric Algorithms, Data structures, and Data types. description:   HGeometry provides some basic geometry types, and geometric algorithms and@@ -22,38 +19,32 @@ category:            Geometry build-type:          Simple -data-files:          resources/basic.isy-                     test/Algorithms/Geometry/LineSegmentIntersection/manual.ipe+data-files:          test/Algorithms/Geometry/LineSegmentIntersection/manual.ipe                      test/Algorithms/Geometry/LineSegmentIntersection/selfIntersections.ipe                      test/Algorithms/Geometry/LowerEnvelope/manual.ipe                      test/Algorithms/Geometry/PolygonTriangulation/monotone.ipe                      test/Algorithms/Geometry/PolygonTriangulation/simplepolygon6.ipe                      test/Algorithms/Geometry/SmallestEnclosingDisk/manual.ipe+                     test/Algorithms/Geometry/LinearProgramming/manual.ipe+                     test/Algorithms/Geometry/RedBlueSeparator/manual.ipe                      test/Data/Geometry/pointInPolygon.ipe                      test/Data/Geometry/pointInTriangle.ipe+                     test/Data/Geometry/Polygon/star_shaped.ipe                      test/Data/Geometry/Polygon/Convex/convexTests.ipe                      test/Data/Geometry/arrangement.ipe                      test/Data/Geometry/arrangement.ipe.out.ipe-                     test/Data/myGraph.yaml-                     test/Data/myPlaneGraph.yaml--                     examples/BAPC2014/sample.in-                     examples/BAPC2014/sample.out-                     examples/BAPC2014/testdata.in-                     examples/BAPC2014/testdata.out-                     examples/BAPC2012/G.in-                     examples/BAPC2012/G.out-                     examples/BAPC2012/sampleG.in-                     examples/BAPC2012/sampleG.out+                     test/Data/PlaneGraph/myPlaneGraph.yaml+                     test/Data/PlaneGraph/small.yaml+                     test/Data/PlaneGraph/testsegs.png                       -- in the future (cabal >=2.4) we can use                      -- examples/**/*.in                      -- examples/**/*.out  extra-source-files:  README.md-                     changelog.md+                     changelog.org -Extra-doc-files:     docs/Data/PlanarGraph/testG.png+Extra-doc-files:                      -- docs/**/*.png  cabal-version:       2.0@@ -61,22 +52,6 @@   type:     git   location: https://github.com/noinia/hgeometry --flag examples-  description: Build demonstration programs-  default:     False-  manual:      True--flag with-quickcheck-  description: Include QuickCheck instances-  default:     True-  manual:      False--flag interactive-  description: Build  interactive parts-  default:     False-  manual:      True- library   ghc-options: -O2 -Wall -fno-warn-unticked-promoted-constructors -fno-warn-type-defaults @@ -105,6 +80,7 @@                     Data.Geometry.HalfLine                     Data.Geometry.PolyLine                     Data.Geometry.HyperPlane+                    Data.Geometry.HalfSpace                     Data.Geometry.Triangle                     -- Data.Geometry.Plane                     Data.Geometry.Slab@@ -122,13 +98,19 @@                     Data.Geometry.KDTree                      Data.Geometry.PlanarSubdivision+                    Data.Geometry.PlanarSubdivision.Raw                     Data.Geometry.PlanarSubdivision.Basic-                    Data.Geometry.PlanarSubdivision.Draw+                    Data.Geometry.PlanarSubdivision.Merge                      Data.Geometry.Arrangement                     Data.Geometry.Arrangement.Internal-                    Data.Geometry.Arrangement.Draw +                    Data.Geometry.RangeTree+                    Data.Geometry.RangeTree.Measure+                    Data.Geometry.RangeTree.Generic++                    Data.Geometry.PrioritySearchTree+                     -- * Algorithms                      -- * Geometric Algorithms@@ -154,7 +136,7 @@                      Algorithms.Geometry.Diameter -                    Algorithms.Geometry.Sweep+                    -- Algorithms.Geometry.Sweep                      Algorithms.Geometry.PolygonTriangulation.Types                     Algorithms.Geometry.PolygonTriangulation.Triangulate@@ -171,111 +153,62 @@                     Algorithms.Geometry.ClosestPair.Naive                     Algorithms.Geometry.ClosestPair.DivideAndConquer --                    -- * Graph Algorithms-                    Algorithms.Graph.DFS-                    Algorithms.Graph.MST--                    -- * Ipe Types-                    Data.Geometry.Ipe-                    Data.Geometry.Ipe.Literal-                    Data.Geometry.Ipe.Value-                    Data.Geometry.Ipe.Color-                    Data.Geometry.Ipe.Attributes-                    Data.Geometry.Ipe.Types-                    Data.Geometry.Ipe.Writer-                    Data.Geometry.Ipe.Reader-                    Data.Geometry.Ipe.PathParser-                    Data.Geometry.Ipe.IpeOut-                    Data.Geometry.Ipe.FromIpe+                    Algorithms.Geometry.LinearProgramming.Types+                    Algorithms.Geometry.LinearProgramming.LP2DRIC -                    -- * General Data Types-                    Data.UnBounded-                    Data.Range-                    Data.Ext-                    Data.LSeq-                    Data.CircularSeq-                    Data.Sequence.Util-                    Data.BinaryTree-                    Data.BinaryTree.Zipper+                    Algorithms.Geometry.RedBlueSeparator.RIC -                    Data.CircularList.Util-                    Data.BalBST-                    Data.OrdSeq-                    Data.SlowSeq-                    Data.Tree.Util-                    Data.Util+                    Algorithms.Geometry.FrechetDistance.Discrete -                    -- * Planar Graphs-                    Data.Permutation-                    Data.PlanarGraph+                    -- * Embedded Planar Graphs                     Data.PlaneGraph-                    Data.PlaneGraph.Draw+                    Data.PlaneGraph.Core+                    Data.PlaneGraph.AdjRep+                    Data.PlaneGraph.IO                      -- * Graphics stuff                     Graphics.Camera--                    -- * Other-                    System.Random.Shuffle-                    Control.Monad.State.Persistent-                    Data.Yaml.Util--+                    Graphics.Render    other-modules:-                   Data.Geometry.Ipe.ParserPrimitives  --   -- other-extensions:   build-depends:-                base             >= 4.10      &&     < 5-              , bifunctors       >= 4.1-              , bytestring       >= 0.10-              , containers       >= 0.5.5-              , dlist            >= 0.7-              , contravariant    >= 1.4-              , profunctors      >= 5.2.1-              , lens             >= 4.2-              , linear           >= 1.10-              , semigroupoids    >= 5-              , semigroups       >= 0.18-              , singletons       >= 2.0-              , text             >= 1.1.1.0-              , vinyl            >= 0.6        && < 0.9-              , deepseq          >= 1.1-              , fingertree       >= 0.1-              , colour           >= 2.3.3-              , reflection       >= 2.1---              -- , validation       >= 0.4--              , parsec           >= 3-                -- , tranformers      > 0.3+                base                    >= 4.11      &&     < 5+              , hgeometry-combinatorial >= 0.9.0.0 -              , vector           >= 0.11-              , fixed-vector     >= 1.0-              , data-clist       >= 0.0.7.2+              , bifunctors              >= 4.1+              , bytestring              >= 0.10+              , containers              >= 0.5.9+              , dlist                   >= 0.7+              , lens                    >= 4.2+              , semigroupoids           >= 5+              , semigroups              >= 0.18+              , singletons              >= 2.0+              , linear                  >= 1.10+              , fixed-vector            >= 1.0+              , vector-builder          >= 0.3.7+              , vinyl                   >= 0.10+              , deepseq                 >= 1.1+              , fingertree              >= 0.1+              , MonadRandom             >= 0.5+              , QuickCheck              >= 2.5+              , quickcheck-instances    >= 0.3+              , reflection              >= 2.1 -              , hexpat           >= 0.20.9-              , aeson            >= 1.0-              , yaml             >= 0.8+              , vector                  >= 0.11+              , data-clist              >= 0.1.2.3+              , text                    >= 1.1.1.0 +              , aeson                   >= 1.0+              , yaml                    >= 0.8                , mtl-              , random               , template-haskell -  if flag(with-quickcheck)-    build-depends: QuickCheck              >= 2.5-                 , quickcheck-instances    >= 0.3-    exposed-modules: Test.QuickCheck.HGeometryInstances -   hs-source-dirs: src-                  -- examples/demo    default-language:    Haskell2010 @@ -287,6 +220,8 @@                     , ConstraintKinds                     , PolyKinds                     , RankNTypes+                    , TypeApplications+                    , ScopedTypeVariables                      , PatternSynonyms                     , TupleSections@@ -306,337 +241,13 @@                     , FlexibleContexts                     , MultiParamTypeClasses -executable hgeometry-viewer-  if !flag(interactive)-    buildable: False-  main-is: Viewer.hs--  if flag(interactive)-    build-depends: base-                 , hgeometry-                 , lens-                 , containers-                 , vinyl-                 , semigroups-                 , optparse-applicative   >= 0.13.0.0-                 , text-                 , hexpat-                 , bytestring-                 , directory-                 , time-                 , random-                 , vector-                 , colour-                 , cairo-canvas           >= 0.1.0.0-                 -- , sdl2                   >= 2.2.0-                 , gi-gtk                 >= 3.0.15-                 , reactive-banana-gi-gtk >= 0.2.0.0-                 , cairo                  >= 0.13.3.1-                 -- , gi-glib-                 , gi-cairo-                 , gi-gdk-                 -- , gi-gdkpixbuf-                 , gi-gtk-                 , transformers-                 , linear-                 , haskell-gi-base-                 , reactive-banana        >= 1.1.0.1----  hs-source-dirs: interactive--  other-modules: RenderCanvas-                 RenderUtil-                 -- ConvexHull--  default-language: Haskell2010--  default-extensions: TypeFamilies-                    , GADTs-                    , KindSignatures-                    , DataKinds-                    , TypeOperators-                    , ConstraintKinds-                    , PolyKinds-                    , RankNTypes--                    , PatternSynonyms-                    , ViewPatterns--                    , StandaloneDeriving-                    , GeneralizedNewtypeDeriving-                    , DeriveFunctor-                    , DeriveFoldable-                    , DeriveTraversable--                    , DeriveDataTypeable-                    , AutoDeriveTypeable--                    , FlexibleInstances-                    , FlexibleContexts-                    , MultiParamTypeClasses-----executable hgeometry-examples-  if !flag(examples)-    buildable: False-  main-is: Main.hs--  if flag(examples)-    build-depends: base-                 , hgeometry-                 , lens-                 , containers-                 , vinyl-                 , semigroups-                 , optparse-applicative   >= 0.13.0.0-                 , text-                 , hexpat-                 , bytestring-                 , directory-                 , time-                 , random-                 , QuickCheck--  hs-source-dirs: examples--  other-modules: Demo.DrawGPX-                 Demo.WriteEnsemble-                 Demo.MinDisk-                 Demo.Delaunay-                 Demo.ExpectedPairwiseDistance-                 Demo.TriangulateWorld-                 Demo.GPXParser--  default-language: Haskell2010--  default-extensions: TypeFamilies-                    , GADTs-                    , KindSignatures-                    , DataKinds-                    , TypeOperators-                    , ConstraintKinds-                    , PolyKinds-                    , RankNTypes--                    , PatternSynonyms-                    , ViewPatterns--                    , StandaloneDeriving-                    , GeneralizedNewtypeDeriving-                    , DeriveFunctor-                    , DeriveFoldable-                    , DeriveTraversable--                    , DeriveDataTypeable-                    , AutoDeriveTypeable--                    , FlexibleInstances-                    , FlexibleContexts-                    , MultiParamTypeClasses--- test-suite doctests   type:          exitcode-stdio-1.0   ghc-options:   -threaded   main-is:       doctests.hs   build-depends: base                , doctest             >= 0.8---               , doctest-discover--  default-language:    Haskell2010--test-suite hspec-  type:                 exitcode-stdio-1.0-  default-language:     Haskell2010-  hs-source-dirs:       test-  main-is:              Spec.hs-  ghc-options:   -fno-warn-unticked-promoted-constructors-                 -fno-warn-partial-type-signatures-                 -fno-warn-missing-signatures--  build-tool-depends: hspec-discover:hspec-discover---  other-modules: Data.RangeSpec-                 Data.EdgeOracleSpec-                 Data.PlanarGraphSpec-                 Data.PlaneGraphSpec-                 Data.OrdSeqSpec-                 Data.Geometry.Ipe.ReaderSpec-                 Data.Geometry.PolygonSpec-                 Data.Geometry.LineSegmentSpec-                 Data.Geometry.PointSpec-                 Data.Geometry.Polygon.Convex.ConvexSpec-                 Data.Geometry.KDTreeSpec-                 Data.Geometry.IntervalSpec-                 Data.Geometry.BoxSpec-                 Data.Geometry.LineSpec-                 Data.Geometry.SubLineSpec-                 Data.Geometry.PlanarSubdivisionSpec-                 Data.Geometry.TriangleSpec-                 Data.Geometry.ArrangementSpec--                 Algorithms.Geometry.SmallestEnclosingDisk.RISpec-                 Algorithms.Geometry.DelaunayTriangulation.DTSpec-                 Algorithms.Geometry.WellSeparatedPairDecomposition.WSPDSpec-                 Algorithms.Geometry.LineSegmentIntersection.BentleyOttmannSpec-                 Algorithms.Geometry.PolygonTriangulation.MakeMonotoneSpec-                 Algorithms.Geometry.PolygonTriangulation.TriangulateMonotoneSpec-                 Algorithms.Geometry.LowerEnvelope.LowerEnvSpec-                 Algorithms.Geometry.ConvexHull.ConvexHullSpec-                 -- Algorithms.Geometry.HiddenSurfaceRemoval.HiddenSurfaceRemovalSpec-                 Algorithms.Geometry.ClosestPair.ClosestPairSpec--                 Util---  build-depends:        base-                      , hspec                >= 2.1-                      , QuickCheck           >= 2.5-                      , quickcheck-instances    >= 0.3-                      , approximate-equality >= 1.1.0.2-                      , hgeometry-                      , lens-                      , data-clist-                      , linear-                      , bytestring-                      , vinyl-                      , semigroups-                      , vector-                      , containers-                      , random-                      , singletons-                      , colour-                      , filepath-                      , directory-                      , yaml---  default-extensions: TypeFamilies-                    , GADTs-                    , KindSignatures-                    , DataKinds-                    , TypeOperators-                    , ConstraintKinds-                    , PolyKinds-                    , RankNTypes--                    , PatternSynonyms-                    , ViewPatterns-                    , LambdaCase-                    , TupleSections---                    , StandaloneDeriving-                    , GeneralizedNewtypeDeriving-                    , DeriveFunctor-                    , DeriveFoldable-                    , DeriveTraversable--                    , AutoDeriveTypeable--                    , FlexibleInstances-                    , FlexibleContexts-                    , MultiParamTypeClasses-                    , OverloadedStrings--test-suite bapc_examples-  type:          exitcode-stdio-1.0-  ghc-options:   -O2 -fno-warn-unticked-promoted-constructors-  main-is:       bapc_examples.hs-  hs-source-dirs: examples-  build-depends: base-               , doctest    >= 0.8-               , array      >= 0.5-               , hgeometry-               , lens-               , data-clist-               , linear-               , semigroups--  other-modules: BAPC2012.Gunslinger-                 BAPC2014.Armybase--  default-language:    Haskell2010--  default-extensions: TypeFamilies-                    , GADTs-                    , DataKinds-                    , TypeOperators-                    , ConstraintKinds-                    , PolyKinds-                    , PatternSynonyms-                    , ViewPatterns--benchmark benchmarks--  hs-source-dirs: benchmark test examples--  main-is: Benchmarks.hs-  type: exitcode-stdio-1.0--  other-modules: Benchmark.Util-                 Algorithms.Geometry.ConvexHull.Bench-                 Algorithms.Geometry.ConvexHull.GrahamV2-                 Algorithms.Geometry.ConvexHull.GrahamFam-                 Algorithms.Geometry.ConvexHull.GrahamFamPeano-                 Algorithms.Geometry.ConvexHull.GrahamFixed-                 Data.Geometry.Vector.VectorFamily6-                 Algorithms.Geometry.ConvexHull.GrahamFam6-                 Data.Geometry.IntervalTreeBench-                 Demo.ExpectedPairwiseDistance-                 Demo.TriangulateWorld-                 WSPDBench-                 Algorithms.Geometry.ClosestPair.Bench--  build-depends:-                base-              , criterion >= 1.1.4.0-              , fixed-vector-              , linear-              , semigroups-              , deepseq-              , deepseq-generics-              , hgeometry-              , lens-              , QuickCheck-              , bytestring-              , containers-              , optparse-applicative--  ghc-options: -Wall -O2 -rtsopts -fno-warn-unticked-promoted-constructors+               , doctest-discover+               , QuickCheck    default-language:    Haskell2010--  default-extensions: TypeFamilies-                    , GADTs-                    , KindSignatures-                    , DataKinds-                    , TypeOperators-                    , ConstraintKinds-                    , PolyKinds-                    , RankNTypes--                    , PatternSynonyms-                    , ViewPatterns-                    , LambdaCase-                    , TupleSections---                    , StandaloneDeriving-                    , GeneralizedNewtypeDeriving-                    , DeriveFunctor-                    , DeriveFoldable-                    , DeriveTraversable--                    , AutoDeriveTypeable--                    , FlexibleInstances-                    , FlexibleContexts-                    , MultiParamTypeClasses-                    , OverloadedStrings
− interactive/RenderCanvas.hs
@@ -1,177 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-module RenderCanvas where--import           Control.Lens-import           Data.Colour.SRGB(RGB(..), toSRGB24)-import           Data.Colour.Names(readColourName)-import           Data.Ext-import           Data.Geometry-import           Data.Geometry.Box-import           Data.Geometry.Ipe.Attributes-import           Data.Geometry.Ipe.Types hiding (ipeObject', width)-import qualified Data.Geometry.Ipe.Attributes as A-import           Data.Proxy-import           Data.Vinyl-import           Linear.V4 (V4(..))-import           Graphics.Rendering.Cairo.Canvas (Canvas)-import qualified Graphics.Rendering.Cairo.Canvas as Canvas-import qualified Data.Text as T---rectangle    :: (Real r, Ord r, Num r) => Rectangle p r -> Canvas ()-rectangle r' = let r                       = bimap id realToFrac r'-                   (Point2 x y :+ _,_,_,_) = corners r-               in Canvas.rect $ Canvas.D x y (width r) (height r)--polygon     :: Real r => SimplePolygon p r -> Canvas ()-polygon pg' = let pg = bimap id realToFrac pg'-              in Canvas.polygon $ pg^..outerBoundary.traverse.core.vector.to toV2--lineSegment    :: Real r => LineSegment 2 p r -> Canvas ()-lineSegment s' = let s = bimap id realToFrac s'-                 in Canvas.line (s^.start.core.vector.to toV2) (s^.end.core.vector.to toV2)--polyLine    :: Real r => PolyLine 2 p r -> Canvas ()-polyLine p' = let p = bimap id realToFrac p'-              in Canvas.shape Canvas.ShapeLines $ p^..points.traverse.core.vector.to toV2---- | draw a point as a small disk-point   :: Real r => Point 2 r -> Canvas ()-point p = Canvas.circle' (realToFrac <$> (p^.vector.to toV2)) 5---- | draw as a point-point'   :: Real r => Point 2 r -> Canvas ()-point' p = Canvas.point . fmap realToFrac $ p^.vector.to toV2--pathSegment                     :: Real r => PathSegment r -> Canvas ()-pathSegment (PolyLineSegment p) = polyLine p-pathSegment (PolygonPath p)     = polygon p-pathSegment _                   = error "pathSegment: Not implemented yet"---ipeUse              :: Real r => IpeSymbol r -> Canvas ()-ipeUse (Symbol p _) = Canvas.circle' (realToFrac <$> p^.vector.to toV2) 10--ipePath          :: Real r => Path r -> Canvas ()-ipePath (Path p) = mapM_ pathSegment p--ipeGroup :: RealFrac r => Group r -> Canvas ()-ipeGroup = mapM_ ipeObject . _groupItems--ipeObject'              :: forall g r. (RealFrac r, AllSatisfy ApplyAttr (AttributesOf g))-                        => (g r -> Canvas ())-                        -> g r :+ IpeAttributes g r-                        -> Canvas ()-ipeObject' f (i :+ ats) = do-                            Canvas.pushMatrix-                            applyAttributes (Proxy :: Proxy g) ats-                            f i-                            Canvas.popMatrix--ipeObject                  :: RealFrac r-                           => IpeObject r -> Canvas ()-ipeObject (IpeGroup g)     = ipeObject' ipeGroup g-ipeObject (IpeImage _)     = undefined-ipeObject (IpeTextLabel _) = undefined-ipeObject (IpeMiniPage _)  = undefined-ipeObject (IpeUse p)       = ipeObject' ipeUse  p-ipeObject (IpePath p)      = ipeObject' ipePath p---applyAttributes               :: (RealFrac r, AllSatisfy ApplyAttr (AttributesOf g))-                              => proxy g -> IpeAttributes g r -> Canvas ()-applyAttributes _ (Attrs ats) = applyAttributes' ats--applyAttributes'            :: (RealFrac r, AllSatisfy ApplyAttr rs)-                            => Rec (Attr (AttrMapSym1 r)) rs-                            -> Canvas ()-applyAttributes' RNil       = pure ()-applyAttributes' (a :& ats) = applyAttribute a >> applyAttributes' ats---newtype CanvasM = CanvasM { unCanvasM :: Canvas () }-instance Monoid CanvasM where-  mempty = CanvasM $ pure ()-  (CanvasM a) `mappend` (CanvasM b) = CanvasM $ a >> b---applyAttribute' :: (RealFrac r, ApplyAttr label)-                => Attr (AttrMapSym1 r) label -> CanvasM-applyAttribute' = CanvasM . applyAttribute---class ApplyAttr (label :: AttributeUniverse) where-  applyAttribute :: RealFrac r => Attr (AttrMapSym1 r) label -> Canvas ()---instance ApplyAttr Stroke where-  applyAttribute NoAttr   = pure ()-  applyAttribute (Attr c) = maybe (pure ()) Canvas.stroke $ toCanvasColor c--instance ApplyAttr Fill where-  applyAttribute NoAttr   = pure ()-  applyAttribute (Attr c) = maybe (pure ()) Canvas.fill $ toCanvasColor c--instance ApplyAttr Pen where-  applyAttribute NoAttr            = pure ()-  applyAttribute (Attr (IpePen p)) = case p of-      Named _  -> pure () -- TODO-      Valued v -> Canvas.strokeWeight (realToFrac v)--instance ApplyAttr Clip where-  applyAttribute _ = pure ()--instance ApplyAttr Size where-  applyAttribute _ = pure ()--instance ApplyAttr Dash where-  applyAttribute _ = pure ()---instance ApplyAttr Layer where-  applyAttribute _ = pure ()--instance ApplyAttr LineCap where-  applyAttribute _ = pure ()--instance ApplyAttr LineJoin where-  applyAttribute _ = pure ()--instance ApplyAttr A.Matrix where-  applyAttribute _ = pure ()--instance ApplyAttr Pin where-  applyAttribute _ = pure ()--instance ApplyAttr FillRule where-  applyAttribute _ = pure ()--instance ApplyAttr Arrow where-  applyAttribute _ = pure ()--instance ApplyAttr RArrow where-  applyAttribute _ = pure ()--instance ApplyAttr Opacity where-  applyAttribute _ = pure ()--instance ApplyAttr Tiling where-  applyAttribute _ = pure ()--instance ApplyAttr Gradient where-  applyAttribute _ = pure ()--instance ApplyAttr Transformations where-  applyAttribute _ = pure ()------- | Looks up the colorname in the SVG colors if it is a name.-toCanvasColor :: RealFrac r => IpeColor r -> Maybe Canvas.Color-toCanvasColor (IpeColor c) = case c of-    Named t            -> h . toSRGB24 <$> readColourName (T.unpack $ T.toLower t)-    Valued v           -> Just $ f v-  where-    f (RGB r g b) = floor <$> V4 (255 *r) (255*g) (255*b) 255-    h (RGB r g b) = V4 r g b 255
− interactive/RenderUtil.hs
@@ -1,81 +0,0 @@-{-# LANGUAGE OverloadedLabels #-}-module RenderUtil where--import           Control.Monad.IO.Class (MonadIO)-import           Control.Monad.Trans.Reader (runReaderT)-import           Data.GI.Base-import           Data.GI.Base.Signals (SignalInfo, HaskellCallbackType)-import           Data.IORef-import qualified Data.Text as T-import           Foreign.Ptr (castPtr)-import qualified GI.Cairo as GI.Cairo-import qualified GI.Gtk as Gtk-import           Graphics.Rendering.Cairo-import           Graphics.Rendering.Cairo.Canvas (Canvas)-import qualified Graphics.Rendering.Cairo.Canvas as Canvas-import qualified Graphics.Rendering.Cairo.Internal as Cairo.Internal-import           Graphics.Rendering.Cairo.Types (Cairo(Cairo))-import           Linear.V2 (V2(..))-import           Reactive.Banana-import           Reactive.Banana.Frameworks-import           Reactive.Banana.GI.Gtk------- | This function bridges gi-cairo with the hand-written cairo--- package. It takes a `GI.Cairo.Context` (as it appears in gi-cairo),--- and a `Render` action (as in the cairo lib), and renders the--- `Render` action into the given context.-renderWithContext      :: MonadIO m => GI.Cairo.Context -> Render a -> m a-renderWithContext ct r = liftIO $ withManagedPtr ct $ \p ->-                         runReaderT (Cairo.Internal.runRender r) (Cairo (castPtr p))---renderCanvas           :: MonadIO m => GI.Cairo.Context -> V2 Double -> Canvas a -> m a-renderCanvas ct size c = liftIO $ Canvas.withRenderer (renderWithContext ct) size c---showT :: Show a => a -> T.Text-showT = T.pack . show---- | Get an 'Reactive.Banana.Event' from--- a 'Data.GI.Base.Signals.SignalProxy' that produces one argument.-signalE1'-    ::-        ( HaskellCallbackType info ~ (a -> IO Bool)-        , SignalInfo info-        , Gtk.GObject self-        )-    => self-    -> SignalProxy self info-    -> (a -> IO b) -- ^ function to transform the Event with-    -> MomentIO (Event b)-signalE1' self signal h = signalEN self signal f >>= mapEventIO h-  where-    f g = \a -> g a >> return True -- we return True because the event has been-                                   -- handled, don't want to propagate it-                                   -- further---draw                :: Gtk.DrawingArea -> Behavior (Canvas ()) -> MomentIO ()-draw drawingArea bc = do-    canvasRef <- liftIO . newIORef =<< valueB bc -- gets the initial canvas--    -- set up reactive-banana to update the canvasRef on changes, and triger a-    -- redraw-    c <- valueBLater bc-    liftIOLater $ writeIORef canvasRef c-    e <- changes bc-    reactimate' $ (fmap $ \c' -> do liftIO $ writeIORef canvasRef c'-                                    #queueDraw drawingArea-                  ) <$> e--    -- registers drawing event handler-    _ <- on drawingArea #draw $ \context -> do-        w <- realToFrac . fromIntegral <$> #getAllocatedWidth  drawingArea-        h <- realToFrac . fromIntegral <$> #getAllocatedHeight drawingArea-        canvas <- readIORef canvasRef-        renderCanvas context (V2 w h) canvas-        pure True-    pure ()
− interactive/Viewer.hs
@@ -1,172 +0,0 @@-{-# LANGUAGE OverloadedLabels #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE BangPatterns #-}-{-# LANGUAGE ScopedTypeVariables #-}-module Main where--import           Control.Exception (catch)-import           Control.Lens-import           Control.Monad (forM_)-import           Data.Ext-import           Data.GI.Base-import qualified Data.List.NonEmpty as NonEmpty-import qualified Data.Text as T-import qualified GI.Gdk as Gdk-import qualified GI.Gtk as Gtk-import           Graphics.Rendering.Cairo.Canvas (Canvas)-import qualified Graphics.Rendering.Cairo.Canvas as Canvas-import           Linear.Affine ((.-.),(.+^))-import           Linear.V2-import           Linear.Vector ((*^))-import           Reactive.Banana-import           Reactive.Banana.Frameworks-import           Reactive.Banana.GI.Gtk-import qualified RenderCanvas as Render-import           RenderUtil--main :: IO ()-main = runGtk `catch` (\(e::Gtk.GError) -> Gtk.gerrorMessage e >>= putStrLn . T.unpack)-  where-    runGtk = do-      _ <- Gtk.init Nothing-      compile networkDescription >>= actuate-      Gtk.main--data ArrowKey = UpKey | DownKey | LeftKey | RightKey deriving (Show,Read,Eq,Bounded,Enum)--toArrowKey         :: T.Text -> Maybe ArrowKey-toArrowKey "Up"    = Just UpKey-toArrowKey "Down"  = Just DownKey-toArrowKey "Left"  = Just LeftKey-toArrowKey "Right" = Just RightKey-toArrowKey _       = Nothing-----toDirection          :: Num a => ArrowKey -> V2 a-toDirection UpKey    = V2 0    1-toDirection DownKey  = V2 0    (-1)-toDirection LeftKey  = V2 (-1) 0-toDirection RightKey = V2 1    0---networkDescription :: MomentIO ()-networkDescription = do-    b <- Gtk.builderNew-    _ <- Gtk.builderAddFromFile b "interactive/viewport.glade"--    window   <- castB b "window" Gtk.Window-    destroyE <- signalE0 window #destroy-    reactimate $ Gtk.mainQuit <$ destroyE--    -- mouseLabel <- castB b "mouseLabel" Gtk.Label--    drawingArea  <- castB b "canvas" Gtk.DrawingArea-    drawingAreaH <- realToFrac . fromIntegral . snd <$> #getPreferredHeight drawingArea-    drawingAreaW <- realToFrac . fromIntegral . snd <$> #getPreferredWidth  drawingArea--    Gtk.widgetAddEvents drawingArea (gflagsToWord [ Gdk.EventMaskPointerMotionMask-                                                  , Gdk.EventMaskButtonPressMask-                                                  , Gdk.EventMaskSmoothScrollMask-                                                  , Gdk.EventMaskKeyPressMask-                                                  ])--    -- scroll Events-    scrollE <- signalE1' drawingArea #scrollEvent $ \e ->-                     Gdk.getEventScrollDeltaY e--    -- events when we press a key-    keyPressedE <- signalE1' drawingArea #keyPressEvent $ \e -> do-                     v  <- Gdk.getEventKeyKeyval e-                     Gdk.keyvalName v-    -- events where we press an arrow key-    let arrowKeyE = filterJust . fmap (>>= toArrowKey) $ keyPressedE--    -- handle mouse clicks-    mousePressedE <- signalE1' drawingArea #buttonPressEvent $ \e -> do-                      x <- Gdk.getEventButtonX e-                      y <- Gdk.getEventButtonY e-                      return $! V2 x ((-1*y) + drawingAreaH)--    lastMousePressB <- stepper undefined mousePressedE--    -- mouse release-    -- mouseReleasedE <- signalE1' drawingArea #buttonReleaseEvent $ \e -> do-    --                     x <- Gdk.getEventButtonX e-    --                     y <- Gdk.getEventButtonY e-    --                     return $! V2 x ((-1*y) + drawingAreaH)--    -- mouse coordinates-    mouseMotionE <- signalE1' drawingArea #motionNotifyEvent $ \e -> do-                      x  <- Gdk.getEventMotionX e-                      y  <- Gdk.getEventMotionY e-                      st <- Gdk.getEventMotionState e-                      let !p = V2 x ((-1*y) + drawingAreaH)-                      return (p,st)-    mouseMotionB  <- stepper undefined mouseMotionE--    -- difference between the current mouse position and where we clicked last-    let dragOffsetB = (\p (q,_) -> p .-. q) <$> lastMousePressB <*> mouseMotionB--        -- sample the displacement vector whenever we are have a move event-        -- and the moude button is still on-        dragOffsetE = dragOffsetB-                   <@ filterE ((Gdk.ModifierTypeButton1Mask `elem`) . snd) mouseMotionE---    zoomLevelB <- accumB 1 $ (\dy -> (+0.1*dy)) <$> scrollE---    let lastPosE = unions [ (\k -> (.+^ 2 *^ toDirection k)) <$> arrowKeyE   -- key event-                          , (\v -> (.+^ v))                  <$> dragOffsetE -- drag event-                          ]-    viewPortPosB <- accumB (V2 (drawingAreaW/2) (drawingAreaH/2)) $ lastPosE--    let viewPortB = ViewPort <$> pure drawWorld'-                             <*> pure (V2 drawingAreaW drawingAreaH)-                             <*> viewPortPosB-                             <*> zoomLevelB-                             <*> pure 0--    -- draw everything-    draw drawingArea (mirrored drawingAreaH render <$> viewPortB)-    #showAll window--data ViewPort a = ViewPort { drawWorld             :: Canvas a-                           , screenSize            :: V2 Double-                           , clippwingWindowCenter :: V2 Double-                           , zoomLevel             :: Double-                           , rotation              :: Double-                           }--clippingWindow :: ViewPort a -> Canvas.Dim-clippingWindow (ViewPort _ (V2 w h) (V2 cx cy) z _) = let x = cx - z*w/2-                                                          y = cy - z*h/2-                                                      in Canvas.D x y (z*w) (z*h)---- some drawing-drawWorld' :: Canvas ()-drawWorld' = do-    Canvas.background $ Canvas.gray 255-    Canvas.stroke $ Canvas.gray 0-    forM_ [1..20] $ \i ->-      forM_ [1..16] $ \j -> do-        Canvas.rect (Canvas.D (100*i) (100*j) 20 20)---- | Mirror the canvas s.t. the bottom-left corner is the origin-mirrored       :: Double -> (a -> Canvas ()) -> a -> Canvas ()-mirrored h d x = do Canvas.scale     $ V2 1 (-1)-                    Canvas.translate $ V2 0 (-1*h)-                    d x---- | Render the view-render    :: ViewPort a -> Canvas a-render vp = do-    let (Canvas.D x y _ _) = clippingWindow vp--    Canvas.scale $ V2 (1/zoomLevel vp) (1/zoomLevel vp) -- scale everything s.t. the-                                                        -- cippingWindow equals-                                                        -- the window size-    Canvas.translate $ V2 (-1*x) (-1*y) -- move screen to the origin-    drawWorld vp
− resources/basic.isy
@@ -1,141 +0,0 @@-<?xml version="1.0"?>-<!DOCTYPE ipestyle SYSTEM "ipe.dtd">-<ipestyle name="basic">-<color name="red" value="1 0 0"/>-<color name="green" value="0 1 0"/>-<color name="blue" value="0 0 1"/>-<color name="yellow" value="1 1 0"/>-<color name="orange" value="1 0.647 0"/>-<color name="gold" value="1 0.843 0"/>-<color name="purple" value="0.627 0.125 0.941"/>-<color name="gray" value="0.745 0.745 0.745"/>-<color name="brown" value="0.647 0.165 0.165"/>-<color name="navy" value="0 0 0.502"/>-<color name="pink" value="1 0.753 0.796"/>-<color name="seagreen" value="0.18 0.545 0.341"/>-<color name="turquoise" value="0.251 0.878 0.816"/>-<color name="violet" value="0.933 0.51 0.933"/>-<color name="darkblue" value="0 0 0.545"/>-<color name="darkcyan" value="0 0.545 0.545"/>-<color name="darkgray" value="0.663 0.663 0.663"/>-<color name="darkgreen" value="0 0.392 0"/>-<color name="darkmagenta" value="0.545 0 0.545"/>-<color name="darkorange" value="1 0.549 0"/>-<color name="darkred" value="0.545 0 0"/>-<color name="lightblue" value="0.678 0.847 0.902"/>-<color name="lightcyan" value="0.878 1 1"/>-<color name="lightgray" value="0.827 0.827 0.827"/>-<color name="lightgreen" value="0.565 0.933 0.565"/>-<color name="lightyellow" value="1 1 0.878"/>-<dashstyle name="dashed" value="[4] 0"/>-<dashstyle name="dotted" value="[1 3] 0"/>-<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>-<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>-<pen name="heavier" value="0.8"/>-<pen name="fat" value="1.2"/>-<pen name="ultrafat" value="2"/>-<textsize name="large" value="\large"/>-<textsize name="Large" value="\Large"/>-<textsize name="LARGE" value="\LARGE"/>-<textsize name="huge" value="\huge"/>-<textsize name="Huge" value="\Huge"/>-<textsize name="small" value="\small"/>-<textsize name="footnote" value="\footnotesize"/>-<textsize name="tiny" value="\tiny"/>-<symbolsize name="small" value="2"/>-<symbolsize name="tiny" value="1.1"/>-<symbolsize name="large" value="5"/>-<arrowsize name="small" value="5"/>-<arrowsize name="tiny" value="3"/>-<arrowsize name="large" value="10"/>-<gridsize name="4 pts" value="4"/>-<gridsize name="8 pts (~3 mm)" value="8"/>-<gridsize name="16 pts (~6 mm)" value="16"/>-<gridsize name="32 pts (~12 mm)" value="32"/>-<gridsize name="10 pts (~3.5 mm)" value="10"/>-<gridsize name="20 pts (~7 mm)" value="20"/>-<gridsize name="14 pts (~5 mm)" value="14"/>-<gridsize name="28 pts (~10 mm)" value="28"/>-<gridsize name="56 pts (~20 mm)" value="56"/>-<anglesize name="90 deg" value="90"/>-<anglesize name="60 deg" value="60"/>-<anglesize name="45 deg" value="45"/>-<anglesize name="30 deg" value="30"/>-<anglesize name="22.5 deg" value="22.5"/>-<symbol name="mark/circle(sx)" transformations="translations">-<path fill="sym-stroke">-0.6 0 0 0.6 0 0 e 0.4 0 0 0.4 0 0 e-</path></symbol>-<symbol name="mark/disk(sx)" transformations="translations">-<path fill="sym-stroke">-0.6 0 0 0.6 0 0 e-</path></symbol>-<symbol name="mark/fdisk(sfx)" transformations="translations">-<group><path fill="sym-fill">-0.5 0 0 0.5 0 0 e-</path><path fill="sym-stroke" fillrule="eofill">-0.6 0 0 0.6 0 0 e 0.4 0 0 0.4 0 0 e-</path></group></symbol>-<symbol name="mark/box(sx)" transformations="translations">-<path fill="sym-stroke" fillrule="eofill">--0.6 -0.6 m 0.6 -0.6 l 0.6 0.6 l -0.6 0.6 l h--0.4 -0.4 m 0.4 -0.4 l 0.4 0.4 l -0.4 0.4 l h</path></symbol>-<symbol name="mark/square(sx)" transformations="translations">-<path fill="sym-stroke">--0.6 -0.6 m 0.6 -0.6 l 0.6 0.6 l -0.6 0.6 l h</path></symbol>-<symbol name="mark/fsquare(sfx)" transformations="translations">-<group><path fill="sym-fill">--0.5 -0.5 m 0.5 -0.5 l 0.5 0.5 l -0.5 0.5 l h</path>-<path fill="sym-stroke" fillrule="eofill">--0.6 -0.6 m 0.6 -0.6 l 0.6 0.6 l -0.6 0.6 l h--0.4 -0.4 m 0.4 -0.4 l 0.4 0.4 l -0.4 0.4 l h</path></group></symbol>-<symbol name="mark/cross(sx)" transformations="translations">-<group><path fill="sym-stroke">--0.43 -0.57 m 0.57 0.43 l 0.43 0.57 l -0.57 -0.43 l h</path>-<path fill="sym-stroke">--0.43 0.57 m 0.57 -0.43 l 0.43 -0.57 l -0.57 0.43 l h</path>-</group></symbol>-<symbol name="arrow/arc(spx)">-<path pen="sym-pen" stroke="sym-stroke" fill="sym-stroke">-0 0 m -1.0 0.333 l -1.0 -0.333 l h</path></symbol>-<symbol name="arrow/farc(spx)">-<path pen="sym-pen" stroke="sym-stroke" fill="white">-0 0 m -1.0 0.333 l -1.0 -0.333 l h</path></symbol>-<symbol name="arrow/ptarc(spx)">-<path pen="sym-pen" stroke="sym-stroke" fill="sym-stroke">-0 0 m -1.0 0.333 l -0.8 0 l -1.0 -0.333 l h</path></symbol>-<symbol name="arrow/fptarc(spx)">-<path pen="sym-pen" stroke="sym-stroke" fill="white">-0 0 m -1.0 0.333 l -0.8 0 l -1.0 -0.333 l h</path></symbol>-<symbol name="arrow/fnormal(spx)">-<path pen="sym-pen" stroke="sym-stroke" fill="white">-0 0 m -1.0 0.333 l -1.0 -0.333 l h</path></symbol>-<symbol name="arrow/pointed(spx)">-<path pen="sym-pen" stroke="sym-stroke" fill="sym-stroke">-0 0 m -1.0 0.333 l -0.8 0 l -1.0 -0.333 l h</path></symbol>-<symbol name="arrow/fpointed(spx)">-<path pen="sym-pen" stroke="sym-stroke" fill="white">-0 0 m -1.0 0.333 l -0.8 0 l -1.0 -0.333 l h</path></symbol>-<symbol name="arrow/linear(spx)">-<path pen="sym-pen" stroke="sym-stroke">--1.0 0.333 m 0 0 l -1.0 -0.333 l</path></symbol>-<symbol name="arrow/fdouble(spx)">-<path pen="sym-pen" stroke="sym-stroke" fill="white">-0 0 m -1.0 0.333 l -1.0 -0.333 l h--1 0 m -2.0 0.333 l -2.0 -0.333 l h-</path></symbol>-<symbol name="arrow/double(spx)">-<path pen="sym-pen" stroke="sym-stroke" fill="sym-stroke">-0 0 m -1.0 0.333 l -1.0 -0.333 l h--1 0 m -2.0 0.333 l -2.0 -0.333 l h-</path></symbol>-<tiling name="falling" angle="-60" width="1" step="4"/>-<tiling name="rising" angle="30" width="1" step="4"/>-<textstyle name="center" begin="\begin{center}"-end="\end{center}"/>-<textstyle name="itemize" begin="\begin{itemize}"-end="\end{itemize}"/>-<textstyle name="item" begin="\begin{itemize}\item{}"-end="\end{itemize}"/>-</ipestyle>-
src/Algorithms/Geometry/ClosestPair/DivideAndConquer.hs view
@@ -10,7 +10,14 @@ -- closest pair among a set of \(n\) points in \(\mathbb{R}^2\). -- ---------------------------------------------------------------------------------module Algorithms.Geometry.ClosestPair.DivideAndConquer where+module Algorithms.Geometry.ClosestPair.DivideAndConquer( closestPair+                                                       , CP+                                                       , CCP(..)+                                                       , mergePairs+                                                       , mergeSortedBy+                                                       , mergeSortedListsBy+                                                       )+where  import           Control.Lens import           Data.BinaryTree@@ -23,7 +30,7 @@ import           Data.List.NonEmpty (NonEmpty(..)) import qualified Data.List.NonEmpty as NonEmpty import           Data.Ord (comparing)-import           Data.Semigroup.Foldable(foldMap1)+import           Data.Semigroup.Foldable(foldMap1, toNonEmpty) import           Data.UnBounded import           Data.Util @@ -34,7 +41,7 @@ -- -- running time: \(O(n)\) closestPair :: ( Ord r, Num r) => LSeq 2 (Point 2 r :+ p) -> Two (Point 2 r :+ p)-closestPair = f . foldMap1 mkCCP . asBalancedBinLeafTree . LSeq.toNonEmpty+closestPair = f . foldMap1 mkCCP . asBalancedBinLeafTree . toNonEmpty             . LSeq.unstableSortBy (comparing (^.core))   where     mkCCP (Elem p) = CCP (p :| []) Top@@ -64,7 +71,14 @@ -- | Given an ordering and two nonempty sequences ordered according to that -- ordering, merge them mergeSortedBy           :: (a -> a -> Ordering) -> NonEmpty a -> NonEmpty a -> NonEmpty a-mergeSortedBy cmp ls rs = NonEmpty.fromList $ go (F.toList ls) (F.toList rs)+mergeSortedBy cmp ls rs = NonEmpty.fromList+                        $ mergeSortedListsBy cmp (F.toList ls) (F.toList rs)+++-- | Given an ordering and two nonempty sequences ordered according to that+-- ordering, merge them+mergeSortedListsBy     :: (a -> a -> Ordering) -> [a] -> [a] -> [a]+mergeSortedListsBy cmp = go   where     go []         ys     = ys     go xs         []     = xs@@ -81,7 +95,6 @@                       -> CP (Point 2 r :+ p) r mergePairs cp' ls' rs' = go cp' (NonEmpty.toList ls') (NonEmpty.toList rs')   where-     -- scan through the points on the right in increasing order.     go              :: CP (Point 2 r :+ p) r -> [Point 2 r :+ p] -> [Point 2 r :+ p]                     -> CP (Point 2 r :+ p) r@@ -90,24 +103,28 @@                           cp'' = run cp r ls'' -- try to find a new closer pair with r.                       in go cp'' ls'' rs   -- and then process the remaining points -    -- ditch the points on the left that are too low anyway-    trim               :: Top r -> [Point 2 r :+ q] -> Point 2 r :+ a-                       -> [Point 2 r :+ q]-    trim (ValT d) ls r = List.dropWhile (\l -> sqVertDist l r > d) ls-    trim _        ls _ = ls+-- | ditch the points on the left that are too low anyway+trim               :: (Ord r, Num r)+                   => Top r -> [Point 2 r :+ q] -> Point 2 r :+ a+                   -> [Point 2 r :+ q]+trim (ValT d) ls r = List.dropWhile (\l -> sqVertDist l r > d) ls+trim _        ls _ = ls -    -- the squared vertical distance (in case r lies above l) or 0 otherwise-    sqVertDist l r = let d = 0 `max` (r^.core.yCoord - l^.core.yCoord) in d*d+-- | the squared vertical distance (in case r lies above l) or 0 otherwise+sqVertDist    :: (Ord r, Num r) => Point 2 r :+ p -> Point 2 r :+ q -> r+sqVertDist l r = let d = 0 `max` (r^.core.yCoord - l^.core.yCoord) in d*d -    -- try and find a new closest pair with r. If we get to points that are too far above-    -- r we stop (since none of those points will be closer to r anyway)-    run          :: CP (Point 2 r :+ p) r -> Point 2 r :+ p -> [Point 2 r :+ p]-                 -> CP (Point 2 r :+ p) r-    run cp'' r ls =+-- | try and find a new closest pair with r. If we get to points that are too+-- far above r we stop (since none of those points will be closer to r anyway)+run          :: (Ord r, Num r)+             => CP (Point 2 r :+ p) r -> Point 2 r :+ p -> [Point 2 r :+ p]+             -> CP (Point 2 r :+ p) r+run cp'' r ls =       runWhile cp'' ls-               (\cp l -> ValT (l^.core.yCoord - r^.core.yCoord) < (getDist cp))+               (\cp l -> (ValT $ sqVertDist r l) < getDist cp) -- r and l inverted+                                                               -- by design                (\cp l -> minBy getDist cp (ValT $ SP (Two l r) (dist l r)))-+  where     dist (p :+ _) (q :+ _) = squaredEuclideanDist p q  @@ -127,3 +144,27 @@ -- | Get the distance of a (candidate) closest pair getDist :: CP a r -> Top r getDist = fmap (view _2)++++++-- test4 = [Point2 (479109173120836 % 8353334321025) (5100576283797 % 96072829279) :+ ()+--         ,Point2 (58405408826671 % 1010204299645) (416491493323834 % 7859181827347) :+ ()+--         ,Point2 (497723773632392 % 8797511756605) (484251118551575 % 9452820868018) :+ ()+--         ,Point2 (71823625388220 % 1256943286753) (211467894699900 % 3952412568913) :+ ()+--         ]+++-- myTree = asBalancedBinLeafTree . LSeq.toNonEmpty . LSeq.promise . LSeq.unstableSortBy (comparing (^.core)). LSeq.fromList $ test4+-- myTree2 = let mkCCP (Elem p) = CCP (p :| []) Top in mkCCP <$> myTree++++-- ans2p = Point2 (479109173120836 % 8353334321025) (5100576283797 % 96072829279)+-- ans2q = Point2 (71823625388220 % 1256943286753) (211467894699900 % 3952412568913)++++-- temp =Two (test4 !! 1) (test4 !! 0)+-- tempX = ValT (SP temp $ squaredEuclideanDist (temp^._1.core) (temp^._2.core))
src/Algorithms/Geometry/DelaunayTriangulation/Naive.hs view
@@ -65,7 +65,7 @@  -- | Given a list of faces, construct a list of edges extractEdges :: [(VertexID,VertexID,VertexID)] -> [(VertexID,VertexID)]-extractEdges = map head . L.group . L.sort+extractEdges = map L.head . L.group . L.sort                . concatMap (\(p,q,r) -> [(p,q), (q,r), (p,r)])                -- we encounter every edge twice. To get rid of the duplicates                -- we sort, group, and take the head of the lists
src/Algorithms/Geometry/DelaunayTriangulation/Types.hs view
@@ -1,12 +1,21 @@ {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE ScopedTypeVariables #-}+--------------------------------------------------------------------------------+-- |+-- Module      :  Algorithms.Geometry.DelaunayTriangulation.Types+-- Copyright   :  (C) Frank Staals+-- License     :  see the LICENSE file+-- Maintainer  :  Frank Staals+--+-- Defines some geometric types used in the delaunay triangulation+--+-------------------------------------------------------------------------------- module Algorithms.Geometry.DelaunayTriangulation.Types where  import           Control.Lens import qualified Data.CircularList as C import           Data.Ext import           Data.Geometry-import           Data.Geometry.Ipe import           Data.Geometry.PlanarSubdivision import qualified Data.IntMap.Strict as IM import qualified Data.Map as M@@ -62,12 +71,6 @@ tEdges = concatMap (\(i,ns) -> map (i,) . filter (> i) . C.toList $ ns)        . zip [0..] . V.toList . _neighbours -drawTriangulation :: IpeOut (Triangulation p r) Group r-drawTriangulation tr =-  ipeGroup [ iO $ ipeLineSegment e-           | e <- map (uncurry ClosedLineSegment) . triangulationEdges $ tr-           ]- --------------------------------------------------------------------------------  data ST a b c = ST { fst' :: !a, snd' :: !b , trd' :: !c}@@ -97,6 +100,6 @@                    proxy s -> Triangulation p r -> PG.PlaneGraph s p () () r toPlaneGraph _ tr = PG.PlaneGraph $ g&PPG.vertexData .~ vtxData   where-    g       = PG.fromAdjacencyLists . V.toList . V.imap f $ tr^.neighbours+    g       = PPG.fromAdjacencyLists . V.toList . V.imap f $ tr^.neighbours     f i adj = (VertexId i, VertexId <$> adj)     vtxData = (\(loc :+ p) -> VertexData loc p) <$> tr^.positions
src/Algorithms/Geometry/EuclideanMST/EuclideanMST.hs view
@@ -17,7 +17,6 @@ import           Control.Lens import           Data.Ext import           Data.Geometry-import           Data.Geometry.Ipe import qualified Data.List.NonEmpty as NonEmpty import           Data.PlaneGraph import           Data.Proxy@@ -46,11 +45,3 @@   data MSTW---drawTree' :: IpeOut (Tree (Point 2 r :+ p)) Group r-drawTree' = ipeGroup . map (iO . defIO  . uncurry ClosedLineSegment) . treeEdges---treeEdges              :: Tree a -> [(a,a)]-treeEdges (Node v chs) = map ((v,) . rootLabel) chs ++ concatMap treeEdges chs
+ src/Algorithms/Geometry/FrechetDistance/Discrete.hs view
@@ -0,0 +1,80 @@+module Algorithms.Geometry.FrechetDistance.Discrete( discreteFrechetDistance+                                                   , discreteFrechetDistanceWith+                                                   ) where++import           Control.Lens ((^.))+import           Control.Monad.ST (ST,runST)+import           Data.Ext+import           Data.Geometry.Point+import qualified Data.Vector as V+import qualified Data.Vector.Mutable as MV+import qualified VectorBuilder.Builder as Builder+import qualified VectorBuilder.Vector as Builder++--------------------------------------------------------------------------------+++-- | Returns the discrete frechet distance between two point sequences+-- using the squared Euclidean distance. In other words, returns the+-- square of the (Euclidean) frechet distance.+--+-- running time: \(O((nm))\), where \(n\) and \(m\) are the lengths of+-- the sequences.+discreteFrechetDistance :: (Foldable f, Foldable g,  Functor f, Functor g, Ord r, Num r)+                        => f (Point 2 r :+ p) -> g (Point 2 r :+ q) -> r+discreteFrechetDistance = discreteFrechetDistanceWith squaredEuclideanDist++-- | Returns the discrete frechet distance between two point sequences+-- using the given distance measure.+--+-- running time: \(O((nm))\), where \(n\) and \(m\) are the lengths of+-- the sequences (and assuming that a distance calculation takes+-- constant time).+discreteFrechetDistanceWith         :: ( Foldable f, Functor f, Functor g, Foldable g, Ord r)+                                    => (Point 2 r -> Point 2 r -> r) -- ^ distance function+                                    -> f (Point 2 r :+ p)+                                    -> g (Point 2 r :+ q) -> r+discreteFrechetDistanceWith d ta tb = runST $ do+                                                 v <- MV.replicate (n*m) Nothing+                                                 let dpTable = DPTable m v+                                                     z       = Loc 0 0+                                                 -- initializes (0,0) with the appropriate distance+                                                 storeT dpTable z (dist z)+                                                 evalTable dist dpTable (Loc (n-1) (m-1))+  where+    ta' = Builder.build . Builder.foldable . fmap (^.core) $ ta+    tb' = Builder.build . Builder.foldable . fmap (^.core) $ tb+    n = V.length ta'+    m = V.length tb'++    dist (Loc r c) = d (ta' V.! r) (tb' V.! c)++data Loc = Loc !Int !Int deriving (Show,Eq)++data DPTable s r = DPTable !Int (MV.MVector s (Maybe r))++-- | compute the discrete frechet distance between the subtrajectories+-- up to the given Loc using dpTable for memoization memoization+evalTable              :: Ord r => (Loc -> r) -> DPTable s r -> Loc -> ST s r+evalTable dist dpTable = go+  where+    go p = lookupT dpTable p >>= \case+             Just d  -> pure d+             Nothing -> do+                          fd <- minimum <$> mapM go (prevs p)+                          let d = dist p `max` fd+                          storeT dpTable p d+                          pure d++-- | Look up a value in the DP Table+lookupT                           :: DPTable s r -> Loc -> ST s (Maybe r)+lookupT (DPTable m v) (Loc r c) = MV.read v (r*m+c)++-- | Stoer a value in the DP table+storeT                             :: DPTable s r -> Loc -> r -> ST s ()+storeT (DPTable m v) (Loc r c) d = MV.write v (r*m+c) (Just d)++-- | Candidate previous locations+prevs           :: Loc -> [Loc]+prevs (Loc r c) = filter (\(Loc x y) -> x >= 0 && y >= 0)+                    [Loc (r-1) c, Loc (r-1) (c-1), Loc r (c-1)]
src/Algorithms/Geometry/LineSegmentIntersection/BentleyOttmann.hs view
@@ -1,4 +1,15 @@ {-# LANGUAGE ScopedTypeVariables #-}+--------------------------------------------------------------------------------+-- |+-- Module      :  Algorithms.Geometry.LineSegmentIntersection.BentleyOttmann+-- Copyright   :  (C) Frank Staals+-- License     :  see the LICENSE file+-- Maintainer  :  Frank Staals+--+-- The \(O((n+k)\log n)\) time line segment intersection algorithm by Bentley+-- and Ottmann.+--+-------------------------------------------------------------------------------- module Algorithms.Geometry.LineSegmentIntersection.BentleyOttmann where  import           Algorithms.Geometry.LineSegmentIntersection.Types@@ -16,7 +27,8 @@ import           Data.Maybe import           Data.Ord (Down(..), comparing) import           Data.OrdSeq (Compare)-import qualified Data.OrdSeq as SS -- status struct+import qualified Data.Set as SS -- status struct+import qualified Data.Set.Util as SS -- status struct import qualified Data.Set as EQ -- event queue import           Data.Vinyl import           Data.Vinyl.CoRec@@ -28,7 +40,7 @@ -- \(O((n+k)\log n)\), where \(k\) is the number of intersections. intersections    :: (Ord r, Fractional r)                  => [LineSegment 2 p r] -> Intersections p r-intersections ss = merge $ sweep pts mempty+intersections ss = merge $ sweep pts SS.empty   where     pts = EQ.fromAscList . groupStarts . L.sort . concatMap asEventPts $ ss @@ -127,7 +139,7 @@ -- * The Main Sweep  type EventQueue      p r = EQ.Set (Event p r)-type StatusStructure p r = SS.OrdSeq (LineSegment 2 p r)+type StatusStructure p r = SS.Set (LineSegment 2 p r)  -- | Run the sweep handling all events sweep       :: (Ord r, Fractional r)@@ -157,20 +169,20 @@                  _       -> []      -- new status structure-    ss' = before <> newSegs <> after+    ss' = before `SS.join` newSegs `SS.join` after     newSegs = toStatusStruct p $ starts ++ contains      -- the new eeventqueue     eq' = foldr EQ.insert eq es     -- the new events:     es | F.null newSegs  = maybeToList $ app (findNewEvent p) sl sr-       | otherwise       = let s'  = fst <$> SS.minView newSegs-                               s'' = fst <$> SS.maxView newSegs+       | otherwise       = let s'  = SS.lookupMin newSegs+                               s'' = SS.lookupMax newSegs                            in catMaybes [ app (findNewEvent p) sl  s'                                         , app (findNewEvent p) s'' sr                                         ]-    sl = fst <$> SS.maxView before-    sr = fst <$> SS.minView after+    sl = SS.lookupMax before+    sr = SS.lookupMin after      app f x y = do { x' <- x ; y' <- y ; f x' y'} @@ -179,17 +191,18 @@ extractContains      :: (Fractional r, Ord r)                      => Point 2 r -> StatusStructure p r                      -> (StatusStructure p r, [LineSegment 2 p r], StatusStructure p r)-extractContains p ss = (before, F.toList $ mid1 <> mid2, after)+extractContains p ss = (before, F.toList mid1 <> F.toList mid2, after)   where     (before, mid1, after') = SS.splitOn (xCoordAt $ p^.yCoord) (p^.xCoord) ss     -- Make sure to also select the horizontal segments containing p-    (mid2, after) = SS.splitMonotonic (\s -> not $ p `onSegment` s) after'+    (mid2, after) = SS.spanAntitone (\s -> p `onSegment` s) after' + -- | Given a point and the linesegements that contain it. Create a piece of -- status structure for it. toStatusStruct      :: (Fractional r, Ord r)                     => Point 2 r -> [LineSegment 2 p r] -> StatusStructure p r-toStatusStruct p xs = ss <> hors+toStatusStruct p xs = ss `SS.join` hors   -- ss { SS.nav = ordAtNav $ p^.yCoord } `SS.join` hors   where     (hors',rest) = L.partition isHorizontal xs
src/Algorithms/Geometry/LineSegmentIntersection/Types.hs view
@@ -1,16 +1,18 @@ {-# LANGUAGE TemplateHaskell #-} module Algorithms.Geometry.LineSegmentIntersection.Types where +import           Control.DeepSeq import           Control.Lens import           Data.Ext import           Data.Geometry.Interval import           Data.Geometry.LineSegment import           Data.Geometry.Point import           Data.Geometry.Properties+import qualified Data.List as L import           Data.List.NonEmpty (NonEmpty(..)) import qualified Data.List.NonEmpty as NonEmpty-import qualified Data.List as L import qualified Data.Map as Map+import           GHC.Generics  -------------------------------------------------------------------------------- @@ -24,7 +26,7 @@  data Associated p r = Associated { _endPointOf        :: Set' (LineSegment 2 p r)                                  , _interiorTo        :: Set' (LineSegment 2 p r)-                                 } deriving (Show)+                                 } deriving (Show, Generic)   instance (Eq p, Eq r) => Eq (Associated p r) where@@ -35,6 +37,11 @@        g = L.nub . NonEmpty.toList       sameElements (g -> xs) (g -> ys) = L.null $ (xs L.\\ ys) ++ (ys L.\\ xs)+++instance (NFData p, NFData r) => NFData (Associated p r)++   associated       :: Ord r
+ src/Algorithms/Geometry/LinearProgramming/LP2DRIC.hs view
@@ -0,0 +1,381 @@+{-# LANGUAGE UndecidableInstances #-}+--------------------------------------------------------------------------------+-- |+-- Module      :  Algorithms.Geometry.LinearProgramming.LP2DRIC+-- Copyright   :  (C) Frank Staals+-- License     :  see the LICENSE file+-- Maintainer  :  Frank Staals+--+-- 2D Linear programming in expected linear time.+--+--------------------------------------------------------------------------------+module Algorithms.Geometry.LinearProgramming.LP2DRIC( solveBoundedLinearProgram+                                                    , solveBoundedLinearProgram'++                                                    , maximumOn+                                                    , oneDLinearProgramming+                                                    , commonIntersection+                                                    , cmpHalfPlane+                                                    ) where++import           Algorithms.Geometry.LinearProgramming.Types+import           Control.Lens+import           Control.Monad (foldM)+import           Control.Monad.Random.Class+import           Data.Ext+import qualified Data.Foldable as F+import           Data.Geometry.Boundary+import           Data.Geometry.HalfLine+import           Data.Geometry.HalfSpace+import           Data.Geometry.HyperPlane+import           Data.Geometry.Line+import           Data.Geometry.Point+import           Data.Geometry.Properties+import           Data.Geometry.Vector+import qualified Data.List.NonEmpty as NonEmpty+import           Data.Maybe (mapMaybe)+import           Data.Util+import           Data.Vinyl+import           Data.Vinyl.CoRec+import           System.Random.Shuffle++--------------------------------------------------------------------------------++-- | Solve a linear program+solveLinearProgram :: MonadRandom m => LinearProgram 2 r -> m (LPSolution 2 r)+solveLinearProgram = undefined+++-- | Solves a bounded linear program in 2d. Returns Nothing if there is no+-- solution.+--+-- pre: The linear program is bounded, meaning that *the first two constraints*+-- m1,m2 make sure th the there is no arbitrarily large/good+-- solution. I..e. these halfspaces bound the solution in the c direction.+--+-- (note that if there is only one constraint, m1, the assumption that the LP+-- is bounded means that the contraint must be perpendicular to the objective+-- direction. Hence, any point on the bounding plane is a solution, and they+-- are all equally good.)+--+-- \(O(n)\) expected time+--+--+solveBoundedLinearProgram                      :: (MonadRandom m, Ord r, Fractional r)+                                               => LinearProgram 2 r -> m (Maybe (Point 2 r))+solveBoundedLinearProgram (LinearProgram c hs') = case hs' of+    []         -> pure Nothing+    [m1]       -> pure $ Just (m1^.boundingPlane.inPlane)+    (m1:m2:hs) -> solveBoundedLinearProgram' . LinearProgram c . ([m1,m2] ++) . F.toList+                  <$> shuffle hs+++-- | Solves a bounded linear program (like 'solveBoundedLinearProgram')+-- assuming that the first two constraints [m1,m2] make sure the solutions is+-- bounded, and the other constraints already have been shuffled.+solveBoundedLinearProgram'    :: (Ord r, Fractional r)+                              => LinearProgram 2 r -> Maybe (Point 2 r)+solveBoundedLinearProgram' lp = let (s,hs) = initialize lp+                                in (^.current) <$> foldM step s hs++--------------------------------------------------------------------------------++-- | State during the LP algo+data LPState d r = LPState { _obj     :: !(Vector d r)+                           , _seen    :: [HalfSpace d r]+                           , _current :: !(Point d r)+                           }++deriving instance (Arity d, Show r)   => Show    (LPState d r)+deriving instance (Arity d, Eq r)     => Eq      (LPState d r)++obj     :: Lens' (LPState d r) (Vector d r)+obj     = lens _obj     (\(LPState _ s p) o -> LPState o s p)+seen    :: Lens' (LPState d r) [HalfSpace d r]+seen    = lens _seen    (\(LPState o _ p) s -> LPState o s p)+current :: Lens' (LPState d r) (Point d r)+current = lens _current (\(LPState o s _) p -> LPState o s p)+++-- | What we do when we get a new halfspace h+step                                   :: (Fractional r, Ord r)+                                       => LPState 2 r -> HalfSpace 2 r+                                       -> Maybe (LPState 2 r)+step s h | (s^.current) `intersects` h = Just $ s&seen     %~ (h:)+         | otherwise                   = (\p -> s&seen     %~ (h:)+                                                 &current .~ p)+                                        <$> maximumOn s (h^.boundingPlane._asLine)++--------------------------------------------------------------------------------++-- | collect all intersecting halflines on the boundary l of h. If we return a Nothing there+-- is no solution. Just [] indicates that somehow this halfspace h is contained in all other+-- halfspaces.+collectOn     :: (Ord r, Fractional r)+              => Line 2 r+              -> [HalfSpace 2 r]+              -> Maybe [HalfLine 2 r]+collectOn l = sequence . mapMaybe collect . map (l `intersect`)+  where+    collect   :: Intersection (Line 2 r) (HalfSpace 2 r) -> Maybe (Maybe (HalfLine 2 r))+    collect r = match r $+         (H $ \NoIntersection -> Just Nothing)+      :& (H $ \hl             -> Just $ Just hl)+      :& (H $ \_              -> Nothing)+      :& RNil+++-- | Given a vector v and two points a and b, determine which is smaller in direction v.+cmpHalfPlane       :: (Ord r, Num r, Arity d)+                   => Vector d r -> Point d r -> Point d r -> Ordering+cmpHalfPlane v a b = case a `inHalfSpace` (HalfSpace $ HyperPlane b $ v) of+                       Inside     -> GT+                       OnBoundary -> EQ+                       Outside    -> LT++type OneOrTwo a = Either a (Two a)++flatten :: OneOrTwo a -> [a]+flatten = either (:[]) (\(Two a b) -> [a,b])++-- | Computes the common intersection of a nonempty list of halfines that are+-- all colinear with the given line l.+--+-- We return either the two halflines that prove that there is no counter+-- example or we return one or two points that form form the boundary points of+-- the range in which all halflines intersect.+commonIntersection                :: (Ord r, Num r, Arity d)+                                  => Line d r+                                  -> NonEmpty.NonEmpty (HalfLine d r :+ a)+                                  -> Either (Two ((HalfLine d r :+ a)))+                                            (OneOrTwo (Point d r :+ a))+commonIntersection (Line _ v) hls = case (nh,ph) of+     (Nothing,Nothing) -> error "absurd; this case cannot occur"+     (Nothing, Just p) -> Right . Left . extract $ p+     (Just n, Nothing) -> Right . Left . extract $ n+     (Just n, Just p)  -> case cmpHalfPlane' v n p of+                            LT -> Left $ Two n p+                            EQ -> Right . Left . extract $ p+                            GT -> Right . Right $ Two (extract p) (extract n)+  where+    extract = over core (^.startPoint)+    (pos,neg) = NonEmpty.partition (\hl -> hl^.core.halfLineDirection == v) $ hls+    ph = maximumBy' (cmpHalfPlane' v) pos+    nh = maximumBy' (flip $ cmpHalfPlane' v) neg++    cmpHalfPlane' vv a b = cmpHalfPlane vv (a^.core.startPoint) (b^.core.startPoint)++commonIntersection'               :: (Ord r, Num r, Arity d)+                                  => Line d r+                                  -> NonEmpty.NonEmpty (HalfLine d r)+                                  -> [Point d r]+commonIntersection' l hls = either (const []) (map (^.core) . flatten)+                          $ commonIntersection l (ext <$> hls)+++-- | maximum of a list using a given comparison ; if the list is empty returns Nothing+maximumBy'     :: (a -> a -> Ordering) -> [a] -> Maybe a+maximumBy' cmp = \case+  [] -> Nothing+  xs -> Just $ F.maximumBy cmp xs+++-- | One dimensional linear programming on lines embedded in \(\mathbb{R}^d\).+--+-- Given an objective vector c, a line l, and a collection of half-lines hls that are all+-- sublines of l (i.e. halfspaces *on* l), compute if there is a point inside+-- all these halflines. If so, we actually return the one that maximizes c.+--+-- running time: \(O(n)\)+oneDLinearProgramming         :: (Ord r, Num r, Arity d)+                              => Vector d r -> Line d r -> [HalfLine d r] -> Maybe (Point d r)+oneDLinearProgramming c l hls = do+                                  hls'       <- NonEmpty.nonEmpty hls+                                  let candidates = commonIntersection' l hls'+                                  maximumBy' (cmpHalfPlane c) candidates+++-- | Let l be the boundary of h, and assume that we know that the new point in+-- the common intersection must lie on h, try to find this point. In+-- partiuclar, we find the 'maximum' point in the s^.direction vector. The+-- funtion returns Nothing if no such point exists, i.e. if there is no point+-- on l that is contained in all halfspaces.+--+-- Note that this is essentially one dinsional LP+maximumOn     :: (Ord r, Fractional r) => LPState 2 r -> Line 2 r -> Maybe (Point 2 r)+maximumOn s l = do hls  <- collectOn l $ s^.seen+                   oneDLinearProgramming (s^.obj) l hls+  -- if collectOn returns a Just [] it means there is a point in the common intersection,+  -- however it does not lie on the boundary of h. This violates our input assumption+  -- thus if this would happen we can safely return a Nothing+++--------------------------------------------------------------------------------++-- | Assumes that the first two constraints somehow bound the solution in direction c.+initialize :: forall r. (Ord r, Fractional r)+           => LinearProgram 2 r -> (LPState 2 r, [HalfSpace 2 r])+initialize (LinearProgram c (m1:m2:hs)) = (LPState c [m1,m2] p, hs)+  where+    Just p = asA @(Point 2 r)+           $ (m1^.boundingPlane._asLine) `intersect` (m2^.boundingPlane._asLine)++++--------------------------------------------------------------------------------++-- | Let \(n(h)\) denote the normal of the line bounding a halfspace \(h\).+--+-- This function tries to Find an "unbounded direction" \(d\). If such a+-- direction \(d\) exits the LP is unbounded, and we can produce evidence of+-- this in the form of a half-line in direction \(d\).+--+-- More formally, we are looking for a direction \(d\) so that+-- - \(c \cdot d > 0\), and+-- - \(d \cdot n(h) \geq 0\), wherefor every half space \(h\).+--+findD                      :: (Ord r, Fractional r)+                           => LinearProgram 2 r -> Maybe (Vector 2 r)+findD (LinearProgram c hs) = do hls <- collectOn nl hs'+                                d   <- toVec <$> oneDLinearProgramming v nl hls+                                       -- the direction v here does not really matter+                                if c `dot` d > 0 then pure d+                                                 else Nothing+  where+    -- we interpret the points on nl as directions w.r.t the origin+    nl@(Line _ v) = perpendicularTo (Line (origin .+^ c) c)+    hs' = map toHL hs++    -- every halfspace creates an allowed set of directions, modelled by a+    -- half-line on nl+    toHL h = let n              = h^.boundingPlane.normalVec+             in undefined+++-- | Either finds an unbounded Haflline, or evidence the two halfspaces that provide+-- evidence that no solution exists+findUnBoundedHalfLine :: LinearProgram 2 r -> Either (Two (HalfSpace 2 r)) (HalfLine 2 r)+findUnBoundedHalfLine = undefined -- use findD then find the starting point+++++++++    -- ok; we can normalize the "y-coord" of our d-vector by taking the+    -- length of vector c. (I should probably square the c to avoid having to take square roots.)++  -- but how about the "x-coord"; we need to express that as the "lambda coord" along nl++++-- ok so the global plan is: Find a vector d++++--------------------------------------------------------------------------------++-- TODO: Fix this+++-- findWith' o h ho hs =+++-- findWith o h []+--   | o `isPerpendicularTo` (h^.boundingPlane._asLine) = Single $ h^.boundingPlane.inPlane+--   | otherwise                                        = UnBounded+-- findWith o h hs = case commonSpace oppo of+--                     []     ->+--                     (ho:_) | ho `intersects1` hX -> findWith' o hX ho hs'+--                              -- observe that we can ignore the rest of the planes in+--                              -- parra and oppo from our computation, since they+--                              -- contain hX and hO, respectively anyway.+--                            | otherwise          -> NoSolution+--                              -- appararently ho and hX are disjoint, so there is no+--                              -- point in the common intersection of (all halfspaces)+--   where+--     -- parra: parrallel halfspaces where the space is on the same "side" as h+--     -- oppo: parallel halfspaces with opposite side as h+--     -- hs' : non-parallel+--     STR parra oppo hs' = foldr (extractParallel h) (STR [] [] []) hs+--     Just hX = commonSpace (h:parra)++--     intersects1 a b = (a^.boundingPlane.inPlane) `intersects` b++++-- -- | Given two halfspaces a and h, test if the bounding plane of h is parallel to a, with+-- -- the spaces on the same side (first arg of the result), opposite (second), or+-- -- neither (third).+-- extractParallel                    :: (Arity d, Ord r, Fractional r)+--                                    => HalfSpace d r+--                                    -> HalfSpace d r+--                                    -> STR [HalfSpace d r] [HalfSpace d r] [HalfSpace d r]+--                                    -> STR [HalfSpace d r] [HalfSpace d r] [HalfSpace d r]+-- extractParallel a h (STR ps os hs) = case scalarMultiple n v of+--                                         Nothing              -> STR ps     os     (h:hs)+--                                         Just lam | lam < 0   -> STR ps     (h:os) hs+--                                                  | otherwise -> STR (h:ps) os     hs++--   where+--     n = a^.boundingPlane.normalVec+--     v = h^.boundingPlane.normalVec++++-- -- | Given a bunch of halfpsaces that have parallel bounding planes and whose+-- -- normal vectors are oriented in the same direciton, reports the common+-- -- halfspace, i.e. the "smallest" common intersection.+-- --+-- -- this function returns a Nothing only if the initial list is empty+-- commonSpace :: forall d r. (Ord r, Fractional r) => [HalfSpace d r] -> Maybe (HalfSpace d r)+-- commonSpace = \case+--     []     -> Nothing+--     (h:hs) -> foldr trim (Just h) hs+--   where+--     trim h acc = acc >>= \h' -> let p = h^.boundingPlane.inPlane in+--                                 if p `intersects` h' then h' else h+--                                 -- We use that the boudning planes of h and h' are parallel+--                                 -- so if h' contains the inPlane point of h then h'+--                                 -- contains h. If not then it is the other way around++++++++--   match (h^.boundingPlane._asLine) `intersect` h' $+--       (H $ \Nothing -> if (h'^.boundingPlane._asLine) `intersects` h+--                       then findWith o h' -- no solution on h ; h is redundant+--                       else insert h' $ findWith o h hs)  -- add h'+--    :& (H $ \hl -> undefined)+--    :& (H $ \_ -> undefined)+--    :& RNil++++++-- initialize          :: (Ord r, Fractional r)+--                     => Vector 2 r -> [HalfSpace d r]+--                     -> GLPolution (LPState d r, [HalfSpace d r])+-- initialize _ []     = NoSolution+-- initialize o (h:hs) = findWith o h hs+++-- -- -- | Given a vector v and a halfplane h, return the extremal point in direction+-- -- -- v that lies in h.+-- -- findBest v h =+++--   -- ( LPState o [h,h2] undefined+-- --                         (h^.boundingPlane `intersect` h2^.boundingPlane)+-- --                          , hs)+-- -- initialize _ _         = error "initialize: unbounded LP"++++-- -- (\h' -> (h'^.halfSpaceBoundary) `intersect`) h^.halfSpaceBoundary
+ src/Algorithms/Geometry/LinearProgramming/Types.hs view
@@ -0,0 +1,39 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE UndecidableInstances #-}+--------------------------------------------------------------------------------+-- |+-- Module      :  Algorithms.Geometry.LinearProgramming.Types+-- Copyright   :  (C) Frank Staals+-- License     :  see the LICENSE file+-- Maintainer  :  Frank Staals+--+-- 2D Linear programming in expected linear time.+--+--------------------------------------------------------------------------------+module Algorithms.Geometry.LinearProgramming.Types where++import           Control.Lens+import           Data.Geometry.HalfSpace+import           Data.Geometry.HalfLine+import           Data.Geometry.Point+import           Data.Geometry.Vector++--------------------------------------------------------------------------------++-- | Data type representing the solution to a linear program+data LPSolution d r = NoSolution+                    | Single !(Point d r)+                    | UnBounded (HalfLine d r)+makePrisms ''LPSolution++deriving instance (Arity d, Show r)   => Show    (LPSolution d r)+deriving instance (Arity d, Eq r)     => Eq      (LPSolution d r)++data LinearProgram d r = LinearProgram { _objective   :: !(Vector d r)+                                       , _constraints :: [HalfSpace d r]+                                       }+makeLenses ''LinearProgram++deriving instance Arity d             => Functor (LinearProgram d)+deriving instance (Arity d, Show r)   => Show    (LinearProgram d r)+deriving instance (Arity d, Eq r)     => Eq      (LinearProgram d r)
src/Algorithms/Geometry/LowerEnvelope/DualCH.hs view
@@ -9,9 +9,10 @@ import Data.List.NonEmpty(NonEmpty(..)) import qualified Data.List.NonEmpty as NonEmpty import Data.Geometry.Duality-import Data.Proxy import Data.Vinyl.CoRec +--------------------------------------------------------------------------------+ type Envelope a r = NonEmpty (Line 2 r :+ a)  -- | Given a list of non-vertical lines, computes the lower envelope using@@ -46,4 +47,4 @@ intersect'                     :: forall r a. (Ord r, Fractional r)                                => Line 2 r :+ a -> Line 2 r :+ a -> Point 2 r :+ (a,a) intersect' (l :+ le) (r :+ re) = (:+ (le,re)) . fromJust-                               . asA (Proxy :: Proxy (Point 2 r)) $ l `intersect` r+                               . asA @(Point 2 r) $ l `intersect` r
src/Algorithms/Geometry/PolygonTriangulation/MakeMonotone.hs view
@@ -22,8 +22,8 @@ import qualified Data.IntMap as IntMap import qualified Data.List.NonEmpty as NonEmpty import           Data.Ord (comparing, Down(..))-import           Data.OrdSeq (OrdSeq)-import qualified Data.OrdSeq as SS+import qualified Data.Set as SS+import qualified Data.Set.Util as SS import           Data.Util import qualified Data.Vector as V import qualified Data.Vector.Mutable as MV@@ -95,7 +95,7 @@  type Event r = Point 2 r :+ (Two (LineSegment 2 Int r)) -data StatusStruct r = SS { _statusStruct :: !(SS.OrdSeq (LineSegment 2 Int r))+data StatusStruct r = SS { _statusStruct :: !(SS.Set (LineSegment 2 Int r))                          , _helper       :: !(IntMap.IntMap Int)                          -- ^ for every e_i, the id of the helper vertex                          } deriving (Show)@@ -129,7 +129,7 @@                      MV.write v i (STR pt p vt)                    return v -    initialSS = SS mempty mempty+    initialSS = SS SS.empty mempty      sweep  es = flip runReader vertexInfo $ evalStateT (sweep' es) initialSS     sweep' es = DList.toList <$> execWriterT (sweep'' es)@@ -177,11 +177,11 @@   insertAt   :: (Ord r, Fractional r) => Point 2 r -> LineSegment 2 q r-           -> OrdSeq (LineSegment 2 q r) -> OrdSeq (LineSegment 2 q r)+           -> SS.Set (LineSegment 2 q r) -> SS.Set (LineSegment 2 q r) insertAt v = SS.insertBy (ordAt $ v^.yCoord)  deleteAt   :: (Fractional r, Ord r) => Point 2 r -> LineSegment 2 p r-           -> OrdSeq (LineSegment 2 p r) -> OrdSeq (LineSegment 2 p r)+           -> SS.Set (LineSegment 2 p r) -> SS.Set (LineSegment 2 p r) deleteAt v = SS.deleteAllBy (ordAt $ v^.yCoord)  @@ -214,10 +214,10 @@   lookupLE     :: (Ord r, Fractional r)-             => Point 2 r -> OrdSeq (LineSegment 2 Int r)+             => Point 2 r -> SS.Set (LineSegment 2 Int r)              -> Maybe (LineSegment 2 Int r) lookupLE v s = let (l,m,_) = SS.splitOn (xCoordAt $ v^.yCoord) (v^.xCoord) s-               in SS.lookupMax (l <> m)+               in SS.lookupMax (l `SS.join` m)   handleSplit              :: (Fractional r, Ord r) => Int -> Event r -> Sweep p r ()
+ src/Algorithms/Geometry/RedBlueSeparator/RIC.hs view
@@ -0,0 +1,147 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Algorithms.Geometry.RedBlueSeparator.RIC+-- Copyright   :  (C) Frank Staals+-- License     :  see the LICENSE file+-- Maintainer  :  Frank Staals+--+-- Given a set of red points and a set of blue points in \(\mathbb{R}^2\) finds+-- a separating line in \(O(n)\) expected time, where \(n\) is the total number+-- of points.+--+--------------------------------------------------------------------------------+module Algorithms.Geometry.RedBlueSeparator.RIC where+++import           Algorithms.Geometry.LinearProgramming.LP2DRIC+import           Algorithms.Geometry.LinearProgramming.Types+import           Control.Applicative ((<|>))+import           Control.Lens hiding (below)+import           Control.Monad.Random.Class+import           Data.Ext+import qualified Data.Foldable as F+import           Data.Geometry.HalfSpace+import           Data.Geometry.Line+import           Data.Geometry.Point+import           Data.Geometry.Vector+import           Data.Ord (comparing)+import           Data.Semigroup.Foldable+import           Data.Util++--------------------------------------------------------------------------------++-- -- | Given a set of red points and a set of blue points in \(\mathbb{R}^2\)+-- -- finds a separating line (if it exists). The result is strict in the+-- -- sense that there will not be any points on the line.+-- --+-- --+-- -- running time: \(O(n)\) expected time, where \(n\) is the total number+-- -- of points.+-- strictSeparatingLine = undefined++-- | Given a set of red points and a set of blue points in \(\mathbb{R}^2\)+-- finds a separating line (if it exists). The result is non-strict in the+-- sense that there may be points *on* the line.+--+--+-- running time: \(O(n)\) expected time, where \(n\) is the total number+-- of points.+separatingLine :: (MonadRandom m, Foldable1 f, Foldable1 g, Fractional r, Ord r)+               => f (Point 2 r :+ redData)+               -> g (Point 2 r :+ blueData)+               -> m (Maybe (Line 2 r))+separatingLine reds blues = do l <- separatingLine' reds blues+                               m <- separatingLine' blues reds+                               pure $ l <|> m++-- | Given a set of red points and a set of blue points in \(\mathbb{R}^2\)+-- finds a separating line (if it exists) that has all red points *right* (or+-- on) the line, and all blue points left (or on) the line.+--+-- running time: \(O(n)\) expected time, where \(n\) is the total number+-- of points.+separatingLine' :: (MonadRandom m, Foldable1 f, Foldable1 g, Fractional r, Ord r)+                => f (Point 2 r :+ redData)+                -> g (Point 2 r :+ blueData)+                -> m (Maybe (Line 2 r))+separatingLine' reds blues = case verticalSeparatingLine reds blues of+    SP Nothing ((r:+_),(b :+ _)) -> separatingLine'' r b reds blues+      -- observe that if r and b were vertically above each other then we would+      -- have found a separating line. So r and b are not vertically+      -- aligned. Hence we satisfy the precondition.+    SP ml@(Just _) _             -> pure ml  -- already found a line+++-- | given a red and blue point that are *NOT* vertically alligned, and all red+-- and all blue points, try to find a non-vertical separating line.+--+-- running time: \(O(n)\) expected time, where \(n\) is the total number+-- of points.+separatingLine'' :: (MonadRandom m, Foldable1 f, Foldable1 g, Fractional r, Ord r)+                => Point 2 r -- ^ red point r+                -> Point 2 r -- ^ a blue point b+                -> f (Point 2 r :+ redData)+                -> g (Point 2 r :+ blueData)+                -> m (Maybe (Line 2 r))+separatingLine'' r b reds blues = fmap mkLine <$> solveBoundedLinearProgram lp+  where+    lp = LinearProgram c ([mkRed r, mkBlue b] <> hs)++    c = case (r^.xCoord) `compare` (b^.xCoord) of+          LT -> Vector2 (-1) 0  -- minimize a+          GT -> Vector2 1    0  -- maximize a+          EQ -> error "separatingLine'': precondition failed. r and b vertically above each other"++    mkLine (Point2 aa bb) = fromLinearFunction aa bb++    -- red points generate the constraint: ry <= a*rx + b <=> b >= (-rx)a + ry+    mkRed (Point2 rx ry)  = above $ fromLinearFunction ((-1)*rx) ry+    -- blue points generate the constraint: by >= a*bx + b <=> b <= (-bx)a + by+    mkBlue (Point2 bx by) = below $ fromLinearFunction ((-1)*bx) by++    hs = [mkRed rr | (rr :+ _) <- F.toList reds] <> [mkBlue bb | (bb :+ _) <- F.toList blues]+++--------------------------------------------------------------------------------+-- * Vertical Separators++-- | Computes a strict vertical separating line, if one exists+strictVerticalSeparatingLine            :: (Foldable1 f, Foldable1 g, Fractional r, Ord r)+                                        => f (Point 2 r :+ redData)+                                        -> g (Point 2 r :+ blueData)+                                        -> Maybe (Line 2 r)+strictVerticalSeparatingLine reds blues = do let (r,b) = extremalPoints reds blues+                                                 rx    = r^.core.xCoord+                                                 bx    = b^.core.xCoord+                                             if bx < rx+                                               then Just . verticalLine $ (rx + bx) / 2+                                               else Nothing -- no vertical separator+++-- | Test if there is a vertical separating line that has all red points to its+-- right (or on it) and all blue points to its left (or on it).  This function+-- also returns the two extremal points; in case a line is returned, the line+-- actually goes through the blue (second) point, if there is no line, this+-- pair provides evidence that there is no vertical separating line.+--+-- The line we return actually goes through one blue point.+verticalSeparatingLine            :: (Foldable1 f, Foldable1 g, Num r, Ord r)+                                  => f (Point 2 r :+ redData)+                                  -> g (Point 2 r :+ blueData)+                                  -> SP (Maybe (Line 2 r))+                                        (Point 2 r :+ redData, Point 2 r :+ blueData)+verticalSeparatingLine reds blues = SP ml es+  where+    es@(r,b) = extremalPoints reds blues+    ml = if b^.core.xCoord <= r^.core.xCoord then Just . verticalLine $ (b^.core.xCoord)+                                             else Nothing++-- | Get the the leftmost red point and the rightmost blue point.+extremalPoints            :: (Foldable1 f, Foldable1 g, Ord r)+                          => f (Point 2 r :+ redData)+                          -> g (Point 2 r :+ blueData)+                          -> (Point 2 r :+ redData, Point 2 r :+ blueData)+extremalPoints reds blues = (F.minimumBy (comparing (^.core.xCoord)) reds+                            ,F.maximumBy (comparing (^.core.xCoord)) blues)++--------------------------------------------------------------------------------
src/Algorithms/Geometry/SmallestEnclosingBall/RandomizedIncrementalConstruction.hs view
@@ -15,13 +15,14 @@  import           Algorithms.Geometry.SmallestEnclosingBall.Types import           Control.Lens+import           Control.Monad.Random.Class import           Data.Ext+import qualified Data.Foldable as F import           Data.Geometry import           Data.Geometry.Ball import qualified Data.List as L import           Data.List.NonEmpty import           Data.Maybe (fromMaybe)-import           System.Random import           System.Random.Shuffle (shuffle)  --------------------------------------------------------------------------------@@ -29,14 +30,13 @@ -- | O(n) expected time algorithm to compute the smallest enclosing disk of a -- set of points. we need at least two points. -- implemented using randomized incremental construction-smallestEnclosingDisk           :: (Ord r, Fractional r, RandomGen g)-                                => g-                                -> [Point 2 r :+ p]-                                -> DiskResult p r+smallestEnclosingDisk           :: (Ord r, Fractional r, MonadRandom m)+                                => [Point 2 r :+ p]+                                -> m (DiskResult p r) -smallestEnclosingDisk g pts@(_:_:_) = let (p:q:pts') = shuffle g pts-                                      in smallestEnclosingDisk' p q pts'-smallestEnclosingDisk _ _           = error "smallestEnclosingDisk: Too few points"+smallestEnclosingDisk pts@(_:_:_) = ((\(p:q:pts') -> smallestEnclosingDisk' p q pts')+                                    . F.toList) <$> shuffle pts+smallestEnclosingDisk _           = error "smallestEnclosingDisk: Too few points"  -- | Smallest enclosing disk. smallestEnclosingDisk'     :: (Ord r, Fractional r)
− src/Algorithms/Geometry/Sweep.hs
@@ -1,171 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UndecidableInstances #-}------------------------------------------------------------------------------------ |--- Module      :  Algorithms.Geometry.Sweep--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ Helper types and functions for implementing Sweep line algorithms.-------------------------------------------------------------------------------------module Algorithms.Geometry.Sweep where--import qualified Data.Map as Map-import           Data.Map (Map)-import           Data.Proxy-import           Data.Reflection-import           Unsafe.Coerce------------------------------------------------------------------------------------newtype Tagged (s :: *) a = Tagged { unTag :: a} deriving (Show,Eq,Ord)--tag   :: proxy s -> a -> Tagged s a-tag _ = Tagged----- | Represent a computation that needs a particular time as input.-newtype Timed s t a = Timed {atTime :: (Tagged s t) -> a }---instance (Reifies s t, Ord k) => Ord (Timed s t k) where-  compare = compare_--instance (Reifies s t, Ord k) => Eq (Timed s t k) where-  a == b = a `compare` b == EQ---- | Comparison function for timed values-compare_                       :: forall s t k. (Ord k, Reifies s t)-                               => Timed s t k -> Timed s t k-                               -> Ordering-(Timed f) `compare_` (Timed g) = let t = reflect (Proxy :: Proxy s)-                                 in f (Tagged t) `compare` g (Tagged t)----- | Coerce timed values-coerceTo   :: proxy s -> f (Timed s' t k) v -> f (Timed s t k) v-coerceTo _ = unsafeCoerce---unTagged :: f (Timed s t k) v -> f (Timed () t k) v-unTagged = coerceTo (Proxy :: Proxy ())----- | Runs a computation at a given time.-runAt       :: forall s0 t k r f v. Ord k-            => t-            -> f (Timed s0 t k) v-            -> (forall s. Reifies s t => f (Timed s t k) v -> r)-            -> r-runAt t m f = reify t $ \prx -> f (coerceTo prx m)--------------------------------------------------------------------------------------getTime :: Timed s Int Int-getTime = Timed unTag---constT     :: proxy s -> Int -> Timed s Int Int-constT _ i = Timed (const i)---test1 i = reify 5 $ \prx -> getTime < constT prx i------test2M   :: Reifies s Int => proxy s -> Map (Timed s Int Int) String-test2M p = Map.fromList [ (constT p 10, "ten")-                        , (getTime, "timed")-                        ]---query :: forall s v. Ord (Timed s Int Int)-      => Map (Timed s Int Int) v -> Maybe v-query = fmap snd . Map.lookupGE (constT (Proxy :: Proxy s) 4)---test2   :: Int -> Maybe String-test2 t = runAt t m query-  where-    m :: Map (Timed () Int Int) String-    m = reify 0 $ \p -> unTagged $ test2M p-------- test2 = reify 0 $ \p0 ->---                     let m = unTagged $ test2M p0---                     in runAt 10 m Map.lookup------ newtype Key s a b = Key { getKey :: a -> b }---- instance (Eq b, Reifies s a) => Eq (Key s a b) where---   (Key f) == (Key g) = let x = reflect (Proxy :: Proxy s)---                        in f x == g x---- instance (Ord b, Reifies s a) => Ord (Key s a b) where---   Key f `compare` Key g = let x = reflect (Proxy :: Proxy s)---                           in f x `compare` g x----- -- | Query the sweep--- queryAt       :: a---               -> (forall (s :: *). Reifies s a => Map (Key s a b) v -> res)---               -> Map (a -> b) v -> res--- queryAt x f m = reify x (\p -> f . coerceKeys p $ m)---- updateAt      :: a---               -> (forall (s :: *). Reifies s a =>---                    Map (Key s a b) v -> Map (Key s a b) v')---               -> Map (a -> b) v---               -> Map (a -> b) v'--- updateAt x f m = reify x (\p -> uncoerceKeys . f . coerceKeys p $ m)----- combineAt            :: a---                      -> (forall (s :: *). Reifies s a =>---                            Map (Key s a b) v -> Map (Key s a b) v---                            -> Map (Key s a b) v)---                      -> Map (a -> b) v---                      -> Map (a -> b) v---                      -> Map (a -> b) v--- combineAt x uF m1 m2 = reify x (\p -> uncoerceKeys $---                                         coerceKeys p m1 `uF` coerceKeys p m2)----- splitLookupAt       :: Ord b---                     => a---                     -> (a -> b)---                     -> Map (a -> b) v---                     -> (Map (a -> b) v, Maybe v, Map (a -> b) v)--- splitLookupAt x k m = reify x (\p -> let (l,mv,r) = Map.splitLookup (Key k)---                                                   $ coerceKeys p m---                                    in (uncoerceKeys l, mv, uncoerceKeys r))----- ------------------------------------------------------------------------------------ coerceKeys   :: proxy s -> Map (a -> b) v -> Map (Key s a b) v--- coerceKeys _ = unsafeCoerce---- uncoerceKeys :: Map (Key s a b) v -> Map (a -> b) v--- uncoerceKeys = unsafeCoerce----- ------------------------------------------------------------------------------------- data Node a = Node2 a a---             | Node3 a a a---- data FT a = Single a---           | Deep (FT (Node a)) a (FT (Node a))
src/Algorithms/Geometry/WellSeparatedPairDecomposition/WSPD.hs view
@@ -25,7 +25,7 @@ import qualified Data.Geometry.Vector as GV import qualified Data.IntMap.Strict as IntMap import qualified Data.LSeq as LSeq-import           Data.LSeq (LSeq(..),toSeq,ViewL(..),ViewR(..),pattern (:<|),pattern (:|>))+import           Data.LSeq (LSeq,toSeq,ViewL(..),ViewR(..),pattern (:<|)) import qualified Data.List as L import qualified Data.List.NonEmpty as NonEmpty import           Data.Maybe
− src/Algorithms/Graph/DFS.hs
@@ -1,53 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-module Algorithms.Graph.DFS where--import           Control.Monad.ST (ST,runST)-import           Data.Maybe-import           Data.PlanarGraph-import           Data.Tree-import qualified Data.Vector as V-import qualified Data.Vector.Generic as GV-import qualified Data.Vector.Unboxed.Mutable as UMV----- | DFS on a planar graph.------ Running time: \(O(n)\)------ Note that since our planar graphs are always connected there is no need need--- for dfs to take a list of start vertices.-dfs  :: forall s w v e f.-      PlanarGraph s w v e f -> VertexId s w -> Tree (VertexId s w)-dfs g = dfs' (adjacencyLists g)---- | Adjacency list representation of a graph: for each vertex we simply list--- all connected neighbours.-type AdjacencyLists s w = V.Vector [VertexId s w]---- | Transform into adjacencylist representation-adjacencyLists   :: PlanarGraph s w v e f -> AdjacencyLists s w-adjacencyLists g = V.toList . flip neighboursOf g <$> vertices' g---- | DFS, from a given vertex, on a graph in AdjacencyLists representation.------ Running time: \(O(n)\)-dfs'          :: forall s w. AdjacencyLists s w -> VertexId s w -> Tree (VertexId s w)-dfs' g start = runST $ do-                 bv     <- UMV.replicate n False -- bit vector of marks-                 -- start will be unvisited, thus the fromJust is safe-                 fromJust <$> dfs'' bv start-  where-    n = GV.length g--    neighs              :: VertexId s w -> [VertexId s w]-    neighs (VertexId u) = g GV.! u--    visit   bv (VertexId i) = UMV.write bv i True-    visited bv (VertexId i) = UMV.read  bv i-    dfs''      :: UMV.MVector s' Bool -> VertexId s w-               -> ST s' (Maybe (Tree (VertexId s w)))-    dfs'' bv u = visited bv u >>= \case-                   True  -> pure Nothing-                   False -> do-                              visit bv u-                              Just . Node u . catMaybes <$> mapM (dfs'' bv) (neighs u)
− src/Algorithms/Graph/MST.hs
@@ -1,152 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-module Algorithms.Graph.MST( mst-                           , mstEdges-                           , makeTree-                           ) where--import           Algorithms.Graph.DFS (AdjacencyLists, dfs')-import           Control.Monad (forM_, when, filterM)-import           Control.Monad.ST (ST,runST)-import qualified Data.List as L-import           Data.PlanarGraph-import           Data.Tree-import qualified Data.Vector as V-import qualified Data.Vector.Mutable as MV-import qualified Data.Vector.Unboxed.Mutable as UMV--------------------------------------------------------------------------------------- | Minimum spanning tree of the edges. The result is a rooted tree, in which--- the nodes are the vertices in the planar graph together with the edge weight--- of the edge to their parent. The root's weight is zero.------ The algorithm used is Kruskal's.------ running time: \(O(n \log n)\)-mst   :: Ord e => PlanarGraph s w v e f -> Tree (VertexId s w)-mst g = makeTree g $ mstEdges g-  -- TODO: Add edges/darts to the output somehow.---- | Computes the set of edges in the Minimum spanning tree------ running time: \(O(n \log n)\)-mstEdges   :: Ord e => PlanarGraph s w v e f -> [Dart s]-mstEdges g = runST $ do-          uf <- new (numVertices g)-          filterM (\e -> union uf (headOf e g) (tailOf e g)) edges''-  where-    edges'' = map fst . L.sortOn snd . V.toList $ edges g----- | Given an underlying planar graph, and a set of edges that form a tree,--- create the actual tree.------ pre: the planar graph has at least one vertex.-makeTree   :: forall s w v e f.-              PlanarGraph s w v e f -> [Dart s] -> Tree (VertexId s w)-makeTree g = flip dfs' start . mkAdjacencyLists-  where-    n = numVertices g-    start = V.head $ vertices' g--    append                  :: MV.MVector s' [a] -> VertexId s w -> a -> ST s' ()-    append v (VertexId i) x = MV.read v i >>= MV.write v i . (x:)--    mkAdjacencyLists         :: [Dart s] -> AdjacencyLists s w-    mkAdjacencyLists edges'' = V.create $ do-                                 vs <- MV.replicate n []-                                 forM_ edges'' $ \e -> do-                                   let u = headOf e g-                                       v = tailOf e g-                                   append vs u v-                                   append vs v u-                                 pure vs------------------------------------------------------------------------------------- | Union find DS-newtype UF s a = UF { _unUF :: UMV.MVector s (Int,Int) }--new   :: Int -> ST s (UF s a)-new n = do-          v <- UMV.new n-          forM_ [0..n-1] $ \i ->-            UMV.write v i (i,0)-          pure $ UF v---- | Union the components containing x and y. Returns weather or not the two--- components were already in the same component or not.-union               :: (Enum a, Eq a) => UF s a -> a -> a -> ST s Bool-union uf@(UF v) x y = do-                        (rx,rrx) <- find' uf x-                        (ry,rry) <- find' uf y-                        let b = rx /= ry-                            rx' = fromEnum rx-                            ry' = fromEnum ry-                        when b $ case rrx `compare` rry of-                            LT -> UMV.write v rx'  (ry',rrx)-                            GT -> UMV.write v ry' (rx',rry)-                            EQ -> do UMV.write v ry' (rx',rry)-                                     UMV.write v rx' (rx',rrx+1)-                        pure b----- | Get the representative of the component containing x--- find    :: (Enum a, Eq a) => UF s a -> a -> ST s a--- find uf = fmap fst . find' uf---- | get the representative (and its rank) of the component containing x-find'             :: (Enum a, Eq a) => UF s a -> a -> ST s (a,Int)-find' uf@(UF v) x = do-                      (p,r) <- UMV.read v (fromEnum x) -- get my parent-                      if toEnum p == x then-                        pure (x,r) -- I am a root-                      else do-                        rt@(j,_) <- find' uf (toEnum p)  -- get the root of my parent-                        UMV.write v (fromEnum x) (fromEnum j,r)   -- path compression-                        pure rt--------------------------------------------------------------------------------------- partial implementation of Prims--- mst g = undefined---- -- | runs MST with a given root--- mstFrom     :: (Ord e, Monoid e)---             => VertexId s w -> PlanarGraph s w v e f -> Tree (VertexId s w, e)--- mstFrom r g = prims initialQ (Node (r,mempty) [])---   where---     update' k p q = Q.adjust (const p) k q----     -- initial Q has the value of the root set to the zero element, and has no---     -- parent. The others are all set to Top (and have no parent yet)---     initialQ = update' r (ValT (mempty,Nothing))---              . GV.foldr (\v q -> Q.insert v (Top,Nothing) q) Q.empty $ vertices g----     prims qq t = case Q.minView qq of---       Nothing -> t---       Just (v Q.:-> (w,p), q) -> prims $------------------------------------------------------------------------------------- Testing Stuff---- testG = planarGraph' [ [ (Dart aA Negative, "a-")---                        , (Dart aC Positive, "c+")---                        , (Dart aB Positive, "b+")---                        , (Dart aA Positive, "a+")---                        ]---                      , [ (Dart aE Negative, "e-")---                        , (Dart aB Negative, "b-")---                        , (Dart aD Negative, "d-")---                        , (Dart aG Positive, "g+")---                        ]---                      , [ (Dart aE Positive, "e+")---                        , (Dart aD Positive, "d+")---                        , (Dart aC Negative, "c-")---                        ]---                      , [ (Dart aG Negative, "g-")---                        ]---                      ]---   where---     (aA:aB:aC:aD:aE:aG:_) = take 6 [Arc 0..]
− src/Control/Monad/State/Persistent.hs
@@ -1,48 +0,0 @@-module Control.Monad.State.Persistent( PersistentStateT-                                     , PersistentState-                                     , store-                                     , runPersistentStateT-                                     , runPersistentState-                                     ) where--import Control.Monad.State-import Control.Monad.Identity(Identity(..))-import Data.List.NonEmpty(NonEmpty(..),(<|),toList)-------------------------------------------------------------------------------------- | A State monad that can store earlier versions of the state.-newtype PersistentStateT s m a =-  PersistentStateT (StateT (NonEmpty s) m a)-  deriving (Functor,Applicative,Monad)-           -- We store all the versions in reverse order---- | Create a snapshot of the current state and add it to the list of states--- that we store.-store :: Monad m => PersistentStateT s m ()-store = PersistentStateT $ do-  ss@(s :| _) <- get-  put (s <| ss)---instance Monad m => MonadState s (PersistentStateT s m) where-  state f = PersistentStateT $ do-              (s :| os) <- get-              let (x,s') = f s-              put (s' :| os)-              return x---- | run a persistentStateT, returns a triplet with the value, the last state--- and a list of all states (including the last one) in chronological order-runPersistentStateT :: Functor m => PersistentStateT s m a -> s -> m (a,s,[s])-runPersistentStateT (PersistentStateT act) initS = f <$> runStateT act (initS :| [])-  where-    f (x,ss@(s :| _)) = (x, s, reverse $ toList ss)-------------------------------------------------------------------------------------type PersistentState s = PersistentStateT s Identity--runPersistentState     :: PersistentState s a -> s -> (a,s,[s])-runPersistentState act = runIdentity . runPersistentStateT act
− src/Data/BalBST.hs
@@ -1,378 +0,0 @@-{-# LANGUAGE RecordWildCards #-}-module Data.BalBST where--import           Control.Applicative((<|>))-import           Data.Bifunctor-import           Data.Function (on)-import           Data.Functor.Contravariant-import qualified Data.List as L-import           Data.Maybe-import qualified Data.Tree as T-import           Prelude hiding (lookup,null)-------------------------------------------------------------------------------------- | Describes how to search in a tree-data TreeNavigator k a = Nav { goLeft     :: a -> k -> Bool-                             , extractKey :: a -> a -> k-                             }--instance Contravariant (TreeNavigator k) where-  contramap f (Nav gL eK) = Nav (\a k -> gL (f a) k) (\x y -> eK (f x) (f y))---ordNav :: Ord a => TreeNavigator a a-ordNav = Nav (<=) min---ordNavBy   :: Ord b => (a -> b) ->  TreeNavigator b a-ordNavBy f = Nav (\x k -> f x <= k) (min `on` f)----- instance Functor (TreeNavigator k) where---   fmap f Nav{..} = Nav (\b k -> )------ | A balanced binary search tree-data BalBST k a = BalBST { nav    :: !(TreeNavigator k a)-                         , toTree :: !(Tree k a)-                         }--instance (Show k, Show a) => Show (BalBST k a) where-  show (BalBST _ t) = "BalBST (" ++ show t ++ ")"---data Color = Red | Black deriving (Show,Read,Eq,Ord)--type Height = Int---- Red-Black tree with values in the leaves-data Tree k a = Empty-              | Leaf !a-              | Node !Color !Height (Tree k a) !k (Tree k a) deriving (Show,Eq)-------------------------------------------------------------------------------------- | Creates an empty BST-empty   :: TreeNavigator k a -> BalBST k a-empty n = BalBST n Empty----- | \(O(n\log n)\)-fromList :: TreeNavigator k a -> [a] -> BalBST k a-fromList n = foldr insert (empty n)--fromList' :: Ord a => [a] -> BalBST a a-fromList' = fromList ordNav----- -- | \(O(n)\)--- fromAscList :: TreeNavigator k a -> [a] -> BalBST k a--- fromAscList = undefined--------------------------------------------------------------------------------------- | Check if the tree is empty-null                  :: BalBST k a -> Bool-null (BalBST _ Empty) = True-null _                = False---- | Test if an element occurs in the BST.--- \(O(\log n)\)-lookup :: Eq a => a -> BalBST k a -> Maybe a-lookup x (BalBST Nav{..} t) = lookup' t-  where-    lookup' Empty            = Nothing-    lookup' (Leaf y)         = if x == y then Just y else Nothing-    lookup' (Node _ _ l k r)-      | goLeft x k           = lookup' l-      | otherwise            = lookup' r---- | \(O(\log n)\)-member   :: Eq a => a -> BalBST k a -> Bool-member x = isJust . lookup x---- | Search for the Predecessor--- \(O(\log n)\)-lookupLE :: Ord k => k -> BalBST k a -> Maybe a-lookupLE kx (BalBST n@Nav{..} t) = lookup' t-  where-    lookup' Empty            = Nothing-    lookup' (Leaf y)         = if goLeft y kx then Just y else Nothing-    lookup' (Node _ _ l k r)-      | kx <= k              = lookup' l-      | otherwise            = lookup' r <|> lookupMax (BalBST n l)----- | Insert an element in the BST.------ \(O(\log n)\)-insert :: a -> BalBST k a -> BalBST k a-insert x (BalBST n@Nav{..} t) = BalBST n (blacken $ insert' t)-  where-    insert' Empty    = Leaf x-    insert' (Leaf y) = let k     = extractKey x y-                           (l,r) = if goLeft x k then (x,y) else (y,x)-                       in red 2 (Leaf l) k (Leaf r)-    insert' (Node c h l k r)-      | goLeft  x k  = balance c h (insert' l) k r-      | otherwise    = balance c h l           k (insert' r)------ delete = undefined---- | Delete (one occurance of) an element.--- \(O(\log n)\)-delete                        :: Eq a => a -> BalBST k a -> BalBST k a-delete x t = let Split l _ r = split x t-                 n           = nav t-             in BalBST n $ joinWith n l r----- (BalBST n@Nav{..} t) = delete' t---   where---     delete' Empty      = Empty---     delete' l@(Leaf y) = if x == y then Empty else l---     delete' (Node c h l k r)---       | goLeft x k     =---------------------------------------------------------------------------------------- | Extract the minimum from the tree--- \(O(\log n)\)-minView              :: BalBST k a -> Maybe (a, Tree k a)-minView (BalBST n t) = minView' t-  where-    minView' Empty            = Nothing-    minView' (Leaf x)         = Just (x,Empty)-    minView' (Node _ _ l _ r) = fmap (flip (joinWith n) r) <$> minView' l--lookupMin :: BalBST k b -> Maybe b-lookupMin = fmap fst . maxView---- | Extract the maximum from the tree--- \(O(\log n)\)-maxView              :: BalBST k a -> Maybe (a, Tree k a)-maxView (BalBST n t) = maxView' t-  where-    maxView' Empty            = Nothing-    maxView' (Leaf x)         = Just (x,Empty)-    maxView' (Node _ _ l _ r) = fmap (joinWith n l) <$> maxView' r--lookupMax :: BalBST k b -> Maybe b-lookupMax = fmap fst . maxView----- | Joins two BSTs. Assumes that the ranges are disjoint. It takes the left Tree nav------ \(O(\log n)\)-join                           :: BalBST k a -> BalBST k a -> BalBST k a-join (BalBST n l) (BalBST _ r) = BalBST n $ joinWith n l r---- | Joins two BSTs' with a specific Tree Navigator------ \(O(\log n)\)-joinWith               :: TreeNavigator k a -> Tree k a -> Tree k a -> Tree k a-joinWith Nav{..} tl tr-    | lh >= rh         = blacken $ joinL tl tr-    | otherwise        = blacken $ joinR tl tr-  where-    rh = height tr-    lh = height tl--    joinL Empty      _           = Empty-    joinL l          Empty       = l-    joinL l@(Leaf x) r@(Leaf y)  = red 2 l (extractKey x y) r-    joinL l@(Node c h ll k lr) r-      | h == rh                  = let lm = unsafeMax lr-                                       rm = unsafeMin r-                                   in balance Red (h+1) l (extractKey lm rm) r-      | otherwise                = balance c h ll k (joinL lr r)-        -- lh >= rh-    joinL _ _ = error "joinL. absurd"---    joinR _          Empty       = Empty-    joinR Empty      r           = r--    joinR l@(Leaf x) r@(Leaf y)  = red 2 l (extractKey x y) r-    joinR l r@(Node c h rl k rr)-      | h == lh                  = let lm = unsafeMax l-                                       rm = unsafeMin rl-                                   in balance Red (h+1) l (extractKey lm rm) r-      | otherwise                = balance c h (joinR l rl) k rr-        -- lh >= rh-    joinR _ _ = error "joinR absurd"-------------------------------------------------------------------------------------- | Splitting and extracting---- | A pair that is strict in its first argument and lazy in the second.-data Pair a b = Pair { fst' :: !a-                     , snd' :: b-                     } deriving (Show,Eq,Functor,Foldable,Traversable)---collect        :: b -> [Pair a b] -> Pair [a] b-collect def [] = Pair [] def-collect _   xs = Pair (map fst' xs) (snd' $ last xs)----- | Extract a prefix from the tree, i.e. a repeated 'minView'------ \(O(\log n +k)\), where \(k\) is the size of the extracted part-extractPrefix                      :: BalBST k a -> [Pair a (Tree k a)]-extractPrefix (BalBST n@Nav{..} t) = extractPrefix' t-  where-    extractPrefix' Empty            = []-    extractPrefix' (Leaf x)         = [Pair x Empty]-    extractPrefix' (Node _ _ l _ r) = ls ++ extractPrefix' r-      where-        ls = map (fmap $ flip (joinWith n) r) $ extractPrefix' l---- | Extract a suffix from the tree, i.e. a repeated 'minView'------ \(O(\log n +k)\), where \(k\) is the size of the extracted part-extractSuffix                      :: BalBST k a -> [Pair a (Tree k a)]-extractSuffix (BalBST n@Nav{..} t) = extract t-  where-    extract Empty            = []-    extract (Leaf x)         = [Pair x Empty]-    extract (Node _ _ l _ r) = rs ++ extract l-      where-        rs = map (fmap $ joinWith n l) $ extract r---- | Result of splititng a tree-data Split a b = Split a !b a deriving (Show,Eq)---- | Splits the tree at x. Note that if x occurs more often, no guarantees are--- given which one is found.------ \(O(\log n)\)-split                        :: Eq a => a -> BalBST k a -> Split (Tree k a) (Maybe a)-split x (BalBST n@Nav{..} t) = split' t-  where-    split' Empty                  = Split Empty Nothing Empty-    split' l@(Leaf y)-      | x == y                    = Split Empty (Just y) Empty-      | goLeft x (extractKey x y) = Split l     Nothing  Empty-      | otherwise                 = Split Empty Nothing  l-    split' (Node _ _ l k r)-      | goLeft x k                = let Split l' mx r' = split' l-                                    in Split l' mx (joinWith n r' r)-      | otherwise                 = let Split l' mx r' = split' r-                                    in Split (joinWith n l l') mx r'---- | split based on a monotonic predicate------ \(O(\log n)\)-splitMonotone                        :: (a -> Bool) -> BalBST k a-                                     -> (BalBST k a, BalBST k a)-splitMonotone p (BalBST n@Nav{..} t) = bimap (BalBST n) (BalBST n) $ split' t-  where-    split' Empty        = (Empty,Empty)-    split' l@(Leaf y)-      | p y             = (Empty,l)-      | otherwise       = (l,Empty)-    split' (Node _ _ l _ r)-      | p (unsafeMin r) = let (l',m) = split' l in (l',joinWith n m r)-      | otherwise       = let (m,r') = split' r in (joinWith n l m, r')----- | Splits at a given monotone predicate p, and then selects everything that--- satisfies the predicate sel.-splitExtract           :: (a -> Bool) -> (a -> Bool) -> BalBST k a-                       -> Split (BalBST k a) ([a],[a])-splitExtract p sel bst = Split (BalBST n before) (reverse mid1,mid2) (BalBST n after)-  where-    n                = nav bst-    (before',after') = splitMonotone p bst--    extract def = collect def . L.takeWhile (sel . fst')--    Pair mid1 before = extract (toTree before') $ extractSuffix before'-    Pair mid2 after  = extract (toTree after')  $ extractPrefix after'--------------------------------------------------------------------------------------data T k a = Internal !Color !Height !k | Val !a deriving (Show,Eq,Ord)--toRoseTree :: Tree k a -> Maybe (T.Tree (T k a))-toRoseTree Empty            = Nothing-toRoseTree (Leaf x)         = Just $ T.Node (Val x) []-toRoseTree (Node c h l k r) = Just $ T.Node (Internal c h k) (mapMaybe toRoseTree [l,r])---showTree :: (Show k, Show a) => BalBST k a -> String-showTree = maybe "Empty" T.drawTree . fmap (fmap show) . toRoseTree . toTree---- | Get the minimum in the tree. Errors when the tree is empty------ \(O(\log n)\)-unsafeMin                  :: Tree k a -> a-unsafeMin (Leaf x)         = x-unsafeMin (Node _ _ l _ _) = unsafeMin l-unsafeMin _                = error "unsafeMin: Empty"---- | Get the maximum in the tree. Errors when the tree is empty------ \(O(\log n)\)-unsafeMax                  :: Tree k a -> a-unsafeMax (Leaf x)         = x-unsafeMax (Node _ _ _ _ r) = unsafeMax r-unsafeMax _                = error "unsafeMax: Empty"---- | Extract all elements in the tree------ \(O(n)\)-toList :: BalBST k a -> [a]-toList = toList' . toTree---- | Extract all elements in the tree------ \(O(n)\)-toList'                  :: Tree k a -> [a]-toList' Empty            = []-toList' (Leaf x)         = [x]-toList' (Node _ _ l _ r) = toList' l ++ toList' r-------------------------------------------------------------------------------------- * Helper stuff--black :: Height -> Tree k a -> k -> Tree k a -> Tree k a-black = Node Black--red :: Height -> Tree k a -> k -> Tree k a -> Tree k a-red = Node Red---blacken                    :: Tree k a -> Tree k a-blacken (Node Red h l k r) = Node Black h l k r-blacken t                  = t---- | rebalance the tree-balance  :: Color -> Height -> Tree k a -> k -> Tree k a -> Tree k a-balance Black h (Node Red _ (Node Red _ a x b) y c) z d = mkNode h a x b y c z d-balance Black h (Node Red _ a x (Node Red _ b y c)) z d = mkNode h a x b y c z d-balance Black h a x (Node Red _ (Node Red _ b y c) z d) = mkNode h a x b y c z d-balance Black h a x (Node Red _ b y (Node Red _ c z d)) = mkNode h a x b y c z d-balance co h a x b                                      = Node co h a x b--mkNode                 :: Height-                       -> Tree k a -> k -> Tree k a -> k -> Tree k a  -> k -> Tree k a-                       -> Tree k a-mkNode h a x b y c z d = red h (black h a x b) y (black h c z d)--height                  :: Tree k a -> Height-height Empty            = 0-height (Leaf _)         = 1-height (Node _ h _ _ _) = h
− src/Data/BinaryTree.hs
@@ -1,201 +0,0 @@-{-# Language DeriveFunctor#-}-{-# Language FunctionalDependencies #-}------------------------------------------------------------------------------------ |--- Module      :  Data.BinaryTree--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ Several types of Binary trees.-------------------------------------------------------------------------------------module Data.BinaryTree where--import           Control.DeepSeq-import           Data.List.NonEmpty (NonEmpty(..),(<|))-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Maybe (mapMaybe)-import           Data.Semigroup.Foldable-import qualified Data.Tree as Tree-import qualified Data.Vector as V-import           GHC.Generics (Generic)-------------------------------------------------------------------------------------- | Binary tree that stores its values (of type a) in the leaves. Internal--- nodes store something of type v.-data BinLeafTree v a = Leaf !a-                     | Node (BinLeafTree v a) !v (BinLeafTree v a)-                     deriving (Show,Read,Eq,Ord,Functor,Generic)--instance (NFData v, NFData a) => NFData (BinLeafTree v a)--class Semigroup v => Measured v a | a -> v where-  measure :: a -> v---- | smart constructor-node     :: Measured v a => BinLeafTree v a -> BinLeafTree v a -> BinLeafTree v a-node l r = Node l (measure l <> measure r) r---instance Measured v a => Measured v (BinLeafTree v a) where-  measure (Leaf x)     = measure x-  measure (Node _ v _) = v---instance Foldable (BinLeafTree v) where-  foldMap f (Leaf a)     = f a-  foldMap f (Node l _ r) = foldMap f l `mappend` foldMap f r--instance Foldable1 (BinLeafTree v)--instance Traversable (BinLeafTree v) where-  traverse f (Leaf a)     = Leaf <$> f a-  traverse f (Node l v r) = Node <$> traverse f l <*> pure v <*> traverse f r--instance Measured v a => Semigroup (BinLeafTree v a) where-  l <> r = node l r---- | Create a balanced tree, i.e. a tree of height \(O(\log n)\) with the--- elements in the leaves.------ \(O(n)\) time.-asBalancedBinLeafTree :: NonEmpty a -> BinLeafTree Size (Elem a)-asBalancedBinLeafTree = repeatedly merge . fmap (Leaf . Elem)-  where-    repeatedly _ (t :| []) = t-    repeatedly f ts        = repeatedly f $ f ts--    merge ts@(_ :| [])  = ts-    merge (l :| r : []) = node l r :| []-    merge (l :| r : ts) = node l r <| (merge $ NonEmpty.fromList ts)--- -- the implementation below produces slightly less high trees, but runs in--- -- \(O(n \log n)\) time, as on every level it traverses the list passed down.--- asBalancedBinLeafTree ys = asBLT (length ys') ys' where ys' = toList ys----     asBLT _ [x] = Leaf (Elem x)---     asBLT n xs  = let h       = n `div` 2---                       (ls,rs) = splitAt h xs---                   in node (asBLT h ls) (asBLT (n-h) rs)---- | Given a function to combine internal nodes into b's and leafs into b's,--- traverse the tree bottom up, and combine everything into one b.-foldUp                  :: (b -> v -> b -> b) -> (a -> b) -> BinLeafTree v a -> b-foldUp _ g (Leaf x)     = g x-foldUp f g (Node l x r) = f (foldUp f g l) x (foldUp f g r)----- | Traverses the tree bottom up, recomputing the assocated values.-foldUpData     :: (w -> v -> w -> w) -> (a -> w) -> BinLeafTree v a -> BinLeafTree w a-foldUpData f g = foldUp f' Leaf-  where-    f' l v r = Node l (f (access' l) v (access' r)) r--    access' (Leaf x)     = g x-    access' (Node _ v _) = v---- | Takes two trees, that have the same structure, and uses the provided--- functions to "zip" them together-zipExactWith                                  :: (u -> v -> w)-                                              -> (a -> b -> c)-                                              -> BinLeafTree u a-                                              -> BinLeafTree v b-                                              -> BinLeafTree w c-zipExactWith _ g (Leaf x)     (Leaf y)        = Leaf (x `g` y)-zipExactWith f g (Node l m r) (Node l' m' r') = Node (zipExactWith f g l l')-                                                     (m `f` m')-                                                     (zipExactWith f g r r')-zipExactWith _ _ _            _               =-    error "zipExactWith: tree structures not the same "--newtype Size = Size Int deriving (Show,Read,Eq,Num,Integral,Enum,Real,Ord,Generic,NFData)--instance Semigroup Size where-  x <> y = x + y--instance Monoid Size where-  mempty = Size 0-  mappend = (<>)--newtype Elem a = Elem { _unElem :: a }-               deriving (Show,Read,Eq,Ord,Functor,Foldable,Traversable)--instance Measured Size (Elem a) where-  measure _ = 1---data Sized a = Sized !Size a-             deriving (Show,Eq,Ord,Functor,Foldable,Traversable,Generic)-instance NFData a => NFData (Sized a)--instance Semigroup a => Semigroup (Sized a) where-  (Sized i a) <> (Sized j b) = Sized (i <> j) (a <> b)--instance Monoid a => Monoid (Sized a) where-  mempty = Sized mempty mempty-  (Sized i a) `mappend` (Sized j b) = Sized (i <> j) (a `mappend` b)---- instance Semigroup a => Measured Size (Sized a) where---   measure (Sized i _) = i-------------------------------------------------------------------------------------- * Converting into a Data.Tree--data RoseElem v a = InternalNode v | LeafNode a deriving (Show,Eq,Functor)--toRoseTree              :: BinLeafTree v a -> Tree.Tree (RoseElem v a)-toRoseTree (Leaf x)     = Tree.Node (LeafNode x) []-toRoseTree (Node l v r) = Tree.Node (InternalNode v) (map toRoseTree [l,r])---drawTree :: (Show v, Show a) => BinLeafTree v a -> String-drawTree = Tree.drawTree . fmap show . toRoseTree-------------------------------------------------------------------------------------- * Internal Node Tree---- | Binary tree in which we store the values of type a in internal nodes.-data BinaryTree a = Nil-                  | Internal (BinaryTree a) !a (BinaryTree a)-                  deriving (Show,Read,Eq,Ord,Functor,Foldable,Traversable,Generic)-instance NFData a => NFData (BinaryTree a)---- | Get the element stored at the root, if it exists-access                  :: BinaryTree a -> Maybe a-access Nil              = Nothing-access (Internal _ x _) = Just x---- | Create a balanced binary tree.------ running time: \(O(n)\)-asBalancedBinTree :: [a] -> BinaryTree a-asBalancedBinTree = mkTree . V.fromList-  where-    mkTree v = let n = V.length v-                   h = n `div` 2-                   x = v V.! h-               in if n == 0 then Nil-                            else Internal (mkTree $ V.slice 0 h v) x-                                          (mkTree $ V.slice (h+1) (n - h -1) v)---- | Fold function for folding over a binary tree.-foldBinaryUp                      :: b -> (a -> b -> b -> b)-                                  -> BinaryTree a -> BinaryTree (a,b)-foldBinaryUp _ _ Nil              = Nil-foldBinaryUp e f (Internal l x r) = let l' = foldBinaryUp e f l-                                        r' = foldBinaryUp e f r-                                        g  = maybe e snd . access-                                        b  = f x (g l') (g r')-                                    in Internal l' (x,b) r'---- | Convert a @BinaryTree@ into a RoseTree-toRoseTree'                  :: BinaryTree a -> Maybe (Tree.Tree a)-toRoseTree' Nil              = Nothing-toRoseTree' (Internal l v r) = Just $ Tree.Node v $ mapMaybe toRoseTree' [l,r]---- | Draw a binary tree.-drawTree' :: Show a => BinaryTree a -> String-drawTree' = maybe "Nil" (Tree.drawTree . fmap show) . toRoseTree'
− src/Data/BinaryTree/Zipper.hs
@@ -1,64 +0,0 @@-module Data.BinaryTree.Zipper where--import Data.BinaryTree------------------------------------------------------------------------------------data Ctx a = Top | L (Ctx a) a (BinaryTree a) | R (BinaryTree a) a (Ctx a)-           deriving (Show,Read,Eq,Ord,Functor,Foldable,Traversable)--data BinaryTreeZipper a = Loc (BinaryTree a) (Ctx a)-           deriving (Show,Read,Eq,Ord,Functor,Foldable,Traversable)---- | Focus on the root-top   :: BinaryTree a -> BinaryTreeZipper a-top t = Loc t Top---- | Go to the left child-left                            :: BinaryTreeZipper a -> Maybe (BinaryTreeZipper a)-left (Loc (Internal l x r) ctx) = Just $ Loc l (L ctx x r)-left (Loc Nil _)                = Nothing---- | Go to the right child-right                            :: BinaryTreeZipper a -> Maybe (BinaryTreeZipper a)-right (Loc (Internal l x r) ctx) = Just $ Loc r (R l x ctx)-right (Loc Nil _)                = Nothing---- | Move to the parent-up                     :: BinaryTreeZipper a -> Maybe (BinaryTreeZipper a)-up (Loc _ Top)         = Nothing-up (Loc l (L ctx x r)) = Just $ Loc (Internal l x r) ctx-up (Loc r (R l x ctx)) = Just $ Loc (Internal l x r) ctx---- | Navigate to the root-toRoot   :: BinaryTreeZipper a -> BinaryTreeZipper a-toRoot z = toRoot' z (Just z)-  where-    toRoot' z' Nothing   = z'-    toRoot' _  (Just z') = toRoot' z' (up z')----- | Returns a list of zippers; one focussed on each node in the tree-visitAll   :: BinaryTree a -> [BinaryTreeZipper a]-visitAll t = visitAll' (top t)-  where-    f           = maybe [] visitAll'-    visitAll' z = z : f (left z) <> f (right z)---- | Get the value stored at the current node-accessZ           :: BinaryTreeZipper a -> Maybe a-accessZ (Loc t _) = access t----- | Returns all subtrees; i.e. every node with all its decendents-subTrees :: BinaryTree a -> [BinaryTree a]-subTrees t = Nil : subTrees' t-  where-    subTrees' Nil                 = []-    subTrees' tt@(Internal l _ r) = tt : subTrees' l <> subTrees' r----- | Splits the tree here, returns a pair (innerTree,outerTree)-splitTree             :: BinaryTreeZipper a -> (BinaryTree a, BinaryTree a)-splitTree (Loc t ctx) = let (Loc r _) = toRoot $ Loc Nil ctx-                        in (t, r)
− src/Data/CircularList/Util.hs
@@ -1,67 +0,0 @@-module Data.CircularList.Util where--import           Control.Lens-import           Data.Tuple-import qualified Data.CircularList as C-import qualified Data.List as L--------------------------------------------------------------------------------------- $setup--- >>> let ordList = C.fromList [5,6,10,20,30,1,2,3]------ | Given a circular list, whose elements are in increasing order, insert the--- new element into the Circular list in its sorted order.------ >>> insertOrd 1 C.empty--- fromList [1]--- >>> insertOrd 1 $ C.fromList [2]--- fromList [2,1]--- >>> insertOrd 2 $ C.fromList [1,3]--- fromList [1,2,3]--- >>> insertOrd 31 ordList--- fromList [5,6,10,20,30,31,1,2,3]--- >>> insertOrd 1 ordList--- fromList [5,6,10,20,30,1,1,2,3]--- >>> insertOrd 4 ordList--- fromList [5,6,10,20,30,1,2,3,4]--- >>> insertOrd 11 ordList--- fromList [5,6,10,11,20,30,1,2,3]-insertOrd :: Ord a => a -> C.CList a -> C.CList a-insertOrd = insertOrdBy compare---- | Insert an element into an increasingly ordered circular list, with--- specified compare operator.-insertOrdBy       :: (a -> a -> Ordering) -> a -> C.CList a -> C.CList a-insertOrdBy cmp x = C.fromList . insertOrdBy' cmp x . C.rightElements---- | List version of insertOrdBy; i.e. the list contains the elements in--- cirulcar order. Again produces a list that has the items in circular order.-insertOrdBy'         :: (a -> a -> Ordering) -> a -> [a] -> [a]-insertOrdBy' cmp x xs = case (rest, x `cmp` head rest) of-    ([],  _)   -> L.insertBy cmp x pref-    (z:zs, GT) -> (z : L.insertBy cmp x zs) ++ pref-    (_:_,  EQ) -> (x : xs) -- == x : rest ++ pref-    (_:_,  LT) -> rest ++ L.insertBy cmp x pref-  where-    -- split the list at its maximum.-    (pref,rest) = splitIncr cmp xs---- given a list of elements that is supposedly a a cyclic-shift of a list of--- increasing items, find the splitting point. I.e. returns a pair of lists--- (ys,zs) such that xs = zs ++ ys, and ys ++ zs is (supposedly) in sorted--- order.-splitIncr              :: (a -> a -> Ordering) -> [a] -> ([a],[a])-splitIncr _   []       = ([],[])-splitIncr cmp xs@(x:_) = swap . bimap (map snd) (map snd)-                      . L.break (\(a,b) -> (a `cmp` b) == GT) $ zip (x:xs) xs---- | Test if the circular list is a cyclic shift of the second list.--- Running time: O(n), where n is the size of the smallest list-isShiftOf         :: Eq a => C.CList a -> C.CList a -> Bool-xs `isShiftOf` ys = let rest = tail . C.leftElements-                    in maybe False (\xs' -> rest xs' == rest ys) $-                         C.focus ys >>= flip C.rotateTo xs
− src/Data/CircularSeq.hs
@@ -1,376 +0,0 @@-module Data.CircularSeq( CSeq-                       , cseq-                       , singleton-                       , fromNonEmpty-                       , fromList--                       , toNonEmpty--                       , focus-                       , index, adjust-                       , item--                       , rotateL-                       , rotateR-                       , rotateNL, rotateNR--                       , rightElements-                       , leftElements-                       , asSeq--                       , reverseDirection-                       , allRotations--                       , findRotateTo-                       , rotateTo--                       , zipLWith, zipL-                       , zip3LWith---                       , insertOrd, insertOrdBy-                       , isShiftOf-                       ) where--import           Control.DeepSeq-import           Control.Lens (lens, Lens', bimap)-import qualified Data.Foldable as F-import qualified Data.List as L-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Maybe (listToMaybe)-import           Data.Semigroup.Foldable hiding (toNonEmpty)-import           Data.Sequence ((|>),(<|),ViewL(..),ViewR(..),Seq)-import qualified Data.Sequence as S-import qualified Data.Traversable as T-import           Data.Tuple (swap)-import           GHC.Generics (Generic)-------------------------------------------------------------------------------------- $setup--- >>> let ordList = fromList [5,6,10,20,30,1,2,3]----- | Nonempty circular sequence-data CSeq a = CSeq !(Seq a) !a !(Seq a)-  deriving (Generic)-                     -- we keep the seq balanced, i.e. size left >= size right--instance NFData a => NFData (CSeq a)--instance Eq a => Eq (CSeq a) where-  a == b = asSeq a == asSeq b--instance Show a => Show (CSeq a) where-  showsPrec d s = showParen (d > app_prec) $-                    showString (("CSeq " <>) . show . F.toList . rightElements $ s)-    where app_prec = 10---- traverses starting at the focus, going to the right.-instance T.Traversable CSeq where-  traverse f (CSeq l x r) = (\x' r' l' -> CSeq l' x' r')-                         <$> f x <*> traverse f r <*> traverse f l--- instance Traversable1 CSeq where---   traverse1 f (CSeq l x r) = liftF3 (\x' r' l' -> CSeq l' x' r')---                                     (f x) (traverse f r) (traverse f l)--instance Foldable1 CSeq---instance F.Foldable CSeq where-  foldMap = T.foldMapDefault-  length (CSeq l _ r) = 1 + S.length l + S.length r-----instance Functor CSeq where-  fmap = T.fmapDefault---singleton   :: a -> CSeq a-singleton x = CSeq S.empty x S.empty---- | Gets the focus of the CSeq--- running time: O(1)-focus              :: CSeq a -> a-focus (CSeq _ x _) = x---- | Access the i^th item  (w.r.t the focus) in the CSeq (indices modulo n).------ running time: \(O(\log (i \mod n))\)------ >>> index (fromList [0..5]) 1--- 1--- >>> index (fromList [0..5]) 2--- 2--- >>> index (fromList [0..5]) 5--- 5--- >>> index (fromList [0..5]) 10--- 4--- >>> index (fromList [0..5]) 6--- 0--- >>> index (fromList [0..5]) (-1)--- 5--- >>> index (fromList [0..5]) (-6)--- 0-index                   :: CSeq a -> Int -> a-index s@(CSeq l x r) i' = let i  = i' `mod` length s-                              rn = length r-                          in if i == 0 then x-                               else if i - 1 < rn then S.index r (i - 1)-                                                  else S.index l (i - rn - 1)---- | Adjusts the i^th element w.r.t the focus in the CSeq------ running time: \(O(\log (i \mod n))\)------ >>> adjust (const 1000) 2 (fromList [0..5])--- CSeq [0,1,1000,3,4,5]-adjust                     :: (a -> a) -> Int -> CSeq a -> CSeq a-adjust f i' s@(CSeq l x r) = let i  = i' `mod` length s-                                 rn = length r-                             in if i == 0 then CSeq l (f x) r-                                else if i - 1 < rn-                                     then CSeq l                           x (S.adjust f (i - 1) r)-                                     else CSeq (S.adjust f (i - rn - 1) l) x r----- | Access te ith item in the CSeq (w.r.t the focus) as a lens-item   :: Int -> Lens' (CSeq a) a-item i = lens (flip index i) (\s x -> adjust (const x) i s)---resplit   :: Seq a -> (Seq a, Seq a)-resplit s = swap $ S.splitAt (length s `div` 2) s----- | smart constructor that automatically balances the seq-cseq                   :: Seq a -> a -> Seq a -> CSeq a-cseq l x r-    | ln > 1 + 2*rn    = withFocus x (r <> l)-    | ln < rn `div`  2 = withFocus x (r <> l)-    | otherwise        = CSeq l x r-  where-    rn = length r-    ln = length l---- | Builds a balanced seq with the element as the focus.-withFocus     :: a -> Seq a -> CSeq a-withFocus x s = let (l,r) = resplit s in CSeq l x r---- | rotates one to the right------ running time: O(1) (amortized)------ >>> rotateR $ fromList [3,4,5,1,2]--- CSeq [4,5,1,2,3]-rotateR                :: CSeq a -> CSeq a-rotateR s@(CSeq l x r) = case S.viewl r of-                           EmptyL    -> case S.viewl l of-                             EmptyL    -> s-                             (y :< l') -> cseq (S.singleton x) y l'-                           (y :< r') -> cseq (l |> x) y r'---- | rotates the focus to the left------ running time: O(1) (amortized)------ >>> rotateL $ fromList [3,4,5,1,2]--- CSeq [2,3,4,5,1]--- >>> mapM_ print . take 5 $ iterate rotateL $ fromList [1..5]--- CSeq [1,2,3,4,5]--- CSeq [5,1,2,3,4]--- CSeq [4,5,1,2,3]--- CSeq [3,4,5,1,2]--- CSeq [2,3,4,5,1]-rotateL                :: CSeq a -> CSeq a-rotateL s@(CSeq l x r) = case S.viewr l of-                           EmptyR    -> case S.viewr r of-                             EmptyR     -> s-                             (r' :> y)  -> cseq r' y (S.singleton x)-                           (l' :> y) -> cseq l' y (x <| r)----- | Convert to a single Seq, starting with the focus.-asSeq :: CSeq a -> Seq a-asSeq = rightElements----- | All elements, starting with the focus, going to the right---- >>> rightElements $ fromList [3,4,5,1,2]--- fromList [3,4,5,1,2]-rightElements              :: CSeq a -> Seq a-rightElements (CSeq l x r) = x <| r <> l----- | All elements, starting with the focus, going to the left------ >>> leftElements $ fromList [3,4,5,1,2]--- fromList [3,2,1,5,4]-leftElements              :: CSeq a -> Seq a-leftElements (CSeq l x r) = x <| S.reverse l <> S.reverse r---- | builds a CSeq-fromNonEmpty                    :: NonEmpty.NonEmpty a -> CSeq a-fromNonEmpty (x NonEmpty.:| xs) = withFocus x $ S.fromList xs--fromList        :: [a] -> CSeq a-fromList (x:xs) = withFocus x $ S.fromList xs-fromList []     = error "fromList: Empty list"--toNonEmpty :: CSeq a -> NonEmpty.NonEmpty a-toNonEmpty = NonEmpty.fromList . F.toList---- | Rotates i elements to the right.------ pre: 0 <= i < n------ running time: \(O(\log i)\) amortized------ >>> rotateNR 0 $ fromList [1..5]--- CSeq [1,2,3,4,5]--- >>> rotateNR 1 $ fromList [1..5]--- CSeq [2,3,4,5,1]--- >>> rotateNR 4 $ fromList [1..5]--- CSeq [5,1,2,3,4]-rotateNR     :: Int -> CSeq a -> CSeq a-rotateNR i s = let (l, r')  = S.splitAt i $ rightElements s-                   (x :< r) = S.viewl r'-               in cseq l x r----- | Rotates i elements to the left.------ pre: 0 <= i < n------ running time: \(O(\log i)\) amoritzed------ >>> rotateNL 0 $ fromList [1..5]--- CSeq [1,2,3,4,5]--- >>> rotateNL 1 $ fromList [1..5]--- CSeq [5,1,2,3,4]--- >>> rotateNL 2 $ fromList [1..5]--- CSeq [4,5,1,2,3]--- >>> rotateNL 3 $ fromList [1..5]--- CSeq [3,4,5,1,2]--- >>> rotateNL 4 $ fromList [1..5]--- CSeq [2,3,4,5,1]-rotateNL     :: Int -> CSeq a -> CSeq a-rotateNL i s = let (x :< xs) = S.viewl $ rightElements s-                   (l',r)    = S.splitAt (length s - i) $ xs |> x-                   (l :> y)  = S.viewr l'-               in cseq l y r----- | Reversres the direction of the CSeq------ running time: \(O(n)\)------ >>> reverseDirection $ fromList [1..5]--- CSeq [1,5,4,3,2]-reverseDirection              :: CSeq a -> CSeq a-reverseDirection (CSeq l x r) = CSeq (S.reverse r) x (S.reverse l)----- | Finds an element in the CSeq------ >>> findRotateTo (== 3) $ fromList [1..5]--- Just (CSeq [3,4,5,1,2])--- >>> findRotateTo (== 7) $ fromList [1..5]--- Nothing-findRotateTo   :: (a -> Bool) -> CSeq a -> Maybe (CSeq a)-findRotateTo p = listToMaybe . filter (p . focus) . allRotations'---rotateTo   :: Eq a => a -> CSeq a -> Maybe (CSeq a)-rotateTo x = findRotateTo (== x)----- | All rotations, the input CSeq is the focus.------ >>> mapM_ print . allRotations $ fromList [1..5]--- CSeq [1,2,3,4,5]--- CSeq [2,3,4,5,1]--- CSeq [3,4,5,1,2]--- CSeq [4,5,1,2,3]--- CSeq [5,1,2,3,4]-allRotations :: CSeq a -> CSeq (CSeq a)-allRotations = fromList . allRotations'--allRotations'   :: CSeq a -> [CSeq a]-allRotations' s = take (length s) . iterate rotateR $ s---- | "Left zip": zip the two CLists, pairing up every element in the *left*--- list with its corresponding element in the right list. If there are more--- items in the right clist they are discarded.-zipLWith         :: (a -> b -> c) -> CSeq a -> CSeq b -> CSeq c-zipLWith f as bs = fromList $ zipWith f (F.toList as) (F.toList bs)---- | see 'zipLWith-zipL :: CSeq a -> CSeq b -> CSeq (a, b)-zipL = zipLWith (,)----- | same as zipLWith but with three items-zip3LWith            :: (a -> b -> c -> d) -> CSeq a -> CSeq b -> CSeq c -> CSeq d-zip3LWith f as bs cs = fromList $ zipWith3 f (F.toList as) (F.toList bs) (F.toList cs)------- | Given a circular seq, whose elements are in increasing order, insert the--- new element into the Circular seq in its sorted order.------ >>> insertOrd 1 $ fromList [2]--- CSeq [2,1]--- >>> insertOrd 2 $ fromList [1,3]--- CSeq [1,2,3]--- >>> insertOrd 31 ordList--- CSeq [5,6,10,20,30,31,1,2,3]--- >>> insertOrd 1 ordList--- CSeq [5,6,10,20,30,1,1,2,3]--- >>> insertOrd 4 ordList--- CSeq [5,6,10,20,30,1,2,3,4]--- >>> insertOrd 11 ordList--- CSeq [5,6,10,11,20,30,1,2,3]------ running time: \(O(n)\)-insertOrd :: Ord a => a -> CSeq a -> CSeq a-insertOrd = insertOrdBy compare---- | Insert an element into an increasingly ordered circular list, with--- specified compare operator.------ running time: \(O(n)\)-insertOrdBy       :: (a -> a -> Ordering) -> a -> CSeq a -> CSeq a-insertOrdBy cmp x = fromList . insertOrdBy' cmp x . F.toList . rightElements---- | List version of insertOrdBy; i.e. the list contains the elements in--- cirulcar order. Again produces a list that has the items in circular order.-insertOrdBy'         :: (a -> a -> Ordering) -> a -> [a] -> [a]-insertOrdBy' cmp x xs = case (rest, x `cmp` head rest) of-    ([],  _)   -> L.insertBy cmp x pref-    (z:zs, GT) -> (z : L.insertBy cmp x zs) ++ pref-    (_:_,  EQ) -> (x : xs) -- == x : rest ++ pref-    (_:_,  LT) -> rest ++ L.insertBy cmp x pref-  where-    -- split the list at its maximum.-    (pref,rest) = splitIncr cmp xs---- given a list of elements that is supposedly a a cyclic-shift of a list of--- increasing items, find the splitting point. I.e. returns a pair of lists--- (ys,zs) such that xs = zs ++ ys, and ys ++ zs is (supposedly) in sorted--- order.-splitIncr              :: (a -> a -> Ordering) -> [a] -> ([a],[a])-splitIncr _   []       = ([],[])-splitIncr cmp xs@(x:_) = swap . bimap (map snd) (map snd)-                      . L.break (\(a,b) -> (a `cmp` b) == GT) $ zip (x:xs) xs---- | Test if the circular list is a cyclic shift of the second list.--- Running time: O(n), where n is the size of the smallest list-isShiftOf         :: Eq a => CSeq a -> CSeq a -> Bool-xs `isShiftOf` ys = let rest = tail . F.toList . leftElements-                    in maybe False (\xs' -> rest xs' == rest ys) $-                       rotateTo (focus ys) xs
− src/Data/Ext.hs
@@ -1,89 +0,0 @@-{-# LANGUAGE DeriveAnyClass  #-}-{-# LANGUAGE OverloadedStrings  #-}------------------------------------------------------------------------------------ |--- Module      :  Data.Ext--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ A pair-like data type to represent a 'core' type that has extra information--- as well.-------------------------------------------------------------------------------------module Data.Ext where--import Control.DeepSeq-import Control.Lens hiding ((.=))-import Data.Aeson-import Data.Aeson.Types (typeMismatch)-import Data.Biapplicative-import Data.Bifoldable-import Data.Bifunctor.Apply-import Data.Bitraversable-import Data.Functor.Apply (liftF2)-import Data.Geometry.Properties-import Data.Semigroup.Bifoldable-import Data.Semigroup.Bitraversable-import GHC.Generics (Generic)-------------------------------------------------------------------------------------- | Our Ext type that represents the core datatype core extended with extra--- information of type 'extra'.-data core :+ extra = core :+ extra deriving (Show,Read,Eq,Ord,Bounded,Generic,NFData)-infixr 1 :+--type instance NumType   (core :+ ext) = NumType   core-type instance Dimension (core :+ ext) = Dimension core--instance Bifunctor (:+) where-  bimap f g (c :+ e) = f c :+ g e--instance Biapply (:+) where-  (f :+ g) <<.>> (c :+ e) = f c :+ g e--instance Biapplicative (:+) where-  bipure = (:+)-  (f :+ g) <<*>> (c :+ e) = f c :+ g e--instance Bifoldable (:+) where-  bifoldMap f g (c :+ e) = f c `mappend` g e--instance Bitraversable (:+) where-  bitraverse f g (c :+ e) = (:+) <$> f c <*> g e--instance Bifoldable1 (:+)--instance Bitraversable1 (:+) where-  bitraverse1 f g (c :+ e) = liftF2 (:+) (f c) (g e)--instance (Semigroup core, Semigroup extra) => Semigroup (core :+ extra) where-  (c :+ e) <> (c' :+ e') = c <> c' :+ e <> e'---instance (ToJSON core, ToJSON extra) => ToJSON (core :+ extra) where-  -- toJSON     (c :+ e) = toJSON     (c,e)-  -- toEncoding (c :+ e) = toEncoding (c,e)-  toJSON     (c :+ e) = object ["core" .= c, "extra" .= e]-  toEncoding (c :+ e) = pairs  ("core" .= c <> "extra" .= e)--instance (FromJSON core, FromJSON extra) => FromJSON (core :+ extra) where-  -- parseJSON = fmap (\(c,e) -> c :+ e) . parseJSON-  parseJSON (Object v) = (:+) <$> v .: "core" <*> v .: "extra"-  parseJSON invalid    = typeMismatch "Ext (:+)" invalid--_core :: (core :+ extra) -> core-_core (c :+ _) = c--_extra :: (core :+ extra) -> extra-_extra (_ :+ e) = e--core :: Lens (core :+ extra) (core' :+ extra) core core'-core = lens _core (\(_ :+ e) c -> (c :+ e))--extra :: Lens (core :+ extra) (core :+ extra') extra extra'-extra = lens _extra (\(c :+ _) e -> (c :+ e))--ext   :: a -> a :+ ()-ext x = x :+ ()
− src/Data/Geometry/Arrangement/Draw.hs
@@ -1,24 +0,0 @@------------------------------------------------------------------------------------ |--- Module      :  Data.Geometry.Arrangement.Draw--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ Functions for Drawing arrangements-----------------------------------------------------------------------------------module Data.Geometry.Arrangement.Draw where--import Control.Lens-import Data.Geometry.Arrangement-import Data.Geometry.Ipe-import Data.Geometry.PlanarSubdivision.Draw---- | Draws an arrangement-drawArrangement :: IpeOut (Arrangement s l v e f r) Group r-drawArrangement = drawPlanarSubdivision' . view subdivision---- | Draws an arrangement-drawColoredArrangement :: IpeOut (Arrangement s l v e (Maybe (IpeColor r)) r) Group r-drawColoredArrangement = drawColoredPlanarSubdivision . view subdivision
src/Data/Geometry/Arrangement/Internal.hs view
@@ -1,5 +1,4 @@ {-# LANGUAGE TemplateHaskell  #-}-{-# LANGUAGE ScopedTypeVariables  #-} -------------------------------------------------------------------------------- -- | -- Module      :  Data.Geometry.Arrangement.Internal@@ -26,7 +25,6 @@ import qualified Data.List as List import           Data.Maybe import           Data.Ord (Down(..))-import           Data.Proxy import           Data.Sequence.Util import qualified Data.Vector as V import           Data.Vinyl.CoRec@@ -90,7 +88,7 @@                 & rawVertexData.traverse.dataVal .~ ()     (segs,parts') = computeSegsAndParts rect ls -computeSegsAndParts         :: (Ord r, Fractional r)+computeSegsAndParts         :: forall r l. (Ord r, Fractional r)                             => Rectangle () r                             -> [Line 2 r :+ l]                             -> ( [LineSegment 2 () r :+ Maybe l]@@ -113,13 +111,13 @@   where     rmDuplicates = map head . List.group     vs  = mapMaybe (m `intersectionPoint`) ls-    vs' = maybe [] (\(p,q) -> [p,q]) . asA (Proxy :: Proxy (Point 2 r, Point 2 r))+    vs' = maybe [] (\(p,q) -> [p,q]) . asA @(Point 2 r, Point 2 r)         $ (m^.core) `intersect` (Boundary b)  -intersectionPoint                   :: (Ord r, Fractional r)+intersectionPoint                   :: forall r l. (Ord r, Fractional r)                                     => Line 2 r :+ l -> Line 2 r :+ l -> Maybe (Point 2 r)-intersectionPoint (l :+ _) (m :+ _) = asA (Proxy :: Proxy (Point 2 r)) $ l `intersect` m+intersectionPoint (l :+ _) (m :+ _) = asA @(Point 2 r) $ l `intersect` m   toSegments      :: Ord r => [Point 2 r] -> [LineSegment 2 () r]@@ -245,10 +243,10 @@                      in maybe [] (List.unfoldr (fmap dup . follow arr)) md  -- | Find the starting point of the line  the arrangement-findStart       :: (Ord r, Fractional r)+findStart       :: forall s l v e f r. (Ord r, Fractional r)                 => Line 2 r -> Arrangement s l v (Maybe e) f r -> Maybe (Dart s) findStart l arr = do-    (p,_)   <- asA (Proxy :: Proxy (Point 2 r, Point 2 r)) $+    (p,_)   <- asA @(Point 2 r, Point 2 r) $                  l `intersect` (Boundary $ arr^.boundedArea)     (_,v,_) <- findStartVertex p arr     findStartDart (arr^.subdivision) v
src/Data/Geometry/Box/Internal.hs view
@@ -1,5 +1,4 @@ {-# LANGUAGE TemplateHaskell  #-}-{-# LANGUAGE ScopedTypeVariables  #-} {-# LANGUAGE UndecidableInstances  #-} {-# LANGUAGE InstanceSigs  #-} --------------------------------------------------------------------------------@@ -24,13 +23,13 @@ import           Data.Geometry.Vector import qualified Data.Geometry.Vector as V import qualified Data.List.NonEmpty as NE-import           Data.Proxy import qualified Data.Range as R import qualified Data.Semigroup.Foldable as F import qualified Data.Vector.Fixed as FV import           Data.Vinyl.CoRec (asA) import           GHC.Generics (Generic) import           GHC.TypeLits+import           Test.QuickCheck(Arbitrary(..))  -------------------------------------------------------------------------------- @@ -105,7 +104,7 @@   bx `intersect` bx' = f . sequence $ FV.zipWith intersect' (extent bx) (extent bx')     where       f = maybe (coRec NoIntersection) (coRec . fromExtent)-      r `intersect'` s = asA (Proxy :: Proxy (R.Range r)) $ r `intersect` s+      r `intersect'` s = asA @(R.Range r) $ r `intersect` s  instance Arity d => Bifunctor (Box d) where   bimap :: forall p q r s. (p -> q) -> (r -> s) -> Box d p r -> Box d q s@@ -114,6 +113,7 @@       g' :: Functor g => g (Point d r) -> g (Point d s)       g' = fmap (fmap g) + -- -- In principle this should also just work for Boxes in higher dimensions. It is just -- -- that we need a better way to compute their corners -- instance (Num r, Ord r) => (Rectangle p r) `IsIntersectableWith` (Rectangle p r) where@@ -153,6 +153,9 @@   -- unexpected results.   transformBy = transformPointFunctor ++instance (Arbitrary r, Arity d, Ord r) => Arbitrary (Box d () r) where+  arbitrary = (\p (q :: Point d r) -> boundingBoxList' [p,q]) <$> arbitrary <*> arbitrary  type instance Dimension (Box d p r) = d type instance NumType   (Box d p r) = r
src/Data/Geometry/HalfLine.hs view
@@ -22,9 +22,9 @@ import           GHC.TypeLits  ----------------------------------------------------------------------------------- * d-dimensional Half-Lines+-- * \(d\)-dimensional Half-Lines --- | d-dimensional Half-Lines+-- | \(d\)-dimensional Half-Lines data HalfLine d r = HalfLine { _startPoint        :: Point  d r                              , _halfLineDirection :: Vector d r                              } deriving Generic
+ src/Data/Geometry/HalfSpace.hs view
@@ -0,0 +1,131 @@+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE TemplateHaskell #-}+--------------------------------------------------------------------------------+-- |+-- Module      :  Data.Geometry.HalfSpace+-- Copyright   :  (C) Frank Staals+-- License     :  see the LICENSE file+-- Maintainer  :  Frank Staals+--+-- \(d\)-dimensional HalfSpaces+--+--------------------------------------------------------------------------------+module Data.Geometry.HalfSpace where++import Control.Lens+import Data.Geometry.HalfLine+import Data.Geometry.HyperPlane+import Data.Geometry.Line+import Data.Geometry.Point+import Data.Geometry.Properties+import Data.Geometry.Transformation+import Data.Geometry.Boundary+import Data.Geometry.Vector+import Data.Vinyl.CoRec+import Data.Vinyl.Core+import GHC.Generics (Generic)+import GHC.TypeLits++--------------------------------------------------------------------------------++-- $setup+-- >>> :{+-- let myVector :: Vector 3 Int+--     myVector = Vector3 1 2 3+--     myPoint = Point myVector+-- :}+++--------------------------------------------------------------------------------++-- | A Halfspace in \(d\) dimensions.+newtype HalfSpace d r = HalfSpace { _boundingPlane :: HyperPlane d  r }+                       deriving Generic+makeLenses ''HalfSpace++deriving instance (Arity d, Show r)   => Show    (HalfSpace d r)+deriving instance (Arity d, Eq r)     => Eq      (HalfSpace d r)+-- deriving instance (NFData r, Arity d) => NFData  (HalfSpace d r)+deriving instance Arity d => Functor     (HalfSpace d)+deriving instance Arity d => Foldable    (HalfSpace d)+deriving instance Arity d => Traversable (HalfSpace d)++type instance NumType (HalfSpace d r)   = r+type instance Dimension (HalfSpace d r) = d++deriving instance (Arity d, Arity (d + 1), Fractional r) => IsTransformable (HalfSpace d r)++--------------------------------------------------------------------------------++type HalfPlane = HalfSpace 2++++-- | Get the halfplane left of a line (i.e. "above") a line+--+-- >>> leftOf $ horizontalLine 4+-- HalfSpace {_boundingPlane = HyperPlane {_inPlane = Point2 [0,4], _normalVec = Vector2 [0,1]}}+leftOf   :: Num r => Line 2 r -> HalfPlane r+leftOf l = (rightOf l)&boundingPlane.normalVec %~ ((-1) *^)++-- | Get the halfplane right of a line (i.e. "below") a line+--+-- >>> rightOf $ horizontalLine 4+-- HalfSpace {_boundingPlane = HyperPlane {_inPlane = Point2 [0,4], _normalVec = Vector2 [0,-1]}}+rightOf   :: Num r => Line 2 r -> HalfPlane r+rightOf l = HalfSpace $ l^.re _asLine++above :: Num r => Line 2 r -> HalfPlane r+above = leftOf++below :: Num r => Line 2 r -> HalfPlane r+below = rightOf++--------------------------------------------------------------------------------++-- type HalfPlane r = GHalfSpace (Line 2 r)++-- type HalfSpace d r = GHalfSpace (HyperPlane d r)++-- TODO: Property test that in 2d this is the same as CCW++type instance IntersectionOf (Point d r) (HalfSpace d r) = [NoIntersection, Point d r]++instance (Num r, Ord r, Arity d) => Point d r `IsIntersectableWith` HalfSpace d r where+  nonEmptyIntersection = defaultNonEmptyIntersection++  q `intersects` h = q `inHalfSpace` h /= Outside++  q `intersect` h | q `intersects` h = coRec q+                  | otherwise        = coRec NoIntersection++++type instance IntersectionOf (Line d r) (HalfSpace d r) =+    [NoIntersection, HalfLine d r, Line d r]+++instance (Fractional r, Ord r) => Line 2 r `IsIntersectableWith` HalfSpace 2 r where+  nonEmptyIntersection = defaultNonEmptyIntersection++  l@(Line o v) `intersect` h = match (l `intersect` m) $+         (H $ \NoIntersection -> if o `intersects` h+                                   then coRec l+                                   else coRec NoIntersection)+      :& (H $ \p              -> if (p .+^ v) `intersects` h+                                   then coRec $ HalfLine p v+                                   else coRec $ HalfLine p ((-1) *^ v))+      :& (H $ \_l             -> coRec l)+      :& RNil+    where+      m = h^.boundingPlane._asLine+++-- | Test if a point lies in a halfspace+inHalfSpace                                  :: (Num r, Ord r, Arity d)+                                             => Point d r -> HalfSpace d r+                                             -> PointLocationResult+q `inHalfSpace` (HalfSpace (HyperPlane p n)) = case n `dot` (q .-. p) `compare` 0 of+                                                 LT -> Outside+                                                 EQ -> OnBoundary+                                                 GT -> Inside
src/Data/Geometry/HyperPlane.hs view
@@ -36,12 +36,18 @@  -------------------------------------------------------------------------------- --- | Test if a point lies on a hyperplane.-onHyperPlane                      :: (Num r, Eq r, Arity d)-                                  => Point d r -> HyperPlane d r -> Bool-q `onHyperPlane` (HyperPlane p n) = n `dot` (q .-. p) == 0+type instance IntersectionOf (Point d r) (HyperPlane d r) = [NoIntersection, Point d r] +instance (Num r, Eq r, Arity d) => Point d r `IsIntersectableWith` HyperPlane d r where+  nonEmptyIntersection = defaultNonEmptyIntersection+  q `intersects` (HyperPlane p n) = n `dot` (q .-. p) == 0 +  q `intersect` h | q `intersects` h = coRec q+                  | otherwise        = coRec NoIntersection++++ -- -- | Compute a transformation that maps the last dimension (i.e. the d-axis) to -- -- the normal vector of the plane. The origin of the coordinate system will -- -- correspond to the inPlane point.@@ -81,6 +87,15 @@       denum = v `dot` n     -- see https://en.wikipedia.org/wiki/Line%E2%80%93plane_intersection ++-- * Lines++-- | Convert between lines and hyperplanes+_asLine :: Num r => Iso' (HyperPlane 2 r) (Line 2 r)+_asLine = iso hyperplane2line line2hyperplane+  where+    hyperplane2line (HyperPlane p n) = perpendicularTo $ Line p n+    line2hyperplane l = let Line p n = perpendicularTo l in HyperPlane p ((-1) *^ n)  -------------------------------------------------------------------------------- -- * Supporting Planes
src/Data/Geometry/Interval.hs view
@@ -29,12 +29,13 @@ import           Data.Vinyl import           Data.Vinyl.CoRec import           GHC.Generics (Generic)+import           Test.QuickCheck  --------------------------------------------------------------------------------  -- | An Interval is essentially a 'Data.Range' but with possible payload newtype Interval a r = GInterval { _unInterval :: Range (r :+ a) }-                     deriving (Eq,Generic)+                     deriving (Eq,Generic,Arbitrary) makeLenses ''Interval  deriving instance (NFData a, NFData r) => NFData (Interval a r)
src/Data/Geometry/IntervalTree.hs view
@@ -1,5 +1,4 @@ {-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE DeriveAnyClass #-} module Data.Geometry.IntervalTree( NodeData(..)                                  , splitPoint, intervalsLeft, intervalsRight                                  , IntervalTree(..), unIntervalTree@@ -28,17 +27,19 @@ data NodeData i r = NodeData { _splitPoint     :: !r                              , _intervalsLeft  :: !(M.Map (L r) [i])                              , _intervalsRight :: !(M.Map (R r) [i])-                             } deriving (Show,Eq,Ord,Generic,NFData)+                             } deriving (Show,Eq,Ord,Generic) makeLenses ''NodeData -+instance (NFData i, NFData r) => NFData (NodeData i r)  -- | IntervalTree type, storing intervals of type i newtype IntervalTree i r =   IntervalTree { _unIntervalTree :: BinaryTree (NodeData i r) }-  deriving (Show,Eq,Generic,NFData)+  deriving (Show,Eq,Generic) makeLenses ''IntervalTree +instance (NFData i, NFData r) => NFData (IntervalTree i r)+ -- | Given an ordered list of points, create an interval tree -- -- \(O(n)\)@@ -148,8 +149,8 @@  -------------------------------------------------------------------------------- -test'' = fromIntervals test-test  = [Interval (Open (97 :+ ())) (Closed (228 :+ ())) ,Interval (Open (18 :+ ())) (Open (79 :+ ())),Interval (Closed (126 :+ ())) (Open (167 :+ ())),Interval (Closed (105 :+ ())) (Closed (158 :+ ())),Interval (Closed (126 :+ ())) (Closed (211 :+ ())),Interval (Closed (111 :+ ())) (Open (194 :+ ())),Interval (Closed (120 :+ ())) (Open (302 :+ ())),Interval (Closed (92 :+ ())) (Closed (140 :+ ()))]+-- test'' = fromIntervals test+-- test  = [Interval (Open (97 :+ ())) (Closed (228 :+ ())) ,Interval (Open (18 :+ ())) (Open (79 :+ ())),Interval (Closed (126 :+ ())) (Open (167 :+ ())),Interval (Closed (105 :+ ())) (Closed (158 :+ ())),Interval (Closed (126 :+ ())) (Closed (211 :+ ())),Interval (Closed (111 :+ ())) (Open (194 :+ ())),Interval (Closed (120 :+ ())) (Open (302 :+ ())),Interval (Closed (92 :+ ())) (Closed (140 :+ ()))]  -- test = fromIntervals [ closedInterval 0 10 --                      , closedInterval 5 15
− src/Data/Geometry/Ipe.hs
@@ -1,28 +0,0 @@------------------------------------------------------------------------------------ |--- Module      :  Data.Geometry.Ipe--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ Reexports the functionality for reading and writing Ipe files.-------------------------------------------------------------------------------------module Data.Geometry.Ipe( module Data.Geometry.Ipe.Types-                        , module Data.Geometry.Ipe.Writer-                        , module Data.Geometry.Ipe.Reader-                        , module Data.Geometry.Ipe.IpeOut-                        , module Data.Geometry.Ipe.FromIpe-                        , module Data.Geometry.Ipe.Attributes-                        , module Data.Geometry.Ipe.Value-                        , module Data.Geometry.Ipe.Color-                        ) where--import Data.Geometry.Ipe.Types-import Data.Geometry.Ipe.Writer-import Data.Geometry.Ipe.Reader-import Data.Geometry.Ipe.IpeOut-import Data.Geometry.Ipe.FromIpe-import Data.Geometry.Ipe.Attributes-import Data.Geometry.Ipe.Value-import Data.Geometry.Ipe.Color(IpeColor(..))
− src/Data/Geometry/Ipe/Attributes.hs
@@ -1,366 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE UnicodeSyntax #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UndecidableInstances #-}------------------------------------------------------------------------------------ |--- Module      :  Data.Geometry.Ipe.Attributes--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ Possible Attributes we can assign to items in an Ipe file-------------------------------------------------------------------------------------module Data.Geometry.Ipe.Attributes where--import Control.Lens hiding (rmap, Const)-import Data.Geometry.Ipe.Value-import Data.Singletons-import Data.Singletons.TH-import Data.Text (Text)-import Data.Vinyl-import Data.Vinyl.Functor-import Data.Vinyl.TypeLevel-import GHC.Exts-import Text.Read(lexP, step, parens, prec, (+++)-                , Lexeme(Ident), readPrec, readListPrec, readListPrecDefault)-------------------------------------------------------------------------------------data AttributeUniverse = -- common-                         Layer | Matrix | Pin | Transformations-                       -- symbol-                       | Stroke | Fill | Pen | Size-                       -- Path-                       | Dash | LineCap | LineJoin-                       | FillRule | Arrow | RArrow | Opacity | Tiling | Gradient-                       -- Group-                       | Clip-                       -- Extra---                       | X Text-                       deriving (Show,Read,Eq)---genSingletons [ ''AttributeUniverse ]---type CommonAttributes = [ Layer, Matrix, Pin, Transformations ]---type TextLabelAttributes = CommonAttributes-type MiniPageAttributes  = CommonAttributes--type ImageAttributes     = CommonAttributes---type SymbolAttributes = CommonAttributes ++-                          [Stroke, Fill, Pen, Size]--type PathAttributes = CommonAttributes ++-                      [ Stroke, Fill, Dash, Pen, LineCap, LineJoin-                      , FillRule, Arrow, RArrow, Opacity, Tiling, Gradient-                      ]--type GroupAttributes = CommonAttributes ++ '[ 'Clip]----- | Attr implements the mapping from labels to types as specified by the--- (symbol representing) the type family 'f'-newtype Attr (f :: TyFun u * -> *) -- Symbol repr. the Type family mapping-                                   -- Labels in universe u to concrete types-             (label :: u) = GAttr { _getAttr :: Maybe (Apply f label) }----deriving instance Eq   (Apply f label) => Eq   (Attr f label)-deriving instance Ord  (Apply f label) => Ord  (Attr f label)--makeLenses ''Attr---- | Constructor for constructing an Attr given an actual value.-pattern Attr   :: Apply f label -> Attr f label-pattern Attr x = GAttr (Just x)---- | An Attribute that is not set-pattern NoAttr :: Attr f label-pattern NoAttr = GAttr Nothing-{-# COMPLETE NoAttr, Attr #-}--instance Show (Apply f label) => Show (Attr f label) where-  showsPrec d NoAttr   = showParen (d > app_prec) $ showString "NoAttr"-    where app_prec = 10-  showsPrec d (Attr a) = showParen (d > up_prec) $-                           showString "Attr " . showsPrec (up_prec+1) a-    where up_prec  = 5--instance Read (Apply f label) => Read (Attr f label) where-  readPrec = parens $ (prec app_prec $ do-                                         Ident "NoAttr" <- lexP-                                         pure NoAttr)-                  +++ (prec up_prec $ do-                                         Ident "Attr" <- lexP-                                         a <- step readPrec-                                         pure $ Attr a)-    where-      app_prec = 10-      up_prec = 5-  readListPrec = readListPrecDefault------ | Give pref. to the *RIGHT*-instance Semigroup (Attr f l) where-  _ <> b@(Attr _) = b-  a <> _          = a--instance Monoid (Attr f l) where-  mempty  = NoAttr-  mappend = (<>)--newtype Attributes (f :: TyFun u * -> *) (ats :: [u]) = Attrs (Rec (Attr f) ats)--unAttrs :: Lens (Attributes f ats) (Attributes f' ats') (Rec (Attr f) ats) (Rec (Attr f') ats')-unAttrs = lens (\(Attrs r) -> r) (const Attrs)--deriving instance (RecAll (Attr f) ats Show) => Show (Attributes f ats)--- deriving instance (RecAll (Attr f) ats Read) => Read (Attributes f ats)--instance (RecAll (Attr f) ats Eq)   => Eq   (Attributes f ats) where-  (Attrs a) == (Attrs b) = and . recordToList-                         . zipRecsWith (\x (Compose (Dict y)) -> Const $ x == y) a-                         . (reifyConstraint (Proxy :: Proxy Eq)) $ b--instance RecApplicative ats => Monoid (Attributes f ats) where-  mempty        = Attrs $ rpure mempty-  a `mappend` b = a <> b--instance Semigroup (Attributes f ats) where-  (Attrs as) <> (Attrs bs) = Attrs $ zipRecsWith mappend as bs----zipRecsWith                       :: (forall a. f a -> g a -> h a)-                                  -> Rec f as -> Rec g as -> Rec h as-zipRecsWith _ RNil      _         = RNil-zipRecsWith f (r :& rs) (s :& ss) = f r s :& zipRecsWith f rs ss--attrLens   :: (at ∈ ats) => proxy at -> Lens' (Attributes f ats) (Maybe (Apply f at))-attrLens p = unAttrs.rlens p.getAttr--lookupAttr   :: (at ∈ ats) => proxy at -> Attributes f ats -> Maybe (Apply f at)-lookupAttr p = view (attrLens p)--setAttr               :: forall proxy at ats f. (at ∈ ats)-                      => proxy at -> Apply f at -> Attributes f ats -> Attributes f ats-setAttr _ a (Attrs r) = Attrs $ rput (Attr a :: Attr f at) r----- | gets and removes the attribute from Attributes-takeAttr       :: forall proxy at ats f. (at ∈ ats)-               => proxy at -> Attributes f ats -> ( Maybe (Apply f at)-                                                  , Attributes f ats )-takeAttr p ats = (lookupAttr p ats, ats&attrLens p .~ Nothing)----- | unsets/Removes an attribute-unSetAttr   :: forall proxy at ats f. (at ∈ ats)-            => proxy at -> Attributes f ats -> Attributes f ats-unSetAttr p = snd . takeAttr p---attr     :: (at ∈ ats, RecApplicative ats)-         => proxy at -> Apply f at -> Attributes f ats-attr p x = setAttr p x mempty---------------------------------------------------------------------------------------- | Common Attributes---- IpeObjects may have attributes. Essentially attributes are (key,value)--- pairs. The key is some name. Which attributes an object can have depends on--- the type of the object. However, all ipe objects support the following--- 'common attributes':---- data CommonAttributeUniverse = Layer | Matrix | Pin | Transformations---                              deriving (Show,Read,Eq)---- | Possible values for Pin-data PinType = No | Yes | Horizontal | Vertical-             deriving (Eq,Show,Read)---- | Possible values for Transformation-data TransformationTypes = Affine | Rigid | Translations deriving (Show,Read,Eq)---- type family CommonAttrElf (r :: *) (f :: CommonAttributeUniverse)where---   CommonAttrElf r 'Layer          = Text---   CommonAttrElf r 'Matrix         = Matrix 3 3 r---   CommonAttrElf r Pin             = PinType---   CommonAttrElf r Transformations = TransformationTypes---- genDefunSymbols [''CommonAttrElf]----- type CommonAttributes r =---   Attributes (CommonAttrElfSym1 r) [ 'Layer, 'Matrix, Pin, Transformations ]------------------------------------------------------------------------------------- Text Attributes---- these Attributes are speicifc to IpeObjects representing TextLabels and--- MiniPages. The same structure as for the `CommonAttributes' applies here.---- | TODO------------------------------------------------------------------------------------- | Symbol Attributes---- | The optional Attributes for a symbol--- data SymbolAttributeUniverse = SymbolStroke | SymbolFill | SymbolPen | Size---                              deriving (Show,Eq)----newtype IpeSize  r = IpeSize  (IpeValue r)          deriving (Show,Eq,Ord)-newtype IpePen   r = IpePen   (IpeValue r)          deriving (Show,Eq,Ord)------ -- | And the corresponding types--- type family SymbolAttrElf (r :: *) (s :: SymbolAttributeUniverse) :: * where---   SymbolAttrElf r SymbolStroke = IpeColor---   SymbolAttrElf r SymbolPen    = IpePen r---   SymbolAttrElf r SymbolFill   = IpeColor---   SymbolAttrElf r Size         = IpeSize r---- genDefunSymbols [''SymbolAttrElf]----- type SymbolAttributes r = [SymbolStroke, SymbolFill, SymbolPen, Size]---- type SymbolAttributes r =---   Attributes (SymbolAttrElfSym1 r) [SymbolStroke, SymbolFill, SymbolPen, Size]------------------------------------------------------------------------------------ | Path Attributes---- | Possible attributes for a path--- data PathAttributeUniverse = Stroke | Fill | Dash | Pen | LineCap | LineJoin---                            | FillRule | Arrow | RArrow | Opacity | Tiling | Gradient---                            deriving (Show,Eq)----- | Possible values for Dash-data IpeDash r = DashNamed Text-               | DashPattern [r] r-               deriving (Show,Eq)---- | Allowed Fill types-data FillType = Wind | EOFill deriving (Show,Read,Eq)---- | IpeOpacity, IpeTyling, and IpeGradient are all symbolic values-type IpeOpacity  = Text-type IpeTiling   = Text-type IpeGradient = Text---- | Possible values for an ipe arrow-data IpeArrow r = IpeArrow { _arrowName :: Text-                           , _arrowSize :: IpeSize r-                           } deriving (Show,Eq)-makeLenses ''IpeArrow--normalArrow :: IpeArrow r-normalArrow = IpeArrow "normal" (IpeSize $ Named "normal/normal")---- -- | and their types--- type family PathAttrElf (r :: *) (s :: PathAttributeUniverse) :: * where---   PathAttrElf r Stroke   = IpeColor---   PathAttrElf r Fill     = IpeColor---   PathAttrElf r Dash     = IpeDash r---   PathAttrElf r Pen      = IpePen r---   PathAttrElf r LineCap  = Int---   PathAttrElf r LineJoin = Int---   PathAttrElf r FillRule = FillType---   PathAttrElf r Arrow    = IpeArrow r---   PathAttrElf r RArrow   = IpeArrow r---   PathAttrElf r Opacity  = IpeOpacity---   PathAttrElf r Tiling   = IpeTiling---   PathAttrElf r Gradient = IpeGradient---- genDefunSymbols [''PathAttrElf]---- type PathAttributes r = [ Stroke, Fill, Dash, Pen, LineCap, LineJoin---                         , FillRule, Arrow, RArrow, Opacity, Tiling, Gradient---                         ]---- type PathAttributes r =---   Attributes (PathAttrElfSym1 r) [ Stroke, Fill, Dash, Pen, LineCap, LineJoin---                                  , FillRule, Arrow, RArrow, Opacity, Tiling, Gradient---                                  ]------------------------------------------------------------------------------------- | Group Attributes----- | The only group attribute is a Clip--- data GroupAttributeUniverse = Clip deriving (Show,Read,Eq,Ord)---- A clipping path is a Path. Which is defined in Data.Geometry.Ipe.Types. To--- avoid circular imports, we define GroupAttrElf and GroupAttribute there.-------------------------------------------------------------------------------------- * Attribute names in Ipe----- | For the types representing attribute values we can get the name/key to use--- when serializing to ipe.-class IpeAttrName (a :: AttributeUniverse) where-  attrName :: Proxy a -> Text---- CommonAttributeUnivers-instance IpeAttrName Layer           where attrName _ = "layer"-instance IpeAttrName Matrix          where attrName _ = "matrix"-instance IpeAttrName Pin             where attrName _ = "pin"-instance IpeAttrName Transformations where attrName _ = "transformations"---- IpeSymbolAttributeUniversre-instance IpeAttrName Stroke       where attrName _ = "stroke"-instance IpeAttrName Fill         where attrName _ = "fill"-instance IpeAttrName Pen          where attrName _ = "pen"-instance IpeAttrName Size         where attrName _ = "size"---- PathAttributeUniverse-instance IpeAttrName Dash       where attrName _ = "dash"-instance IpeAttrName LineCap    where attrName _ = "cap"-instance IpeAttrName LineJoin   where attrName _ = "join"-instance IpeAttrName FillRule   where attrName _ = "fillrule"-instance IpeAttrName Arrow      where attrName _ = "arrow"-instance IpeAttrName RArrow     where attrName _ = "rarrow"-instance IpeAttrName Opacity    where attrName _ = "opacity"-instance IpeAttrName Tiling     where attrName _ = "tiling"-instance IpeAttrName Gradient   where attrName _ = "gradient"---- GroupAttributeUniverse-instance IpeAttrName Clip     where attrName _ = "clip"----- | Function that states that all elements in xs satisfy a given constraint c-type family AllSatisfy (c :: k -> Constraint) (xs :: [k]) :: Constraint where-  AllSatisfy c '[] = ()-  AllSatisfy c (x ': xs) = (c x, AllSatisfy c xs)----- | Writing Attribute names-writeAttrNames           :: AllSatisfy IpeAttrName rs => Rec f rs -> Rec (Const Text) rs-writeAttrNames RNil      = RNil-writeAttrNames (x :& xs) = Const (write'' x) :& writeAttrNames xs-  where-    write''   :: forall f s. IpeAttrName s => f s -> Text-    write'' _ = attrName (Proxy :: Proxy s)----
− src/Data/Geometry/Ipe/Color.hs
@@ -1,110 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}------------------------------------------------------------------------------------ |--- Module      :  Data.Geometry.Ipe.Color--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ Data type for representing colors in ipe as well as the colors available in--- the standard ipe stylesheet.-------------------------------------------------------------------------------------module Data.Geometry.Ipe.Color where--import           Data.Colour.SRGB (RGB(..))-import           Data.Geometry.Ipe.Value-import           Data.Text-----------------------------------------------------------------------------------newtype IpeColor r = IpeColor (IpeValue (RGB r))    deriving (Show,Read,Eq)--instance Ord r => Ord (IpeColor r) where-  (IpeColor c) `compare` (IpeColor c') = fmap f c `compare` fmap f c'-    where-      f (RGB r g b) = (r,g,b)---- | Creates a named color-named :: Text -> IpeColor r-named = IpeColor . Named------------------------------------------------------------------------------------- * Basic Named colors--red :: IpeColor r-red = named "red"--green :: IpeColor r-green = named "green"--blue :: IpeColor r-blue = named "blue"--yellow :: IpeColor r-yellow = named "yellow"--orange :: IpeColor r-orange = named "orange"--gold :: IpeColor r-gold = named "gold"--purple :: IpeColor r-purple = named "purple"--gray :: IpeColor r-gray = named "gray"--brown :: IpeColor r-brown = named "brown"--navy :: IpeColor r-navy = named "navy"--pink :: IpeColor r-pink = named "pink"--seagreen :: IpeColor r-seagreen = named "seagreen"--turquoise :: IpeColor r-turquoise = named "turquoise"--violet :: IpeColor r-violet = named "violet"--darkblue :: IpeColor r-darkblue = named "darkblue"--darkcyan :: IpeColor r-darkcyan = named "darkcyan"--darkgray :: IpeColor r-darkgray = named "darkgray"--darkgreen :: IpeColor r-darkgreen = named "darkgreen"--darkmagenta :: IpeColor r-darkmagenta = named "darkmagenta"--darkorange :: IpeColor r-darkorange = named "darkorange"--darkred :: IpeColor r-darkred = named "darkred"--lightblue :: IpeColor r-lightblue = named "lightblue"--lightcyan :: IpeColor r-lightcyan = named "lightcyan"--lightgray :: IpeColor r-lightgray = named "lightgray"--lightgreen :: IpeColor r-lightgreen = named "lightgreen"--lightyellow :: IpeColor r-lightyellow = named "lightyellow"
− src/Data/Geometry/Ipe/FromIpe.hs
@@ -1,173 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}------------------------------------------------------------------------------------ |--- Module      :  Data.Geometry.Ipe.FromIpe--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ Functions that help reading geometric values from ipe images.-------------------------------------------------------------------------------------module Data.Geometry.Ipe.FromIpe where--import           Control.Lens hiding (Simple)-import           Data.Ext-import           Data.Geometry.Ipe.Reader-import           Data.Geometry.Ipe.Types-import           Data.Geometry.LineSegment-import qualified Data.Geometry.PolyLine as PolyLine-import           Data.Geometry.Polygon-import           Data.Geometry.Properties-import           Data.Geometry.Triangle-import qualified Data.LSeq as LSeq-import           Data.List.NonEmpty (NonEmpty(..))------------------------------------------------------------------------------------- $setup--- >>> :set -XOverloadedStrings--- >>> import Data.Geometry.Ipe.Attributes--- >>> import Data.Geometry.Ipe.Color(IpeColor(..))--- >>> import Data.Geometry.Point--- >>> :{--- let testPath :: Path Int---     testPath = Path . fromSingleton  . PolyLineSegment---              . PolyLine.fromPoints . map ext---              $ [ origin, point2 10 10, point2 200 100 ]---     testPathAttrs :: IpeAttributes Path Int---     testPathAttrs = attr SStroke (IpeColor "red")---     testObject :: IpeObject Int---     testObject = IpePath (testPath :+ testPathAttrs)--- :}----- | Try to convert a path into a line segment, fails if the path is not a line--- segment or a polyline with more than two points.-------_asLineSegment :: Prism' (Path r) (LineSegment 2 () r)-_asLineSegment = prism' seg2path path2seg-  where-    seg2path   = review _asPolyLine . PolyLine.fromLineSegment-    path2seg p = PolyLine.asLineSegment' =<< preview _asPolyLine p---- | Convert to a polyline. Ignores all non-polyline parts------ >>> testPath ^? _asPolyLine--- Just (PolyLine {_points = LSeq (fromList [Point2 [0,0] :+ (),Point2 [10,10] :+ (),Point2 [200,100] :+ ()])})-_asPolyLine :: Prism' (Path r) (PolyLine.PolyLine 2 () r)-_asPolyLine = prism' poly2path path2poly-  where-    poly2path = Path . fromSingleton  . PolyLineSegment-    path2poly = preview (pathSegments.traverse._PolyLineSegment)-    -- TODO: Check that the path actually is a polyline, rather-    -- than ignoring everything that does not fit---- | Convert to a simple polygon-_asSimplePolygon :: Prism' (Path r) (Polygon Simple () r)-_asSimplePolygon = prism' polygonToPath path2poly-  where-    path2poly p = pathToPolygon p >>= either pure (const Nothing)---- | Convert to a triangle-_asTriangle :: Prism' (Path r) (Triangle 2 () r)-_asTriangle = prism' triToPath path2tri-  where-    triToPath (Triangle p q r) = polygonToPath . fromPoints . map (&extra .~ ()) $ [p,q,r]-    path2tri p = case p^..pathSegments.traverse._PolygonPath of-                    []   -> Nothing-                    [pg] -> case polygonVertices pg of-                              (a :| [b,c]) -> Just $ Triangle a b c-                              _            -> Nothing-                    _    -> Nothing----- | Convert to a multipolygon-_asMultiPolygon :: Prism' (Path r) (MultiPolygon () r)-_asMultiPolygon = prism' polygonToPath path2poly-  where-    path2poly p = pathToPolygon p >>= either (const Nothing) pure--polygonToPath                      :: Polygon t () r -> Path r-polygonToPath pg@(SimplePolygon _) = Path . fromSingleton . PolygonPath $ pg-polygonToPath (MultiPolygon vs hs) = Path . LSeq.fromNonEmpty . fmap PolygonPath-                                   $ (SimplePolygon vs) :| hs---pathToPolygon   :: Path r -> Maybe (Either (SimplePolygon () r) (MultiPolygon () r))-pathToPolygon p = case p^..pathSegments.traverse._PolygonPath of-                    []                   -> Nothing-                    [pg]                 -> Just . Left  $ pg-                    SimplePolygon vs: hs -> Just . Right $ MultiPolygon vs hs------ | Use the first prism to select the ipe object to depicle with, and the second--- how to select the geometry object from there on. Then we can select the geometry--- object, directly with its attributes here.------ >>> testObject ^? _withAttrs _IpePath _asPolyLine--- Just (PolyLine {_points = LSeq (fromList [Point2 [0,0] :+ (),Point2 [10,10] :+ (),Point2 [200,100] :+ ()])} :+ Attrs {NoAttr, NoAttr, NoAttr, NoAttr, Attr IpeColor (Named "red"), NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr})-_withAttrs       :: Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g-                 -> Prism' (IpeObject r) (g :+ IpeAttributes i r)-_withAttrs po pg = prism' g2o o2g-  where-    g2o    = review po . over core (review pg)-    o2g o  = preview po o >>= \(i :+ ats) -> (:+ ats) <$> preview pg i-------- instance HasDefaultIpeObject Path where---   defaultIpeObject' = _IpePath----- class HasDefaultFromIpe g where---   type DefaultFromIpe g :: * -> *---   defaultIpeObject :: proxy g -> Prism' (IpeObject r) (DefaultFromIpe g r :+ IpeAttributes (DefaultFromIpe g) r)---   defaultFromIpe   :: proxy g -> Prism' (DefaultFromIpe g (NumType g)) g---class HasDefaultFromIpe g where-  type DefaultFromIpe g :: * -> *-  defaultFromIpe :: (r ~ NumType g)-                 => Prism' (IpeObject r) (g :+ IpeAttributes (DefaultFromIpe g) r)---- instance HasDefaultFromIpe (Point 2 r) where---   type DefaultFromIpe (Point 2 r) = IpeSymbol---   defaultFromIpe = _withAttrs _IpeUse symbolPoint---instance HasDefaultFromIpe (LineSegment 2 () r) where-  type DefaultFromIpe (LineSegment 2 () r) = Path-  defaultFromIpe = _withAttrs _IpePath _asLineSegment--instance HasDefaultFromIpe (PolyLine.PolyLine 2 () r) where-  type DefaultFromIpe (PolyLine.PolyLine 2 () r) = Path-  defaultFromIpe = _withAttrs _IpePath _asPolyLine---instance HasDefaultFromIpe (SimplePolygon () r) where-  type DefaultFromIpe (SimplePolygon () r) = Path-  defaultFromIpe = _withAttrs _IpePath _asSimplePolygon--instance HasDefaultFromIpe (MultiPolygon () r) where-  type DefaultFromIpe (MultiPolygon () r) = Path-  defaultFromIpe = _withAttrs _IpePath _asMultiPolygon----- | Read all g's from some ipe page(s).-readAll :: (HasDefaultFromIpe g, r ~ NumType g, Foldable f)-        => f (IpePage r) -> [g :+ IpeAttributes (DefaultFromIpe g) r]-readAll = foldMap (^..content.traverse.defaultFromIpe)----- | Convenience function from reading all g's from an ipe file. If there--- is an error reading or parsing the file the error is "thrown away".-readAllFrom    :: (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r)-               => FilePath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r]-readAllFrom fp = readAll <$> readSinglePageFile fp--fromSingleton :: a -> LSeq.LSeq 1 a-fromSingleton = LSeq.fromNonEmpty . (:| [])
− src/Data/Geometry/Ipe/IpeOut.hs
@@ -1,214 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE ScopedTypeVariables #-}------------------------------------------------------------------------------------ |--- Module      :  Data.Geometry.Ipe.IpeOut--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ Functions that help drawing geometric values in ipe. An "IpeOut" is--- essenitally a function that converts a geometric type g into an IpeObject.------ We also proivde a "HasDefaultIpeOut" typeclass that defines a default--- conversion function from a geometry type g to an ipe type.-------------------------------------------------------------------------------------module Data.Geometry.Ipe.IpeOut where---import           Control.Lens hiding (Simple)-import           Data.Bifunctor-import           Data.Ext-import           Data.Geometry.Ball-import           Data.Geometry.Boundary-import           Data.Geometry.Box-import           Data.Geometry.Ipe.Attributes-import           Data.Geometry.Ipe.Color (IpeColor(..))-import           Data.Geometry.Ipe.FromIpe-import           Data.Geometry.Ipe.Types-import           Data.Geometry.Line-import           Data.Geometry.LineSegment-import           Data.Geometry.Point-import           Data.Geometry.PolyLine(PolyLine,fromLineSegment)-import           Data.Geometry.Polygon-import           Data.Geometry.Polygon.Convex-import           Data.Geometry.Properties-import           Data.Geometry.Transformation-import qualified Data.LSeq as LSeq-import           Data.List.NonEmpty (NonEmpty(..))-import           Data.Proxy-import           Data.Text (Text)-import           Data.Maybe (fromMaybe)-import           Linear.Affine ((.+^))-import           Data.Vinyl.CoRec-------------------------------------------------------------------------------------- $setup--- >>> :set -XOverloadedStrings--- >>> :{--- let myPolygon = fromPoints . map ext $ [origin, Point2 10 10, Point2 100 200]--- :}------------------------------------------------------------------------------------- * The IpeOut type and the default combinator to use it--type IpeOut g i r = g -> IpeObject' i r----- | Add attributes to an IpeObject'-(!)       :: IpeObject' i r -> IpeAttributes i r -> IpeObject' i r-(!) i ats = i&extra %~ (<> ats)---- | Render an ipe object--------- >>> :{---   iO $ defIO myPolygon ! attr SFill (IpeColor "blue")---                        ! attr SLayer "alpha"---                        ! attr SLayer "beta"--- :}--- IpePath (Path {_pathSegments = LSeq (fromList [PolygonPath SimplePolygon CSeq [Point2 [0,0] :+ (),Point2 [10,10] :+ (),Point2 [100,200] :+ ()]])} :+ Attrs {Attr LayerName {_layerName = "beta"}, NoAttr, NoAttr, NoAttr, NoAttr, Attr IpeColor (Named "blue"), NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr})------ >>> :{---   iO $ ipeGroup [ iO $ ipePolygon myPolygon ! attr SFill (IpeColor "red")---                 ] ! attr SLayer "alpha"--- :}--- IpeGroup (Group [IpePath (Path {_pathSegments = LSeq (fromList [PolygonPath SimplePolygon CSeq [Point2 [0,0] :+ (),Point2 [10,10] :+ (),Point2 [100,200] :+ ()]])} :+ Attrs {NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, Attr IpeColor (Named "red"), NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr})] :+ Attrs {Attr LayerName {_layerName = "alpha"}, NoAttr, NoAttr, NoAttr, NoAttr})----iO :: ToObject i => IpeObject' i r -> IpeObject r-iO = mkIpeObject---- | Render to an ipe object using the defIO IpeOut--------- >>> :{---   iO'' myPolygon $  attr SFill (IpeColor "red")---                  <> attr SLayer "alpha"---                  <> attr SLayer "beta"--- :}--- IpePath (Path {_pathSegments = LSeq (fromList [PolygonPath SimplePolygon CSeq [Point2 [0,0] :+ (),Point2 [10,10] :+ (),Point2 [100,200] :+ ()]])} :+ Attrs {Attr LayerName {_layerName = "beta"}, NoAttr, NoAttr, NoAttr, NoAttr, Attr IpeColor (Named "red"), NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr})------ >>> iO'' [ myPolygon , myPolygon ] $ attr SLayer "alpha"--- IpeGroup (Group [IpePath (Path {_pathSegments = LSeq (fromList [PolygonPath SimplePolygon CSeq [Point2 [0,0] :+ (),Point2 [10,10] :+ (),Point2 [100,200] :+ ()]])} :+ Attrs {NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr}),IpePath (Path {_pathSegments = LSeq (fromList [PolygonPath SimplePolygon CSeq [Point2 [0,0] :+ (),Point2 [10,10] :+ (),Point2 [100,200] :+ ()]])} :+ Attrs {NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr})] :+ Attrs {Attr LayerName {_layerName = "alpha"}, NoAttr, NoAttr, NoAttr, NoAttr})-iO''       :: ( HasDefaultIpeOut g, NumType g ~ r-             , DefaultIpeOut g ~ i, ToObject i-             ) => g -> IpeAttributes i r-           -> IpeObject r-iO'' g ats = iO $ defIO g ! ats---- | generate an ipe object without any specific attributes-iO' :: HasDefaultIpeOut g => g -> IpeObject (NumType g)-iO' = iO . defIO------------------------------------------------------------------------------------- * Default Conversions---- | Class that specifies a default conversion from a geometry type g into an--- ipe object.-class ToObject (DefaultIpeOut g) => HasDefaultIpeOut g where-  type DefaultIpeOut g :: * -> *--  defIO :: IpeOut g (DefaultIpeOut g) (NumType g)--instance (HasDefaultIpeOut g, a ~ IpeAttributes (DefaultIpeOut g) (NumType g))-        => HasDefaultIpeOut (g :+ a) where-  type DefaultIpeOut (g :+ a) = DefaultIpeOut g-  defIO (g :+ ats) = defIO g ! ats--instance HasDefaultIpeOut a => HasDefaultIpeOut [a] where-  type DefaultIpeOut [a] = Group-  defIO = ipeGroup . map (iO .  defIO)--instance HasDefaultIpeOut (Point 2 r) where-  type DefaultIpeOut (Point 2 r) = IpeSymbol-  defIO = ipeDiskMark--instance HasDefaultIpeOut (LineSegment 2 p r) where-  type DefaultIpeOut (LineSegment 2 p r) = Path-  defIO = ipeLineSegment--instance HasDefaultIpeOut (PolyLine 2 p r) where-  type DefaultIpeOut (PolyLine 2 p r) = Path-  defIO = ipePolyLine--instance (Fractional r, Ord r) => HasDefaultIpeOut (Line 2 r) where-  type DefaultIpeOut (Line 2 r) = Path-  defIO = ipeLineSegment . toSeg-    where-      b :: Rectangle () r-      b = box (ext $ Point2 (-200) (-200)) (ext $ Point2 1200 1200)-      naive (Line p v) = ClosedLineSegment (ext p) (ext $ p .+^ v)-      toSeg l = fromMaybe (naive l) . asA (Proxy :: Proxy (LineSegment 2 () r))-              $ l `intersect` b--instance HasDefaultIpeOut (Polygon t p r) where-  type DefaultIpeOut (Polygon t p r) = Path-  defIO = ipePolygon--instance HasDefaultIpeOut (SomePolygon p r) where-  type DefaultIpeOut (SomePolygon p r) = Path-  defIO = either defIO defIO--instance HasDefaultIpeOut (ConvexPolygon p r) where-  type DefaultIpeOut (ConvexPolygon p r) = Path-  defIO = defIO . view simplePolygon---instance Floating r => HasDefaultIpeOut (Disk p r) where-  type DefaultIpeOut (Disk p r) = Path-  defIO = ipeDisk------------------------------------------------------------------------------------- * Point Converters--ipeMark     :: Text -> IpeOut (Point 2 r) IpeSymbol r-ipeMark n p = Symbol p n :+ mempty--ipeDiskMark :: IpeOut (Point 2 r) IpeSymbol r-ipeDiskMark = ipeMark "mark/disk(sx)"------------------------------------------------------------------------------------- * Path Converters--ipeLineSegment   :: IpeOut (LineSegment 2 p r) Path r-ipeLineSegment s = (path . pathSegment $ s) :+ mempty--ipePolyLine   :: IpeOut (PolyLine 2 p r) Path r-ipePolyLine p = (path . PolyLineSegment . first (const ()) $ p) :+ mempty--ipeDisk   :: Floating r => IpeOut (Disk p r) Path r-ipeDisk d = ipeCircle (Boundary d) ! attr SFill (IpeColor "0.722 0.145 0.137")--ipeCircle                     :: Floating r => IpeOut (Circle p r) Path r-ipeCircle (Circle (c :+ _) r) = (path $ EllipseSegment m) :+ mempty-      where-        m = translation (toVec c) |.| uniformScaling (sqrt r) ^. transformationMatrix-        -- m is the matrix s.t. if we apply m to the unit circle centered at the origin, we-        -- get the input circle.---- | Helper to construct a path from a singleton item-path :: PathSegment r -> Path r-path = Path . LSeq.fromNonEmpty . (:| [])--pathSegment :: LineSegment 2 p r -> PathSegment r-pathSegment = PolyLineSegment . fromLineSegment . first (const ())---- | Draw a polygon-ipePolygon                          :: IpeOut (Polygon t p r) Path r-ipePolygon (first (const ()) -> pg) = case pg of-               (SimplePolygon _)  -> pg^.re _asSimplePolygon :+ mempty-               (MultiPolygon _ _) -> pg^.re _asMultiPolygon  :+ mempty-------------------------------------------------------------------------------------- * Group Converters--ipeGroup    :: IpeOut [IpeObject r] Group r-ipeGroup xs = Group xs :+ mempty-------------------------------------------------------------------------------------
− src/Data/Geometry/Ipe/Literal.hs
@@ -1,27 +0,0 @@-{-# LANGUAGE TemplateHaskell #-}-module Data.Geometry.Ipe.Literal where---import Language.Haskell.TH-import Language.Haskell.TH.Quote-import qualified Data.Text as T-import qualified Data.ByteString.Char8 as C-import Text.XML.Expat.Tree--literally :: String -> Q Exp-literally = return . LitE . StringL--lit :: QuasiQuoter-lit = QuasiQuoter { quoteExp = literally-                  , quotePat = undefined-                  , quoteType = undefined-                  , quoteDec  = undefined-                  }--litFile :: QuasiQuoter-litFile = quoteFile lit---xmlLiteral :: String -> Node T.Text T.Text-xmlLiteral = either (error "xmlLiteral. error parsing xml: " . show) id-           .  parse' defaultParseOptions . C.pack
− src/Data/Geometry/Ipe/ParserPrimitives.hs
@@ -1,148 +0,0 @@-{-# Language FlexibleContexts  #-}-{-# Language OverloadedStrings  #-}-module Data.Geometry.Ipe.ParserPrimitives( runP, runP'-                                         , pMany, pMany1, pChoice-                                         , pChar, pSpace, pWhiteSpace, pInteger-                                         , pNatural, pPaddedNatural-                                         , (<*><>) , (<*><)-                                         , (<***>) , (<***) , (***>)-                                         , pMaybe , pCount , pSepBy-                                         , Parser, ParseError-                                         , pNotFollowedBy-                                         ) where---import           Text.Parsec(try)-import           Text.Parsec(ParsecT, Stream)-import           Text.Parsec.Text-import           Text.ParserCombinators.Parsec hiding (Parser,try)-import qualified Data.Text as T---runP'     :: Parser a -> T.Text -> (a, T.Text)-runP' p s = case runP p s of-             Left  e -> error $ show e-             Right x -> x--runP   :: Parser a -> T.Text -> Either ParseError (a,T.Text)-runP p = parse ((,) <$> p <*> getInput) ""---------------------------------------------------------------------------------- | reexporting some standard combinators--pMany :: Parser a -> Parser [a]-pMany = many--pMany1 :: Parser a -> Parser [a]-pMany1 = many1---pChoice :: [Parser a] -> Parser a-pChoice = choice . map try---pNatural :: Parser Integer-pNatural = read <$> pMany1 digit---- | parses an integer with a prefix of zeros. Returns the total length of the--- string parced (i.e. number of digits) and the resulting antural number.-pPaddedNatural :: Parser (Int, Integer)-pPaddedNatural = (\s -> (length s, read s)) <$> pMany1 digit--pInteger :: Parser Integer-pInteger = pNatural-           <|>-           negate <$> (pChar '-' *> pNatural)--pChar :: Char -> Parser Char-pChar = char--pSpace :: Parser Char-pSpace = pChar ' '--pWhiteSpace :: Parser Char-pWhiteSpace = space--pMaybe :: Parser a -> Parser (Maybe a)-pMaybe = optionMaybe--pCount :: Int -> Parser a -> Parser [a]-pCount = count--pSepBy :: Parser a -> Parser b -> Parser [a]-pSepBy = sepBy----- | infix variant of notfollowed by-pNotFollowedBy :: Parser a -> Parser b -> Parser a-p `pNotFollowedBy` q = do { x <- p ; notFollowedBy' q ; return x }-    where-      -- | copy of the original notFollowedBy but replaced the error message-      -- to get rid of the Show dependency-      notFollowedBy' z     = try (do{ _ <- try z; unexpected "not followed by" }-                                    <|> return ()-                                 )--------------------------------------------------------------------------------- | Running parsers in reverse--infix 1 <*><>, <*><---- | Runs parser q ``in reverse'' on the end of the input stream-(<*><>) ::  (Reversable s, Stream s m t)-        => ParsecT s u m (a -> b) -> ParsecT s u m a -> ParsecT s u m b-p <*><> q = do-  rev-  x <- q-  rev-  f <- p-  return $ f x---(<*><)   :: (Stream s m t, Reversable s)-          => ParsecT s u m b -> ParsecT s u m a -> ParsecT s u m b-p <*>< q = const <$> p <*><> q---rev :: (Reversable s, Stream s m t) => ParsecT s u m ()-rev = getInput >>= (setInput . reverseS)---- as :: Parser String--- as = many (char 'a')---- foo :: Parser String--- foo = reverse <$> (string . reverse $ "foo")---- prs :: Parser (String,String)--- prs = (,) <$> as <*>< foo'---- foo' :: Parser String--- foo' = spaces ***> foo---- (<***>) :: Parser (a -> b)--infixr 2 <***>, ***>, <***---- | run the parsers in reverse order, first q, then p-(<***>) :: Monad m => m (t -> b) -> m t -> m b-p <***> q = do-  x <- q-  f <- p-  return $ f x---- | the variants with missing brackets-(***>) :: Monad m => m a -> m b -> m b-p ***> q = (\_ s -> s) <$> p <***> q--(<***) :: Monad m => m b -> m t -> m b-p <*** q = (\s _ -> s) <$> p <***> q--class Reversable s where-  reverseS :: s -> s--instance Reversable [c] where-  reverseS = reverse--instance Reversable T.Text where-  reverseS = T.reverse
− src/Data/Geometry/Ipe/PathParser.hs
@@ -1,163 +0,0 @@-{-# Language OverloadedStrings #-}-{-# Language DefaultSignatures #-}-module Data.Geometry.Ipe.PathParser where--import           Data.Bifunctor-import           Data.Char (isSpace)-import           Data.Ext (ext)-import           Data.Geometry.Box-import           Data.Geometry.Ipe.ParserPrimitives-import           Data.Geometry.Ipe.Types (Operation(..))-import           Data.Geometry.Point-import           Data.Geometry.Transformation-import           Data.Geometry.Vector-import           Data.Ratio-import           Data.Text (Text)-import qualified Data.Text as T-import           Text.Parsec.Error (messageString, errorMessages)----------------------------------------------------------------------------- | Represent stuff that can be used as a coordinate in ipe. (similar to show/read)--class Fractional r => Coordinate r where-    -- reads a coordinate. The input is an integer representing the-    -- part before the decimal point, and a length and an integer-    -- representing the part after the decimal point-    fromSeq :: Integer -> Maybe (Int, Integer) -> r-    default fromSeq :: (Ord r, Fractional r) => Integer -> Maybe (Int, Integer) -> r-    fromSeq = defaultFromSeq--defaultFromSeq                :: (Ord r, Fractional r)-                              => Integer -> Maybe (Int, Integer) -> r-defaultFromSeq x Nothing      = fromInteger x-defaultFromSeq x (Just (l,y)) = let x'          = fromInteger x-                                    y'          = fromInteger y-                                    asDecimal a =  a * (0.1 ^ l)-                                    z           = if x' < 0 then (-1) else 1-                                in z * (abs x' + asDecimal y')--instance Coordinate Double-instance Coordinate (Ratio Integer)---------------------------------------------------------------------------- | Running the parsers--readCoordinate :: Coordinate r => Text -> Either Text r-readCoordinate = runParser pCoordinate--readPoint :: Coordinate r => Text -> Either Text (Point 2 r)-readPoint = runParser pPoint--runParser   :: Parser a -> Text -> Either Text a-runParser p = bimap errorText fst . runP p---- Collect errors-data Either' l r = Left' l | Right' r deriving (Show,Eq)--instance (Semigroup l, Semigroup r) => Semigroup (Either' l r) where-  (Left' l)  <> (Left' l')  = Left' $ l <> l'-  (Left' l)  <> _           = Left' l-  _          <> (Left' l')  = Left' l'-  (Right' r) <> (Right' r') = Right' $ r <> r'--instance (Semigroup l, Semigroup r, Monoid r) => Monoid (Either' l r) where-  mempty = Right' mempty-  mappend = (<>)-either' :: (l -> a) -> (r -> a) -> Either' l r -> a-either' lf _  (Left' l)  = lf l-either' _  rf (Right' r) = rf r--- TODO: Use Validation instead of this home-brew one--readPathOperations :: Coordinate r => Text -> Either Text [Operation r]-readPathOperations = unWrap . mconcat . map (wrap . runP pOperation)-                   . clean . splitKeepDelims "mlcqeasuh"-    where-      -- Unwrap the Either'. If it is a Left containing all our errors,-      -- combine them into one error. Otherwise just ReWrap it in an proper Either-      unWrap = either' (Left . combineErrors) Right-      -- for the lefts: wrap the error in a list, for the rights: we only care-      -- about the result, so wrap that in a list as well. Collecting the-      -- results is done using the Semigroup instance of Either'-      wrap   = either (Left' . (:[])) (Right' . (:[]) . fst)-      -- Split the input string in pieces, each piece represents one operation-      trim   = T.dropWhile isSpace-      clean  = filter (not . T.null) . map trim-      -- TODO: Do the splitting on the Text rather than unpacking and packing-      -- the thing--errorText :: ParseError -> Text-errorText = T.pack . unlines . map messageString . errorMessages--combineErrors :: [ParseError] -> Text-combineErrors = T.unlines . map errorText---splitKeepDelims          :: [Char] -> Text -> [Text]-splitKeepDelims delims t = maybe mPref continue $ T.uncons rest-  where-    mPref           = if T.null pref then [] else [pref]-    (pref,rest)     = T.break (`elem` delims) t-    continue (c,t') = pref `T.snoc` c : splitKeepDelims delims t'---readMatrix :: Coordinate r => Text -> Either Text (Matrix 3 3 r)-readMatrix = runParser pMatrix---readRectangle :: Coordinate r => Text -> Either Text (Rectangle () r)-readRectangle = runParser pRectangle---------------------------------------------------------------------------- | The parsers themselves---pOperation :: Coordinate r => Parser (Operation r)-pOperation = pChoice [ MoveTo       <$> pPoint                         *>> 'm'-                     , LineTo       <$> pPoint                         *>> 'l'-                     , CurveTo      <$> pPoint <*> pPoint' <*> pPoint' *>> 'c'-                     , QCurveTo     <$> pPoint <*> pPoint'             *>> 'q'-                     , Ellipse      <$> pMatrix                        *>> 'e'-                     , ArcTo        <$> pMatrix <*> pPoint'            *>> 'a'-                     , Spline       <$> pPoint `pSepBy` pWhiteSpace    *>> 's'-                     , ClosedSpline <$> pPoint `pSepBy` pWhiteSpace    *>> 'u'-                     , pChar 'h'  *> pure ClosePath-                     ]-             where-               pPoint' = pWhiteSpace *> pPoint-               p *>> c = p <*>< pWhiteSpace ***> pChar c---pPoint :: Coordinate r => Parser (Point 2 r)-pPoint = point2 <$> pCoordinate <* pWhiteSpace <*> pCoordinate---pCoordinate :: Coordinate r => Parser r-pCoordinate = fromSeq <$> pInteger <*> pDecimal-              where-                pDecimal  = pMaybe (pChar '.' *> pPaddedNatural)---pRectangle :: Coordinate r => Parser (Rectangle () r)-pRectangle = (\p q -> box (ext p) (ext q)) <$> pPoint-                                           <*  pWhiteSpace-                                           <*> pPoint--pMatrix :: Coordinate r => Parser (Matrix 3 3 r)-pMatrix = (\a b -> mkMatrix (a:b)) <$> pCoordinate-                                   <*> pCount 5 (pWhiteSpace *> pCoordinate)----- | Generate a matrix from a list of 6 coordinates.-mkMatrix               :: Coordinate r => [r] -> Matrix 3 3 r-mkMatrix [a,b,c,d,e,f] = Matrix $ Vector3 (Vector3 a c e)-                                          (Vector3 b d f)-                                          (Vector3 0 0 1)-                           -- We need the matrix in the following order:-                         -- 012-                         -- 345-                         ---                         -- But ipe uses the following order:-                         -- 024-                         -- 135-mkMatrix _             = error "mkMatrix: need exactly 6 arguments"
− src/Data/Geometry/Ipe/Reader.hs
@@ -1,414 +0,0 @@-{-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE ScopedTypeVariables #-}-module Data.Geometry.Ipe.Reader( -- * Reading ipe Files-                                 readRawIpeFile-                               , readIpeFile-                               , readSinglePageFile-                               , ConversionError--                               -- * Reading XML directly-                               , fromIpeXML-                               , readXML--                               -- * Read classes-                               , IpeReadText(..)-                               , IpeRead(..)-                               , IpeReadAttr(..)---                               -- * Some low level implementation functions-                               , ipeReadTextWith-                               , ipeReadObject-                               , ipeReadAttrs-                               , ipeReadRec--                               , Coordinate(..)-                               ) where--import           Control.Applicative((<|>))-import           Control.Lens hiding (Const, rmap)-import qualified Data.ByteString as B-import           Data.Colour.SRGB (RGB(..))-import           Data.Either (rights)-import           Data.Ext-import           Data.Geometry.Box-import           Data.Geometry.Ipe.Attributes-import           Data.Geometry.Ipe.ParserPrimitives (pInteger, pWhiteSpace)-import           Data.Geometry.Ipe.PathParser-import           Data.Geometry.Ipe.Types-import           Data.Geometry.Ipe.Value-import           Data.Geometry.Ipe.Color(IpeColor(..))-import           Data.Geometry.Point-import           Data.Geometry.PolyLine-import qualified Data.Geometry.Polygon as Polygon-import qualified Data.Geometry.Transformation as Trans-import qualified Data.List as L-import qualified Data.List.NonEmpty as NE-import           Data.Maybe (fromMaybe, mapMaybe)-import           Data.Proxy-import qualified Data.LSeq as LSeq-import           Data.Singletons-import           Data.Text (Text)-import qualified Data.Text as T-import qualified Data.Traversable as Tr-import           Data.Vinyl hiding (Label)-import           Data.Vinyl.Functor-import           Data.Vinyl.TypeLevel-import           Text.XML.Expat.Tree-------------------------------------------------------------------------------------type ConversionError = Text----- | Given a file path, tries to read an ipe file-readRawIpeFile :: (Coordinate r, Eq r)-               => FilePath -> IO (Either ConversionError (IpeFile r))-readRawIpeFile = fmap fromIpeXML . B.readFile----- | Given a file path, tries to read an ipe file. This function applies all--- matrices to objects.-readIpeFile :: (Coordinate r, Eq r)-            => FilePath -> IO (Either ConversionError (IpeFile r))-readIpeFile = fmap (bimap id applyMatrices) . readRawIpeFile----- | Since most Ipe file contain only one page, we provide a shortcut for that--- as well. This function applies all matrices.-readSinglePageFile :: (Coordinate r, Eq r)-                   => FilePath -> IO (Either ConversionError (IpePage r))-readSinglePageFile = fmap f . readIpeFile-  where-    f (Left e)  = Left e-    f (Right i) = maybe (Left "No Ipe pages found") Right . firstOf (pages.traverse) $ i---- | Given a Bytestring, try to parse the bytestring into anything that is--- IpeReadable, i.e. any of the Ipe elements.-fromIpeXML   :: IpeRead (t r) => B.ByteString -> Either ConversionError (t r)-fromIpeXML b = readXML b >>= ipeRead---- | Reads the data from a Bytestring into a proper Node-readXML :: B.ByteString -> Either ConversionError (Node Text Text)-readXML = bimap (T.pack . show) id . parse' defaultParseOptions-------------------------------------------------------------------------------------- | Reading an ipe elemtn from a Text value-class IpeReadText t where-  ipeReadText :: Text -> Either ConversionError t---- | Reading an ipe lement from Xml-class IpeRead t where-  ipeRead  :: Node Text Text -> Either ConversionError t-------------------------------------------------------------------------------------  ReadText instances--instance IpeReadText Text where-  ipeReadText = Right--instance IpeReadText Int where-  ipeReadText = fmap fromInteger . runParser pInteger--instance Coordinate r => IpeReadText (Point 2 r) where-  ipeReadText = readPoint--instance Coordinate r => IpeReadText (Trans.Matrix 3 3 r) where-  ipeReadText = readMatrix--instance IpeReadText LayerName where-  ipeReadText = Right . LayerName--instance IpeReadText PinType where-  ipeReadText "yes" = Right Yes-  ipeReadText "h"   = Right Horizontal-  ipeReadText "v"   = Right Vertical-  ipeReadText ""    = Right No-  ipeReadText _     = Left "invalid PinType"--instance IpeReadText TransformationTypes where-  ipeReadText "affine"       = Right Affine-  ipeReadText "rigid"        = Right Rigid-  ipeReadText "translations" = Right Translations-  ipeReadText _              = Left "invalid TransformationType"--instance IpeReadText FillType where-  ipeReadText "wind"   = Right Wind-  ipeReadText "eofill" = Right EOFill-  ipeReadText _        = Left "invalid FillType"--instance Coordinate r => IpeReadText (IpeArrow r) where-  ipeReadText t = case T.split (== '/') t of-                    [n,s] -> IpeArrow <$> pure n <*> ipeReadText s-                    _     -> Left "ipeArrow: name contains not exactly 1 / "--instance Coordinate r => IpeReadText (IpeDash r) where-  ipeReadText t = Right . DashNamed $ t-                  -- TODO: Implement proper parsing here---ipeReadTextWith     :: (Text -> Either t v) -> Text -> Either ConversionError (IpeValue v)-ipeReadTextWith f t = case f t of-                        Right v -> Right (Valued v)-                        Left _  -> Right (Named t)---instance Coordinate r => IpeReadText (Rectangle () r) where-  ipeReadText = readRectangle--instance Coordinate r => IpeReadText (RGB r) where-  ipeReadText = runParser (pRGB <|> pGrey)-    where-      pGrey = (\c -> RGB c c c) <$> pCoordinate-      pRGB  = RGB <$> pCoordinate <* pWhiteSpace-                  <*> pCoordinate <* pWhiteSpace-                  <*> pCoordinate--instance Coordinate r => IpeReadText (IpeColor r) where-  ipeReadText = fmap IpeColor . ipeReadTextWith ipeReadText--instance Coordinate r => IpeReadText (IpePen r) where-  ipeReadText = fmap IpePen . ipeReadTextWith readCoordinate--instance Coordinate r => IpeReadText (IpeSize r) where-  ipeReadText = fmap IpeSize . ipeReadTextWith readCoordinate---instance Coordinate r => IpeReadText [Operation r] where-  ipeReadText = readPathOperations--instance (Coordinate r, Eq r) => IpeReadText (NE.NonEmpty (PathSegment r)) where-  ipeReadText t = ipeReadText t >>= fromOpsN-    where-      fromOpsN xs = case fromOps xs of-                      Left l       -> Left l-                      Right []     -> Left "No path segments produced"-                      Right (p:ps) -> Right $ p NE.:| ps--      fromOps []            = Right []-      fromOps (MoveTo p:xs) = fromOps' p xs-      fromOps _             = Left "Path should start with a move to"--      fromOps' _ []             = Left "Found only a MoveTo operation"-      fromOps' s (LineTo q:ops) = let (ls,xs) = span' _LineTo ops-                                      pts  = map ext $ s:q:mapMaybe (^?_LineTo) ls-                                      poly = Polygon.fromPoints . dropRepeats $ pts-                                      pl   = fromPoints pts-                                  in case xs of-                                       (ClosePath : xs') -> PolygonPath poly   <<| xs'-                                       _                 -> PolyLineSegment pl <<| xs-      fromOps' _ _ = Left "fromOpts': rest not implemented yet."--      span' pr = L.span (not . isn't pr)--      x <<| xs = (x:) <$> fromOps xs---dropRepeats :: Eq a => [a] -> [a]-dropRepeats = map head . L.group--instance (Coordinate r, Eq r) => IpeReadText (Path r) where-  ipeReadText = fmap (Path . LSeq.fromNonEmpty) . ipeReadText------------------------------------------------------------------------------------- Reading attributes---- | Basically IpeReadText for attributes. This class is not really meant to be--- implemented directly. Just define an IpeReadText instance for the type--- (Apply f at), then the generic instance below takes care of looking up the--- name of the attribute, and calling the right ipeReadText value. This class--- is just so that reifyConstraint in `ipeReadRec` can select the right--- typeclass when building the rec.-class IpeReadAttr t where-  ipeReadAttr  :: Text -> Node Text Text -> Either ConversionError t--instance IpeReadText (Apply f at) => IpeReadAttr (Attr f at) where-  ipeReadAttr n (Element _ ats _) = GAttr <$> Tr.mapM ipeReadText (lookup n ats)-  ipeReadAttr _ _                 = Left "IpeReadAttr: Element expected, Text found"---- | Combination of zipRecWith and traverse-zipTraverseWith                       :: forall f g h i (rs :: [u]). Applicative h-                                      => (forall (x :: u). f x -> g x -> h (i x))-                                      -> Rec f rs -> Rec g rs -> h (Rec i rs)-zipTraverseWith _ RNil      RNil      = pure RNil-zipTraverseWith f (x :& xs) (y :& ys) = (:&) <$> f x y <*> zipTraverseWith f xs ys---- | Reading the Attributes into a Rec (Attr f), all based on the types of f--- (the type family mapping labels to types), and a list of labels (ats).-ipeReadRec       :: forall f ats.-                 ( RecApplicative ats-                 , RecAll (Attr f) ats IpeReadAttr-                 , AllSatisfy IpeAttrName ats-                 )-                 => Proxy f -> Proxy ats-                 -> Node Text Text-                 -> Either ConversionError (Rec (Attr  f) ats)-ipeReadRec _ _ x = zipTraverseWith f (writeAttrNames r) r'-  where-    r  = rpure (GAttr Nothing)-    r' = reifyConstraint (Proxy :: Proxy IpeReadAttr) r---    f                              :: forall at.-                                      Const Text at-                                   -> (Dict IpeReadAttr :. Attr f) at-                                   -> Either ConversionError (Attr f at)-    f (Const n) (Compose (Dict _)) = ipeReadAttr n x----- | Reader for records. Given a proxy of some ipe type i, and a proxy of an--- coordinate type r, read the IpeAttributes for i from the xml node.-ipeReadAttrs     :: forall proxy proxy' i r f ats.-                 ( f ~ AttrMapSym1 r, ats ~ AttributesOf i-                 , RecApplicative ats-                 , RecAll (Attr f) ats IpeReadAttr-                 , AllSatisfy IpeAttrName ats-                 )-                 => proxy i -> proxy' r-                 -> Node Text Text-                 -> Either ConversionError (IpeAttributes i r)-ipeReadAttrs _ _ = fmap Attrs . ipeReadRec (Proxy :: Proxy f) (Proxy :: Proxy ats)----- testSym :: B.ByteString--- testSym = "<use name=\"mark/disk(sx)\" pos=\"320 736\" size=\"normal\" stroke=\"black\"/>"------- readAttrsFromXML :: B.ByteString -> Either---- readSymAttrs :: Either ConversionError (IpeAttributes IpeSymbol Double)--- readSymAttrs = readXML testSym---                >>= ipeReadAttrs (Proxy :: Proxy IpeSymbol) (Proxy :: Proxy Double)-------- | If we can ipeRead an ipe element, and we can ipeReadAttrs its attributes--- we can properly read an ipe object using ipeReadObject-ipeReadObject           :: ( IpeRead (i r)-                           , f ~ AttrMapSym1 r, ats ~ AttributesOf i-                           ,  RecApplicative ats-                           , RecAll (Attr f) ats IpeReadAttr-                           , AllSatisfy IpeAttrName ats-                           )-                        => Proxy i -> proxy r -> Node Text Text-                        -> Either ConversionError (i r :+ IpeAttributes i r)-ipeReadObject prI prR xml = (:+) <$> ipeRead xml <*> ipeReadAttrs prI prR xml-------------------------------------------------------------------------------------- | Ipe read instances--instance Coordinate r => IpeRead (IpeSymbol r) where-  ipeRead (Element "use" ats _) = case lookup "pos" ats of-      Nothing -> Left "symbol without position"-      Just ps -> flip Symbol name <$> ipeReadText ps-    where-      name = fromMaybe "mark/disk(sx)" $ lookup "name" ats-  ipeRead _ = Left "symbol element expected, text found"---- | Given a list of Nodes, try to parse all of them as a big text. If we--- encounter anything else then text, the parsing fails.-allText :: [Node Text Text] -> Either ConversionError Text-allText = fmap T.unlines . mapM unT-  where-    unT (Text t) = Right t-    unT _        = Left "allText: Expected Text, found an Element"--instance (Coordinate r, Eq r) => IpeRead (Path r) where-  ipeRead (Element "path" _ chs) = allText chs >>= ipeReadText-  ipeRead _                      = Left "path: expected element, found text"---lookup'   :: Text -> [(Text,a)] -> Either ConversionError a-lookup' k = maybe (Left $ "lookup' " <> k <> " not found") Right . lookup k--instance Coordinate r => IpeRead (TextLabel r) where-  ipeRead (Element "text" ats chs)-    | lookup "type" ats == Just "label" = Label-                                       <$> allText chs-                                       <*> (lookup' "pos" ats >>= ipeReadText)-    | otherwise                         = Left "Not a Text label"-  ipeRead _                             = Left "textlabel: Expected element, found text"----instance Coordinate r => IpeRead (MiniPage r) where-  ipeRead (Element "text" ats chs)-    | lookup "type" ats == Just "minipage" = MiniPage-                                          <$> allText chs-                                          <*> (lookup' "pos"   ats >>= ipeReadText)-                                          <*> (lookup' "width" ats >>= readCoordinate)-    | otherwise                            = Left "Not a MiniPage"-  ipeRead _                                = Left "MiniPage: Expected element, found text"---instance Coordinate r => IpeRead (Image r) where-  ipeRead (Element "image" ats _) = Image () <$> (lookup' "rect" ats >>= ipeReadText)-  ipeRead _                       = Left "Image: Element expected, text found"--instance (Coordinate r, Eq r) => IpeRead (IpeObject r) where-  ipeRead x = firstRight [ IpeUse       <$> ipeReadObject (Proxy :: Proxy IpeSymbol) r x-                         , IpePath      <$> ipeReadObject (Proxy :: Proxy Path)      r x-                         , IpeGroup     <$> ipeReadObject (Proxy :: Proxy Group)     r x-                         , IpeTextLabel <$> ipeReadObject (Proxy :: Proxy TextLabel) r x-                         , IpeMiniPage  <$> ipeReadObject (Proxy :: Proxy MiniPage)  r x-                         , IpeImage     <$> ipeReadObject (Proxy :: Proxy Image)     r x-                         ]-    where-      r = Proxy :: Proxy r--firstRight :: [Either ConversionError a] -> Either ConversionError a-firstRight = maybe (Left "No matching object") Right . firstOf (traverse._Right)---instance (Coordinate r, Eq r) => IpeRead (Group r) where-  ipeRead (Element "group" _ chs) = Right . Group . rights . map ipeRead $ chs-  ipeRead _                       = Left "ipeRead Group: expected Element, found Text"---instance IpeRead LayerName where-  ipeRead (Element "layer" ats _) = LayerName <$> lookup' "name" ats-  ipeRead _                       = Left "layer: Expected element, found text"--instance IpeRead View where-  ipeRead (Element "view" ats _) = (\lrs a -> View (map LayerName $ T.words lrs) a)-                                <$> lookup' "layers" ats-                                <*> (lookup' "active" ats >>= ipeReadText)-  ipeRead _                      = Left "View Expected element, found text"----- TODO: this instance throws away all of our error collecting (and is pretty--- slow/stupid since it tries parsing all children with all parsers)-instance (Coordinate r, Eq r) => IpeRead (IpePage r) where-  ipeRead (Element "page" _ chs) = Right $ IpePage (readAll chs) (readAll chs) (readAll chs)-  ipeRead _                      = Left "page: Element expected, text found"-      -- withDef   :: b -> Either a b -> Either c b-      -- withDef d = either (const $ Right d) Right--      -- readLayers  = withDef ["alpha"] . readAll-      -- readViews   = withDef []        . readAll-      -- readObjects = withDef []        . readAll---- | try reading everything as an a. Throw away whatever fails.-readAll   :: IpeRead a => [Node Text Text] -> [a]-readAll   = rights . map ipeRead---instance (Coordinate r, Eq r) => IpeRead (IpeFile r) where-  ipeRead (Element "ipe" _ chs) = case readAll chs of-                                    []  -> Left "Ipe: no pages found"-                                    pgs -> Right $ IpeFile Nothing [] (NE.fromList pgs)-  ipeRead _                     = Left "Ipe: Element expected, text found"--------------------------------------------------------------------------------------
− src/Data/Geometry/Ipe/Types.hs
@@ -1,436 +0,0 @@-{-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE QuasiQuotes #-}-{-# LANGUAGE OverloadedStrings #-}------------------------------------------------------------------------------------ |--- Module      :  Data.Geometry.Ipe.Types--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ Data type modeling the various elements in Ipe files.-------------------------------------------------------------------------------------module Data.Geometry.Ipe.Types where---import           Control.Lens-import           Data.Proxy-import           Data.Vinyl hiding (Label)--import           Data.Ext-import           Data.Geometry.Box(Rectangle)-import           Data.Geometry.Point-import           Data.Geometry.PolyLine-import           Data.Geometry.Polygon(SimplePolygon)-import           Data.Geometry.Properties-import           Data.Geometry.Transformation--import           Data.Maybe(mapMaybe)-import           Data.Singletons.TH(genDefunSymbols)--import           Data.Geometry.Ipe.Literal-import           Data.Geometry.Ipe.Color-import qualified Data.Geometry.Ipe.Attributes as AT-import           Data.Geometry.Ipe.Attributes hiding (Matrix)-import           Data.Text(Text)-import           Text.XML.Expat.Tree(Node)--import           GHC.Exts---import qualified Data.List.NonEmpty as NE-import qualified Data.LSeq          as LSeq-------------------------------------------------------------------------------------newtype LayerName = LayerName {_layerName :: Text } deriving (Show,Read,Eq,Ord,IsString)------------------------------------------------------------------------------------- | Image Objects---data Image r = Image { _imageData :: ()-                     , _rect      :: Rectangle () r-                     } deriving (Show,Eq,Ord)-makeLenses ''Image--type instance NumType   (Image r) = r-type instance Dimension (Image r) = 2--instance Fractional r => IsTransformable (Image r) where-  transformBy t = over rect (transformBy t)------------------------------------------------------------------------------------- | Text Objects--data TextLabel r = Label Text (Point 2 r)-                 deriving (Show,Eq,Ord)--data MiniPage r = MiniPage Text (Point 2 r) r-                 deriving (Show,Eq,Ord)--type instance NumType   (TextLabel r) = r-type instance Dimension (TextLabel r) = 2--type instance NumType   (MiniPage r) = r-type instance Dimension (MiniPage r) = 2--instance Fractional r => IsTransformable (TextLabel r) where-  transformBy t (Label txt p) = Label txt (transformBy t p)--instance Fractional r => IsTransformable (MiniPage r) where-  transformBy t (MiniPage txt p w) = MiniPage txt (transformBy t p) w--width                  :: MiniPage t -> t-width (MiniPage _ _ w) = w------------------------------------------------------------------------------------- | Ipe Symbols, i.e. Points---- | A symbol (point) in ipe-data IpeSymbol r = Symbol { _symbolPoint :: Point 2 r-                          , _symbolName  :: Text-                          }-                 deriving (Show,Eq,Ord)-makeLenses ''IpeSymbol--type instance NumType   (IpeSymbol r) = r-type instance Dimension (IpeSymbol r) = 2--instance Fractional r => IsTransformable (IpeSymbol r) where-  transformBy t = over symbolPoint (transformBy t)------ | Example of an IpeSymbol. I.e. A symbol that expresses that the size is 'large'--- sizeSymbol :: Attributes (AttrMapSym1 r) (SymbolAttributes r)--- sizeSymbol = attr SSize (IpeSize $ Named "large")------------------------------------------------------------------------------------- | Paths---- | Paths consist of Path Segments. PathSegments come in the following forms:-data PathSegment r = PolyLineSegment        (PolyLine 2 () r)-                   | PolygonPath            (SimplePolygon () r)-                     -- TODO-                   | CubicBezierSegment     -- (CubicBezier 2 r)-                   | QuadraticBezierSegment -- (QuadraticBezier 2 r)-                   | EllipseSegment (Matrix 3 3 r)-                   | ArcSegment-                   | SplineSegment          -- (Spline 2 r)-                   | ClosedSplineSegment    -- (ClosedSpline 2 r)-                   deriving (Show,Eq)-makePrisms ''PathSegment--type instance NumType   (PathSegment r) = r-type instance Dimension (PathSegment r) = 2--instance Fractional r => IsTransformable (PathSegment r) where-  transformBy t (PolyLineSegment p) = PolyLineSegment $ transformBy t p-  transformBy t (PolygonPath p)     = PolygonPath $ transformBy t p-  transformBy _ _                   = error "transformBy: not implemented yet"----- | A path is a non-empty sequence of PathSegments.-newtype Path r = Path { _pathSegments :: LSeq.LSeq 1 (PathSegment r) }-                 deriving (Show,Eq)-makeLenses ''Path--type instance NumType   (Path r) = r-type instance Dimension (Path r) = 2--instance Fractional r => IsTransformable (Path r) where-  transformBy t (Path s) = Path $ fmap (transformBy t) s---- | type that represents a path in ipe.-data Operation r = MoveTo (Point 2 r)-                 | LineTo (Point 2 r)-                 | CurveTo (Point 2 r) (Point 2 r) (Point 2 r)-                 | QCurveTo (Point 2 r) (Point 2 r)-                 | Ellipse (Matrix 3 3 r)-                 | ArcTo (Matrix 3 3 r) (Point 2 r)-                 | Spline [Point 2 r]-                 | ClosedSpline [Point 2 r]-                 | ClosePath-                 deriving (Eq, Show)-makePrisms ''Operation------------------------------------------------------------------------------------- * Attribute Mapping----- | The mapping between the labels of the the attributes and the types of the--- attributes with these labels. For example, the 'Matrix' label/attribute should--- have a value of type 'Matrix 3 3 r'.-type family AttrMap (r :: *) (l :: AttributeUniverse) :: * where-  AttrMap r 'Layer          = LayerName-  AttrMap r AT.Matrix       = Matrix 3 3 r-  AttrMap r Pin             = PinType-  AttrMap r Transformations = TransformationTypes--  AttrMap r Stroke = IpeColor r-  AttrMap r Pen    = IpePen r-  AttrMap r Fill   = IpeColor r-  AttrMap r Size   = IpeSize r--  AttrMap r Dash     = IpeDash r-  AttrMap r LineCap  = Int-  AttrMap r LineJoin = Int-  AttrMap r FillRule = FillType-  AttrMap r Arrow    = IpeArrow r-  AttrMap r RArrow   = IpeArrow r-  AttrMap r Opacity  = IpeOpacity-  AttrMap r Tiling   = IpeTiling-  AttrMap r Gradient = IpeGradient--  AttrMap r Clip = Path r -- strictly we event want this to be a closed path I guess--genDefunSymbols [''AttrMap]-------------------------------------------------------------------------------------- | Groups and Objects------------------------------------------------------------------------------------- | Group Attributes---- -- | Now that we know what a Path is we can define the Attributes of a Group.--- type family GroupAttrElf (r :: *) (s :: GroupAttributeUniverse) :: * where---   GroupAttrElf r Clip = Path r -- strictly we event want this to be a closed path I guess---- genDefunSymbols [''GroupAttrElf]---- type GroupAttributes r = Attributes (GroupAttrElfSym1 r) '[ 'Clip]----- | A group is essentially a list of IpeObjects.-newtype Group r = Group [IpeObject r] deriving (Show,Eq)--type instance NumType   (Group r) = r-type instance Dimension (Group r) = 2--instance Fractional r => IsTransformable (Group r) where-  transformBy t (Group s) = Group $ fmap (transformBy t) s---type family AttributesOf (t :: * -> *) :: [u] where-  AttributesOf Group     = GroupAttributes-  AttributesOf Image     = CommonAttributes-  AttributesOf TextLabel = CommonAttributes-  AttributesOf MiniPage  = CommonAttributes-  AttributesOf IpeSymbol = SymbolAttributes-  AttributesOf Path      = PathAttributes----- | Attributes' :: * -> [AttributeUniverse] -> *-type Attributes' r = Attributes (AttrMapSym1 r)--type IpeAttributes g r = Attributes' r (AttributesOf g)----- | An IpeObject' is essentially the oject ogether with its attributes-type IpeObject' g r = g r :+ IpeAttributes g r--attributes :: Lens' (IpeObject' g r) (IpeAttributes g r)-attributes = extra--data IpeObject r =-    IpeGroup     (IpeObject' Group     r)-  | IpeImage     (IpeObject' Image     r)-  | IpeTextLabel (IpeObject' TextLabel r)-  | IpeMiniPage  (IpeObject' MiniPage  r)-  | IpeUse       (IpeObject' IpeSymbol r)-  | IpePath      (IpeObject' Path      r)---deriving instance (Show r) => Show (IpeObject r)--- deriving instance (Read r) => Read (IpeObject r)-deriving instance (Eq r)   => Eq   (IpeObject r)--type instance NumType   (IpeObject r) = r-type instance Dimension (IpeObject r) = 2--makePrisms ''IpeObject--groupItems :: Lens (Group r) (Group s) [IpeObject r] [IpeObject s]-groupItems = lens (\(Group xs) -> xs) (const Group)--class ToObject i where-  mkIpeObject :: IpeObject' i r -> IpeObject r--instance ToObject Group      where mkIpeObject = IpeGroup-instance ToObject Image      where mkIpeObject = IpeImage-instance ToObject TextLabel  where mkIpeObject = IpeTextLabel-instance ToObject MiniPage   where mkIpeObject = IpeMiniPage-instance ToObject IpeSymbol  where mkIpeObject = IpeUse-instance ToObject Path       where mkIpeObject = IpePath--instance Fractional r => IsTransformable (IpeObject r) where-  transformBy t (IpeGroup i)     = IpeGroup     $ i&core %~ transformBy t-  transformBy t (IpeImage i)     = IpeImage     $ i&core %~ transformBy t-  transformBy t (IpeTextLabel i) = IpeTextLabel $ i&core %~ transformBy t-  transformBy t (IpeMiniPage i)  = IpeMiniPage  $ i&core %~ transformBy t-  transformBy t (IpeUse i)       = IpeUse       $ i&core %~ transformBy t-  transformBy t (IpePath i)      = IpePath      $ i&core %~ transformBy t---- | Shorthand for constructing ipeObjects-ipeObject'     :: ToObject i => i r -> IpeAttributes i r -> IpeObject r-ipeObject' i a = mkIpeObject $ i :+ a--commonAttributes :: Lens' (IpeObject r) (Attributes (AttrMapSym1 r) CommonAttributes)-commonAttributes = lens (Attrs . g) (\x (Attrs a) -> s x a)-  where-    select :: (CommonAttributes ⊆ AttributesOf g) =>-              Lens' (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)-    select = attributes.unAttrs.rsubset--    g (IpeGroup i)     = i^.select-    g (IpeImage i)     = i^.select-    g (IpeTextLabel i) = i^.select-    g (IpeMiniPage i)  = i^.select-    g (IpeUse i)       = i^.select-    g (IpePath i)      = i^.select--    s (IpeGroup i)     a = IpeGroup     $ i&select .~ a-    s (IpeImage i)     a = IpeImage     $ i&select .~ a-    s (IpeTextLabel i) a = IpeTextLabel $ i&select .~ a-    s (IpeMiniPage i)  a = IpeMiniPage  $ i&select .~ a-    s (IpeUse i)       a = IpeUse       $ i&select .~ a-    s (IpePath i)      a = IpePath      $ i&select .~ a---- | collect all non-group objects-flattenGroups :: [IpeObject r] -> [IpeObject r]-flattenGroups = concatMap flattenGroups'-  where-    flattenGroups'                              :: IpeObject r -> [IpeObject r]-    flattenGroups' (IpeGroup (Group gs :+ ats)) =-      map (applyAts ats) . concatMap flattenGroups' $ gs-        where-          applyAts _ = id-    flattenGroups' o                            = [o]--------------------------------------------------------------------------------------- | The definition of a view--- make active layer into an index ?-data View = View { _layerNames      :: [LayerName]-                 , _activeLayer     :: LayerName-                 }-          deriving (Eq, Ord, Show)-makeLenses ''View---- instance Default----- | for now we pretty much ignore these-data IpeStyle = IpeStyle { _styleName :: Maybe Text-                         , _styleData :: Node Text Text-                         }-              deriving (Eq,Show)-makeLenses ''IpeStyle---basicIpeStyle :: IpeStyle-basicIpeStyle = IpeStyle (Just "basic") (xmlLiteral [litFile|resources/basic.isy|])----- | The maybe string is the encoding-data IpePreamble  = IpePreamble { _encoding     :: Maybe Text-                                , _preambleData :: Text-                                }-                  deriving (Eq,Read,Show,Ord)-makeLenses ''IpePreamble--type IpeBitmap = Text--------------------------------------------------------------------------------------- Ipe Pages---- | An IpePage is essentially a Group, together with a list of layers and a--- list of views.-data IpePage r = IpePage { _layers  :: [LayerName]-                         , _views   :: [View]-                         , _content :: [IpeObject r]-                         }-              deriving (Eq,Show)-makeLenses ''IpePage---- | Creates a simple page with no views.-fromContent     :: [IpeObject r] -> IpePage r-fromContent obs = IpePage layers' [] obs-  where-    layers' = mapMaybe (^.commonAttributes.attrLens SLayer) obs---- | A complete ipe file-data IpeFile r = IpeFile { _preamble :: Maybe IpePreamble-                         , _styles   :: [IpeStyle]-                         , _pages    :: NE.NonEmpty (IpePage r)-                         }-               deriving (Eq,Show)-makeLenses ''IpeFile---- | Convenience function to construct an ipe file consisting of a single page.-singlePageFile   :: IpePage r -> IpeFile r-singlePageFile p = IpeFile Nothing [basicIpeStyle] (p NE.:| [])---- | Create a single page ipe file from a list of IpeObjects-singlePageFromContent :: [IpeObject r] -> IpeFile r-singlePageFromContent = singlePageFile . fromContent--------------------------------------------------------------------------------------- | Takes and applies the ipe Matrix attribute of this item.-applyMatrix'              :: ( IsTransformable (i r)-                             , AT.Matrix ∈ AttributesOf i-                             , Dimension (i r) ~ 2, r ~ NumType (i r))-                          => IpeObject' i r -> IpeObject' i r-applyMatrix' o@(i :+ ats) = maybe o (\m -> transformBy (Transformation m) i :+ ats') mm-  where-    (mm,ats') = takeAttr (Proxy :: Proxy AT.Matrix) ats---- | Applies the matrix to an ipe object if it has one.-applyMatrix                  :: Fractional r => IpeObject r -> IpeObject r-applyMatrix (IpeGroup i)     = IpeGroup . applyMatrix'-                             $ i&core.groupItems.traverse %~ applyMatrix-                             -- note that for a group we first (recursively)-                             -- apply the matrices, and then apply-                             -- the matrix of the group to its members.-applyMatrix (IpeImage i)     = IpeImage     $ applyMatrix' i-applyMatrix (IpeTextLabel i) = IpeTextLabel $ applyMatrix' i-applyMatrix (IpeMiniPage i)  = IpeMiniPage  $ applyMatrix' i-applyMatrix (IpeUse i)       = IpeUse       $ applyMatrix' i-applyMatrix (IpePath i)      = IpePath      $ applyMatrix' i--applyMatrices   :: Fractional r => IpeFile r -> IpeFile r-applyMatrices f = f&pages.traverse %~ applyMatricesPage--applyMatricesPage   :: Fractional r => IpePage r -> IpePage r-applyMatricesPage p = p&content.traverse %~ applyMatrix---------------------------------------------------------------------------------------- -- | Access a path as if it was a PolyLine--- _PolyLine :: Prism' (IpeObject' Path r)---                     (PolyLine 2 () r :+ IpeAttributes Path r)--- _PolyLine = prism' build' access---   where---     build'  p         = p&core %~ Path . S2.l1Singleton . PolyLineSegment---     access ~(p :+ a) = (:+ a) <$> p^?pathSegments.S2.headL1._PolyLineSegment---- -- | Access a path as if it was a SimplePolygon--- _SimplePolygon :: Prism' (IpeObject' Path r)---                          (SimplePolygon () r :+ IpeAttributes Path r)--- _SimplePolygon = prism' build' access---   where---     build'  p         = p&core %~ Path . S2.l1Singleton . PolygonPath---     access ~(p :+ a) = (:+ a) <$> p^?pathSegments.S2.headL1._PolygonPath
− src/Data/Geometry/Ipe/Value.hs
@@ -1,24 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}------------------------------------------------------------------------------------ |--- Module      :  Data.Geometry.Ipe.Value--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ Data type for representing values in ipe.-------------------------------------------------------------------------------------module Data.Geometry.Ipe.Value where--import GHC.Exts-import Data.Text-------------------------------------------------------------------------------------- | Many types either consist of a symbolc value, or a value of type v-data IpeValue v = Named Text | Valued v-  deriving (Show,Read,Eq,Ord,Functor,Foldable,Traversable)--instance IsString (IpeValue v) where-  fromString = Named . fromString
− src/Data/Geometry/Ipe/Writer.hs
@@ -1,462 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE UndecidableInstances #-}------------------------------------------------------------------------------------ |--- Module      :  Data.Geometry.Ipe.Writer--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals--- Description :  Converting data types into IpeTypes-------------------------------------------------------------------------------------module Data.Geometry.Ipe.Writer where--import           Control.Lens ((^.), (^..), (.~), (&))-import qualified Data.ByteString as B-import qualified Data.ByteString.Char8 as C-import           Data.Colour.SRGB (RGB(..))-import           Data.Ext-import           Data.Fixed-import qualified Data.Foldable as F-import           Data.Geometry.Box-import           Data.Geometry.Ipe.Attributes-import qualified Data.Geometry.Ipe.Attributes as IA-import           Data.Geometry.Ipe.Color (IpeColor(..))-import           Data.Geometry.Ipe.Types-import           Data.Geometry.Ipe.Value-import           Data.Geometry.LineSegment-import           Data.Geometry.Point-import           Data.Geometry.PolyLine-import           Data.Geometry.Polygon (Polygon, outerBoundary, holeList, asSimplePolygon)-import qualified Data.Geometry.Transformation as GT-import           Data.Geometry.Vector-import qualified Data.LSeq as LSeq-import           Data.List.NonEmpty (NonEmpty(..))-import           Data.Maybe (catMaybes, mapMaybe, fromMaybe)-import           Data.Proxy-import           Data.Ratio-import           Data.Singletons-import           Data.Text (Text)-import qualified Data.Text as T-import qualified Data.Text as Text-import           Data.Vinyl hiding (Label)-import           Data.Vinyl.Functor-import           Data.Vinyl.TypeLevel-import           System.IO (hPutStrLn,stderr)-import           Text.XML.Expat.Format (format')-import           Text.XML.Expat.Tree-------------------------------------------------------------------------------------- | Given a prism to convert something of type g into an ipe file, a file path,--- and a g. Convert the geometry and write it to file.---- writeIpe        :: ( RecAll (Page r) gs IpeWrite---                    , IpeWriteText r---                    ) => Prism' (IpeFile gs r) g -> FilePath -> g -> IO ()--- writeIpe p fp g = writeIpeFile (p # g) fp---- | Write an IpeFiele to file.-writeIpeFile :: IpeWriteText r => FilePath -> IpeFile r -> IO ()-writeIpeFile = flip writeIpeFile'---- | Creates a single page ipe file with the given page-writeIpePage    :: IpeWriteText r => FilePath -> IpePage r -> IO ()-writeIpePage fp = writeIpeFile fp . singlePageFile----- | Convert the input to ipeXml, and prints it to standard out in such a way--- that the copied text can be pasted into ipe as a geometry object.-printAsIpeSelection :: IpeWrite t => t -> IO ()-printAsIpeSelection = C.putStrLn . fromMaybe "" . toIpeSelectionXML---- | Convert input into an ipe selection.-toIpeSelectionXML :: IpeWrite t => t -> Maybe B.ByteString-toIpeSelectionXML = fmap (format' . ipeSelection) . ipeWrite-  where-    ipeSelection x = Element "ipeselection" [] [x]----- | Convert to Ipe xml-toIpeXML :: IpeWrite t => t -> Maybe B.ByteString-toIpeXML = fmap format' . ipeWrite----- | Convert to ipe XML and write the output to a file.-writeIpeFile'      :: IpeWrite t => t -> FilePath -> IO ()-writeIpeFile' i fp = maybe err (B.writeFile fp) . toIpeXML $ i-  where-    err = hPutStrLn stderr $-          "writeIpeFile: error converting to xml. File '" <> fp <> "'not written"-------------------------------------------------------------------------------------- | For types that can produce a text value-class IpeWriteText t where-  ipeWriteText :: t -> Maybe Text---- | Types that correspond to an XML Element. All instances should produce an--- Element. If the type should produce a Node with the Text constructor, use--- the `IpeWriteText` typeclass instead.-class IpeWrite t where-  ipeWrite :: t -> Maybe (Node Text Text)--instance IpeWrite t => IpeWrite [t] where-  ipeWrite gs = case mapMaybe ipeWrite gs of-                  [] -> Nothing-                  ns -> (Just $ Element "group" [] ns)--instance (IpeWrite l, IpeWrite r) => IpeWrite (Either l r) where-  ipeWrite = either ipeWrite ipeWrite--instance IpeWriteText (Apply f at) => IpeWriteText (Attr f at) where-  ipeWriteText att = _getAttr att >>= ipeWriteText--instance (IpeWriteText l, IpeWriteText r) => IpeWriteText (Either l r) where-  ipeWriteText = either ipeWriteText ipeWriteText----- | Functon to write all attributes in a Rec-ipeWriteAttrs           :: ( AllSatisfy IpeAttrName rs-                           , RecAll (Attr f) rs IpeWriteText-                           ) => IA.Attributes f rs -> [(Text,Text)]-ipeWriteAttrs (Attrs r) = catMaybes . recordToList $ zipRecsWith f (writeAttrNames  r)-                                                                   (writeAttrValues r)-  where-    f (Const n) (Const mv) = Const $ (n,) <$> mv---- | Writing the attribute values-writeAttrValues :: RecAll f rs IpeWriteText => Rec f rs -> Rec (Const (Maybe Text)) rs-writeAttrValues = rmap (\(Compose (Dict x)) -> Const $ ipeWriteText x)-                . reifyConstraint (Proxy :: Proxy IpeWriteText)---instance IpeWriteText Text where-  ipeWriteText = Just---- | Add attributes to a node-addAtts :: Node Text Text -> [(Text,Text)] -> Node Text Text-n `addAtts` ats = n { eAttributes = ats ++ eAttributes n }---- | Same as `addAtts` but then for a Maybe node-mAddAtts  :: Maybe (Node Text Text) -> [(Text, Text)] -> Maybe (Node Text Text)-mn `mAddAtts` ats = fmap (`addAtts` ats) mn-------------------------------------------------------------------------------------instance IpeWriteText Double where-  ipeWriteText = writeByShow--instance IpeWriteText Int where-  ipeWriteText = writeByShow--instance IpeWriteText Integer where-  ipeWriteText = writeByShow--instance HasResolution p => IpeWriteText (Fixed p) where-  ipeWriteText = writeByShow---- | This instance converts the ratio to a Pico, and then displays that.-instance Integral a => IpeWriteText (Ratio a) where-  ipeWriteText = ipeWriteText . f . fromRational . toRational-    where-      f :: Pico -> Pico-      f = id--writeByShow :: Show t => t -> Maybe Text-writeByShow = ipeWriteText . T.pack . show--unwords' :: [Maybe Text] -> Maybe Text-unwords' = fmap T.unwords . sequence--unlines' :: [Maybe Text] -> Maybe Text-unlines' = fmap T.unlines . sequence---instance IpeWriteText r => IpeWriteText (Point 2 r) where-  ipeWriteText (Point2 x y) = unwords' [ipeWriteText x, ipeWriteText y]-------------------------------------------------------------------------------------instance IpeWriteText v => IpeWriteText (IpeValue v) where-  ipeWriteText (Named t)  = ipeWriteText t-  ipeWriteText (Valued v) = ipeWriteText v--instance IpeWriteText TransformationTypes where-  ipeWriteText Affine       = Just "affine"-  ipeWriteText Rigid        = Just "rigid"-  ipeWriteText Translations = Just "translations"--instance IpeWriteText PinType where-  ipeWriteText No         = Nothing-  ipeWriteText Yes        = Just "yes"-  ipeWriteText Horizontal = Just "h"-  ipeWriteText Vertical   = Just "v"--instance IpeWriteText r => IpeWriteText (RGB r) where-  ipeWriteText (RGB r g b) = unwords' . map ipeWriteText $ [r,g,b]--deriving instance IpeWriteText r => IpeWriteText (IpeSize  r)-deriving instance IpeWriteText r => IpeWriteText (IpePen   r)-deriving instance IpeWriteText r => IpeWriteText (IpeColor r)--instance IpeWriteText r => IpeWriteText (IpeDash r) where-  ipeWriteText (DashNamed t) = Just t-  ipeWriteText (DashPattern xs x) = (\ts t -> mconcat [ "["-                                                      , Text.intercalate " " ts-                                                      , "] ", t ])-                                    <$> mapM ipeWriteText xs-                                    <*> ipeWriteText x--instance IpeWriteText FillType where-  ipeWriteText Wind   = Just "wind"-  ipeWriteText EOFill = Just "eofill"--instance IpeWriteText r => IpeWriteText (IpeArrow r) where-  ipeWriteText (IpeArrow n s) = (\n' s' -> n' <> "/" <> s') <$> ipeWriteText n-                                                            <*> ipeWriteText s--instance IpeWriteText r => IpeWriteText (Path r) where-  ipeWriteText = fmap concat' . sequence . fmap ipeWriteText . _pathSegments-    where-      concat' = F.foldr1 (\t t' -> t <> "\n" <> t')------------------------------------------------------------------------------------instance IpeWriteText r => IpeWrite (IpeSymbol r) where-  ipeWrite (Symbol p n) = f <$> ipeWriteText p-    where-      f ps = Element "use" [ ("pos", ps)-                           , ("name", n)-                           ] []---- instance IpeWriteText (SymbolAttrElf rs r) => IpeWriteText (SymbolAttribute r rs) where---   ipeWriteText (SymbolAttribute x) = ipeWriteText x--------------------------------------------------------------------------------------instance IpeWriteText r => IpeWriteText (GT.Matrix 3 3 r) where-  ipeWriteText (GT.Matrix m) = unwords' [a,b,c,d,e,f]-    where-      (Vector3 r1 r2 _) = m--      (Vector3 a c e) = ipeWriteText <$> r1-      (Vector3 b d f) = ipeWriteText <$> r2-      -- TODO: The third row should be (0,0,1) I guess.---instance IpeWriteText r => IpeWriteText (Operation r) where-  ipeWriteText (MoveTo p)         = unwords' [ ipeWriteText p, Just "m"]-  ipeWriteText (LineTo p)         = unwords' [ ipeWriteText p, Just "l"]-  ipeWriteText (CurveTo p q r)    = unwords' [ ipeWriteText p-                                             , ipeWriteText q-                                             , ipeWriteText r, Just "c"]-  ipeWriteText (QCurveTo p q)     = unwords' [ ipeWriteText p-                                             , ipeWriteText q, Just "q"]-  ipeWriteText (Ellipse m)        = unwords' [ ipeWriteText m, Just "e"]-  ipeWriteText (ArcTo m p)        = unwords' [ ipeWriteText m-                                             , ipeWriteText p, Just "a"]-  ipeWriteText (Spline pts)       = unlines' $ map ipeWriteText pts <> [Just "s"]-  ipeWriteText (ClosedSpline pts) = unlines' $ map ipeWriteText pts <> [Just "u"]-  ipeWriteText ClosePath          = Just "h"---instance IpeWriteText r => IpeWriteText (PolyLine 2 () r) where-  ipeWriteText pl = case pl^..points.traverse.core of-    (p : rest) -> unlines' . map ipeWriteText $ MoveTo p : map LineTo rest-    _          -> error "ipeWriteText. absurd. no vertices polyline"-    -- the polyline type guarantees that there is at least one point--instance IpeWriteText r => IpeWriteText (Polygon t () r) where-  ipeWriteText pg = fmap mconcat . traverse f $ asSimplePolygon pg : holeList pg-    where-      f pg' = case pg'^..outerBoundary.traverse.core of-        (p : rest) -> unlines' . map ipeWriteText-                    $ MoveTo p : map LineTo rest ++ [ClosePath]-        _          -> Nothing-    -- TODO: We are not really guaranteed that there is at least one point, it would-    -- be nice if the type could guarantee that.---instance IpeWriteText r => IpeWriteText (PathSegment r) where-  ipeWriteText (PolyLineSegment p) = ipeWriteText p-  ipeWriteText (PolygonPath     p) = ipeWriteText p-  ipeWriteText (EllipseSegment  m) = ipeWriteText $ Ellipse m-  ipeWriteText _                   = error "ipeWriteText: PathSegment, not implemented yet."--instance IpeWriteText r => IpeWrite (Path r) where-  ipeWrite p = (\t -> Element "path" [] [Text t]) <$> ipeWriteText p-------------------------------------------------------------------------------------instance (IpeWriteText r) => IpeWrite (Group r) where-  ipeWrite (Group gs) = ipeWrite gs---instance ( AllSatisfy IpeAttrName rs-         , RecAll (Attr f) rs IpeWriteText-         , IpeWrite g-         ) => IpeWrite (g :+ IA.Attributes f rs) where-  ipeWrite (g :+ ats) = ipeWrite g `mAddAtts` ipeWriteAttrs ats---instance IpeWriteText r => IpeWrite (MiniPage r) where-  ipeWrite (MiniPage t p w) = (\pt wt ->-                              Element "text" [ ("pos", pt)-                                             , ("type", "minipage")-                                             , ("width", wt)-                                             ] [Text t]-                              ) <$> ipeWriteText p-                                <*> ipeWriteText w--instance IpeWriteText r => IpeWrite (Image r) where-  ipeWrite (Image d (Box a b)) = (\dt p q ->-                                   Element "image" [("rect", p <> " " <> q)] [Text dt]-                                 )-                               <$> ipeWriteText d-                               <*> ipeWriteText (a^.core.cwMin)-                               <*> ipeWriteText (b^.core.cwMax)---- TODO: Replace this one with s.t. that writes the actual image payload-instance IpeWriteText () where-  ipeWriteText () = Nothing--instance IpeWriteText r => IpeWrite (TextLabel r) where-  ipeWrite (Label t p) = (\pt ->-                         Element "text" [("pos", pt)-                                        ,("type", "label")-                                        ] [Text t]-                         ) <$> ipeWriteText p---instance (IpeWriteText r) => IpeWrite (IpeObject r) where-    ipeWrite (IpeGroup     g) = ipeWrite g-    ipeWrite (IpeImage     i) = ipeWrite i-    ipeWrite (IpeTextLabel l) = ipeWrite l-    ipeWrite (IpeMiniPage  m) = ipeWrite m-    ipeWrite (IpeUse       s) = ipeWrite s-    ipeWrite (IpePath      p) = ipeWrite p---ipeWriteRec :: RecAll f rs IpeWrite => Rec f rs -> [Node Text Text]-ipeWriteRec = catMaybes . recordToList-            . rmap (\(Compose (Dict x)) -> Const $ ipeWrite x)-            . reifyConstraint (Proxy :: Proxy IpeWrite)----- instance IpeWriteText (GroupAttrElf rs r) => IpeWriteText (GroupAttribute r rs) where---   ipeWriteText (GroupAttribute x) = ipeWriteText x-------------------------------------------------------------------------------------deriving instance IpeWriteText LayerName--instance IpeWrite LayerName where-  ipeWrite (LayerName n) = Just $ Element "layer" [("name",n)] []--instance IpeWrite View where-  ipeWrite (View lrs act) = Just $ Element "view" [ ("layers", ls)-                                                  , ("active", _layerName act)-                                                  ] []-    where-      ls = T.unwords .  map _layerName $ lrs--instance (IpeWriteText r)  => IpeWrite (IpePage r) where-  ipeWrite (IpePage lrs vs objs) = Just .-                                  Element "page" [] . catMaybes . concat $-                                  [ map ipeWrite lrs-                                  , map ipeWrite vs-                                  , map ipeWrite objs-                                  ]---instance IpeWrite IpeStyle where-  ipeWrite (IpeStyle _ xml) = Just xml---instance IpeWrite IpePreamble where-  ipeWrite (IpePreamble _ latex) = Just $ Element "preamble" [] [Text latex]-  -- TODO: I probably want to do something with the encoding ....--instance (IpeWriteText r) => IpeWrite (IpeFile r) where-  ipeWrite (IpeFile mp ss pgs) = Just $ Element "ipe" ipeAtts chs-    where-      ipeAtts = [("version","70005"),("creator", "HGeometry")]-      chs = mconcat [ catMaybes [mp >>= ipeWrite]-                    , mapMaybe ipeWrite ss-                    , mapMaybe ipeWrite . F.toList $ pgs-                    ]---------------------------------------------------------------------------------------instance (IpeWriteText r, IpeWrite p) => IpeWrite (PolyLine 2 p r) where-  ipeWrite p = ipeWrite path-    where-      path = fromPolyLine $ p & points.traverse.extra .~ ()-      -- TODO: Do something with the p's--fromPolyLine :: PolyLine 2 () r -> Path r-fromPolyLine = Path . LSeq.fromNonEmpty . (:| []) . PolyLineSegment---instance (IpeWriteText r) => IpeWrite (LineSegment 2 p r) where-  ipeWrite (LineSegment' p q) = ipeWrite . fromPolyLine . fromPoints . map (extra .~ ()) $ [p,q]---instance IpeWrite () where-  ipeWrite = const Nothing---- -- | slightly clever instance that produces a group if there is more than one--- -- element and just an element if there is only one value produced--- instance IpeWrite a => IpeWrite [a] where---   ipeWrite = combine . mapMaybe ipeWrite---combine     :: [Node Text Text] -> Maybe (Node Text Text)-combine []  = Nothing-combine [n] = Just n-combine ns  = Just $ Element "group" [] ns---- instance (IpeWrite a, IpeWrite b) => IpeWrite (a,b) where---   ipeWrite (a,b) = combine . catMaybes $ [ipeWrite a, ipeWrite b]------ -- | The default symbol for a point--- ipeWritePoint :: IpeWriteText r => Point 2 r -> Maybe (Node Text Text)--- ipeWritePoint = ipeWrite . flip Symbol "mark/disk(sx)"----- instance (IpeWriteText r, Floating r) => IpeWrite (Circle r) where---   ipeWrite = ipeWrite . Path . S2.l1Singleton . fromCircle------------------------------------------------------------------------------------------ testPoly :: PolyLine 2 () Double--- testPoly = fromPoints' [origin, point2 0 10, point2 10 10, point2 100 100]------- testWriteUse :: Maybe (Node Text Text)--- testWriteUse = ipeWriteExt sym---   where---     sym :: IpeSymbol Double :+ (Rec (SymbolAttribute Double) [Size, SymbolStroke])---     sym = Symbol origin "mark" :+ (  SymbolAttribute (IpeSize  $ Named "normal")---                                   :& SymbolAttribute (IpeColor $ Named "green")---                                   :& RNil---                                   )
src/Data/Geometry/KDTree.hs view
@@ -14,7 +14,7 @@ import qualified Data.List.NonEmpty as NonEmpty import           Data.Maybe (fromJust) import           Data.Proxy-import           Data.LSeq (LSeq(..), pattern (:<|))+import           Data.LSeq (LSeq, pattern (:<|)) import qualified Data.LSeq as LSeq import           Data.Util import qualified Data.Vector.Fixed as FV
src/Data/Geometry/Line.hs view
@@ -37,6 +37,7 @@  -------------------------------------------------------------------------------- + -- | Lines are transformable, via line segments instance (Fractional r, Arity d, Arity (d + 1)) => IsTransformable (Line d r) where   transformBy t = supportingLine . transformPointFunctor t . toLineSegment'@@ -44,7 +45,23 @@       toLineSegment' :: (Num r, Arity d) => Line d r -> LineSegment d () r       toLineSegment' = toLineSegment +type instance IntersectionOf (Point d r) (Line d r) = [NoIntersection, Point d r] ++instance (Eq r, Fractional r, Arity d) => (Point d r) `IsIntersectableWith` (Line d r) where+  nonEmptyIntersection = defaultNonEmptyIntersection+  intersects = onLine+  p `intersect` l | p `intersects` l = coRec p+                  | otherwise        = coRec NoIntersection++instance {-# OVERLAPPING #-} (Ord r, Num r)+        => (Point 2 r) `IsIntersectableWith` (Line 2 r) where+  nonEmptyIntersection = defaultNonEmptyIntersection+  intersects = onLine2+  p `intersect` l | p `intersects` l = coRec p+                  | otherwise        = coRec NoIntersection++ type instance IntersectionOf (Line 2 r) (Boundary (Rectangle p r)) =   [ NoIntersection, Point 2 r, (Point 2 r, Point 2 r) , LineSegment 2 () r] @@ -53,11 +70,11 @@          => (Line 2 r) `IsIntersectableWith` (Boundary (Rectangle p r)) where   nonEmptyIntersection = defaultNonEmptyIntersection -  line' `intersect` (Boundary rect)  = case asA' segP of+  line' `intersect` (Boundary rect)  = case asAP segP of       [sl'] -> case fromUnbounded sl' of         Nothing   -> error "intersect: line x boundary rect; unbounded line? absurd"         Just sl'' -> coRec $ sl''^.re _SubLine-      []    -> case nub' $ asA' pointP of+      []    -> case nub' $ asAP pointP of         [p]   -> coRec p         [p,q] -> coRec (p,q)         _     -> coRec NoIntersection@@ -66,17 +83,17 @@       (t,r,b,l) = sides' rect       ints = map (\s -> sl `intersect` toSL s) [t,r,b,l] -      nub' = map head . L.group . L.sort+      nub' = map L.head . L.group . L.sort        sl = fromLine line'       -- wrap a segment into an potentially unbounded subline       toSL  :: LineSegment 2 p r -> SubLine 2 () (UnBounded r) r       toSL s = s^._SubLine.re _unBounded.to dropExtra -      asA'    :: (t ∈ IntersectionOf (SubLine 2 () (UnBounded r) r)-                                     (SubLine 2 () (UnBounded r) r))-              => proxy t -> [t]-      asA' px = mapMaybe (asA px) ints+      asAP  :: forall proxy t. (t ∈ IntersectionOf (SubLine 2 () (UnBounded r) r)+                                                   (SubLine 2 () (UnBounded r) r))+             => proxy t -> [t]+      asAP _ = mapMaybe (asA @t) ints        segP   = Proxy :: Proxy (SubLine 2 () (UnBounded r) r)       pointP = Proxy :: Proxy (Point 2 r)
src/Data/Geometry/Line/Internal.hs view
@@ -1,6 +1,5 @@ {-# LANGUAGE TemplateHaskell  #-} {-# LANGUAGE DeriveAnyClass  #-}-{-# LANGUAGE ScopedTypeVariables  #-} {-# LANGUAGE UndecidableInstances #-} -------------------------------------------------------------------------------- -- |@@ -25,7 +24,7 @@ import           Data.Vinyl import           Data.Vinyl.CoRec import           GHC.Generics (Generic)-+import           Test.QuickCheck  -------------------------------------------------------------------------------- -- * d-dimensional Lines@@ -54,6 +53,10 @@ instance (Arity d, Eq r, Fractional r) => Eq (Line d r) where   l@(Line p _) == m = l `isParallelTo` m && p `onLine` m +instance (Arbitrary r, Arity d, Num r, Eq r) => Arbitrary (Line d r) where+  arbitrary = do p <- arbitrary+                 q <- suchThat arbitrary (/= p)+                 return $ lineThrough p q  type instance Dimension (Line d r) = d type instance NumType   (Line d r) = r@@ -70,13 +73,18 @@ horizontalLine   :: Num r => r -> Line 2 r horizontalLine y = Line (point2 0 y) (Vector2 1 0) --- | Given a line l with anchor point p, get the line perpendicular to l that also goes through p.+-- | Given a line l with anchor point p and vector v, get the line+-- perpendicular to l that also goes through p. The resulting line m is+-- oriented such that v points into the left halfplane of m.+--+-- >>> perpendicularTo $ Line (Point2 3 4) (Vector2 (-1) 2)+-- Line (Point2 [3,4]) (Vector2 [-2,-1]) perpendicularTo                           :: Num r => Line 2 r -> Line 2 r perpendicularTo (Line p ~(Vector2 vx vy)) = Line p (Vector2 (-vy) vx) ---+-- | Test if a vector is perpendicular to the line.+isPerpendicularTo :: (Num r, Eq r) => Vector 2 r -> Line 2 r -> Bool+v `isPerpendicularTo` (Line _ u) = v `dot` u == 0  -- | Test if two lines are identical, meaning; if they have exactly the same -- anchor point and directional vector.@@ -107,10 +115,12 @@ onLine                :: (Eq r, Fractional r, Arity d) => Point d r -> Line d r -> Bool p `onLine` (Line q v) = p == q || (p .-. q) `isScalarMultipleOf` v - -- | Specific 2d version of testing if apoint lies on a line. onLine2 :: (Ord r, Num r) => Point 2 r -> Line 2 r -> Bool p `onLine2` (Line q v) = ccw p q (q .+^ v) == CoLinear+++   -- | Get the point at the given position along line, where 0 corresponds to the
src/Data/Geometry/LineSegment.hs view
@@ -14,6 +14,7 @@                                 , pattern LineSegment                                 , pattern LineSegment'                                 , pattern ClosedLineSegment+                                , endPoints                                  , _SubLine                                 , module Data.Geometry.Interval@@ -28,8 +29,8 @@                                 ) where  import           Control.Arrow ((&&&))+import           Control.DeepSeq import           Control.Lens-import           Data.Bifunctor import           Data.Ext import qualified Data.Foldable as F import           Data.Geometry.Box.Internal@@ -44,6 +45,7 @@ import           Data.Vinyl import           Data.Vinyl.CoRec import           GHC.TypeLits+import           Test.QuickCheck  -------------------------------------------------------------------------------- -- * d-dimensional LineSegments@@ -58,6 +60,7 @@  makeLenses ''LineSegment + -- | Pattern that essentially models the line segment as a: -- -- >>> data LineSegment d p r = LineSegment (EndPoint (Point d r :+ p)) (EndPoint (Point d r :+ p))@@ -93,6 +96,20 @@   type EndExtra (LineSegment d p r) = p   end = unLineSeg.end +instance (Arbitrary r, Arbitrary p, Arity d) => Arbitrary (LineSegment d p r) where+  arbitrary = LineSegment <$> arbitrary <*> arbitrary++deriving instance (Arity d, NFData r, NFData p) => NFData (LineSegment d p r)+++-- | Traversal to access the endpoints. Note that this traversal+-- allows you to change more or less everything, even the dimension+-- and the numeric type used, but it preservers if the segment is open+-- or closed.+endPoints :: Traversal (LineSegment d p r) (LineSegment d' q s)+                       (Point d r :+ p)    (Point d' s :+ q)+endPoints = \f (LineSegment p q) -> LineSegment <$> traverse f p+                                                <*> traverse f q  _SubLine :: (Num r, Arity d) => Iso' (LineSegment d p r) (SubLine d p r r) _SubLine = iso segment2SubLine subLineToSegment
src/Data/Geometry/PlanarSubdivision.hs view
@@ -3,7 +3,7 @@ {-# LANGUAGE ScopedTypeVariables #-} -------------------------------------------------------------------------------- -- |--- Module      :  Data.Geometry.PlnarSubdivision+-- Module      :  Data.Geometry.PlanarSubdivision -- Copyright   :  (C) Frank Staals -- License     :  see the LICENSE file -- Maintainer  :  Frank Staals@@ -12,51 +12,82 @@ -- -------------------------------------------------------------------------------- module Data.Geometry.PlanarSubdivision( module Data.Geometry.PlanarSubdivision.Basic-                                      -- , module Data.Geometry.PlanarSubdivision.Build+                                      , fromPolygons, fromPolygons'                                       , fromPolygon                                       ) where  -- import           Algorithms.Geometry.PolygonTriangulation.Triangulate import           Data.Ext+import           Data.Semigroup.Foldable+import qualified Data.Vector as V+import qualified Data.List.NonEmpty as NonEmpty import           Data.Geometry.PlanarSubdivision.Basic+import           Data.Geometry.PlanarSubdivision.Merge import           Data.Geometry.Polygon-import           Data.List.NonEmpty (NonEmpty(..)) import qualified Data.PlaneGraph as PG import           Data.Proxy-import           Data.Util-import           Control.Lens-import           Data.Bitraversable-import qualified Data.Foldable as F-import qualified Data.Vector as V-import qualified Data.Vector.Mutable as MV ++-- import Data.Geometry.Point+-- import qualified Data.List.NonEmpty as NonEmpty+++-- import Debug.Trace+ -------------------------------------------------------------------------------- +-- | Constructs a planar subdivision from a collection of \(k\)+-- disjoint polygons of total complexity \(O(n)\).+--+-- pre: The boundary of the polygons is given in counterclockwise orientation+--+-- runningtime: \(O(n\log n\log k)\) in case of polygons with holes,+-- and \(O(n\log k)\) in case of simple polygons.+fromPolygons       :: (Foldable1 c, Ord r, Fractional r)+                   => proxy s+                   -> f -- ^ outer face data+                   -> c (Polygon t p r :+ f) -- ^ the disjoint polygons+                   -> PlanarSubdivision s p () f r+fromPolygons px oD = mergeAllWith const+                   . fmap (\(pg :+ iD) -> fromPolygon px pg iD oD) . toNonEmpty++-- | Version of 'fromPolygons' that accepts 'SomePolygon's as input.+fromPolygons'      :: forall proxy c s p r f. (Foldable1 c, Ord r, Fractional r)+                   => proxy s+                   -> f -- ^ outer face data+                   -> c (SomePolygon p r :+ f) -- ^ the disjoint polygons+                   -> PlanarSubdivision s p () f r+fromPolygons' px oD =+    mergeAllWith const . fmap (\(pg :+ iD) -> either (build iD) (build iD) pg) . toNonEmpty+  where+    build       :: f -> Polygon t p r -> PlanarSubdivision s p () f r+    build iD pg = fromPolygon px pg iD oD+ -- | Construct a planar subdivision from a polygon. Since our PlanarSubdivision -- models only connected planar subdivisions, this may add dummy/invisible -- edges. ----- running time: \(O(n)\) for a simple polygon, \(O(n\log n)\) for a polygon--- with holes.-fromPolygon                              :: forall proxy t p f r s.-                                            (Ord r, Fractional r) => proxy s+-- pre: The outer boundary of the polygons is given in counterclockwise orientation+--+-- running time: \(O(n)\) for a simple polygon, \(O(n\log n)\) for a+-- polygon with holes.+fromPolygon                              :: forall proxy t p f r s. (Ord r, Fractional r)+                                         => proxy s                                          -> Polygon t p r                                          -> f -- ^ data inside                                          -> f -- ^ data outside the polygon                                          -> PlanarSubdivision s p () f r fromPolygon p pg@(SimplePolygon _) iD oD = fromSimplePolygon p pg iD oD-fromPolygon _ (MultiPolygon vs hs) iD oD = PlanarSubdivision cs vd dd fd+fromPolygon p (MultiPolygon vs hs) iD oD = case NonEmpty.nonEmpty hs of+    Nothing  -> outerPG+    Just hs' -> let hs'' = (\pg -> fromSimplePolygon wp (toCounterClockWiseOrder pg) oD iD) <$> hs'+                in embedAsHolesIn hs'' (\_ x -> x) i outerPG   where     wp = Proxy :: Proxy (Wrap s) -    -- the components-    cs = undefined-    cs' = PG.fromSimplePolygon wp (SimplePolygon vs) iD oD-        : map (\h -> PG.fromSimplePolygon wp h oD iD) hs+    outerPG = fromSimplePolygon p (SimplePolygon vs) iD oD+    i = V.last $ faces' outerPG -    vd = undefined-    dd = undefined-    fd = undefined   @@ -99,3 +130,31 @@ getP            :: HoleData f p -> Maybe p getP (Outer _)  = Nothing getP (Hole _ p) = Just p++--------------------------------------------------------------------------------++-- data Test = Test+-- data Id a = Id a+++-- simplePg  = fromSimplePolygon (Id Test) simplePg' Inside Outside+-- simplePg' = toCounterClockWiseOrder . fromPoints $ map ext $ [ Point2 160 736+--                                                              , Point2 128 688+--                                                              , Point2 176 672+--                                                              , Point2 256 672+--                                                              , Point2 272 608+--                                                              , Point2 384 656+--                                                              , Point2 336 768+--                                                              , Point2 272 720+--                                                              ]++-- triangle :: PlanarSubdivision Test () () PolygonFaceData Rational+-- triangle = (\pg -> fromSimplePolygon (Id Test) pg Inside Outside)+--          $ trianglePG++-- trianglePG = fromPoints . map ext $ [origin, Point2 10 0, Point2 10 10]+++-- mySubDiv = fromSimplePolygons (Id Test)+--                               0+--                               (NonEmpty.fromList [simplePg' :+ 1, trianglePG :+ 2])
src/Data/Geometry/PlanarSubdivision/Basic.hs view
@@ -28,7 +28,8 @@                                             , fromConnectedSegments                                             , fromPlaneGraph, fromPlaneGraph' -                                            , numVertices, numEdges, numFaces, numDarts+                                            , numComponents, numVertices+                                            , numEdges, numFaces, numDarts                                             , dual                                              , components, component@@ -54,13 +55,14 @@                                              , endPointsOf, endPointData +                                            , faceDataOf+                                             , edgeSegment, edgeSegments                                             , rawFacePolygon, rawFaceBoundary                                             , rawFacePolygons                                              , VertexId(..), FaceId(..), Dart, World(..) -                                             , rawVertexData, rawDartData, rawFaceData                                             , vertexData, dartData, faceData                                             , dataVal@@ -69,17 +71,18 @@                                             ) where  import           Control.Lens hiding (holes, holesOf, (.=))-import           Data.Aeson import           Data.Coerce import           Data.Ext import qualified Data.Foldable as F import           Data.Geometry.Box-import           Data.Geometry.LineSegment+import           Data.Geometry.LineSegment hiding (endPoints)+import           Data.Geometry.PlanarSubdivision.Raw import           Data.Geometry.Point import           Data.Geometry.Polygon import           Data.Geometry.Properties import           Data.List.NonEmpty (NonEmpty(..))-import           Data.PlanarGraph (isPositive, allDarts)+import qualified Data.List.NonEmpty as NonEmpty+import           Data.PlanarGraph.Dart (allDarts,isPositive) import qualified Data.PlaneGraph as PG import           Data.PlaneGraph( PlaneGraph, PlanarGraph, dual                                 , Dart, VertexId(..), FaceId(..), twin@@ -95,46 +98,7 @@  -------------------------------------------------------------------------------- --- | The Face data consists of the data itself and a list of holes-data FaceData h f = FaceData { _holes :: (Seq.Seq h)-                             , _fData :: !f-                             } deriving (Show,Eq,Ord,Functor,Foldable,Traversable,Generic)-makeLenses ''FaceData--instance Bifunctor FaceData where-  bimap f g (FaceData hs x) = FaceData (fmap f hs) (g x)---instance (FromJSON h, FromJSON f) => FromJSON (FaceData h f)-instance (ToJSON h, ToJSON f)     => ToJSON (FaceData h f) where-  toEncoding = genericToEncoding defaultOptions-- -----------------------------------------------------------------------------------data Wrap' s-type family Wrap (s :: k) :: k where-  Wrap s = Wrap' s--newtype ComponentId s = ComponentId { unCI :: Int }-  deriving (Show,Eq,Ord,Generic,Bounded,Enum,ToJSON,FromJSON)---data Raw s ia a = Raw { _compId  :: !(ComponentId s)-                      , _idxVal  :: !ia-                      , _dataVal :: !a-                      } deriving (Eq,Show,Functor,Foldable,Traversable,Generic)--instance (FromJSON ia, FromJSON a) => FromJSON (Raw s ia a)-instance (ToJSON ia, ToJSON a) => ToJSON (Raw s ia a) where-  toEncoding = genericToEncoding defaultOptions---- | get the dataVal of a Raw-dataVal :: Lens (Raw s ia a) (Raw s ia b) a b-dataVal = lens (\(Raw _ _ x) -> x) (\(Raw c i _) y -> Raw c i y)-- --------------------------------------------------------------------------------  -- | A connected component.@@ -143,7 +107,7 @@ -- d on the hole s.t. this dart has the face f on its left. i.e. -- leftFace d = f type Component s r = PlaneGraph (Wrap s)-                                (VertexId' s) (Dart s) (FaceData (Dart s) (FaceId' s))+                                (VertexId' s) (Dart s) (FaceId' s)                                 r  @@ -160,7 +124,7 @@   PlanarSubdivision { _components    :: V.Vector (Component s r)                     , _rawVertexData :: V.Vector (Raw s (VertexId' (Wrap s)) v)                     , _rawDartData   :: V.Vector (Raw s (Dart      (Wrap s)) e)-                    , _rawFaceData   :: V.Vector (Raw s (FaceId'   (Wrap s)) f)+                    , _rawFaceData   :: V.Vector (RawFace s f)                     } deriving (Show,Eq,Functor,Generic) makeLenses ''PlanarSubdivision @@ -200,12 +164,12 @@ fromPlaneGraph' g ofD = PlanarSubdivision (V.singleton . coerce $ g') vd ed fd   where     c = ComponentId 0-    vd = V.imap    (\i v   -> Raw c (VertexId i) v)             $ g^.PG.vertexData-    ed = V.zipWith (\d dd  -> Raw c d            dd) allDarts'' $ g^.PG.rawDartData-    fd = V.imap (\i f      -> Raw c (mkFaceId i) f) . swapOf    $ g^.PG.faceData+    vd = V.imap    (\i v   -> Raw c (VertexId i) v)                   $ g^.PG.vertexData+    ed = V.zipWith (\d dd  -> Raw c d dd) allDarts''                  $ g^.PG.rawDartData+    fd = V.imap (\i f      -> RawFace (mkFaceIdx i) (mkFaceData i f)) $ g^.PG.faceData -    g' :: PlaneGraph s (VertexId' s) (Dart s) (FaceData (Dart s) (FaceId' s)) r-    g' = g&PG.faceData    %~ V.imap (\i _ -> mkFaceData i)+    g' :: PlaneGraph s (VertexId' s) (Dart s) (FaceId' s) r+    g' = g&PG.faceData    %~ V.imap (\i _ -> mkFaceId $ flipID i)           &PG.vertexData  %~ V.imap (\i _ -> VertexId i)           &PG.rawDartData .~ allDarts'' @@ -213,28 +177,30 @@     allDarts'' = allDarts' (PG.numDarts g)      -- make sure the outerFaceId is 0-    (FaceId (VertexId of')) = PG.leftFace ofD g+    oF@(FaceId (VertexId of')) = PG.leftFace ofD g -    -- at index i we are storing the outerface-    mkFaceData i | i == of'  = faceData' (Seq.singleton ofD) 0-                 | i == 0    = faceData' mempty of'-                 | otherwise = faceData' mempty i-    faceData' xs i = FaceData xs (FaceId . VertexId $ i)+    mkFaceIdx i | i == 0    = Nothing+                | otherwise = Just (c,mkFaceId i) +    -- at index i we are storing the outerface+    mkFaceData                 :: Int -> f -> FaceData (Dart s) f+    mkFaceData i f | i == 0    = FaceData (Seq.singleton ofD) (g^.dataOf oF)+                   | i == of'  = FaceData mempty              (g^.dataOf (mkFaceId @s 0))+                   | otherwise = FaceData mempty              f      mkFaceId :: forall s'. Int -> FaceId' s'-    mkFaceId = FaceId . VertexId . mkFaceId'-    mkFaceId' i | i == 0    = of'-                | i == of'  = 0-                | otherwise = i-    swapOf = V.modify (\v -> MV.swap v 0 of')---+    mkFaceId = FaceId . VertexId +    flipID i | i == 0    = of'+             | i == of'  = 0+             | otherwise = i --- | Construct a planar subdivision from a simple polygon+-- | Construct a plane graph from a simple polygon. It is assumed that the+-- polygon is given in counterclockwise order. --+-- the interior of the polygon will have faceId 0+--+-- pre: the input polygon is given in counterclockwise order -- running time: \(O(n)\). fromSimplePolygon            :: (Ord r, Fractional r)                              => proxy s@@ -289,6 +255,13 @@ -- | Get the number of vertices -- -- >>> numVertices myGraph+-- 1+numComponents :: PlanarSubdivision s v e f r  -> Int+numComponents = V.length . _components++-- | Get the number of vertices+--+-- >>> numVertices myGraph -- 4 numVertices :: PlanarSubdivision s v e f r  -> Int numVertices = V.length . _rawVertexData@@ -366,12 +339,10 @@   -- | Enumerates all faces with their face data exlcluding  the outer face-internalFaces    :: (Ord r, Fractional r)-                 => PlanarSubdivision s v e f r+internalFaces    :: PlanarSubdivision s v e f r                  -> V.Vector (FaceId' s, FaceData (Dart s) f)-internalFaces ps = let i = outerFaceId ps-                   in V.filter (\(j,_) -> i /= j) $ faces ps-+internalFaces ps = V.tail $ faces ps+  -- this uses that the outerfaceId is 0, and thus it is the first face in the vector.  -- | lens to access the Dart Data dartData :: Lens (PlanarSubdivision s v e f r) (PlanarSubdivision s v e' f r)@@ -397,8 +368,8 @@                  (V.Vector f)                  (V.Vector f') faceData = lens getF setF   where-    getF = fmap (^.dataVal) . _rawFaceData-    setF ps v' = ps&rawFaceData %~ V.zipWith (\x' x -> x&dataVal .~ x') v'+    getF = fmap (^.faceDataVal.fData) . _rawFaceData+    setF ps v' = ps&rawFaceData %~ V.zipWith (\x' x -> x&faceDataVal.fData .~ x') v'  -- | Lens to the facedata of the vertexdata themselves. The indices correspond to the vertexId's vertexData :: Lens (PlanarSubdivision s v e f r) (PlanarSubdivision s v' e f r)@@ -477,7 +448,7 @@ leftFace      :: Dart s -> PlanarSubdivision s v e f r  -> FaceId' s leftFace d ps = let (_,d',g) = asLocalD d ps                     fi       = PG.leftFace d' g-                in g^.dataOf fi.fData+                in g^.dataOf fi  -- | The face to the right of the dart --@@ -485,19 +456,27 @@ rightFace      :: Dart s -> PlanarSubdivision s v e f r  -> FaceId' s rightFace d ps = let (_,d',g) = asLocalD d ps                      fi       = PG.rightFace d' g-                in g^.dataOf fi.fData+                in g^.dataOf fi --- | The darts on the outer boundary of the face, for internal faces in--- clockwise order, for the outer face in counter clockwise order.+-- | The darts on the outer boundary of the face, for internal faces+-- the darts are in clockwise order. For the outer face the darts are+-- in counterclockwise order, and the darts from various components are in no particular order. -- -- -- running time: \(O(k)\), where \(k\) is the output size. outerBoundaryDarts      :: FaceId' s -> PlanarSubdivision s v e f r  -> V.Vector (Dart s)-outerBoundaryDarts f ps = let (_,f',g) = asLocalF f ps-                              ds       = PG.boundary f' g-                          in (\d -> g^.dataOf d) <$> ds-+outerBoundaryDarts f ps = V.concatMap single . V.fromList . NonEmpty.toList $ asLocalF f ps+  where+    single (_,f',g) = (\d -> g^.dataOf d) <$> PG.boundary f' g +-- | Get the local face and component from a given face.+asLocalF                          :: FaceId' s -> PlanarSubdivision s v e f r+                                  -> NonEmpty (ComponentId s, FaceId' (Wrap s), Component s r)+asLocalF (FaceId (VertexId f)) ps = case ps^?!rawFaceData.ix f of+      RawFace (Just (ci,f')) _        -> (ci,f',ps^.component ci) :| []+      RawFace Nothing (FaceData hs _) -> toLocalF <$> NonEmpty.fromList (F.toList hs)+  where+    toLocalF d = let (ci,d',c) = asLocalD d ps in (ci,PG.leftFace d' c,c)  -- | The vertices of the outer boundary of the face, for internal faces in -- clockwise order, for the outer face in counter clockwise order.@@ -510,11 +489,14 @@   -- | Lists the holes in this face, given as a list of darts to arbitrary darts--- on those faces.+-- on those faces. The returned darts are on the outside of the hole, i.e. they are+-- incident to the given input face: --+-- prop> all (\d -> leftFace d ps == fi) $ holesOf fi ps+-- -- running time: \(O(k)\), where \(k\) is the number of darts returned.-holesOf      :: FaceId' s -> PlanarSubdivision s v e f r -> Seq.Seq (Dart s)-holesOf f ps = ps^.faceDataOf f.holes+holesOf       :: FaceId' s -> PlanarSubdivision s v e f r -> Seq.Seq (Dart s)+holesOf fi ps = ps^.faceDataOf fi.holes   --------------------------------------------------------------------------------@@ -535,13 +517,6 @@ asLocalV (VertexId v) ps = let (Raw ci v' _) = ps^?!rawVertexData.ix v                            in (ci,v',ps^.component ci) -asLocalF                          :: FaceId' s -> PlanarSubdivision s v e f r-                                  -> (ComponentId s, FaceId' (Wrap s), Component s r)-asLocalF (FaceId (VertexId f)) ps = let (Raw ci f' _) = ps^?!rawFaceData.ix f-                                    in (ci,f',ps^.component ci)--- -- | Note that using the setting part of this lens may be very expensive!! vertexDataOf               :: VertexId' s                            -> Lens' (PlanarSubdivision s v e f r ) (VertexData r v)@@ -563,15 +538,8 @@ faceDataOf fi = lens getF setF   where     (FaceId (VertexId i)) = fi-    getF ps = let (Raw ci wfi x) = ps^?!rawFaceData.ix i-                  fd             = ps^.component ci.dataOf wfi-              in fd&fData .~ x--    setF ps fd = let (Raw ci wfi _) = ps^?!rawFaceData.ix i-                     fd'            = fd&fData .~ fi-                     x              = fd^.fData-                 in ps&component ci.dataOf wfi  .~ fd'-                      &rawFaceData.ix i.dataVal .~ x+    getF ps = ps^?!rawFaceData.ix i.faceDataVal+    setF ps fd = ps&rawFaceData.ix i.faceDataVal .~ fd  instance HasDataOf (PlanarSubdivision s v e f r) (VertexId' s) where   type DataOf (PlanarSubdivision s v e f r) (VertexId' s) = v@@ -684,12 +652,25 @@     res@(SimplePolygon vs) :+ x = rawFaceBoundary i ps     toHole d = (rawFaceBoundary (leftFace d ps) ps)^.core --- | Lists all faces of the planar subdivision.+-- | Lists all *internal* faces of the planar subdivision. rawFacePolygons    :: PlanarSubdivision s v e f r                    -> V.Vector (FaceId' s, SomePolygon v r :+ f)-rawFacePolygons ps = fmap (\i -> (i,rawFacePolygon i ps)) . faces' $ ps+rawFacePolygons ps = fmap (\(i,_) -> (i,rawFacePolygon i ps)) . internalFaces $ ps    dartMapping    :: PlanarSubdivision s v e f r -> V.Vector (Dart (Wrap s), Dart s) dartMapping ps = ps^.component (ComponentId 0).PG.dartData++++--------------------------------------------------------------------------------++-- data Id a = Id a+-- data Test = Test++-- triangle :: PlanarSubdivision Test () () PolygonFaceData Rational+-- triangle = (\pg -> fromSimplePolygon (Id Test) pg Inside Outside)+--          $ trianglePG++-- trianglePG = fromPoints . map ext $ [origin, Point2 10 0, Point2 10 10]
− src/Data/Geometry/PlanarSubdivision/Draw.hs
@@ -1,54 +0,0 @@-module Data.Geometry.PlanarSubdivision.Draw where--import           Control.Lens-import           Data.Ext-import           Data.Geometry.Ipe-import           Data.Geometry.LineSegment-import           Data.Geometry.PlanarSubdivision-import           Data.Geometry.Polygon-import           Data.Maybe (mapMaybe)-import qualified Data.Vector as V---drawColoredPlanarSubdivision  ::  IpeOut (PlanarSubdivision s v e (Maybe (IpeColor r)) r)-                                          Group r-drawColoredPlanarSubdivision ps = drawPlanarSubdivision-    (ps&vertexData.traverse  .~ Just mempty-       &dartData.traverse._2 .~ Just mempty-       &faceData.traverse    %~ fmap (attr SFill)-    )---- | Draws only the values for which we have a Just attribute-drawPlanarSubdivision :: forall s r.-                         IpeOut (PlanarSubdivision s (Maybe (IpeAttributes IpeSymbol r))-                                                     (Maybe (IpeAttributes Path      r))-                                                     (Maybe (IpeAttributes Path      r))-                                r) Group r-drawPlanarSubdivision = drawPlanarSubdivisionWith fv fe ff-  where-    fv                     :: (VertexId' s, VertexData r (Maybe (IpeAttributes IpeSymbol r)))-                           -> Maybe (IpeObject' IpeSymbol r)-    fv (_,VertexData p ma) = (\a -> defIO p ! a) <$> ma -- draws a point-    fe (_,s :+ ma)         = (\a -> defIO s ! a) <$> ma -- draw segment-    ff (_,f :+ ma)         = (\a -> defIO f ! a) <$> ma -- draw a face----- | Draw everything using the defaults-drawPlanarSubdivision'    :: forall s v e f r. IpeOut (PlanarSubdivision s v e f r) Group r-drawPlanarSubdivision' ps = drawPlanarSubdivision-  (ps&vertexData.traverse   .~ Just (mempty :: IpeAttributes IpeSymbol r)-     &dartData.traverse._2  .~ Just (mempty :: IpeAttributes Path      r)-     &faceData.traverse     .~ Just (mempty :: IpeAttributes Path      r))--type MIO g i r = g -> Maybe (IpeObject' i r)--drawPlanarSubdivisionWith            :: (ToObject vi, ToObject ei, ToObject fi)-                                     => MIO (VertexId' s, VertexData r v)          vi r-                                     -> MIO (Dart s,      LineSegment 2 v r :+ e)  ei r-                                     -> MIO (FaceId' s,   SomePolygon v r :+ f)    fi r-                                     -> IpeOut (PlanarSubdivision s v e f r) Group r-drawPlanarSubdivisionWith fv fe ff g = ipeGroup . concat $ [vs, es, fs]-  where-    vs = mapMaybe (fmap iO . fv) . V.toList . vertices        $ g-    es = mapMaybe (fmap iO . fe) . V.toList . edgeSegments    $ g-    fs = mapMaybe (fmap iO . ff) . V.toList . rawFacePolygons $ g
+ src/Data/Geometry/PlanarSubdivision/Merge.hs view
@@ -0,0 +1,255 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Data.Geometry.PlanarSubdivision.Merge+-- Copyright   :  (C) Frank Staals+-- License     :  see the LICENSE file+-- Maintainer  :  Frank Staals+-- Description :  Functions for merging two planar subdivisions+--+--------------------------------------------------------------------------------+module Data.Geometry.PlanarSubdivision.Merge( merge+                                            , mergeWith+                                            , mergeAllWith++                                            , embedAsHoleIn+                                            , embedAsHolesIn+                                            ) where++import           Control.Lens hiding (holes)+import           Data.BinaryTree (asBalancedBinLeafTree, foldUp, Elem(..))+import           Data.Geometry.PlanarSubdivision.Basic+import           Data.Geometry.PlanarSubdivision.Raw+import           Data.PlanarGraph.Dart+import           Data.PlaneGraph ( Dart, VertexId(..), FaceId(..)+                                , VertexId', FaceId'+                                )+import qualified Data.PlaneGraph as PG+import           Data.Semigroup.Foldable+import qualified Data.Vector as V++-- import Data.Coerce+import           Unsafe.Coerce(unsafeCoerce)+++import           Data.Ext+import           Data.Geometry.Point+import           Data.Geometry.Polygon++--------------------------------------------------------------------------------+-- * Embedding one subdivision in another one+++embedAsHolesIn      :: forall t s h v e f r. (Foldable1 t, Functor t)+                    => t (PlanarSubdivision h v e f r) -- ^ The disjoint "holes"+                    -> (t f -> f -> f) -- ^ How to merge the face data+                    -> FaceId' s -- ^ Face in which to embed the given subdivisions+                    -> PlanarSubdivision s v e f r -- ^ the outer subdivision+                    -> PlanarSubdivision s v e f r+embedAsHolesIn hs f = embedAsHoleIn ph' g+  where+    -- merges all holes into one subdivision+    ph' = mergeAllWith const hs+    -- the new data value to use for the face i+    g _ = f (fmap (\h -> h^.dataOf (outerFaceId h)) hs)++embedAsHoleIn           :: forall s h v e f r.+                           PlanarSubdivision h v e f r -- ^ The hole+                        -> (f -> f -> f) -- ^ How to merge the face data (hole value first)+                        -> FaceId' s -- ^ Face in which to embed the given subdivisions+                        -> PlanarSubdivision s v e f r -- ^ the outer subdivision+                        -> PlanarSubdivision s v e f r+embedAsHoleIn ph' f i ps = mergeWith' mergeFaces ps ph+  where+    -- coerce the worlds to be the same+    ph :: PlanarSubdivision s v e f r+    ph = unsafeCoerce ph'+      -- We are coercing the 'h' into an 's' here. Since these+      -- parameters are phantom types the representation of the data+      -- is the same, and hence the unsafeCoerce should be safe here.++    mergeFaces fs1 fs2 = update fs1 i (V.head fs2) <> V.tail fs2++    update fs (FaceId (VertexId j)) h2 = let FaceData hs' x' = h2^.faceDataVal+                                             g (FaceData hs x) = FaceData (hs' <> hs) (f x' x)+                                         in fs&ix j.faceDataVal %~ g++  -- (PlanarSubdivision cs vd rd rf)&faceDataOf i %~ updateFData+  -- where+  --   -- shift p2+  --   p2' :: PlanarSubdivision s v e f r+  --   p2' = unsafeCoerce p2''++  --   p2'' :: PlanarSubdivision h v e f r+  --   p2'' = shift (numComponents ps) (numVertices ps) (numDarts ps `div` 2) (numFaces ps) ph+  --       -- we have to shift the number of the *Arcs*. Since every dart consists+  --       -- of two arcs, we have to shift by numDarts / 2++  --   -- merges all holes into one subdivision+  --   ph = mergeAllWith const hs++  --   cs = ps^.components <> p2'^.components+  --   vd = ps^.rawVertexData <> p2'^.rawVertexData+  --   rd = ps^.rawDartData <> p2'^.rawDartData+  --   rf = ps^.rawFaceData <> (V.tail $ p2'^.rawFaceData)++  --   -- the new data value to use for the face i+  --   x = f ofData (ps^.dataOf i)+  --   ofData = fmap (\h -> h^.dataOf (outerFaceId h)) hs++  --   updateFData (FaceData hs' _) = FaceData (newHs <> hs') x+  --   newHs = p2'^?!rawFaceData.ix 0.faceDataVal.holes++++++--------------------------------------------------------------------------------+-- * Merging Disjoint Subdivisions++-- | Merge a pair of *disjoint* planar subdivisions, unifying their+-- outer face. The given function is used to merge the data+-- corresponding to the outer face. The subdivisions are merged pairwise, no+-- guarantees are given about the order in which they are merged. Hence,+-- it is expected that f is commutative.+--+-- running time: \(O(n\log n)\), where \(n\) is the total size of the+-- subdivisions.+mergeAllWith   :: Foldable1 t+               => (f -> f -> f)+               -> t (PlanarSubdivision s v e f r)+               -> PlanarSubdivision s v e f r+mergeAllWith f = foldUp (\l _ r -> mergeWith f l r) _unElem . asBalancedBinLeafTree . toNonEmpty++-- | Merge a pair of *disjoint* planar subdivisions, unifying their+-- outer face. For the outerface data it simply takes the data of the+-- first subdivision.+--+-- runningtime: \(O(n)\)+merge :: PlanarSubdivision s v e f r -> PlanarSubdivision s v e f r -> PlanarSubdivision s v e f r+merge = mergeWith const++-- | Merge a pair of *disjoint* planar subdivisions. In particular,+-- this function unifies the structure assuming that the two+-- subdivisions share the outer face.+--+-- runningtime: \(O(n)\)+mergeWith   :: (f -> f -> f) -- ^  how to merge the data of the outer face+            -> PlanarSubdivision s v e f r+            -> PlanarSubdivision s v e f r+            -> PlanarSubdivision s v e f r+mergeWith f = mergeWith' (mergeFaceData f)++-- | Takes care of actually combining the vectors with data.+-- only thing left is how to merge the raw face data+mergeWith'  :: (V.Vector (RawFace s f) -> V.Vector (RawFace s f) -> V.Vector (RawFace s f))+             -- ^  how to merge the raw face data+            -> PlanarSubdivision s v e f r+            -> PlanarSubdivision s v e f r+            -> PlanarSubdivision s v e f r+mergeWith' mergeFaces p1 p2 = PlanarSubdivision cs vd rd rf+  where+    -- shift p2+    p2' = shift (numComponents p1) (numVertices p1) (numDarts p1 `div` 2) (numFaces p1 - 1) p2+        -- we have to shift the number of the *Arcs*. Since every dart+        -- consists of two arcs, we have to shift by numDarts / 2+        -- Furthermore, we take numFaces - 1 since we want the first+        -- *internal* face of p2 (the one with FaceId 1) to correspond with the first free+        -- position (at index numFaces)++    cs = p1^.components <> p2'^.components+    vd = p1^.rawVertexData <> p2'^.rawVertexData+    rd = p1^.rawDartData <> p2'^.rawDartData+    rf = (p1^.rawFaceData) `mergeFaces` (p2'^.rawFaceData)++mergeFaceData           :: (f -> f -> f)+                        -> V.Vector (RawFace s f)+                        -> V.Vector (RawFace s f)+                        -> V.Vector (RawFace s f)+mergeFaceData f vs1 vs2 = V.cons h ts+  where+    ts = V.tail vs1 <> V.tail vs2+    h  = let FaceData hs1 x1 = vs1^.to V.head.faceDataVal+             FaceData hs2 x2 = vs2^.to V.head.faceDataVal+         in RawFace Nothing $ FaceData (hs1 <> hs2) (f x1 x2)++-- -- | applies a function to the first value of a vector+-- onHead     :: (a -> a) -> V.Vector a -> V.Vector a+-- onHead f v = v&ix 0 %~ f++--------------------------------------------------------------------------------+-- * Implementation Helpers++-- | Shift the indices in a planar subdiv by the given numbers+-- (componentId;vertexId,darts,faceIds). Note that the result is not really a+-- valid planar subdivision, so be careful when using this!+shift                                             :: forall s v e f r.+                                                     Int -> Int -> Int -> Int+                                                  -> PlanarSubdivision s v e f r+                                                  -> PlanarSubdivision s v e f r+shift nc nv nd nf (PlanarSubdivision cs vd rd rf) = PlanarSubdivision cs' vd' rd' rf'+  where+    cs' = (\pg -> pg&PG.vertexData.traverse  %~ incV+                    &PG.rawDartData.traverse %~ incD+                    &PG.faceData.traverse    %~ incFi+          ) <$> cs+    vd' = (\(Raw ci i x)      -> Raw (incC ci) i x)                    <$> vd+    rd' = (\(Raw ci i x)      -> Raw (incC ci) i x)                    <$> rd+    rf' = (\(RawFace fidx fd) -> RawFace (incFIdx <$> fidx) (incF fd)) <$> rf++    incC                 :: ComponentId s -> ComponentId s+    incC (ComponentId i) = ComponentId $ i + nc++    incV              :: VertexId' s -> VertexId' s+    incV (VertexId i) = VertexId $ i + nv++    incD                  :: Dart s -> Dart s+    incD (Dart (Arc a) p) = Dart (Arc $ a + nd) p++    incFIdx (ci,fi) = (incC ci, fi)+      -- observe that the fi here is the fi with respect to its original graph. Hence,+      -- we do not want to increase those id's++    incF                 :: FaceData (Dart s) f -> FaceData (Dart s) f+    incF (FaceData hs f) = FaceData (incD <$> hs) f++    incFi                       :: FaceId' s -> FaceId' s+    incFi (FaceId (VertexId i)) = FaceId . VertexId $ i + nf+++--------------------------------------------------------------------------------++data Test = Test+data Id a = Id a+++triangle1 :: PlanarSubdivision Test () () Int Rational+triangle1 = (\pg -> fromSimplePolygon (Id Test) pg 1 0)+          $ trianglePG1+trianglePG1 = fromPoints . map ext $ [origin, Point2 200 0, Point2 200 200]+++triangle2 :: PlanarSubdivision Test () () Int Rational+triangle2 = (\pg -> fromSimplePolygon (Id Test) pg 2 0)+          $ trianglePG2+trianglePG2 = fromPoints . map ext $ [Point2 0 30, Point2 10 30, Point2 10 40]++++triangle4 :: PlanarSubdivision Test () () Int Rational+triangle4 = (\pg -> fromSimplePolygon (Id Test) pg 1 0)+          $ trianglePG4+trianglePG4 = fromPoints . map ext $ [Point2 400 400, Point2 600 400, Point2 600 600]++triangle3 :: PlanarSubdivision Test () () Int Rational+triangle3 = (\pg -> fromSimplePolygon (Id Test) pg 3 0)+          $ trianglePG3+trianglePG3 = fromPoints . map ext $ [Point2 401 530, Point2 410 530, Point2 410 540]+++myPS = embedAsHoleIn triangle2 const (mkFI 1) triangle1+       `merge`+       embedAsHoleIn triangle3 const (mkFI 1) triangle4+++mkFI :: Int -> FaceId' Test+mkFI  = FaceId . VertexId
+ src/Data/Geometry/PlanarSubdivision/Raw.hs view
@@ -0,0 +1,98 @@+{-# LANGUAGE TemplateHaskell #-}+--------------------------------------------------------------------------------+-- |+-- Module      :  Data.Geometry.PlnarSubdivision.Raw+-- Copyright   :  (C) Frank Staals+-- License     :  see the LICENSE file+-- Maintainer  :  Frank Staals+-- Description :  The 'Raw' building block used in a Planar Subdivision+--+--------------------------------------------------------------------------------+module Data.Geometry.PlanarSubdivision.Raw where++import           Control.Lens+import           Data.Aeson+import           Data.PlaneGraph (FaceId', Dart)+import qualified Data.Sequence as Seq+import           GHC.Generics (Generic)++--------------------------------------------------------------------------------++-- | Helper data type and type family to Wrap a proxy type.+data Wrap' s+type family Wrap (s :: k) :: k where+  Wrap s = Wrap' s++-- | ComponentId type+newtype ComponentId s = ComponentId { unCI :: Int }+  deriving (Show,Eq,Ord,Generic,Bounded,Enum,ToJSON,FromJSON)++--------------------------------------------------------------------------------++-- | Helper type for the data that we store in a planar subdivision+data Raw s ia a = Raw { _compId  :: !(ComponentId s)+                      , _idxVal  :: !ia+                      , _dataVal :: !a+                      } deriving (Eq,Show,Functor,Foldable,Traversable,Generic)++instance (FromJSON ia, FromJSON a) => FromJSON (Raw s ia a)+instance (ToJSON ia, ToJSON a) => ToJSON (Raw s ia a) where+  toEncoding = genericToEncoding defaultOptions++-- | get the dataVal of a Raw+dataVal :: Lens (Raw s ia a) (Raw s ia b) a b+dataVal = lens (\(Raw _ _ x) -> x) (\(Raw c i _) y -> Raw c i y)++--------------------------------------------------------------------------------++-- | The Face data consists of the data itself and a list of holes+data FaceData h f = FaceData { _holes :: (Seq.Seq h)+                             , _fData :: !f+                             } deriving (Show,Eq,Ord,Functor,Foldable,Traversable,Generic)+makeLenses ''FaceData++instance Bifunctor FaceData where+  bimap f g (FaceData hs x) = FaceData (fmap f hs) (g x)+++instance (FromJSON h, FromJSON f) => FromJSON (FaceData h f)+instance (ToJSON h, ToJSON f)     => ToJSON (FaceData h f) where+  toEncoding = genericToEncoding defaultOptions++--------------------------------------------------------------------------------++++-- | Face data, if the face is an inner face, store the component and+-- faceId of it.  If not, this face must be the outer face (and thus+-- we can find all the face id's it correponds to through the+-- FaceData).+data RawFace s f = RawFace { _faceIdx     :: !(Maybe (ComponentId s, FaceId' (Wrap s)))+                           , _faceDataVal :: !(FaceData (Dart s) f)+                           } deriving (Eq,Show,Functor,Foldable,Traversable,Generic)+makeLenses ''RawFace+++++-- -- | A FaceIdx is a pair of componentId and FaceId+-- data FaceIdx s = RawIdx !(ComponentId s) -- ^ component Id+--                         !(FaceId' (Wrap s)) -- ^ Face index inside the component+--                deriving (Eq,Show,Generic)++-- instance FromJSON (FaceIdx s)+-- instance ToJSON (FaceIdx s) where+--   toEncoding = genericToEncoding defaultOptions++-- data RawFace s a = RawFace { _internalFaceIn :: !(Maybe (FaceIdx s))+--                            , _externalFaceIn :: ![FaceIdx s]+--                            , _faceDataValue  :: !a+--                            } deriving (Eq,Show,Functor,Foldable,Traversable,Generic)++-- instance FromJSON f => FromJSON (RawFace s f)+-- instance ToJSON f => ToJSON (RawFace s f) where+--   toEncoding = genericToEncoding defaultOptions++-- -- | get the data value of a raw face.+-- faceDataVal :: Lens (RawFace s a) (RawFace s b) a b+-- faceDataVal = lens _faceDataValue (\(RawFace i es _) x -> RawFace i es x)
src/Data/Geometry/Point.hs view
@@ -29,6 +29,7 @@ import           Text.ParserCombinators.ReadP (ReadP, string,pfail) import           Text.ParserCombinators.ReadPrec (lift) import           Text.Read (Read(..),readListPrecDefault, readPrec_to_P,minPrec)+import           Test.QuickCheck(Arbitrary)   --------------------------------------------------------------------------------@@ -62,12 +63,13 @@               Just p -> pure p               _      -> pfail -deriving instance (Eq r, Arity d)     => Eq (Point d r)-deriving instance (Ord r, Arity d)    => Ord (Point d r)-deriving instance Arity d             => Functor (Point d)-deriving instance Arity d             => Foldable (Point d)-deriving instance Arity d             => Traversable (Point d)-deriving instance (Arity d, NFData r) => NFData (Point d r)+deriving instance (Eq r, Arity d)        => Eq (Point d r)+deriving instance (Ord r, Arity d)       => Ord (Point d r)+deriving instance Arity d                => Functor (Point d)+deriving instance Arity d                => Foldable (Point d)+deriving instance Arity d                => Traversable (Point d)+deriving instance (Arity d, NFData r)    => NFData (Point d r)+deriving instance (Arity d, Arbitrary r) => Arbitrary (Point d r)  type instance NumType (Point d r) = r type instance Dimension (Point d r) = d
src/Data/Geometry/Polygon.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE ScopedTypeVariables  #-} -------------------------------------------------------------------------------- -- | -- Module      :  Data.Geometry.Polygon@@ -11,8 +10,11 @@ -------------------------------------------------------------------------------- module Data.Geometry.Polygon where +import           Algorithms.Geometry.LinearProgramming.LP2DRIC+import           Algorithms.Geometry.LinearProgramming.Types import           Control.DeepSeq import           Control.Lens hiding (Simple)+import           Control.Monad.Random.Class import           Data.Bifoldable import           Data.Bifunctor import           Data.Bitraversable@@ -22,24 +24,31 @@ import           Data.Geometry.Boundary import           Data.Geometry.Box import           Data.Geometry.Line+import           Data.Geometry.HalfSpace(rightOf) import           Data.Geometry.LineSegment import           Data.Geometry.Point import           Data.Geometry.Properties import           Data.Geometry.Transformation+import           Data.Geometry.Triangle (Triangle(..), inTriangle) import           Data.Geometry.Vector+import qualified Data.List as List+import           Data.List.NonEmpty (NonEmpty(..)) import qualified Data.List.NonEmpty as NonEmpty-import           Data.Maybe (mapMaybe)-import           Data.Proxy-import           Data.Semigroup(sconcat)+import           Data.Maybe (mapMaybe, catMaybes)+import           Data.Ord (comparing)+import           Data.Semigroup (sconcat)+import           Data.Semigroup.Foldable import qualified Data.Sequence as Seq import           Data.Util import           Data.Vinyl.CoRec (asA) + -------------------------------------------------------------------------------- -- * Polygons  {- $setup >>> :{+-- import qualified Data.CircularSeq as C let simplePoly :: SimplePolygon () Rational     simplePoly = SimplePolygon . C.fromList . map ext $ [ point2 0 0                                                         , point2 10 0@@ -112,6 +121,14 @@ type instance IntersectionOf (Line 2 r) (Boundary (Polygon t p r)) =   '[Seq.Seq (Either (Point 2 r) (LineSegment 2 () r))] +type instance IntersectionOf (Point 2 r) (Polygon t p r) = [NoIntersection, Point 2 r]++instance (Fractional r, Ord r) => (Point 2 r) `IsIntersectableWith` (Polygon t p r) where+  nonEmptyIntersection = defaultNonEmptyIntersection+  q `intersects` pg = q `inPolygon` pg /= Outside+  q `intersect` pg | q `intersects` pg = coRec q+                   | otherwise         = coRec NoIntersection+ -- instance IsIntersectableWith (Line 2 r) (Boundary (Polygon t p r)) where --   nonEmptyIntersection _ _ (CoRec xs) = null xs --   l `intersect` (Boundary (SimplePolygon vs)) =@@ -172,9 +189,9 @@ -- they appear! polygonVertices                      :: Polygon t p r                                      -> NonEmpty.NonEmpty (Point 2 r :+ p)-polygonVertices (SimplePolygon vs)   = C.toNonEmpty vs+polygonVertices (SimplePolygon vs)   = toNonEmpty vs polygonVertices (MultiPolygon vs hs) =-  sconcat $ C.toNonEmpty vs NonEmpty.:| map polygonVertices hs+  sconcat $ toNonEmpty vs NonEmpty.:| map polygonVertices hs   -- | Creates a simple polygon from the given list of vertices.@@ -287,7 +304,7 @@      -- Given a line segment, compute the intersection point (if a point) with the     -- line l-    intersectionPoint = asA (Proxy :: Proxy (Point 2 r)) . (`intersect` l)+    intersectionPoint = asA @(Point 2 r) . (`intersect` l)      -- Count the number of intersections that the horizontal line through q     -- maxes with the polygon, that are strictly to the left and strictly to@@ -370,6 +387,75 @@     sum' = F.foldl' (^+^) zero  +-- | Pick a  point that is inside the polygon.+--+-- (note: if the polygon is degenerate; i.e. has <3 vertices, we report a+-- vertex of the polygon instead.)+--+-- pre: the polygon is given in CCW order+--+-- running time: \(O(n)\)+pickPoint    :: (Ord r, Fractional r) => Polygon p t r -> Point 2 r+pickPoint pg | isTriangle pg = centroid . SimplePolygon $ pg^.outerBoundary+             | otherwise     = let LineSegment' (p :+ _) (q :+ _) = findDiagonal pg+                               in p .+^ (0.5 *^ (q .-. p))++-- | Test if the polygon is a triangle+--+-- running time: \(O(1)\)+isTriangle :: Polygon p t r -> Bool+isTriangle = \case+    SimplePolygon vs   -> go vs+    MultiPolygon vs [] -> go vs+    MultiPolygon _  _  -> False+  where+    go vs = case toNonEmpty vs of+              (_ :| [_,_]) -> True+              _            -> False++-- | Find a diagonal of the polygon.+--+-- pre: the polygon is given in CCW order+--+-- running time: \(O(n)\)+findDiagonal    :: (Ord r, Fractional r) => Polygon t p r -> LineSegment 2 p r+findDiagonal pg = List.head . catMaybes . F.toList $ diags+     -- note that a diagonal is guaranteed to exist, so the usage of head is safe.+  where+    vs      = pg^.outerBoundary+    diags   = C.zip3LWith f (C.rotateL vs) vs (C.rotateR vs)+    f u v w = case ccw (u^.core) (v^.core) (w^.core) of+                CCW      -> Just $ findDiag u v w+                            -- v is a convex vertex, so find a diagonal+                            -- (either uw) or from v to a point inside the+                            -- triangle+                CW       -> Nothing -- v is a reflex vertex+                CoLinear -> Nothing -- colinear vertex!?++    -- we test if uw is a diagonal by figuring out if there is a vertex+    -- strictly inside the triangle t. If there is no such vertex then uw must+    -- be a diagonal (i.e. uw intersects the polygon boundary iff there is a+    -- vtx inside t).  If there are vertices inside the triangle, we find the+    -- one z furthest from the line(segment) uw. It then follows that vz is a+    -- diagonal. Indeed this is pretty much the argument used to prove that any+    -- polygon can be triangulated. See BKOS Chapter 3 for details.+    findDiag u v w = let t  = Triangle u v w+                         uw = ClosedLineSegment u w+                     in maybe uw (ClosedLineSegment v)+                      . safeMaximumOn (distTo $ supportingLine uw)+                      . filter (\(z :+ _) -> z `inTriangle` t == Inside)+                      . F.toList . polygonVertices+                      $ pg++    distTo l (z :+ _) = sqDistanceTo z l+++safeMaximumOn   :: Ord b => (a -> b) -> [a] -> Maybe a+safeMaximumOn f = \case+  [] -> Nothing+  xs -> Just $ List.maximumBy (comparing f) xs++ -- | Test if the outer boundary of the polygon is in clockwise or counter -- clockwise order. --@@ -428,3 +514,20 @@ numberVertices :: Polygon t p r -> Polygon t (SP Int p) r numberVertices = snd . bimapAccumL (\a p -> (a+1,SP a p)) (\a r -> (a,r)) 0   -- TODO: Make sure that this does not have the same issues as foldl vs foldl'++--------------------------------------------------------------------------------++-- | Test if a Simple polygon is star-shaped. Returns a point in the kernel+-- (i.e. from which the entire polygon is visible), if it exists.+--+--+-- \(O(n)\) expected time+isStarShaped    :: (MonadRandom m, Ord r, Fractional r)+                => SimplePolygon p r -> m (Maybe (Point 2 r))+isStarShaped (toClockwiseOrder -> pg) =+    solveBoundedLinearProgram $ LinearProgram c (F.toList hs)+  where+    c  = pg^.outerVertex 1.core.vector+    -- the first vertex is the intersection point of the two supporting lines+    -- bounding it, so the first two edges bound the shape in this sirection+    hs = fmap (rightOf . supportingLine) . outerBoundaryEdges $ pg
+ src/Data/Geometry/PrioritySearchTree.hs view
@@ -0,0 +1,145 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Data.Geometry.PrioritySearchTree+-- Copyright   :  (C) Frank Staals+-- License     :  see the LICENSE file+-- Maintainer  :  Frank Staals+--+-- Implements a linear size data structure for three-sided range+-- queries in \(\mathbb{R}^2\). See+--+-- McCreight, Edward (May 1985). "Priority search trees".+-- SIAM Journal on Scientific Computing. 14 (2): 257-276.+--+-- for more details.+--+--------------------------------------------------------------------------------+module Data.Geometry.PrioritySearchTree( PrioritySearchTree(..)+                                       , createTree+                                       , queryRange+                                       ) where++import           Algorithms.Geometry.ClosestPair.DivideAndConquer (mergeSortedListsBy)+import           Control.Lens+import           Data.BinaryTree+import           Data.Ext+import           Data.Geometry.Point+import           Data.List.NonEmpty (NonEmpty(..))+import qualified Data.List.NonEmpty as NonEmpty+import           Data.Ord (comparing, Down(..))+import           Data.Range+import qualified Data.Set as Set+import           Data.Util+--------------------------------------------------------------------------------++-- | Internal nodes store the max x-value from the left subtree and+-- the point that has globally the max-y coordinate.+data NodeData p r = NodeData { _splitPoint :: !r+                             , _maxVal     :: !(Maybe (Point 2 r :+ p))+                             } deriving (Show,Eq)++instance Bifunctor NodeData where+  bimap f g (NodeData x m) = NodeData (g x) ((bimap (fmap g) f) <$> m)++maxVal :: Lens' (NodeData p r) (Maybe (Point 2 r :+ p))+maxVal = lens _maxVal (\(NodeData x _) m -> NodeData x m)+++type LeafData p r = SP r [Point 2 r :+ p]++--------------------------------------------------------------------------------++-- | A priority search tree storing points in \(\mathbb{R}^2) that+-- have an additional payload of type p.+newtype PrioritySearchTree p r =+    PrioritySearchTree { _unPrioritySearchTree :: BinLeafTree (NodeData p r) (LeafData p r) }+  deriving (Show,Eq)++instance Bifunctor PrioritySearchTree where+  -- ^ note that this is not necessarily safe, as mapping over r can+  -- invalidate the invariants. Users are responsible for making sure+  -- this does not happen.+  bimap f g (PrioritySearchTree t) = PrioritySearchTree . bimap (bimap f g) h $ t+    where+      h = bimap g (map $ bimap (fmap g) f)++--------------------------------------------------------------------------------++-- | Creates a Priority Search Tree for 3-sided range queries of the+-- form \([x_l,x_r] \times [y,\infty)\).+--+-- the base tree will be static.+--+-- pre: all points have unique x-coordinates+--+-- running time: \(O(n\log n)\)+createTree     :: Ord r => NonEmpty (Point 2 r :+ p) -> PrioritySearchTree p r+createTree pts = PrioritySearchTree $ foldr insert t pts+  where+    t = view _1+      . foldUp (\(SP l k) _ (SP r m) -> SP (Node l (NodeData k Nothing) r) m)+               (\(Elem x) -> SP (Leaf (SP x [])) x)+      . asBalancedBinLeafTree . NonEmpty.fromList+      . Set.toAscList . Set.fromList -- remove duplicates + sort+      . map (^.core.xCoord) . NonEmpty.toList $ pts++-- | Inserts a point into the priority search tree+--+-- running time: \(O(\log n)\)+insert                          :: Ord r+                                => Point 2 r :+ p+                                -> BinLeafTree (NodeData p r) (LeafData p r)+                                -> BinLeafTree (NodeData p r) (LeafData p r)+insert p = \case+    Leaf (SP x ps)                                -> Leaf $ SP x (p:ps)+      -- TODO: In case we have multiple points with the same x-coord, these points+      -- are not really in decreasing y-order.+    Node l d r | py > d^?maxVal._Just.core.yCoord ->+                   node' l (d&maxVal .~ Just p) r (d^.maxVal)+                   -- push the existing point down+               | otherwise                 ->+                   node' l d                             r (Just p)+  where+    py = Just $ p^.core.yCoord++    node' l d@(NodeData k _) r = \case+      Nothing                      -> Node l d r -- no new insertion necessary anymore+      Just q | q^.core.xCoord <= k -> Node (insert q l) d r+             | otherwise           -> Node l d (insert q r)++++-- | Given a three sided range \([x_l,x_r],y\) report all points in+-- the range \([x_l,x_r] \times [y,\infty)\). The points are reported+-- in decreasing order of \(y\)-coordinate.+--+-- running time: \(O(\log n + k)\), where \(k\) is the number of reported points.+queryRange   :: Ord r+             => (Range r,r) -> PrioritySearchTree p r -> [Point 2 r :+ p]+queryRange q = queryRange' q . _unPrioritySearchTree++-- | Implementation fo the query function.+queryRange'           :: Ord r+                      => (Range r,r) -> BinLeafTree (NodeData p r) (LeafData p r)+                      -> [Point 2 r :+ p]+queryRange' q@(qr, y) = \case+    Leaf (SP x pts) | x `inRange` qr                     ->+                        takeWhile (\p -> p^.core.yCoord >= y) pts+                    | otherwise                          -> []+    Node _ (NodeData _ Nothing)  _                       -> []+      -- nothing stored here, or lower+    Node l (NodeData x (Just p)) r | p^.core.yCoord >= y -> mrep p <> merge (goL x l) (goR x r)+                                   | otherwise           -> []+                                     -- all stuff below here has lower+                                     -- y-coord, so outside the range.+  where+    mrep p | (p^.core.xCoord) `inRange` qr = [p]+           | otherwise                     = []++    goL x t' | qr^.lower <= Closed x = queryRange' q t'+             | otherwise             = []++    goR x t' | Open x < qr^.upper    = queryRange' q t'+             | otherwise             = []++    merge = mergeSortedListsBy $ comparing (Down . (^.core.yCoord))
src/Data/Geometry/Properties.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE ImpredicativeTypes #-} {-# LANGUAGE UnicodeSyntax #-} {-# LANGUAGE DefaultSignatures #-}@@ -13,15 +12,15 @@ -- Intersection types. -- ---------------------------------------------------------------------------------module Data.Geometry.Properties where+module Data.Geometry.Properties( module Data.Intersection+                               , Dimension+                               , NumType+                               ) where -import Data.Maybe (isNothing)-import Data.Proxy-import Data.Vinyl.CoRec-import Data.Vinyl.Core-import Data.Vinyl.Functor-import Data.Vinyl.Lens import GHC.TypeLits+import Data.Ext+import Data.Intersection+import Data.Range  ------------------------------------------------------------------------------- @@ -32,59 +31,19 @@ -- | A type family for types that have an associated numeric type. type family NumType t :: * -type instance NumType [t] = NumType t+-------------------------------------------------------------------------------- --- | A simple data type expressing that there are no intersections-data NoIntersection = NoIntersection deriving (Show,Read,Eq,Ord) --- | The result of interesecting two geometries is a CoRec,-type Intersection g h = CoRec Identity (IntersectionOf g h)+type instance NumType   (core :+ ext) = NumType   core+type instance Dimension (core :+ ext) = Dimension core --- | The type family specifying the list of possible result types of an--- intersection.-type family IntersectionOf g h :: [*]+type instance NumType [t] = NumType t+type instance NumType (Range a) = a --- | Helper to produce a corec-coRec :: (a ∈ as) => a -> CoRec Identity as-coRec = CoRec . Identity  -class IsIntersectableWith g h where-  intersect :: g -> h -> Intersection g h -  -- | g `intersects` h  <=> The intersection of g and h is non-empty.-  ---  -- The default implementation computes the intersection of g and h,-  -- and uses nonEmptyIntersection to determine if the intersection is-  -- non-empty.-  intersects :: g -> h -> Bool-  g `intersects` h = nonEmptyIntersection (Identity g) (Identity h) $ g `intersect` h -  -- | Helper to implement `intersects`.-  nonEmptyIntersection :: proxy g -> proxy h -> Intersection g h -> Bool-  {-# MINIMAL intersect, nonEmptyIntersection #-}--  default nonEmptyIntersection :: ( NoIntersection ∈ IntersectionOf g h-                                  , RecApplicative (IntersectionOf g h)-                                  )-                                  => proxy g -> proxy h -> Intersection g h -> Bool-  nonEmptyIntersection = defaultNonEmptyIntersection----- | When using IntersectionOf we may need some constraints that are always--- true anyway.-type AlwaysTrueIntersection g h = RecApplicative (IntersectionOf g h)----- | Returns True iff the result is *not* a NoIntersection-defaultNonEmptyIntersection :: forall g h proxy.-                            ( NoIntersection ∈ IntersectionOf g h-                            , RecApplicative (IntersectionOf g h)-                            )-                            => proxy g -> proxy h -> Intersection g h -> Bool-defaultNonEmptyIntersection _ _ = isNothing . asA (Proxy :: Proxy NoIntersection)-- -- type IsAlwaysTrueFromEither a b = (VTL.RIndex b [a,b] ~ ((VTL.S VTL.Z))) --                                   -- VTL.RIndex b [a,b] ~ ((VTL.S VTL.Z))(b  ∈ [a,b]) @@ -104,7 +63,7 @@ -- fromEither' (Left x)  = coRec x -- fromEither' (Right x) = coRec x -type family Union g h :: *+-- type family Union g h :: * -class IsUnionableWith g h where-  union :: g -> h -> Union g h+-- class IsUnionableWith g h where+--   union :: g -> h -> Union g h
+ src/Data/Geometry/RangeTree.hs view
@@ -0,0 +1,137 @@+{-# LANGUAGE UndecidableInstances #-}+module Data.Geometry.RangeTree where++import           Control.Lens hiding (element)+import           Data.BinaryTree (Measured(..))+import           Data.Ext+import qualified Data.Foldable as F+import           Data.Geometry.Point+import qualified Data.Geometry.RangeTree.Generic as GRT+import           Data.Geometry.RangeTree.Measure+import           Data.Geometry.Vector+import           Data.List.NonEmpty (NonEmpty(..))+import qualified Data.List.NonEmpty as NonEmpty+import           Data.Proxy+import           Data.Range+import           Data.Semigroup.Foldable+import           Data.Vector.Fixed.Cont (Peano, PeanoNum(..))+import           GHC.TypeLits+import           Prelude hiding (last,init,head)++--------------------------------------------------------------------------------++type RangeTree d = RT d d++newtype RT i d v p r =+  RangeTree { _unRangeTree :: GRT.RangeTree (Assoc i d v p r) (Leaf i d v p r) r }++deriving instance (Show r, Show (Assoc i d v p r), Show (Leaf i d v p r)) => Show (RT i d v p r)+deriving instance (Eq r,   Eq   (Assoc i d v p r), Eq   (Leaf i d v p r)) => Eq   (RT i d v p r)++newtype Leaf i d v p r = Leaf { _getPts :: [Point d r :+ p]} deriving (Semigroup,Monoid)++deriving instance (Show r, Show p, Arity d) => Show (Leaf i d v p r)+deriving instance (Eq r, Eq p,     Arity d) => Eq   (Leaf i d v p r)+++type family AssocT i d v p r where+  AssocT 1 d v p r = v (Point d r :+ p)+  AssocT 2 d v p r = Maybe (RT 1 d v p r)++newtype Assoc i d v p r = Assoc { unAssoc :: AssocT i d v p r }++deriving instance Show (AssocT i d v p r) => Show (Assoc i d v p r)+deriving instance Eq   (AssocT i d v p r) => Eq   (Assoc i d v p r)+++type RTMeasure v d p r = (LabeledMeasure v, Semigroup (v (Point d r :+ p)))++instance RTMeasure v d p r => Semigroup (Assoc 1 d v p r) where+  (Assoc l) <> (Assoc r) = Assoc $ l <> r++instance (RTMeasure v d p r, Ord r, 1 <= d, Arity d) => Semigroup (Assoc 2 d v p r) where+  (Assoc l) <> (Assoc r) = Assoc . createRangeTree'' $ toList l <> toList r+    where+      toList = maybe [] (F.toList . toAscList)+      createRangeTree'' = fmap createRangeTree1 . NonEmpty.nonEmpty++++instance (RTMeasure v d p r, Ord r, 1 <= d, Arity d) => Monoid (Assoc 2 d v p r) where+  mempty = Assoc Nothing++----------------------------------------++instance ( RTMeasure v d p r+         ) => Measured (Assoc 1 d v p r) (Leaf 1 d v p r) where+  measure (Leaf pts) = Assoc . labeledMeasure $ pts++instance ( RTMeasure v d p r, Ord r, 1 <= d, Arity d+         ) => Measured (Assoc 2 d v p r) (Leaf 2 d v p r) where+  measure (Leaf pts) = Assoc . createRangeTree'' $ pts+    where+      createRangeTree'' = fmap createRangeTree1 . NonEmpty.nonEmpty++----------------------------------------++createRangeTree' :: (Ord r, RTMeasure v d p r+                   -- , Arity d, Arity (d+1), d ~ (d' + 1), Arity d'+                   -- , Measured (Assoc d v p r) (Leaf d v p r)+                   )+                 => [Point d r :+ p] -> Maybe (RT i d v p r)+createRangeTree' = fmap createRangeTree . NonEmpty.nonEmpty+++createRangeTree :: (Ord r, RTMeasure v d p r+                   -- , Arity d, Arity (d+1), d ~ (d' + 1), Arity d'+                   -- , Measured (Assoc d v p r) (Leaf d v p r)+                   )+                => NonEmpty (Point d r :+ p) -> RT i d v p r+createRangeTree = undefined+-- RangeTree . GRT.createTree+--                 . fmap (\p -> last (p^.core.vector) :+ Leaf [p])+++--------------------------------------------------------------------------------++-- | Gets all points in the range tree+toAscList :: RT i d v p r -> [Point d r :+ p]+toAscList = concatMap (^.extra.to _getPts) . F.toList . GRT.toAscList . _unRangeTree+++--------------------------------------------------------------------------------++createRangeTree1 :: (Ord r, RTMeasure v d p r, 1 <= d, Arity d)+                 => NonEmpty (Point d r :+ p) -> RT 1 d v p r+createRangeTree1 = RangeTree . GRT.createTree+                . fmap (\p -> head (p^.core.vector) :+ Leaf [p])++createRangeTree2 :: forall v d r p. (Ord r, RTMeasure v d p r, Arity d, 2 <= d+                                    , 1 <= d -- this one is kind of silly+                 ) => NonEmpty (Point d r :+ p) -> RT 2 d v p r+createRangeTree2 = RangeTree . GRT.createTree+                 . fmap (\p -> p^.core.coord (Proxy :: Proxy 2) :+ Leaf [p])++--------------------------------------------------------------------------------+-- * Querying+++search   :: ( Ord r, Monoid (v (Point d r :+ p)), Query i d)+         => Vector d (Range r) -> RT i d v p r -> v (Point d r :+ p)+search r = mconcat . search' r+++class (i <= d, Arity d) => Query i d where+  search' :: Ord r => Vector d (Range r) -> RT i d v p r -> [v (Point d r :+ p)]++instance (1 <= d, Arity d) => Query 1 d where+  search' qr = map unAssoc . GRT.search' r . _unRangeTree+    where+      r = qr^.element (Proxy :: Proxy 0)++instance ( 1 <= d, i <= d, Query (i-1) d, Arity d+         , i ~ 2+         ) => Query 2 d where+  search' qr = concatMap (maybe [] (search' qr) . unAssoc) . GRT.search' r . _unRangeTree+    where+      r = qr^.element (Proxy :: Proxy (i-1))
+ src/Data/Geometry/RangeTree/Generic.hs view
@@ -0,0 +1,149 @@+module Data.Geometry.RangeTree.Generic where++import           Control.Lens+import           Data.BinaryTree+import           Data.Ext+import           Data.Geometry.Point+import           Data.Geometry.Properties+import           Data.Geometry.RangeTree.Measure+import           Data.List.NonEmpty (NonEmpty(..))+import qualified Data.List.NonEmpty as NonEmpty+import           Data.Range+import           Data.Semigroup+import           Data.Semigroup.Foldable+import qualified Data.Set as Set+import           Data.Util++--------------------------------------------------------------------------------++data NodeData v r = NodeData { _minVal     :: !(Min r)+                             , _maxVal     :: !(Max r)+                             , _assoc      :: !v+                             } deriving (Show,Eq,Functor)++instance (Semigroup v, Ord r) => Semigroup (NodeData v r) where+  NodeData mi ma v <> NodeData mi' ma' v' = NodeData (mi <> mi') (ma <> ma') (v <> v')+++-- | A generic (1D) range tree. The 'r' parameter indicates the type+-- of the coordinates of the points. The 'q' represents any associated+-- data values with those points (stored in the leaves), and the 'v'+-- types represents the data stored at internal nodes.+newtype RangeTree v q r =+  RangeTree { _unRangeTree :: BinLeafTree (NodeData v r) (NodeData (v,q) r) }+    deriving (Show,Eq)++++--------------------------------------------------------------------------------++-- | Creates a range tree+createTree   :: ( Ord r+                , Measured v p+                , Semigroup p+                )+             => NonEmpty (r :+ p)+             -> RangeTree v p r+createTree = createTree'+           . fmap (\pts -> let x =  pts^.to NonEmpty.head.core+                           in x :+ (sconcat . fmap (^.extra) $ pts))+           . NonEmpty.groupAllWith1 (^.core) -- sort and group on r value++-- | pre: input is sorted and grouped by x-coord+createTree'     :: (Ord r, Measured v p)+                => NonEmpty (r :+ p)+                -> RangeTree v p r+createTree' pts = RangeTree t+  where+    t = view _1+      . foldUp (\(SP l dl) _ (SP r dr) -> let d = dl <> dr in SP (Node l d r) d+               )+               (\(Elem (x :+ ld)) -> let v = measure ld+                                     in SP (Leaf $ NodeData (Min x) (Max x) (v,ld))+                                           (NodeData (Min x) (Max x) v)+               )+      . asBalancedBinLeafTree $ pts++--------------------------------------------------------------------------------+-- * Converting to a List++-- | Lists all points in increasing order+--+-- running time: \(O(n)\)+toAscList :: RangeTree v p r -> NonEmpty (r :+ p)+toAscList = fmap (\(NodeData (Min x) _ (_,d)) -> x :+ d) . toNonEmpty . _unRangeTree++--------------------------------------------------------------------------------+-- * Querying x++-- | Range search+--+-- running time: \(O(\log n)\)+search    :: (Ord r, Monoid v) => Range r -> RangeTree v p r -> v+search qr = mconcat . search' qr++-- | Range search, report the (associated data structures of the)+-- \(O(\log n)\) nodes that form the disjoint union of the range we+-- are querying with.+--+-- running time: \(O(\log n)\)+search'    :: Ord r+           => Range r -> RangeTree v p r -> [v]+search' qr = search'' qr . _unRangeTree++-- | The actual search+search''    :: Ord r+            => Range r+            -> BinLeafTree (NodeData v r) (NodeData (v,q) r)+            -> [v]+search'' qr t = case t of+    Leaf (NodeData _ _ (v,_)) | qr `covers` rangeOf t -> [v]+                              | otherwise             -> []+    Node l (NodeData _ _ v) r | qr `covers` rangeOf t -> [v]+                              | otherwise             -> msearch l <> msearch r+  where+    msearch t' | qr `intersects` rangeOf t' = search'' qr t'+               | otherwise                  = []+++-- | Helper function to get the range of  a binary leaf tree+rangeOf              :: BinLeafTree (NodeData v r) (NodeData v' r) -> Range r+rangeOf (Leaf d)     = rangeOf' d+rangeOf (Node _ d _) = rangeOf' d++-- | Get the range of a node+rangeOf'                                :: NodeData v r -> Range r+rangeOf' (NodeData (Min mi) (Max ma) _) = ClosedRange mi ma+++--------------------------------------------------------------------------------+-- * Updates++-- support inserting and deleting points, assuming that the x-coord already exists.+++--------------------------------------------------------------------------------+++createReportingTree :: Ord r => NonEmpty (r :+ [p]) -> RangeTree (Report p) (Report p) r+createReportingTree = createTree . fmap (&extra %~ Report)++report    :: (Ord r) => Range r -> RangeTree (Report p) q r -> [p]+report qr = reportList . search qr+++----------------------------------------++newtype CountOf p = CountOf [p]+  deriving (Show,Eq,Ord,Functor,Foldable,Semigroup,Monoid)++instance Measured (Count p) (CountOf p) where+  measure (CountOf xs) = Count $ length xs++createCountingTree :: Ord r => NonEmpty (r :+ [p]) -> RangeTree (Count p) (CountOf p) r+createCountingTree = createTree . fmap (&extra %~ CountOf)++-- | Perform a counting query+--+count    :: Ord r => Range r -> RangeTree (Count p) q r -> Int+count qr = getCount . search qr
+ src/Data/Geometry/RangeTree/Measure.hs view
@@ -0,0 +1,59 @@+module Data.Geometry.RangeTree.Measure where++import           Data.BinaryTree(Measured(..))+import Data.Functor.Product(Product(..))+import Data.Functor.Classes++--------------------------------------------------------------------------------++class LabeledMeasure v where+  labeledMeasure :: [a] -> v a++--------------------------------------------------------------------------------++newtype Report p = Report { reportList :: [p] }+  deriving (Show,Eq,Ord,Functor,Foldable,Semigroup,Monoid,Show1,Eq1)++instance Measured (Report p) (Report p) where+  measure = id++instance LabeledMeasure Report where+  labeledMeasure = Report++--------------------------------------------------------------------------------++newtype Count a = Count { getCount :: Int } deriving (Show,Read,Eq,Ord)++instance Show1 Count where+  liftShowsPrec _  _ = showsPrec+instance Eq1 Count where+  liftEq _ (Count a) (Count b) = a == b++instance LabeledMeasure Count where+  labeledMeasure = Count . length++instance Monoid (Count a) where+  mempty = Count 0++instance Semigroup (Count a) where+  (Count l) <> (Count r) = Count $ l + r++--------------------------------------------------------------------------------++type (:*:) l r = Product l r++instance (LabeledMeasure l, LabeledMeasure r) => LabeledMeasure (l :*: r) where+  labeledMeasure xs = Pair (labeledMeasure xs) (labeledMeasure xs)++instance (Semigroup (l a), Semigroup (r a)) => Semigroup ((l :*: r) a) where+  (Pair l r) <> (Pair l' r') = Pair (l <> l') (r <> r')++instance (Monoid (l a), Monoid (r a)) => Monoid ((l :*: r) a) where+  mempty = Pair mempty mempty++++-- newtype All (ls :: [* -> *]) a = All (Map ls a)++-- type family Map (ls :: [* -> *]) (a :: *) where+--   Map '[]
src/Data/Geometry/SegmentTree/Generic.hs view
@@ -122,9 +122,9 @@     pts = nub' . NonEmpty.sort . NonEmpty.fromList . concatMap endPoints $ is     nub' = fmap NonEmpty.head . NonEmpty.group1 --- | lists all intervals-toList :: SegmentTree v r -> [i]-toList = undefined+-- -- | lists all intervals+-- toList :: SegmentTree v r -> [i]+-- toList = undefined  -------------------------------------------------------------------------------- -- * Searching@@ -209,7 +209,7 @@           => i -> SegmentTree v r -> SegmentTree v r delete i (SegmentTree t) = SegmentTree $ delete' t   where-    (Range a b) = toRange i+    (Range _ b) = toRange i      delete' (Leaf ld) = Leaf $ ld&leafAssoc %~ deleteAssoc i     delete' (Node l nd@(_splitPoint -> m) r)
src/Data/Geometry/SubLine.hs view
@@ -1,5 +1,15 @@ {-# LANGUAGE TemplateHaskell  #-} {-# LANGUAGE UndecidableInstances  #-}+--------------------------------------------------------------------------------+-- |+-- Module      :  Data.Geometry.SubLine+-- Copyright   :  (C) Frank Staals+-- License     :  see the LICENSE file+-- Maintainer  :  Frank Staals+--+-- SubLine; a part of a line+--+-------------------------------------------------------------------------------- module Data.Geometry.SubLine where  import           Control.Lens@@ -15,7 +25,7 @@ import           Data.UnBounded import           Data.Vinyl import           Data.Vinyl.CoRec-+import           Test.QuickCheck(Arbitrary(..))  import           Data.Ratio @@ -38,6 +48,9 @@ deriving instance Arity d                   => F.Foldable (SubLine d p s) deriving instance Arity d                   => T.Traversable (SubLine d p s) +instance (Arbitrary r, Arbitrary p, Arbitrary s, Arity d, Ord r, Ord s, Ord p, Num r)+         => Arbitrary (SubLine d p s r) where+  arbitrary = SubLine <$> arbitrary <*> arbitrary  -- | Annotate the subRange with the actual ending points fixEndPoints    :: (Num r, Arity d) => SubLine d p r r -> SubLine d (Point d r :+ p) r r
src/Data/Geometry/Vector.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE UndecidableInstances  #-}+{-# OPTIONS_GHC -fno-warn-orphans #-} -------------------------------------------------------------------------------- -- | -- Module      :  Data.Geometry.Vector@@ -34,12 +36,17 @@ import           Linear.Affine (Affine(..), qdA, distanceA) import           Linear.Metric (dot,norm,signorm) import           Linear.Vector as LV+import           Test.QuickCheck  --------------------------------------------------------------------------------  type instance Dimension (Vector d r) = d-type instance NumType (Vector d r) =r+type instance NumType (Vector d r) = r +instance (Arbitrary r, Arity d) => Arbitrary (Vector d r) where+  arbitrary = vectorFromListUnsafe <$> infiniteList++ -- | Test if v is a scalar multiple of u. -- -- >>> Vector2 1 1 `isScalarMultipleOf` Vector2 10 10@@ -59,6 +66,8 @@ isScalarMultipleOf       :: (Eq r, Fractional r, Arity d)                          => Vector d r -> Vector d r -> Bool u `isScalarMultipleOf` v = isJust $ scalarMultiple u v+{-# SPECIALIZE+    isScalarMultipleOf :: (Eq r, Fractional r) => Vector 2 r -> Vector 2 r -> Bool  #-}  -- | Get the scalar labmda s.t. v = lambda * u (if it exists) scalarMultiple     :: (Eq r, Fractional r, Arity d)@@ -66,6 +75,8 @@ scalarMultiple u v       | allZero u || allZero v = Just 0       | otherwise              = scalarMultiple' u v+{-# SPECIALIZE+    scalarMultiple :: (Eq r, Fractional r) => Vector 2 r -> Vector 2 r -> Maybe r #-}   -- -- | Helper function for computing the scalar multiple. The result is a pair@@ -83,6 +94,7 @@  allZero :: (Arity d, Eq r, Num r) => Vector d r -> Bool allZero = F.all (== 0)+{-# SPECIALIZE allZero :: (Eq r, Num r) => Vector 2 r -> Bool #-}   data ScalarMultiple r = No | Maybe | Yes r deriving (Eq,Show)@@ -113,6 +125,8 @@     g No      = Nothing     g Maybe   = error "scalarMultiple': found a Maybe, which means the vectors either have length zero, or one of them is all Zero!"     g (Yes x) = Just x+{-# SPECIALIZE+    scalarMultiple' :: (Eq r, Fractional r) => Vector 2 r -> Vector 2 r -> Maybe r #-}   --------------------------------------------------------------------------------
src/Data/Geometry/Vector/VectorFamily.hs view
@@ -140,8 +140,11 @@  destruct   :: (Arity d, Arity (d + 1))            => Vector (d + 1) r -> (r, Vector d r)-destruct v = (head $ F.toList v, vectorFromListUnsafe . tail $ F.toList v)+destruct v = (L.head $ F.toList v, vectorFromListUnsafe . tail $ F.toList v)   -- FIXME: this implementaion of tail is not particularly nice++head   :: (Arity d, 1 <= d) => Vector d r -> r+head = view $ element (C :: C 0)  -------------------------------------------------------------------------------- -- * Indexing vectors
− src/Data/LSeq.hs
@@ -1,310 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}------------------------------------------------------------------------------------ |--- Module      :  Data.LSeq--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals--- Description :  Wrapper around Data.Sequence with type level length annotation.-------------------------------------------------------------------------------------module Data.LSeq( LSeq-                , toSeq-                , empty-                , fromList-                , fromNonEmpty-                , fromSeq-                , toNonEmpty--                , (<|), (|>)-                , (><)-                , eval--                , index-                , adjust-                , partition-                , mapWithIndex-                , take-                , drop-                , unstableSort, unstableSortBy-                , head, last-                , append--                , ViewL(..)-                , viewl-                , pattern (:<|)--                , pattern (:<<)-                , pattern EmptyL--                , ViewR(..)-                , viewr-                , pattern (:|>)---                , promise-                , forceLSeq-                ) where--import           Control.DeepSeq-import           Control.Lens ((%~), (&), (<&>), (^?), bimap)-import           Control.Lens.At (Ixed(..), Index, IxValue)-import qualified Data.Foldable as F-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Maybe (fromJust)-import qualified Data.Sequence as S-import           GHC.Generics (Generic)-import qualified Data.Traversable as Tr-import           GHC.TypeLits-import           Prelude hiding (drop,take,head,last)-------------------------------------------------------------------------------------- $setup--- >>> :{--- import Data.Proxy--- :}------ | LSeq n a certifies that the sequence has *at least* n items-newtype LSeq (n :: Nat) a = LSeq (S.Seq a)-                          deriving (Show,Read,Eq,Ord,Foldable,Functor,Traversable-                                   ,Generic,NFData)--toSeq          :: LSeq n a -> S.Seq a-toSeq (LSeq s) = s--instance Semigroup (LSeq n a) where-  (LSeq s) <> (LSeq s') = LSeq (s <> s')--instance Monoid (LSeq 0 a) where-  mempty = empty-  mappend = (<>)----type instance Index   (LSeq n a) = Int-type instance IxValue (LSeq n a) = a-instance Ixed (LSeq n a) where-  ix i f s@(LSeq xs)-    | 0 <= i && i < S.length xs = f (S.index xs i) <&> \x -> LSeq $ S.update i x xs-    | otherwise                 = pure s--empty :: LSeq 0 a-empty = LSeq S.empty--(<|) :: a -> LSeq n a -> LSeq (1 + n) a-x <| xs = LSeq (x S.<| toSeq xs)--(|>)    :: LSeq n a -> a -> LSeq (1 + n) a-xs |> x = LSeq (toSeq xs S.|> x)--infixr 5 <|-infixl 5 |>--(><) :: LSeq n a -> LSeq m a -> LSeq (n + m) a-xs >< ys = LSeq (toSeq xs <> toSeq ys)--infix 5 ><---eval :: forall proxy n m a. KnownNat n => proxy n -> LSeq m a -> Maybe (LSeq n a)-eval n (LSeq xs)-  | toInteger (S.length xs) >= natVal n = Just $ LSeq xs-  | otherwise                           = Nothing-------- | Promises that the length of this LSeq is actually n. This is not--- checked.------ This function should be a noop-promise :: LSeq m a -> LSeq n a-promise = LSeq . toSeq----- | Forces the first n elements of the LSeq-forceLSeq   :: KnownNat n => proxy n -> LSeq m a -> LSeq n a-forceLSeq n = promise . go (fromInteger $ natVal n)-  where-    -- forces the Lseq for n' positions-    go      :: Int -> LSeq m a -> LSeq m a-    go n' s | n' <= l    = s-            | otherwise  = error msg-      where-        l   = S.length . S.take n' . toSeq $ s-        msg = "forceLSeq: too few elements. expected " <> show n' <> " but found " <> show l----toNonEmpty :: LSeq (1 + n) a -> NonEmpty.NonEmpty a-toNonEmpty = NonEmpty.fromList . F.toList---- | appends two sequences.----append         :: LSeq n a -> LSeq m a -> LSeq (n + m) a-sa `append` sb = LSeq $ (toSeq sa) <> toSeq sb-------------------------------------------------------------------------------------- | get the element with index i, counting from the left and starting at 0.--- O(log(min(i,n-i)))-index     :: LSeq n a -> Int -> a-index s i = fromJust $ s^?ix i--adjust       :: (a -> a) -> Int -> LSeq n a -> LSeq n a-adjust f i s = s&ix i %~ f---partition   :: (a -> Bool) -> LSeq n a -> (LSeq 0 a, LSeq 0 a)-partition p = bimap LSeq LSeq . S.partition p . toSeq--mapWithIndex   :: (Int -> a -> b) -> LSeq n a -> LSeq n b-mapWithIndex f = wrapUnsafe (S.mapWithIndex f)--take   :: Int -> LSeq n a -> LSeq 0 a-take i = wrapUnsafe (S.take i)--drop   :: Int -> LSeq n a -> LSeq 0 a-drop i = wrapUnsafe (S.drop i)---unstableSortBy   :: (a -> a -> Ordering) -> LSeq n a -> LSeq n a-unstableSortBy f = wrapUnsafe (S.unstableSortBy f)--unstableSort :: Ord a => LSeq n a -> LSeq n a-unstableSort = wrapUnsafe (S.unstableSort)---wrapUnsafe :: (S.Seq a -> S.Seq b) -> LSeq n a -> LSeq m b-wrapUnsafe f = LSeq . f . toSeq------------------------------------------------------------------------------------fromSeq :: S.Seq a -> LSeq 0 a-fromSeq = LSeq--fromList :: Foldable f => f a -> LSeq 0 a-fromList = LSeq . S.fromList . F.toList--fromNonEmpty :: NonEmpty.NonEmpty a -> LSeq 1 a-fromNonEmpty = LSeq . S.fromList . F.toList-------------------------------------------------------------------------------------data ViewL n a where-  (:<) :: a -> LSeq n a -> ViewL (1 + n) a--infixr 5 :<--instance Semigroup (ViewL n a) where-  (x :< xs) <> (y :< ys) = x :< LSeq (toSeq xs <> (y S.<| toSeq ys))--deriving instance Show a => Show (ViewL n a)-instance Functor (ViewL n) where-  fmap = Tr.fmapDefault-instance Foldable (ViewL n) where-  foldMap = Tr.foldMapDefault-instance Traversable (ViewL n) where-  traverse f (x :< xs) = (:<) <$> f x <*> traverse f xs-instance Eq a => Eq (ViewL n a) where-  s == s' = F.toList s == F.toList s'-instance Ord a => Ord (ViewL n a) where-  s `compare` s' = F.toList s `compare` F.toList s'---viewl :: LSeq (1 + n) a -> ViewL (1 + n) a-viewl xs = let ~(x S.:< ys) = S.viewl $ toSeq xs in x :< LSeq ys--viewl'    :: LSeq (1 + n) a -> (a, LSeq n a)-viewl' xs = let ~(x S.:< ys) = S.viewl $ toSeq xs in (x,LSeq ys)--infixr 5 :<|--pattern (:<|)    :: a -> LSeq n a -> LSeq (1 + n) a-pattern x :<| xs <- (viewl' -> (x,xs)) -- we need the coerce unfortunately-  where-    x :<| xs = x <| xs-{-# COMPLETE (:<|) #-}----infixr 5 :<<--pattern (:<<)    :: a -> LSeq 0 a -> LSeq n a-pattern x :<< xs <- (viewLSeq -> Just (x,xs))--pattern EmptyL   :: LSeq n a-pattern EmptyL   <- (viewLSeq -> Nothing)--viewLSeq          :: LSeq n a -> Maybe (a,LSeq 0 a)-viewLSeq (LSeq s) = case S.viewl s of-                      S.EmptyL    -> Nothing-                      (x S.:< xs) -> Just (x,LSeq xs)-------------------------------------------------------------------------------------data ViewR n a where-  (:>) :: LSeq n a -> a -> ViewR (1 + n) a--infixl 5 :>--instance Semigroup (ViewR n a) where-  (xs :> x) <> (ys :> y) = LSeq ((toSeq xs S.|> x) <> toSeq ys) :> y--deriving instance Show a => Show (ViewR n a)-instance Functor (ViewR n) where-  fmap = Tr.fmapDefault-instance Foldable (ViewR n) where-  foldMap = Tr.foldMapDefault-instance Traversable (ViewR n) where-  traverse f (xs :> x) = (:>) <$> traverse f xs <*> f x-instance Eq a => Eq (ViewR n a) where-  s == s' = F.toList s == F.toList s'-instance Ord a => Ord (ViewR n a) where-  s `compare` s' = F.toList s `compare` F.toList s'--viewr    :: LSeq (1 + n) a -> ViewR (1 + n) a-viewr xs = let ~(ys S.:> x) = S.viewr $ toSeq xs in LSeq ys :> x--viewr'    :: LSeq (1 + n) a -> (LSeq n a, a)-viewr' xs = let ~(ys S.:> x) = S.viewr $ toSeq xs in (LSeq ys, x)--infixl 5 :|>--pattern (:|>)    :: forall n a. LSeq n a -> a -> LSeq (1 + n) a-pattern xs :|> x <- (viewr' -> (xs,x))-  where-    xs :|> x = xs |> x-{-# COMPLETE (:|>) #-}-------------------------------------------------------------------------------------- | Gets the first element of the LSeq------ >>> head $ forceLSeq (Proxy :: Proxy 3) $ fromList [1,2,3]--- 1-head           :: LSeq (1 + n) a -> a-head (x :<| _) = x---- s = let (x :< _) = viewl s in x---- | Get the last element of the LSeq------ >>> last $ forceLSeq (Proxy :: Proxy 3) $ fromList [1,2,3]--- 3-last           :: LSeq (1 + n) a -> a-last (_ :|> x) = x---- testL = (eval (Proxy :: Proxy 2) $ fromList [1..5])---- testL' :: LSeq 2 Integer--- testL' = fromJust testL---- test            :: Show a => LSeq (1 + n) a -> String--- test (x :<| xs) = show x ++ show xs
− src/Data/OrdSeq.hs
@@ -1,189 +0,0 @@-module Data.OrdSeq where---import           Control.Lens (bimap)-import qualified Data.FingerTree as FT-import           Data.FingerTree hiding (null, viewl, viewr)-import qualified Data.Foldable as F-import           Data.Maybe------------------------------------------------------------------------------------data Key a = NoKey | Key { getKey :: !a } deriving (Show,Eq,Ord)--instance Semigroup (Key a) where-  k <> NoKey = k-  _ <> k     = k--instance Monoid (Key a) where-  mempty = NoKey-  k `mappend` k' = k <> k'--liftCmp                     :: (a -> a -> Ordering) -> Key a -> Key a -> Ordering-liftCmp _   NoKey   NoKey   = EQ-liftCmp _   NoKey   (Key _) = LT-liftCmp _   (Key _) NoKey   = GT-liftCmp cmp (Key x) (Key y) = x `cmp` y----newtype Elem a = Elem { getElem :: a } deriving (Eq,Ord,Traversable,Foldable,Functor)--instance Show a => Show (Elem a) where-  show (Elem x) = "Elem " <> show x---newtype OrdSeq a = OrdSeq { _asFingerTree :: FingerTree (Key a) (Elem a) }-                   deriving (Show,Eq)--instance Semigroup (OrdSeq a) where-  (OrdSeq s) <> (OrdSeq t) = OrdSeq $ s `mappend` t--instance Monoid (OrdSeq a) where-  mempty = OrdSeq mempty-  mappend = (<>)--instance Foldable OrdSeq where-  foldMap f = foldMap (foldMap f) . _asFingerTree-  null      = null . _asFingerTree-  length    = length . _asFingerTree-  minimum   = fromJust . lookupMin-  maximum   = fromJust . lookupMax--instance Measured (Key a) (Elem a) where-  measure (Elem x) = Key x---type Compare a = a -> a -> Ordering---- | Insert into a monotone OrdSeq.------ pre: the comparator maintains monotonicity------ \(O(\log n)\)-insertBy                  :: Compare a -> a -> OrdSeq a -> OrdSeq a-insertBy cmp x (OrdSeq s) = OrdSeq $ l `mappend` (Elem x <| r)-  where-    (l,r) = split (\v -> liftCmp cmp v (Key x) `elem` [EQ, GT]) s---- | Insert into a sorted OrdSeq------ \(O(\log n)\)-insert :: Ord a => a -> OrdSeq a -> OrdSeq a-insert = insertBy compare--deleteAllBy         :: Compare a -> a -> OrdSeq a -> OrdSeq a-deleteAllBy cmp x s = l <> r-  where-    (l,_,r) = splitBy cmp x s--    -- (l,m) = split (\v -> liftCmp cmp v (Key x) `elem` [EQ,GT]) s-    -- (_,r) = split (\v -> liftCmp cmp v (Key x) == GT) m----- | \(O(\log n)\)-splitBy                  :: Compare a -> a -> OrdSeq a -> (OrdSeq a, OrdSeq a, OrdSeq a)-splitBy cmp x (OrdSeq s) = (OrdSeq l, OrdSeq m', OrdSeq r)-  where-    (l, m) = split (\v -> liftCmp cmp v (Key x) `elem` [EQ,GT]) s-    (m',r) = split (\v -> liftCmp cmp v (Key x) == GT) m----- | Given a monotonic function f that maps a to b, split the sequence s--- depending on the b values. I.e. the result (l,m,r) is such that--- * all (< x) . fmap f $ l--- * all (== x) . fmap f $ m--- * all (> x) . fmap f $ r------ >>> splitOn id 3 $ fromAscList' [1..5]--- (OrdSeq {_asFingerTree = fromList [Elem 1,Elem 2]},OrdSeq {_asFingerTree = fromList [Elem 3]},OrdSeq {_asFingerTree = fromList [Elem 4,Elem 5]})--- >>> splitOn fst 2 $ fromAscList' [(0,"-"),(1,"A"),(2,"B"),(2,"C"),(3,"D"),(4,"E")]--- (OrdSeq {_asFingerTree = fromList [Elem (0,"-"),Elem (1,"A")]},OrdSeq {_asFingerTree = fromList [Elem (2,"B"),Elem (2,"C")]},OrdSeq {_asFingerTree = fromList [Elem (3,"D"),Elem (4,"E")]})------ \(O(\log n)\)-splitOn :: Ord b => (a -> b) -> b -> OrdSeq a -> (OrdSeq a, OrdSeq a, OrdSeq a)-splitOn f x (OrdSeq s) = (OrdSeq l, OrdSeq m', OrdSeq r)-  where-    (l, m) = split (\(Key v) -> compare (f v) x `elem` [EQ,GT]) s-    (m',r) = split (\(Key v) -> compare (f v) x ==     GT)      m---- | Given a monotonic predicate p, splits the sequence s into two sequences---  (as,bs) such that all (not p) as and all p bs------ \(O(\log n)\)-splitMonotonic  :: (a -> Bool) -> OrdSeq a -> (OrdSeq a, OrdSeq a)-splitMonotonic p = bimap OrdSeq OrdSeq . split (p . getKey) . _asFingerTree----- Deletes all elements from the OrdDeq------ \(O(n\log n)\)-deleteAll :: Ord a => a -> OrdSeq a -> OrdSeq a-deleteAll = deleteAllBy compare----- | inserts all eleements in order--- \(O(n\log n)\)-fromListBy     :: Compare a -> [a] -> OrdSeq a-fromListBy cmp = foldr (insertBy cmp) mempty---- | inserts all eleements in order--- \(O(n\log n)\)-fromListByOrd :: Ord a => [a] -> OrdSeq a-fromListByOrd = fromListBy compare---- | O(n)-fromAscList' :: [a] -> OrdSeq a-fromAscList' = OrdSeq . fromList . fmap Elem----- | \(O(\log n)\)-lookupBy         :: Compare a -> a -> OrdSeq a -> Maybe a-lookupBy cmp x s = let (_,m,_) = splitBy cmp x s in listToMaybe . F.toList $ m--memberBy        :: Compare a -> a -> OrdSeq a -> Bool-memberBy cmp x = isJust . lookupBy cmp x----- | Fmap, assumes the order does not change--- O(n)-mapMonotonic   :: (a -> b) -> OrdSeq a -> OrdSeq b-mapMonotonic f = fromAscList' . map f . F.toList----- | Gets the first element from the sequence--- \(O(1)\)-viewl :: OrdSeq a -> ViewL OrdSeq a-viewl = f . FT.viewl . _asFingerTree-  where-    f EmptyL         = EmptyL-    f (Elem x :< s)  = x :< OrdSeq s---- Last element--- \(O(1)\)-viewr :: OrdSeq a -> ViewR OrdSeq a-viewr = f . FT.viewr . _asFingerTree-  where-    f EmptyR         = EmptyR-    f (s :> Elem x)  = OrdSeq s :> x----- \(O(1)\)-minView   :: OrdSeq a -> Maybe (a, OrdSeq a)-minView s = case viewl s of-              EmptyL   -> Nothing-              (x :< t) -> Just (x,t)---- \(O(1)\)-lookupMin :: OrdSeq a -> Maybe a-lookupMin = fmap fst . minView---- \(O(1)\)-maxView   :: OrdSeq a -> Maybe (a, OrdSeq a)-maxView s = case viewr s of-              EmptyR   -> Nothing-              (t :> x) -> Just (x,t)---- \(O(1)\)-lookupMax :: OrdSeq a -> Maybe a-lookupMax = fmap fst . maxView
− src/Data/Permutation.hs
@@ -1,124 +0,0 @@-{-# LANGUAGE TemplateHaskell #-}------------------------------------------------------------------------------------ |--- Module      :  Data.Permutation--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ Data type for representing a Permutation-------------------------------------------------------------------------------------module Data.Permutation where--import           Control.DeepSeq-import           Control.Lens-import           Control.Monad (forM)-import           Control.Monad.ST (runST)-import qualified Data.Foldable as F-import           Data.Maybe (catMaybes)-import qualified Data.Traversable as T-import qualified Data.Vector as V-import qualified Data.Vector.Generic as GV-import qualified Data.Vector.Unboxed as UV-import qualified Data.Vector.Unboxed.Mutable as UMV-import           GHC.Generics (Generic)-------------------------------------------------------------------------------------- | Orbits (Cycles) are represented by vectors-type Orbit a = V.Vector a---- | Cyclic representation of a permutation.-data Permutation a = Permutation { _orbits  :: V.Vector (Orbit a)-                                 , _indexes :: UV.Vector (Int,Int)-                                               -- ^ idxes (fromEnum a) = (i,j)-                                               -- implies that a is the j^th-                                               -- item in the i^th orbit-                                 }-                   deriving (Show,Eq,Generic)-makeLenses ''Permutation--instance NFData a => NFData (Permutation a)--instance Functor Permutation where-  fmap = T.fmapDefault--instance F.Foldable Permutation where-  foldMap = T.foldMapDefault--instance T.Traversable Permutation where-  traverse f (Permutation os is) = flip Permutation is <$> T.traverse (T.traverse f) os---elems :: Permutation a -> V.Vector a-elems = GV.concat . GV.toList . _orbits--size      :: Permutation a -> Int-size perm = GV.length (perm^.indexes)---- | The cycle containing a given item-cycleOf        :: Enum a => Permutation a -> a -> Orbit a-cycleOf perm x = perm^?!orbits.ix (perm^?!indexes.ix (fromEnum x)._1)----- | Next item in a cyclic permutation-next     :: GV.Vector v a => v a -> Int -> a-next v i = let n = GV.length v in v GV.! ((i+1) `mod` n)---- | Previous item in a cyclic permutation-previous     :: GV.Vector v a => v a -> Int -> a-previous v i = let n = GV.length v in v GV.! ((i-1) `mod` n)---- | Lookup the indices of an element, i.e. in which orbit the item is, and the--- index within the orbit.------ runnign time: \(O(1)\)-lookupIdx        :: Enum a => Permutation a -> a -> (Int,Int)-lookupIdx perm x = perm^?!indexes.ix (fromEnum x)---- | Apply the permutation, i.e. consider the permutation as a function.-apply        :: Enum a => Permutation a -> a -> a-apply perm x = let (c,i) = lookupIdx perm x-               in next (perm^?!orbits.ix c) i----- | Find the cycle in the permutation starting at element s-orbitFrom     :: Eq a => a -> (a -> a) -> [a]-orbitFrom s p = s : (takeWhile (/= s) . tail $ iterate p s)---- Given a vector with items in the permutation, and a permutation (by its--- functional representation) construct the cyclic representation of the--- permutation.-cycleRep        :: (GV.Vector v a, Enum a, Eq a) => v a -> (a -> a) -> Permutation a-cycleRep v perm = toCycleRep n $ runST $ do-    bv    <- UMV.replicate n False -- bit vector of marks-    morbs <- forM [0..(n - 1)] $ \i -> do-               m <- UMV.read bv (fromEnum $ v GV.! i)-               if m then pure Nothing -- already visited-                    else do-                      let xs = orbitFrom (v GV.! i) perm-                      markAll bv $ map fromEnum xs-                      pure . Just $ xs-    pure . catMaybes $ morbs-  where-    n  = GV.length v--    mark    bv i = UMV.write bv i True-    markAll bv   = mapM_ (mark bv)----- | Given the size n, and a list of Cycles, turns the cycles into a--- cyclic representation of the Permutation.-toCycleRep      :: Enum a => Int -> [[a]] -> Permutation a-toCycleRep n os = Permutation (V.fromList . map V.fromList $ os) (genIndexes n os)---genIndexes      :: Enum a => Int -> [[a]] -> UV.Vector (Int,Int)-genIndexes n os = UV.create $ do-                                v <- UMV.new n-                                mapM_ (uncurry $ UMV.write v) ixes'-                                pure v-  where-    f i c = zipWith (\x j -> (fromEnum x,(i,j))) c [0..]-    ixes' = concat $ zipWith f [0..] os
− src/Data/PlanarGraph.hs
@@ -1,1084 +0,0 @@-{-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE OverloadedStrings #-}------------------------------------------------------------------------------------ |--- Module      :  Data.PlanarGraph--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ Data type for representing connected planar graphs----------------------------------------------------------------------------------module Data.PlanarGraph( -- $setup-                         -- * The Planar Graph type-                         PlanarGraph-                       , embedding, vertexData, dartData, faceData, rawDartData-                       , edgeData--                       , World(..)-                       , DualOf--                       -- * Representing edges: Arcs and Darts-                       , Arc(..)-                       , Direction(..), rev--                       , Dart(..), arc, direction-                       , twin, isPositive--                       -- * Vertices--                       , VertexId(..), VertexId'--                       -- * Building a planar graph--                       , planarGraph, planarGraph', fromAdjacencyLists-                       , toAdjacencyLists-                       , buildFromJSON--                       -- * Quering a planar graph--                       , numVertices, numDarts, numEdges, numFaces-                       , darts', darts, edges', edges, vertices', vertices, faces', faces-                       , traverseVertices, traverseDarts, traverseFaces--                       , tailOf, headOf, endPoints-                       , incidentEdges, incomingEdges, outgoingEdges, neighboursOf-                       , nextIncidentEdge, prevIncidentEdge--                       -- * Associated Data--                       , HasDataOf(..), endPointDataOf, endPointData--                       , dual--                       -- * Faces--                       , FaceId(..), FaceId'-                       , leftFace, rightFace-                       , boundaryDart, boundary, boundary', boundaryVertices-                       , nextEdge, prevEdge--                       -- * Edge Oracle--                       , EdgeOracle-                       , edgeOracle, buildEdgeOracle-                       , findEdge-                       , hasEdge, findDart--                       , allDarts-                       ) where---import           Control.Applicative (Alternative(..))-import           Control.DeepSeq-import           Control.Lens hiding ((.=))-import           Control.Monad.ST (ST)-import           Control.Monad.State.Strict-import           Data.Aeson-import           Data.Bifunctor-import           Data.Bitraversable-import           Data.Ext-import qualified Data.Foldable as F-import           Data.Maybe (catMaybes, isJust, fromJust, fromMaybe)-import           Data.Permutation-import           Data.Traversable (fmapDefault,foldMapDefault)-import           Data.Type.Equality (gcastWith, (:~:)(..))-import qualified Data.Vector as V-import qualified Data.Vector.Generic as GV-import qualified Data.Vector.Mutable as MV-import qualified Data.Vector.Unboxed as UV-import qualified Data.Vector.Unboxed.Mutable as UMV-import           GHC.Generics (Generic)-import           Unsafe.Coerce (unsafeCoerce)--- import           Data.Yaml.Util-------------------------------------------------------------------------------------- $setup--- >>> :{--- let dart i s = Dart (Arc i) (read s)---     (aA:aB:aC:aD:aE:aG:_) = take 6 [Arc 0..]---     myGraph :: PlanarGraph () Primal () String ()---     myGraph = planarGraph [ [ (Dart aA Negative, "a-")---                             , (Dart aC Positive, "c+")---                             , (Dart aB Positive, "b+")---                             , (Dart aA Positive, "a+")---                             ]---                           , [ (Dart aE Negative, "e-")---                             , (Dart aB Negative, "b-")---                             , (Dart aD Negative, "d-")---                             , (Dart aG Positive, "g+")---                             ]---                           , [ (Dart aE Positive, "e+")---                             , (Dart aD Positive, "d+")---                             , (Dart aC Negative, "c-")---                             ]---                           , [ (Dart aG Negative, "g-")---                             ]---                           ]--- :}--------- This represents the following graph. Note that the graph is undirected, the--- arrows are just to indicate what the Positive direction of the darts is.------ ![myGraph](docs/Data/PlanarGraph/testG.png)-------------------------------------------------------------------------------------- | An Arc is a directed edge in a planar graph. The type s is used to tie--- this arc to a particular graph.-newtype Arc s = Arc { _unArc :: Int } deriving (Eq,Ord,Enum,Bounded,Generic,NFData)--instance Show (Arc s) where-  show (Arc i) = "Arc " ++ show i---- | Darts have a direction which is either Positive or Negative (shown as +1--- or -1, respectively).-data Direction = Negative | Positive deriving (Eq,Ord,Bounded,Enum,Generic)--instance NFData Direction--instance Show Direction where-  show Positive = "+1"-  show Negative = "-1"--instance Read Direction where-  readsPrec _ "-1" = [(Negative,"")]-  readsPrec _ "+1" = [(Positive,"")]-  readsPrec _ _    = []---- | Reverse the direcion-rev          :: Direction -> Direction-rev Negative = Positive-rev Positive = Negative---- | A dart represents a bi-directed edge. I.e. a dart has a direction, however--- the dart of the oposite direction is always present in the planar graph as--- well.-data Dart s = Dart { _arc       :: !(Arc s)-                   , _direction :: !Direction-                   } deriving (Eq,Ord,Generic)-makeLenses ''Dart--instance NFData (Dart s)--instance Show (Dart s) where-  show (Dart a d) = "Dart (" ++ show a ++ ") " ++ show d---- | Get the twin of this dart (edge)------ >>> twin (dart 0 "+1")--- Dart (Arc 0) -1--- >>> twin (dart 0 "-1")--- Dart (Arc 0) +1-twin            :: Dart s -> Dart s-twin (Dart a d) = Dart a (rev d)---- | test if a dart is Positive-isPositive   :: Dart s -> Bool-isPositive d = d^.direction == Positive---instance Enum (Dart s) where-  toEnum x-    | even x    = Dart (Arc $ x `div` 2) Positive-    | otherwise = Dart (Arc $ x `div` 2) Negative-  -- get the back edge by adding one--  fromEnum (Dart (Arc i) d) = case d of-                                Positive -> 2*i-                                Negative -> 2*i + 1----- | Enumerates all darts such that--- allDarts !! i = d   <=> i == fromEnum d-allDarts :: [Dart s]-allDarts = concatMap (\a -> [Dart a Positive, Dart a Negative]) [Arc 0..]---- | The world in which the graph lives-data World = Primal | Dual deriving (Show,Eq)---- | We can take the dual of a world. For the Primal this gives us the Dual,--- for the Dual this gives us the Primal.-type family DualOf (sp :: World) where-  DualOf Primal = Dual-  DualOf Dual   = Primal---- | The Dual of the Dual is the Primal.-dualDualIdentity :: forall w. DualOf (DualOf w) :~: w-dualDualIdentity = unsafeCoerce Refl-          -- manual proof:-          --    DualOf (DualOf Primal) = Primal-          --    DualOf (DualOf Dual)   = Dual----- | A vertex in a planar graph. A vertex is tied to a particular planar graph--- by the phantom type s, and to a particular world w.-newtype VertexId s (w :: World) = VertexId { _unVertexId :: Int }-                                deriving (Eq,Ord,Enum,ToJSON,FromJSON,Generic,NFData)--- VertexId's are in the range 0...|orbits|-1---- | Shorthand for vertices in the primal.-type VertexId' s = VertexId s Primal--unVertexId :: Getter (VertexId s w) Int-unVertexId = to _unVertexId--instance Show (VertexId s w) where-  show (VertexId i) = "VertexId " ++ show i------------------------------------------------------------------------------------- * The graph type itself---- | A *connected* Planar graph with bidirected edges. I.e. the edges (darts) are--- directed, however, for every directed edge, the edge in the oposite--- direction is also in the graph.------ The types v, e, and f are the are the types of the data associated with the--- vertices, edges, and faces, respectively.------ The orbits in the embedding are assumed to be in counterclockwise--- order. Therefore, every dart directly bounds the face to its right.-data PlanarGraph s (w :: World) v e f = PlanarGraph { _embedding   :: Permutation (Dart s)-                                                    , _vertexData  :: V.Vector v-                                                    , _rawDartData :: V.Vector e-                                                    , _faceData    :: V.Vector f-                                                    , _dual        :: PlanarGraph s (DualOf w) f e v-                                                    } deriving (Generic)--instance (Show v, Show e, Show f) => Show (PlanarGraph s w v e f) where-  show (PlanarGraph e v r f _) = unwords [ "PlanarGraph"-                                         , "embedding =", show e-                                         , ", vertexData =", show v-                                         , ", rawDartData =", show r-                                         , ", faceData =", show f-                                         ]--instance (Eq v, Eq e, Eq f) => Eq (PlanarGraph s w v e f) where-  (PlanarGraph e v r f _) == (PlanarGraph e' v' r' f' _) =  e == e' && v == v'-                                                         && r == r' && f == f'---instance (ToJSON v, ToJSON e, ToJSON f)-         => ToJSON (PlanarGraph s w v e f) where-  toJSON     = object . encodeJSON-  toEncoding = pairs . mconcat . encodeJSON------ | Enclodes the planar graph as a JSON object.  note that every face is--- stored together with a dart bounding the face. (and so that the face lies to--- its right. Otherwise we cannot reconstruct the face data appropriately.-encodeJSON   :: (ToJSON f, ToJSON e, ToJSON v, KeyValue t)-             => PlanarGraph s w v e f -> [t]-encodeJSON g = [ "vertices"    .= ((\(v,x) -> v :+ x)             <$> vertices g)-               , "darts"       .= ((\(e,x) -> endPoints e g :+ x) <$> darts g)-               , "faces"       .= ((\(f,x) -> f :+ x)             <$> faces g)-               , "adjacencies" .= toAdjacencyLists g-               ]-  -- where-  --   faces'' = withBoundaryDart  <$> faces g-  --   withBoundaryDart (f,x) = let d = boundaryDart f g-  --                            in (f, endPoints d g, x)--instance (FromJSON v, FromJSON e, FromJSON f)-         => FromJSON (PlanarGraph s Primal v e f) where-  parseJSON = withObject "" $ \v -> buildFromJSON <$> v .: "vertices"-                                                  <*> v .: "darts"-                                                  <*> v .: "faces"-                                                  <*> v .: "adjacencies"----- | Helper function to build the graph from JSON data------ running time: \(O(n)\)-buildFromJSON             :: V.Vector (VertexId' s :+ v)-                          -> V.Vector ((VertexId' s, VertexId' s) :+ e)-                          -> V.Vector (FaceId' s :+ f)-                          -> [(VertexId' s, V.Vector (VertexId' s))]-                          -> PlanarGraph s Primal v e f-buildFromJSON vs es fs as = g&vertexData .~ reorder vs _unVertexId-                             &dartData   .~ ds-                             &faceData   .~ reorder fs (_unVertexId._unFaceId)-  where-    g = fromAdjacencyLists as-    oracle = edgeOracle g-    findEdge' (u,v) = fromJust $ findDart u v oracle--    ds = es&traverse %~ \(e:+x) -> (findEdge' e,x)-    -- TODO: do we have enough infor to reconstruct the face info?--    -- make sure we order the data values appropriately-    reorder v f = V.create $ do-                               v' <- MV.new (V.length v)-                               forM_ v $ \(i :+ x) ->-                                 MV.write v' (f i) x-                               pure v'--------- ** lenses and getters---- | Get the embedding, reprsented as a permutation of the darts, of this--- graph.-embedding :: Getter (PlanarGraph s w v e f) (Permutation (Dart s))-embedding = to _embedding--vertexData :: Lens (PlanarGraph s w v e f) (PlanarGraph s w v' e f)-                   (V.Vector v) (V.Vector v')-vertexData = lens _vertexData (\g vD -> updateData (const vD) id id g)--rawDartData :: Lens (PlanarGraph s w v e f) (PlanarGraph s w v e' f)-                    (V.Vector e) (V.Vector e')-rawDartData = lens _rawDartData (\g dD -> updateData id (const dD) id g)--faceData :: Lens (PlanarGraph s w v e f) (PlanarGraph s w v e f')-                 (V.Vector f) (V.Vector f')-faceData = lens _faceData (\g fD -> updateData id id (const fD) g)---- | Get the dual graph of this graph.-dual :: Getter (PlanarGraph s w v e f) (PlanarGraph s (DualOf w) f e v)-dual = to _dual----- FIXME: So I guess the two darts associated with an edge can store different--- data. This is useful. Make sure that works as expected.---- | lens to access the Dart Data-------dartData :: Lens (PlanarGraph s w v e f) (PlanarGraph s w v e' f)-                (V.Vector (Dart s, e)) (V.Vector (Dart s, e'))-dartData = lens darts (\g dD -> updateData id (const $ reorderEdgeData dD) id g)---- | edgeData is just an alias for 'dartData'-edgeData :: Lens (PlanarGraph s w v e f) (PlanarGraph s w v e' f)-                 (V.Vector (Dart s, e)) (V.Vector (Dart s, e'))-edgeData = dartData---- | Helper function to update the data in a planar graph. Takes care to update--- both the data in the original graph as well as in the dual.-updateData :: forall s w v e f v' e' f'-           .  (V.Vector v -> V.Vector v')-           -> (V.Vector e -> V.Vector e')-           -> (V.Vector f -> V.Vector f')-           -> PlanarGraph s w v  e  f-           -> PlanarGraph s w v' e' f'-updateData = gcastWith proof updateData'-  where-    proof :: DualOf (DualOf w) :~: w-    proof = dualDualIdentity---- | The function that does the actual work for 'updateData'-updateData'  :: (DualOf (DualOf w) ~ w)-             => (V.Vector v -> V.Vector v')-             -> (V.Vector e -> V.Vector e')-             -> (V.Vector f -> V.Vector f')-             -> PlanarGraph s w v  e  f-             -> PlanarGraph s w v' e' f'-updateData' fv fe ff (PlanarGraph em vtxData dData fData dg) = g'-  where-    vtxData' = fv vtxData-    dData'   = fe dData-    fData'   = ff fData--    g'       = PlanarGraph em              vtxData' dData' fData'   dg'-    dg'      = PlanarGraph (dg^.embedding) fData'   dData' vtxData' g'----- | Reorders the edge data to be in the right order to set edgeData-reorderEdgeData    :: Foldable f => f (Dart s, e) -> V.Vector e-reorderEdgeData ds = V.create $ do-                                  v <- MV.new (F.length ds)-                                  forM_ (F.toList ds) $ \(d,x) ->-                                    MV.write v (fromEnum d) x-                                  pure v---- | Traverse the vertices------ (^.vertexData) <$> traverseVertices (\i x -> Just (i,x)) myGraph--- Just [(VertexId 0,()),(VertexId 1,()),(VertexId 2,()),(VertexId 3,())]--- >>> traverseVertices (\i x -> print (i,x)) myGraph >> pure ()--- (VertexId 0,())--- (VertexId 1,())--- (VertexId 2,())--- (VertexId 3,())-traverseVertices   :: Applicative m-                   => (VertexId s w -> v -> m v')-                   -> PlanarGraph s w v e f-                   -> m (PlanarGraph s w v' e f)-traverseVertices f = itraverseOf (vertexData.itraversed) (\i -> f (VertexId i))---- | Traverses the darts------ >>> traverseDarts (\d x -> print (d,x)) myGraph >> pure ()--- (Dart (Arc 0) +1,"a+")--- (Dart (Arc 0) -1,"a-")--- (Dart (Arc 1) +1,"b+")--- (Dart (Arc 1) -1,"b-")--- (Dart (Arc 2) +1,"c+")--- (Dart (Arc 2) -1,"c-")--- (Dart (Arc 3) +1,"d+")--- (Dart (Arc 3) -1,"d-")--- (Dart (Arc 4) +1,"e+")--- (Dart (Arc 4) -1,"e-")--- (Dart (Arc 5) +1,"g+")--- (Dart (Arc 5) -1,"g-")-traverseDarts   :: Applicative m-                => (Dart s -> e -> m e')-                -> PlanarGraph s w v e f-                -> m (PlanarGraph s w v e' f)-traverseDarts f = itraverseOf (rawDartData.itraversed) (\i -> f (toEnum i))---- | Traverses the faces------ >>> traverseFaces (\i x -> print (i,x)) myGraph >> pure ()--- (FaceId 0,())--- (FaceId 1,())--- (FaceId 2,())--- (FaceId 3,())-traverseFaces   :: Applicative m-                => (FaceId s w -> f -> m f')-                -> PlanarGraph s w v e f-                -> m (PlanarGraph s w v e f')-traverseFaces f = itraverseOf (faceData.itraversed) (\i -> f (FaceId $ VertexId i))------------------------------------------------------------------------------------- ** Constructing a Planar graph---- | Construct a planar graph------ running time: \(O(n)\).-planarGraph'      :: Permutation (Dart s) -> PlanarGraph s w () () ()-planarGraph' perm = pg-  where-    pg = PlanarGraph perm vData eData fData (computeDual pg)-        -- note the lazy calculation of computeDual that refers to pg itself-    d  = size perm-    e  = d `div` 2-    v  = V.length (perm^.orbits)-    f  = e - v + 2--    vData  = V.replicate v ()-    eData  = V.replicate d ()-    fData  = V.replicate f ()---- | Construct a planar graph, given the darts in cyclic order around each--- vertex.------ running time: \(O(n)\).-planarGraph    :: [[(Dart s,e)]] -> PlanarGraph s Primal () e ()-planarGraph ds = (planarGraph' perm)&dartData .~ (V.fromList . concat $ ds)-  where-    n     = sum . map length $ ds-    perm  = toCycleRep n $ map (map fst) ds------ | Construct a planar graph from a adjacency matrix. For every vertex, all--- vertices should be given in counter clockwise order.------ pre: No self-loops, and no multi-edges------ running time: \(O(n)\).-fromAdjacencyLists      :: forall s w h. (Foldable h, Functor h)-                        => [(VertexId s w, h (VertexId s w))]-                        -> PlanarGraph s w () () ()-fromAdjacencyLists adjM = planarGraph' . toCycleRep n $ perm-  where-    n    = sum . fmap length $ perm-    perm = map toOrbit  $ adjM'--    adjM' = fmap (second F.toList) adjM--    -- -- | Assign Arcs-    -- adjM' = (^._1) . foldr assignArcs (SP [] 0) $ adjM--    -- Build an edgeOracle, so that we can query the arcId assigned to-    -- an edge in O(1) time.-    oracle :: EdgeOracle s w Int-    oracle = fmap (^.core) . assignArcs . buildEdgeOracle-           . map (second $ map ext)  $ adjM'--    toOrbit (u,adjU) = concatMap (toDart u) adjU--    -- if u = v we have a self-loop, so we add both a positive and a negative dart-    toDart u v = let Just a = findEdge u v oracle-                 in case u `compare` v of-                      LT -> [Dart (Arc a) Positive]-                      EQ -> [Dart (Arc a) Positive, Dart (Arc a) Negative]-                      GT -> [Dart (Arc a) Negative]---assignArcs   :: EdgeOracle s w e -> EdgeOracle s w (Int :+ e)-assignArcs o = evalState (traverse f o) 0-  where-    f   :: e -> State Int (Int :+ e)-    f e = do i <- get ; put (i+1) ; pure (i :+ e)---- | Produces the adjacencylists for all vertices in the graph. For every vertex, the--- adjacent vertices are given in counter clockwise order.------ Note that in case a vertex u as a self loop, we have that this vertexId occurs--- twice in the list of neighbours, i.e.: u : [...,u,..,u,...]. Similarly, if there are--- multiple darts between a pair of edges they occur multiple times.------ running time: \(O(n)\)-toAdjacencyLists    :: PlanarGraph s w v e f -> [(VertexId s w, V.Vector (VertexId s w))]-toAdjacencyLists pg = map (\u -> (u,neighboursOf u pg)) . V.toList . vertices' $ pg--- TODO: something weird happens when we have self-loops here.-------------------------------------------------------------------------------------- ** Convenience functions---- | Get the number of vertices------ >>> numVertices myGraph--- 4-numVertices :: PlanarGraph s w v e f -> Int-numVertices g = V.length (g^.embedding.orbits)---- | Get the number of Darts------ >>> numDarts myGraph--- 12-numDarts :: PlanarGraph s w v e f -> Int-numDarts g = size (g^.embedding)---- | Get the number of Edges------ >>> numEdges myGraph--- 6-numEdges :: PlanarGraph s w v e f -> Int-numEdges g = numDarts g `div` 2---- | Get the number of faces------ >>> numFaces myGraph--- 4-numFaces   :: PlanarGraph s w v e f -> Int-numFaces g = numEdges g - numVertices g + 2----- | Enumerate all vertices------ >>> vertices' myGraph--- [VertexId 0,VertexId 1,VertexId 2,VertexId 3]-vertices'   :: PlanarGraph s w v e f -> V.Vector (VertexId s w)-vertices' g = VertexId <$> V.enumFromN 0 (V.length (g^.embedding.orbits))---- | Enumerate all vertices, together with their vertex data---- >>> vertices myGraph--- [(VertexId 0,()),(VertexId 1,()),(VertexId 2,()),(VertexId 3,())]-vertices   :: PlanarGraph s w v e f -> V.Vector (VertexId s w, v)-vertices g = V.zip (vertices' g) (g^.vertexData)----- | Enumerate all darts-darts' :: PlanarGraph s w v e f -> V.Vector (Dart s)-darts' = elems . _embedding---- | Get all darts together with their data------ >>> mapM_ print $ darts myGraph--- (Dart (Arc 0) -1,"a-")--- (Dart (Arc 2) +1,"c+")--- (Dart (Arc 1) +1,"b+")--- (Dart (Arc 0) +1,"a+")--- (Dart (Arc 4) -1,"e-")--- (Dart (Arc 1) -1,"b-")--- (Dart (Arc 3) -1,"d-")--- (Dart (Arc 5) +1,"g+")--- (Dart (Arc 4) +1,"e+")--- (Dart (Arc 3) +1,"d+")--- (Dart (Arc 2) -1,"c-")--- (Dart (Arc 5) -1,"g-")-darts   :: PlanarGraph s w v e f -> V.Vector (Dart s, e)-darts g = (\d -> (d,g^.dataOf d)) <$> darts' g---- | Enumerate all edges. We report only the Positive darts-edges' :: PlanarGraph s w v e f -> V.Vector (Dart s)-edges' = V.filter isPositive . darts'---- | Enumerate all edges with their edge data. We report only the Positive--- darts.------ >>> mapM_ print $ edges myGraph--- (Dart (Arc 2) +1,"c+")--- (Dart (Arc 1) +1,"b+")--- (Dart (Arc 0) +1,"a+")--- (Dart (Arc 5) +1,"g+")--- (Dart (Arc 4) +1,"e+")--- (Dart (Arc 3) +1,"d+")-edges :: PlanarGraph s w v e f -> V.Vector (Dart s, e)-edges = V.filter (isPositive . fst) . darts----- | The tail of a dart, i.e. the vertex this dart is leaving from------ running time: \(O(1)\)-tailOf     :: Dart s -> PlanarGraph s w v e f -> VertexId s w-tailOf d g = VertexId . fst $ lookupIdx (g^.embedding) d---- | The vertex this dart is heading in to------ running time: \(O(1)\)-headOf   :: Dart s -> PlanarGraph s w v e f -> VertexId s w-headOf d = tailOf (twin d)---- | endPoints d g = (tailOf d g, headOf d g)------ running time: \(O(1)\)-endPoints :: Dart s -> PlanarGraph s w v e f -> (VertexId s w, VertexId s w)-endPoints d g = (tailOf d g, headOf d g)----- | All edges incident to vertex v, in counterclockwise order around v.------ running time: \(O(k)\), where \(k\) is the output size-incidentEdges                :: VertexId s w -> PlanarGraph s w v e f-                             -> V.Vector (Dart s)-incidentEdges (VertexId v) g = g^?!embedding.orbits.ix v-  -- TODO: The Delaunay triang. stuff seems to produce these in clockwise order instead---- | All incoming edges incident to vertex v, in counterclockwise order around v.-incomingEdges     :: VertexId s w -> PlanarGraph s w v e f -> V.Vector (Dart s)-incomingEdges v g = V.filter (not . isPositive) $ incidentEdges v g---- | All outgoing edges incident to vertex v, in counterclockwise order around v.-outgoingEdges     :: VertexId s w -> PlanarGraph s w v e f -> V.Vector (Dart s)-outgoingEdges v g = V.filter isPositive $ incidentEdges v g----- | Gets the neighbours of a particular vertex, in counterclockwise order--- around the vertex.------ running time: \(O(k)\), where \(k\) is the output size-neighboursOf     :: VertexId s w -> PlanarGraph s w v e f -> V.Vector (VertexId s w)-neighboursOf v g = otherVtx <$> incidentEdges v g-  where-    otherVtx d = let u = tailOf d g in if u == v then headOf d g else u---- | Given a dart d that points into some vertex v, report the next dart in the--- cyclic order around v.------ running time: \(O(1)\)-nextIncidentEdge     :: Dart s -> PlanarGraph s w v e f -> Dart s-nextIncidentEdge d g = let perm  = g^.embedding-                           (i,j) = lookupIdx perm d-                       in next (perm^?!orbits.ix i) j----- | Given a dart d that points into some vertex v, report the next dart in the--- cyclic order around v.------ running time: \(O(1)\)-prevIncidentEdge     :: Dart s -> PlanarGraph s w v e f -> Dart s-prevIncidentEdge d g = let perm  = g^.embedding-                           (i,j) = lookupIdx perm d-                       in previous (perm^?!orbits.ix i) j-------------------------------------------------------------------------------------- * Access data---class HasDataOf g i where-  type DataOf g i-  -- | get the data associated with the value i.-  ---  -- running time: \(O(1)\) to read the data, \(O(n)\) to write it.-  dataOf :: i -> Lens' g (DataOf g i)--instance HasDataOf (PlanarGraph s w v e f) (VertexId s w) where-  type DataOf (PlanarGraph s w v e f) (VertexId s w) = v-  dataOf (VertexId i) = vertexData.singular (ix i)--instance HasDataOf (PlanarGraph s w v e f) (Dart s) where-  type DataOf (PlanarGraph s w v e f) (Dart s) = e-  dataOf d = rawDartData.singular (ix $ fromEnum d)--instance HasDataOf (PlanarGraph s w v e f) (FaceId s w) where-  type DataOf (PlanarGraph s w v e f) (FaceId s w) = f-  dataOf (FaceId (VertexId i)) = faceData.singular (ix i)----- | Data corresponding to the endpoints of the dart-endPointDataOf   :: Dart s -> Getter (PlanarGraph s w v e f) (v,v)-endPointDataOf d = to $ endPointData d----- | Data corresponding to the endpoints of the dart------ running time: \(O(1)\)-endPointData     :: Dart s -> PlanarGraph s w v e f -> (v,v)-endPointData d g = let (u,v) = endPoints d g in (g^.dataOf u, g^.dataOf v)------------------------------------------------------------------------------------- * The Dual graph---- | The dual of this graph------ >>> :{---  let fromList = V.fromList---      answer = fromList [ fromList [dart 0 "-1"]---                        , fromList [dart 2 "+1",dart 4 "+1",dart 1 "-1",dart 0 "+1"]---                        , fromList [dart 1 "+1",dart 3 "-1",dart 2 "-1"]---                        , fromList [dart 4 "-1",dart 3 "+1",dart 5 "+1",dart 5 "-1"]---                        ]---  in (computeDual myGraph)^.embedding.orbits == answer--- :}--- True------ running time: \(O(n)\).-computeDual :: forall s w v e f. PlanarGraph s w v e f -> PlanarGraph s (DualOf w) f e v-computeDual = gcastWith proof computeDual'-  where-    proof :: DualOf (DualOf w) :~: w-    proof = dualDualIdentity---- | Does the actual work for dualGraph-computeDual'   :: (DualOf (DualOf w) ~ w)-               => PlanarGraph s w v e f -> PlanarGraph s (DualOf w) f e v-computeDual' g = dualG-  where-    perm  = g^.embedding-    dualG = PlanarGraph (cycleRep (elems perm) (apply perm . twin))-                        (g^.faceData)-                        (g^.rawDartData)-                        (g^.vertexData)-                        g----- | The type to reprsent FaceId's-newtype FaceId s w = FaceId { _unFaceId :: VertexId s (DualOf w) }-                   deriving (Eq,Ord,Enum,ToJSON,FromJSON)---- | Shorthand for FaceId's in the primal.-type FaceId' s = FaceId s Primal--instance Show (FaceId s w) where-  show (FaceId (VertexId i)) = "FaceId " ++ show i---- | Enumerate all faces in the planar graph-faces' :: PlanarGraph s w v e f -> V.Vector (FaceId s w)-faces' = fmap FaceId . vertices' . _dual---- | All faces with their face data.-faces   :: PlanarGraph s w v e f -> V.Vector (FaceId s w, f)-faces g = V.zip (faces' g) (g^.faceData)---- | The face to the left of the dart------ >>> leftFace (dart 1 "+1") myGraph--- FaceId 1--- >>> leftFace (dart 1 "-1") myGraph--- FaceId 2--- >>> leftFace (dart 2 "+1") myGraph--- FaceId 2--- >>> leftFace (dart 0 "+1") myGraph--- FaceId 0------ running time: \(O(1)\).-leftFace     :: Dart s -> PlanarGraph s w v e f -> FaceId s w-leftFace d g = FaceId . headOf d $ _dual g----- | The face to the right of the dart------ >>> rightFace (dart 1 "+1") myGraph--- FaceId 2--- >>> rightFace (dart 1 "-1") myGraph--- FaceId 1--- >>> rightFace (dart 2 "+1") myGraph--- FaceId 1--- >>> rightFace (dart 0 "+1") myGraph--- FaceId 1------ running time: \(O(1)\).-rightFace     :: Dart s -> PlanarGraph s w v e f -> FaceId s w-rightFace d g = FaceId . tailOf d $ _dual g----- | Get the next edge along the face------ running time: \(O(1)\).-nextEdge   :: Dart s -> PlanarGraph s w v e f -> Dart s-nextEdge d = nextIncidentEdge d . _dual---- | Get the previous edge along the face------ running time: \(O(1)\).-prevEdge :: Dart s -> PlanarGraph s w v e f -> Dart s-prevEdge d = prevIncidentEdge d . _dual----- | Gets a dart bounding this face. I.e. a dart d such that the face lies to--- the right of the dart.-boundaryDart   :: FaceId s w -> PlanarGraph s w v e f -> Dart s-boundaryDart f = V.head . boundary f--- TODO: make sure that this is indeed to the right.---- | The darts bounding this face, for internal faces in clockwise order, for--- the outer face in counter clockwise order.--------- running time: \(O(k)\), where \(k\) is the output size.-boundary              :: FaceId s w -> PlanarGraph s w v e f -> V.Vector (Dart s)-boundary (FaceId v) g = incidentEdges v $ _dual g----- | Generates the darts incident to a face, starting with the given dart.--------- \(O(k)\), where \(k\) is the number of darts reported-boundary'     :: Dart s -> PlanarGraph s w v e f -> V.Vector (Dart s)-boundary' d g = fromMaybe (error "boundary'")  . rotateTo d $ boundary (rightFace d g) g-  where-    rotateTo     :: Eq a => a -> V.Vector a -> Maybe (V.Vector a)-    rotateTo x v = f <$> V.elemIndex x v-      where-        f i = let (a,b) = V.splitAt i v  in b <> a----- | The vertices bounding this face, for internal faces in clockwise order, for--- the outer face in counter clockwise order.--------- running time: \(O(k)\), where \(k\) is the output size.-boundaryVertices     :: FaceId s w -> PlanarGraph s w v e f -> V.Vector (VertexId s w)-boundaryVertices f g = fmap (flip tailOf g) $ boundary f g---- -- | Gets the next dart along the face--- nextDart     :: Dart s -> PlanarGraph s w v e f -> Dart s--- nextDart d g = f rightFace e------------------------------------------------------------------------------------- Testing stuff---- testPerm :: Permutation (Dart s)--- testPerm = let (a:b:c:d:e:g:_) = take 6 [Arc 0..]---            in toCycleRep 12 [ [ Dart a Negative---                               , Dart c Positive---                               , Dart b Positive---                               , Dart a Positive---                               ]---                             , [ Dart e Negative---                               , Dart b Negative---                               , Dart d Negative---                               , Dart g Positive---                               ]---                             , [ Dart e Positive---                               , Dart d Positive---                               , Dart c Negative---                               ]---                             , [ Dart g Negative---                               ]---                             ]---- data Test---- testG :: PlanarGraph Test Primal () String ()--- testG = planarGraph [ [ (Dart aA Negative, "a-")---                       , (Dart aC Positive, "c+")---                       , (Dart aB Positive, "b+")---                       , (Dart aA Positive, "a+")---                       ]---                     , [ (Dart aE Negative, "e-")---                       , (Dart aB Negative, "b-")---                       , (Dart aD Negative, "d-")---                       , (Dart aG Positive, "g+")---                       ]---                     , [ (Dart aE Positive, "e+")---                       , (Dart aD Positive, "d+")---                       , (Dart aC Negative, "c-")---                       ]---                     , [ (Dart aG Negative, "g-")---                       ]---                     ]---   where---     (aA:aB:aC:aD:aE:aG:_) = take 6 [Arc 0..]----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * Testing Connectivity----- | Edge Oracle:------ main idea: store adjacency lists in such a way that we store an edge (u,v)--- either in u's adjacency list or in v's. This can be done s.t. all adjacency--- lists have length at most 6.------ note: Every edge is stored exactly once (i.e. either at u or at v, but not both)-newtype EdgeOracle s w a =-  EdgeOracle { _unEdgeOracle :: V.Vector (V.Vector (VertexId s w :+ a)) }-                         deriving (Show,Eq)--instance Functor (EdgeOracle s w) where-  fmap = fmapDefault--instance Foldable (EdgeOracle s w) where-  foldMap = foldMapDefault--instance Traversable (EdgeOracle s w) where-  traverse f (EdgeOracle v) = EdgeOracle <$> traverse g v-    where-      -- g   :: V.Vector (VertexId :+ a) -> f (V.Vector (VertexId :+ b))-      g = traverse (bitraverse pure f)----- | Given a planar graph, construct an edge oracle. Given a pair of vertices--- this allows us to efficiently find the dart representing this edge in the--- graph.------ pre: No self-loops and no multi-edges!!!------ running time: \(O(n)\)-edgeOracle   :: PlanarGraph s w v e f -> EdgeOracle s w (Dart s)-edgeOracle g = buildEdgeOracle [ (v, mkAdjacency v <$> incidentEdges v g)-                               | v <- F.toList $ vertices' g-                               ]-  where-    mkAdjacency v d = otherVtx v d :+ d-    otherVtx v d = let u = tailOf d g in if u == v then headOf d g else u------ | Builds an edge oracle that can be used to efficiently test if two vertices--- are connected by an edge.------ running time: \(O(n)\)-buildEdgeOracle        :: forall f s w e. (Foldable f)-                       => [(VertexId s w, f (VertexId s w :+ e))] -> EdgeOracle s w e-buildEdgeOracle inAdj' = EdgeOracle $ V.create $ do-                          counts <- UV.thaw initCounts-                          marks  <- UMV.replicate (UMV.length counts) False-                          outV   <- MV.new (UMV.length counts)-                          build counts marks outV initQ-                          pure outV-    -- main idea: maintain a vector with counts; i.e. how many unprocessed-    -- vertices are adjacent to u, and a bit vector with marks to keep track if-    -- a vertex has been processed yet. When we process a vertex, we keep only-    -- the adjacencies of unprocessed verticese.-  where-    -- Convert to a vector representation-    inAdj = V.create $ do-              mv <- MV.new (length inAdj')-              forM_ inAdj' $ \(VertexId i,adjI) ->-                MV.write mv i (V.fromList . F.toList $ adjI)-              pure mv--    initCounts = V.convert . fmap GV.length $ inAdj-    -- initial vertices available for processing-    initQ = GV.ifoldr (\i k q -> if k <= 6 then i : q else q) [] initCounts--    -- | Construct the adjacencylist for vertex i. I.e. by retaining only adjacent-    -- vertices that have not been processed yet.-    extractAdj         :: UMV.MVector s' Bool -> Int-                       -> ST s' (V.Vector (VertexId s w :+ e))-    extractAdj marks i = let p = fmap not . UMV.read marks . (^.core.unVertexId)-                         in GV.filterM  p $ inAdj V.! i--    -- | Decreases the number of adjacencies that vertex j has-    -- if it has <= 6 adjacencies left it has become available for processing-    decrease                          :: UMV.MVector s' Int -> (VertexId s w :+ e')-                                      -> ST s' (Maybe Int)-    decrease counts (VertexId j :+ _) = do k <- UMV.read counts j-                                           let k'  = k - 1-                                           UMV.write counts j k'-                                           pure $ if k' <= 6 then Just j else Nothing--    -- The actual algorithm that builds the items-    build :: UMV.MVector s' Int -> UMV.MVector s' Bool-          -> MV.MVector s' (V.Vector (VertexId s w :+ e)) -> [Int] -> ST s' ()-    build _      _     _    []    = pure ()-    build counts marks outV (i:q) = do-             b <- UMV.read marks i-             nq <- if b then pure []-                        else do-                          adjI <- extractAdj marks i-                          MV.write outV i adjI-                          UMV.write marks i True-                          V.toList <$> mapM (decrease counts) adjI-             build counts marks outV (catMaybes nq <> q)------ | Test if u and v are connected by an edge.------ running time: \(O(1)\)-hasEdge     :: VertexId s w -> VertexId s w -> EdgeOracle s w a -> Bool-hasEdge u v = isJust . findEdge u v----- | Find the edge data corresponding to edge (u,v) if such an edge exists------ running time: \(O(1)\)-findEdge :: VertexId s w -> VertexId s w -> EdgeOracle s w a -> Maybe a-findEdge  (VertexId u) (VertexId v) (EdgeOracle os) = find' u v <|> find' v u-  where-    find' j i = fmap (^.extra) . F.find (\(VertexId k :+ _) -> j == k) $ os V.! i---- | Given a pair of vertices (u,v) returns the dart, oriented from u to v,--- corresponding to these vertices.------ running time: \(O(1)\)-findDart :: VertexId s w -> VertexId s w -> EdgeOracle s w (Dart s) -> Maybe (Dart s)-findDart (VertexId u) (VertexId v) (EdgeOracle os) = find' twin u v <|> find' id v u-    -- looks up j in the adjacencylist of i and applies f to the result-  where-    find' f j i = fmap (f . (^.extra)) . F.find (\(VertexId k :+ _) -> j == k) $ os V.! i-------------------------------------------------------------------------------------- data Test---- type Vertex = VertexId Test Primal---- testEdges :: [(Vertex,[Vertex])]--- testEdges = map (\(i,vs) -> (VertexId i, map VertexId vs))---             [ (0, [1])---             , (1, [0,1,2,4])---             , (2, [1,3,4])---             , (3, [2,5])---             , (4, [1,2,5])---             , (5, [3,4])---             ]----- myGraph :: PlanarGraph Test Primal () String ()--- myGraph = planarGraph [ [ (Dart aA Negative, "a-")---                             , (Dart aC Positive, "c+")---                             , (Dart aB Positive, "b+")---                             , (Dart aA Positive, "a+")---                             ]---                           , [ (Dart aE Negative, "e-")---                             , (Dart aB Negative, "b-")---                             , (Dart aD Negative, "d-")---                             , (Dart aG Positive, "g+")---                             ]---                           , [ (Dart aE Positive, "e+")---                             , (Dart aD Positive, "d+")---                             , (Dart aC Negative, "c-")---                             ]---                           , [ (Dart aG Negative, "g-")---                             ]---                           ]---   where---     -- dart i s = Dart (Arc i) (read s)---     (aA:aB:aC:aD:aE:aG:_) = take 6 [Arc 0..]
src/Data/PlaneGraph.hs view
@@ -17,7 +17,7 @@                       , PlanarGraph                       , VertexData(VertexData), vData, location, vtxDataToExt                       , fromSimplePolygon, fromConnectedSegments-                      , PG.fromAdjacencyLists+                      , toAdjRep, fromAdjRep                        , numVertices, numEdges, numFaces, numDarts                       , dual@@ -25,7 +25,7 @@                       , vertices', vertices                       , edges', edges                       , faces', faces, internalFaces, faces''-                      , darts'+                      , darts', darts                       , traverseVertices, traverseDarts, traverseFaces                        , headOf, tailOf, twin, endPoints@@ -37,7 +37,7 @@                        , leftFace, rightFace                       , nextEdge, prevEdge-                      , boundary, boundary', boundaryVertices+                      , boundary, boundary', boundaryDart, boundaryVertices                       , outerFaceId, outerFaceDart                        , vertexDataOf, locationOf, HasDataOf(..)@@ -56,565 +56,5 @@                       , writePlaneGraph, readPlaneGraph                       ) where --import           Control.Lens hiding (holes, holesOf, (.=))-import           Data.Aeson-import qualified Data.ByteString as B-import qualified Data.CircularSeq as C-import           Data.Ext-import qualified Data.Foldable as F-import           Data.Function (on)-import           Data.Geometry.Box-import           Data.Geometry.Interval-import           Data.Geometry.Line (cmpSlope, supportingLine)-import           Data.Geometry.LineSegment-import           Data.Geometry.Point-import           Data.Geometry.Polygon-import           Data.Geometry.Properties-import qualified Data.List.NonEmpty as NonEmpty-import qualified Data.Map as M-import           Data.Ord (comparing)-import qualified Data.PlanarGraph as PG-import           Data.PlanarGraph( PlanarGraph, planarGraph, dual-                                 , Dart(..), VertexId(..), FaceId(..), Arc(..)-                                 , Direction(..), twin-                                 , World(..)-                                 , FaceId', VertexId'-                                 , HasDataOf(..)-                                 )-import           Data.Util-import qualified Data.Vector as V-import           Data.Version-import           Data.Yaml (ParseException)-import           Data.Yaml.Util-import           GHC.Generics (Generic)-------------------------------------------------------------------------------------- | Note that the functor instance is in v-data VertexData r v = VertexData { _location :: !(Point 2 r)-                                 , _vData    :: !v-                                 } deriving (Show,Eq,Ord,Generic-                                            ,Functor,Foldable,Traversable)-makeLenses ''VertexData--vtxDataToExt                  :: VertexData r v -> Point 2 r :+ v-vtxDataToExt (VertexData p v) = p :+ v--instance Bifunctor VertexData where-  bimap f g (VertexData p v) = VertexData (fmap f p) (g v)--instance (FromJSON r, FromJSON v) => FromJSON (VertexData r v) where-  parseJSON = fmap (\(l :+ d) -> VertexData l d) . parseJSON--instance (ToJSON r, ToJSON v) => ToJSON (VertexData r v) where-  toJSON     = toJSON     . vtxDataToExt-  toEncoding = toEncoding . vtxDataToExt-------------------------------------------------------------------------------------- | Embedded, *connected*, planar graph-newtype PlaneGraph s v e f r =-    PlaneGraph { _graph :: PlanarGraph s Primal (VertexData r v) e f }-      deriving (Show,Eq,ToJSON,FromJSON,Generic)-makeLenses ''PlaneGraph--type instance NumType   (PlaneGraph s v e f r) = r-type instance Dimension (PlaneGraph s v e f r) = 2--instance Functor (PlaneGraph s v e f) where-  fmap f pg = pg&graph.PG.vertexData.traverse.location %~ fmap f--instance IsBoxable (PlaneGraph s v e f r) where-  boundingBox = boundingBoxList' . F.toList . fmap (^._2.location) . vertices---------------------------------------------------------------------------------------- * Constructing a Plane Graph---- | Construct a plane graph from a simple polygon. It is assumed that the--- polygon is given in counterclockwise order.------ the interior of the polygon will have faceId 0------ pre: the input polygon is given in counterclockwise order--- running time: \(O(n)\).-fromSimplePolygon                            :: proxy s-                                             -> SimplePolygon p r-                                             -> f -- ^ data inside-                                             -> f -- ^ data outside the polygon-                                             -> PlaneGraph s p () f r-fromSimplePolygon p (SimplePolygon vs) iD oD = PlaneGraph g'-  where-    g      = fromVertices p vs-    fData' = V.fromList [iD, oD]-    g'     = g & PG.faceData .~ fData'---- | Constructs a planar from the given vertices-fromVertices      :: proxy s-                  -> C.CSeq (Point 2 r :+ p)-                  -> PlanarGraph s Primal (VertexData r p) () ()-fromVertices _ vs = g&PG.vertexData .~ vData'-  where-    n = length vs-    g = planarGraph [ [ (Dart (Arc i)               Positive, ())-                      , (Dart (Arc $ (i+1) `mod` n) Negative, ())-                      ]-                    | i <- [0..(n-1)]]-    vData' = V.fromList . map (\(p :+ e) -> VertexData p e) . F.toList $ vs---- | Constructs a connected plane graph------ pre: The segments form a single connected component------ running time: \(O(n\log n)\)-fromConnectedSegments      :: (Foldable f, Ord r, Num r)-                           => proxy s-                           -> f (LineSegment 2 p r :+ e)-                           -> PlaneGraph s (NonEmpty.NonEmpty p) e () r-fromConnectedSegments _ ss = PlaneGraph $ planarGraph dts & PG.vertexData .~ vxData-  where-    pts         = M.fromListWith (<>) . concatMap f . zipWith g [0..] . F.toList $ ss-    f (s :+ e)  = [ ( s^.start.core-                    , SP (sing $ s^.start.extra) [(s^.end.core)   :+ h Positive e])-                  , ( s^.end.core-                    , SP (sing $ s^.end.extra)   [(s^.start.core) :+ h Negative e])-                  ]-    g i (s :+ e) = s :+ (Arc i :+ e)-    h d (a :+ e) = (Dart a d, e)--    sing x = x NonEmpty.:| []--    vts    = map (\(p,sp) -> (p,map (^.extra) . sortArround (ext p) <$> sp))-           . M.assocs $ pts-    -- vertex Data-    vxData = V.fromList . map (\(p,sp) -> VertexData p (sp^._1)) $ vts-    -- The darts-    dts    = map (^._2._2) vts------------------------------------------------------------------------------------- * Basic Graph information---- | Get the number of vertices------ >>> numVertices myGraph--- 4-numVertices :: PlaneGraph s v e f r  -> Int-numVertices = PG.numVertices . _graph---- | Get the number of Darts------ >>> numDarts myGraph--- 12-numDarts :: PlaneGraph s v e f r  -> Int-numDarts = PG.numDarts . _graph---- | Get the number of Edges------ >>> numEdges myGraph--- 6-numEdges :: PlaneGraph s v e f r  -> Int-numEdges = PG.numEdges . _graph---- | Get the number of faces------ >>> numFaces myGraph--- 4-numFaces :: PlaneGraph s v e f r  -> Int-numFaces = PG.numFaces . _graph---- | Enumerate all vertices------ >>> vertices' myGraph--- [VertexId 0,VertexId 1,VertexId 2,VertexId 3]-vertices'   :: PlaneGraph s v e f r  -> V.Vector (VertexId' s)-vertices' = PG.vertices' . _graph---- | Enumerate all vertices, together with their vertex data---- >>> vertices myGraph--- [(VertexId 0,()),(VertexId 1,()),(VertexId 2,()),(VertexId 3,())]-vertices   :: PlaneGraph s v e f r  -> V.Vector (VertexId' s, VertexData r v)-vertices = PG.vertices . _graph---- | Enumerate all darts-darts' :: PlaneGraph s v e f r  -> V.Vector (Dart s)-darts' = PG.darts' . _graph---- | Enumerate all edges. We report only the Positive darts-edges' :: PlaneGraph s v e f r  -> V.Vector (Dart s)-edges' = PG.edges' . _graph---- | Lens to access the raw dart data, use at your own risk-rawDartData :: Lens (PlaneGraph s v e f r) (PlaneGraph s v e' f r)-                    (V.Vector e) (V.Vector e')-rawDartData = graph.PG.rawDartData---- | lens to access the Dart Data-dartData :: Lens (PlaneGraph s v e f r) (PlaneGraph s v e' f r)-                 (V.Vector (Dart s, e)) (V.Vector (Dart s, e'))-dartData = graph.PG.dartData---- | Lens to access face data-faceData :: Lens (PlaneGraph s v e f r) (PlaneGraph s v e f' r)-                 (V.Vector f) (V.Vector f')-faceData = graph.PG.faceData--vertexData :: Lens (PlaneGraph s v e f r) (PlaneGraph s v' e f r)-                   (V.Vector v) (V.Vector v')-vertexData = lens get'' set''-  where-    get'' pg    = let v = pg^.graph.PG.vertexData in (^.vData) <$> v-    set'' pg v' = pg&graph.PG.vertexData %~ V.zipWith f v'-    f x (VertexData l _) = VertexData l x---- | Enumerate all edges with their edge data. We report only the Positive--- darts.------ >>> mapM_ print $ edges myGraph--- (Dart (Arc 2) +1,"c+")--- (Dart (Arc 1) +1,"b+")--- (Dart (Arc 0) +1,"a+")--- (Dart (Arc 5) +1,"g+")--- (Dart (Arc 4) +1,"e+")--- (Dart (Arc 3) +1,"d+")-edges :: PlaneGraph s v e f r  -> V.Vector (Dart s, e)-edges = PG.edges . _graph---- | Enumerate all faces in the plane graph-faces' :: PlaneGraph s v e f r  -> V.Vector (FaceId' s)-faces' = PG.faces' . _graph---- | All faces with their face data.-faces :: PlaneGraph s v e f r  -> V.Vector (FaceId' s, f)-faces = PG.faces . _graph----- | Reports the outerface and all internal faces separately.--- running time: \(O(n)\)-faces''   :: (Ord r, Fractional r)-          => PlaneGraph s v e f r -> ((FaceId' s, f), V.Vector (FaceId' s, f))-faces'' g = let i = outerFaceId g-            in ((i,g^.dataOf i), V.filter (\(j,_) -> i /= j) $ faces g)---- | Reports all internal faces.--- running time: \(O(n)\)-internalFaces :: (Ord r, Fractional r)-              => PlaneGraph s v e f r -> V.Vector (FaceId' s, f)-internalFaces = snd . faces''---- | The tail of a dart, i.e. the vertex this dart is leaving from------ running time: \(O(1)\)-tailOf   :: Dart s -> PlaneGraph s v e f r  -> VertexId' s-tailOf d = PG.tailOf d . _graph---- | The vertex this dart is heading in to------ running time: \(O(1)\)-headOf   :: Dart s -> PlaneGraph s v e f r  -> VertexId' s-headOf d = PG.headOf d . _graph---- | endPoints d g = (tailOf d g, headOf d g)------ running time: \(O(1)\)-endPoints   :: Dart s -> PlaneGraph s v e f r-            -> (VertexId' s, VertexId' s)-endPoints d = PG.endPoints d . _graph---- | All edges incident to vertex v, in counterclockwise order around v.------ running time: \(O(k)\), where \(k\) is the output size-incidentEdges   :: VertexId' s -> PlaneGraph s v e f r -> V.Vector (Dart s)-incidentEdges v = PG.incidentEdges v . _graph---- | All incoming edges incident to vertex v, in counterclockwise order around v.-incomingEdges   :: VertexId' s -> PlaneGraph s v e f r -> V.Vector (Dart s)-incomingEdges v = PG.incomingEdges v . _graph---- | All outgoing edges incident to vertex v, in counterclockwise order around v.-outgoingEdges   :: VertexId' s -> PlaneGraph s v e f r  -> V.Vector (Dart s)-outgoingEdges v = PG.outgoingEdges v . _graph---- | Gets the neighbours of a particular vertex, in counterclockwise order--- around the vertex.------ running time: \(O(k)\), where \(k\) is the output size-neighboursOf   :: VertexId' s -> PlaneGraph s v e f r-               -> V.Vector (VertexId' s)-neighboursOf v = PG.neighboursOf v . _graph---- | Given a dart d that points into some vertex v, report the next dart in the--- cyclic order around v.------ running time: \(O(1)\)-nextIncidentEdge   :: Dart s -> PlaneGraph s v e f r -> Dart s-nextIncidentEdge d = PG.nextIncidentEdge d . _graph---- | Given a dart d that points into some vertex v, report the next dart in the--- cyclic order around v.------ running time: \(O(1)\)-prevIncidentEdge   :: Dart s -> PlaneGraph s v e f r -> Dart s-prevIncidentEdge d = PG.prevIncidentEdge d . _graph----- | The face to the left of the dart------ >>> leftFace (dart 1 "+1") myGraph--- FaceId 1--- >>> leftFace (dart 1 "-1") myGraph--- FaceId 2--- >>> leftFace (dart 2 "+1") myGraph--- FaceId 2--- >>> leftFace (dart 0 "+1") myGraph--- FaceId 0------ running time: \(O(1)\).-leftFace   :: Dart s -> PlaneGraph s v e f r  -> FaceId' s-leftFace d = PG.leftFace d . _graph---- | The face to the right of the dart------ >>> rightFace (dart 1 "+1") myGraph--- FaceId 2--- >>> rightFace (dart 1 "-1") myGraph--- FaceId 1--- >>> rightFace (dart 2 "+1") myGraph--- FaceId 1--- >>> rightFace (dart 0 "+1") myGraph--- FaceId 1------ running time: \(O(1)\).-rightFace   :: Dart s -> PlaneGraph s v e f r  -> FaceId' s-rightFace d = PG.rightFace d . _graph----- | Get the next edge along the face--------- running time: \(O(1)\).-nextEdge   :: Dart s -> PlaneGraph s v e f r -> Dart s-nextEdge d = PG.nextEdge d . _graph---- | Get the previous edge along the face--------- running time: \(O(1)\).-prevEdge   :: Dart s -> PlaneGraph s v e f r -> Dart s-prevEdge d = PG.prevEdge d . _graph----- | The darts bounding this face, for internal faces in clockwise order, for--- the outer face in counter clockwise order.--------- running time: \(O(k)\), where \(k\) is the output size.-boundary   :: FaceId' s -> PlaneGraph s v e f r  -> V.Vector (Dart s)-boundary f = PG.boundary f . _graph---- | Generates the darts incident to a face, starting with the given dart.--------- \(O(k)\), where \(k\) is the number of darts reported-boundary'   :: Dart s -> PlaneGraph s v e f r -> V.Vector (Dart s)-boundary' d = PG.boundary' d . _graph----- | The vertices bounding this face, for internal faces in clockwise order, for--- the outer face in counter clockwise order.--------- running time: \(O(k)\), where \(k\) is the output size.-boundaryVertices   :: FaceId' s -> PlaneGraph s v e f r-                   -> V.Vector (VertexId' s)-boundaryVertices f = PG.boundaryVertices f . _graph-------------------------------------------------------------------------------------- * Access data--vertexDataOf   :: VertexId' s -> Lens' (PlaneGraph s v e f r ) (VertexData r v)-vertexDataOf v = graph.PG.dataOf v--locationOf   :: VertexId' s -> Lens' (PlaneGraph s v e f r ) (Point 2 r)-locationOf v = vertexDataOf v.location---instance HasDataOf (PlaneGraph s v e f r) (VertexId' s) where-  type DataOf (PlaneGraph s v e f r) (VertexId' s) = v-  dataOf v = graph.dataOf v.vData--instance HasDataOf (PlaneGraph s v e f r) (Dart s) where-  type DataOf (PlaneGraph s v e f r) (Dart s) = e-  dataOf d = graph.dataOf d--instance HasDataOf (PlaneGraph s v e f r) (FaceId' s) where-  type DataOf (PlaneGraph s v e f r) (FaceId' s) = f-  dataOf f = graph.dataOf f----- | Traverse the vertices------ (^.vertexData) <$> traverseVertices (\i x -> Just (i,x)) myGraph--- Just [(VertexId 0,()),(VertexId 1,()),(VertexId 2,()),(VertexId 3,())]--- >>> traverseVertices (\i x -> print (i,x)) myGraph >> pure ()--- (VertexId 0,())--- (VertexId 1,())--- (VertexId 2,())--- (VertexId 3,())-traverseVertices   :: Applicative m-                   => (VertexId' s -> v -> m v')-                   -> PlaneGraph s v e f r-                   -> m (PlaneGraph s v' e f r)-traverseVertices f = itraverseOf (vertexData.itraversed) (\i -> f (VertexId i))---- | Traverses the darts------ >>> traverseDarts (\d x -> print (d,x)) myGraph >> pure ()--- (Dart (Arc 0) +1,"a+")--- (Dart (Arc 0) -1,"a-")--- (Dart (Arc 1) +1,"b+")--- (Dart (Arc 1) -1,"b-")--- (Dart (Arc 2) +1,"c+")--- (Dart (Arc 2) -1,"c-")--- (Dart (Arc 3) +1,"d+")--- (Dart (Arc 3) -1,"d-")--- (Dart (Arc 4) +1,"e+")--- (Dart (Arc 4) -1,"e-")--- (Dart (Arc 5) +1,"g+")--- (Dart (Arc 5) -1,"g-")-traverseDarts   :: Applicative m-                => (Dart s -> e -> m e')-                -> PlaneGraph s v e f r-                -> m (PlaneGraph s v e' f r)-traverseDarts f = traverseOf graph (PG.traverseDarts f)----- | Traverses the faces------ >>> traverseFaces (\i x -> print (i,x)) myGraph >> pure ()--- (FaceId 0,())--- (FaceId 1,())--- (FaceId 2,())--- (FaceId 3,())-traverseFaces   :: Applicative m-                => (FaceId' s  -> f -> m f')-                -> PlaneGraph s v e f r-                -> m (PlaneGraph s v e f' r)-traverseFaces f = traverseOf graph (PG.traverseFaces f)----- | Getter for the data at the endpoints of a dart------ running time: \(O(1)\)-endPointsOf   :: Dart s -> Getter (PlaneGraph s v e f r )-                                  (VertexData r v, VertexData r v)-endPointsOf d = graph.PG.endPointDataOf d---- | Data corresponding to the endpoints of the dart------ running time: \(O(1)\)-endPointData   :: Dart s -> PlaneGraph s v e f r-               ->  (VertexData r v, VertexData r v)-endPointData d = PG.endPointData d . _graph-------------------------------------------------------------------------------------- | gets the id of the outer face------ running time: \(O(n)\)-outerFaceId    :: (Ord r, Fractional r) => PlaneGraph s v e f r -> FaceId' s-outerFaceId ps = leftFace (outerFaceDart ps) ps----- | gets a dart incident to the outer face (in particular, that has the--- outerface on its left)------ running time: \(O(n)\)-outerFaceDart    :: (Ord r, Fractional r) => PlaneGraph s v e f r -> Dart s-outerFaceDart ps = d-  where-    (v,_)  = V.minimumBy (comparing (^._2.location.xCoord)) . vertices $ ps-    d :+ _ = V.maximumBy (cmpSlope `on` (^.extra))-           .  fmap (\d' -> d' :+ (edgeSegment d' ps)^.core.to supportingLine)-           $ incidentEdges v ps-    -- based on the approach sketched at https://cstheory.stackexchange.com/questions/27586/finding-outer-face-in-plane-graph-embedded-planar-graph-    -- basically: find the leftmost vertex, find the incident edge with the largest slope-    -- and take the face left of that edge. This is the outerface.-    -- note that this requires that the edges are straight line segments-    ------------------------------------------------------------------------------------------ | Reports all edges as line segments-edgeSegments    :: PlaneGraph s v e f r -> V.Vector (Dart s, LineSegment 2 v r :+ e)-edgeSegments ps = fmap withSegment . edges $ ps-  where-    withSegment (d,e) = let (p,q) = bimap vtxDataToExt vtxDataToExt-                                  $ ps^.endPointsOf d-                            seg   = ClosedLineSegment p q-                        in (d, seg :+ e)---- | Given a dart and the graph constructs the line segment representing the dart------ \(O(1)\)-edgeSegment      :: Dart s -> PlaneGraph s v e f r -> LineSegment 2 v r :+ e-edgeSegment d ps = seg :+ ps^.dataOf d-  where-    seg = let (p,q) = bimap vtxDataToExt vtxDataToExt $ ps^.endPointsOf d-          in ClosedLineSegment p q---- | The polygon describing the face------ runningtime: \(O(k)\), where \(k\) is the size of the face.-rawFaceBoundary      :: FaceId' s -> PlaneGraph s v e f r-                    -> SimplePolygon v r :+ f-rawFaceBoundary i ps = pg :+ (ps^.dataOf i)-  where-    pg = fromPoints . F.toList . fmap (\j -> ps^.graph.dataOf j.to vtxDataToExt)-       . boundaryVertices i $ ps---- | Alias for rawFace Boundary------ runningtime: \(O(k)\), where \(k\) is the size of the face.-rawFacePolygon :: FaceId' s -> PlaneGraph s v e f r -> SimplePolygon v r :+ f-rawFacePolygon = rawFaceBoundary---- | Lists all faces of the plane graph.-rawFacePolygons    :: PlaneGraph s v e f r-                   -> V.Vector (FaceId' s, SimplePolygon v r :+ f)-rawFacePolygons ps = fmap (\i -> (i,rawFacePolygon i ps)) . faces' $ ps-------------------------------------------------------------------------------------- * Reading and Writing the Plane Graph---- | Reads a plane graph from a bytestring-readPlaneGraph   :: (FromJSON v, FromJSON e, FromJSON f, FromJSON r)-                 => proxy s -> B.ByteString-                 -> Either ParseException (PlaneGraph s v e f r)-readPlaneGraph _ = decodeYaml---- | Writes a plane graph to a bytestring-writePlaneGraph :: (ToJSON v, ToJSON e, ToJSON f, ToJSON r)-                => PlaneGraph s v e f r -> B.ByteString-writePlaneGraph = encodeYaml . Versioned planeGraphVersion---planeGraphVersion :: Version-planeGraphVersion = makeVersion [1,0]-------------------------------------------------------------------------------------- | Labels the edges of a plane graph with their distances, as specified by--- the distance function.-withEdgeDistances     :: (Point 2 r ->  Point 2 r -> a)-                      -> PlaneGraph s p e f r -> PlaneGraph s p (a :+ e) f r-withEdgeDistances f g = g&graph.PG.dartData %~ fmap (\(d,x) -> (d,len d :+ x))-  where-    len d = uncurry f . over both (^.location) $ endPointData d g+import           Data.PlaneGraph.IO+import           Data.PlaneGraph.Core
+ src/Data/PlaneGraph/AdjRep.hs view
@@ -0,0 +1,34 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Data.PlaneGraph.AdjRep+-- Copyright   :  (C) Frank Staals+-- License     :  see the LICENSE file+-- Maintainer  :  Frank Staals+--+-- Data types that help encode/decode a planegraph as a JSON/YAML file.+--+--------------------------------------------------------------------------------+module Data.PlaneGraph.AdjRep( Gr(..)+                             , Vtx(..)+                             , Face(..)+                             ) where++import Data.PlanarGraph.AdjRep(Gr(..), Face(..))+import Data.Aeson+import Data.Geometry.Point+import GHC.Generics (Generic)++--------------------------------------------------------------------------------++-- | A vertex, represented by an id, location, its adjacencies, and its data.+data Vtx v e r = Vtx { id    :: Int+                     , loc   :: Point 2 r+                     , adj   :: [(Int,e)] -- ^ adjacent vertices + data on the+                                          -- edge. Adjacencies are given in+                                          -- arbitrary order+                     , vData :: v+                     } deriving (Generic, Functor)++instance (ToJSON r,   ToJSON v, ToJSON e)     => ToJSON   (Vtx v e r) where+  toEncoding = genericToEncoding defaultOptions+instance (FromJSON r, FromJSON v, FromJSON e) => FromJSON (Vtx v e r)
+ src/Data/PlaneGraph/Core.hs view
@@ -0,0 +1,698 @@+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE OverloadedStrings #-}+--------------------------------------------------------------------------------+-- |+-- Module      :  Data.PlaneGraph.Core+-- Copyright   :  (C) Frank Staals+-- License     :  see the LICENSE file+-- Maintainer  :  Frank Staals+--+-- Data type for planar graphs embedded in \(\mathbb{R}^2\). For functions that+-- export faces and edges etc, we assume the graph has a (planar) straight line+-- embedding.+--+--------------------------------------------------------------------------------+module Data.PlaneGraph.Core( PlaneGraph(PlaneGraph), graph+                           , PlanarGraph+                           , VertexData(VertexData), vData, location, vtxDataToExt+                           , fromSimplePolygon, fromConnectedSegments+                           , PG.fromAdjacencyLists++                           , numVertices, numEdges, numFaces, numDarts+                           , dual++                           , vertices', vertices+                           , edges', edges+                           , faces', faces, internalFaces, faces''+                           , darts', darts+                           , traverseVertices, traverseDarts, traverseFaces++                           , headOf, tailOf, twin, endPoints++                           , incidentEdges, incomingEdges, outgoingEdges+                           , neighboursOf+                           , nextIncidentEdge, prevIncidentEdge+++                           , leftFace, rightFace+                           , nextEdge, prevEdge+                           , boundary, boundary', boundaryDart, boundaryVertices+                           , outerFaceId, outerFaceDart++                           , vertexDataOf, locationOf, HasDataOf(..)++                           , endPointsOf, endPointData+                           , vertexData, faceData, dartData, rawDartData++                           , edgeSegment, edgeSegments+                           , rawFacePolygon, rawFaceBoundary+                           , rawFacePolygons++                           , VertexId(..), FaceId(..), Dart, World(..), VertexId', FaceId'+++                           , withEdgeDistances+                           -- , writePlaneGraph, readPlaneGraph+                           ) where+++import           Control.Lens hiding (holes, holesOf, (.=))+import           Data.Aeson+import qualified Data.CircularSeq as C+import           Data.Ext+import qualified Data.Foldable as F+import           Data.Function (on)+import           Data.Geometry.Box+import           Data.Geometry.Interval+import           Data.Geometry.Line (cmpSlope, supportingLine)+import           Data.Geometry.LineSegment hiding (endPoints)+import           Data.Geometry.Point+import           Data.Geometry.Polygon+import           Data.Geometry.Properties+import qualified Data.List.NonEmpty as NonEmpty+import qualified Data.Map as M+import           Data.Ord (comparing)+import qualified Data.PlanarGraph as PG+import           Data.PlanarGraph( PlanarGraph, planarGraph, dual+                                 , Dart(..), VertexId(..), FaceId(..), Arc(..)+                                 , Direction(..), twin+                                 , World(..)+                                 , FaceId', VertexId'+                                 , HasDataOf(..)+                                 )+import           Data.Util+import qualified Data.Vector as V+import           GHC.Generics (Generic)++--------------------------------------------------------------------------------+++-- $setup+-- >>> import Data.Proxy+-- >>> import Data.PlaneGraph.AdjRep(Gr(Gr),Face(Face),Vtx(Vtx))+-- >>> import Data.PlaneGraph.IO(fromAdjRep)+-- >>> import Data.PlanarGraph.Dart(Dart(..),Arc(..))+-- >>> :{+-- let dart i s = Dart (Arc i) (read s)+--     small :: Gr (Vtx Int String Int) (Face String)+--     small = Gr [ Vtx 0 (Point2 0 0) [ (2,"0->2")+--                                     , (1,"0->1")+--                                     , (3,"0->3")+--                                     ] 0+--                , Vtx 1 (Point2 2 2) [ (0,"1->0")+--                                     , (2,"1->2")+--                                     , (3,"1->3")+--                                     ] 1+--                , Vtx 2 (Point2 2 0) [ (0,"2->0")+--                                     , (1,"2->1")+--                                     ] 2+--                , Vtx 3 (Point2 (-1) 4) [ (0,"3->0")+--                                        , (1,"3->1")+--                                        ] 3+--                ]+--                [ Face (2,1) "OuterFace"+--                , Face (0,1) "A"+--                , Face (1,0) "B"+--                ]+--     smallG = fromAdjRep (Proxy :: Proxy ()) small+-- :}+--+--+-- This represents the following graph. Note that the graph is undirected, the+-- arrows are just to indicate what the Positive direction of the darts is.+--+-- ![myGraph](docs/Data/PlaneGraph/small.png)+++--------------------------------------------------------------------------------+-- * Vertex Data++-- | Note that the functor instance is in v+data VertexData r v = VertexData { _location :: !(Point 2 r)+                                 , _vData    :: !v+                                 } deriving (Show,Eq,Ord,Generic+                                            ,Functor,Foldable,Traversable)+makeLenses ''VertexData++vtxDataToExt                  :: VertexData r v -> Point 2 r :+ v+vtxDataToExt (VertexData p v) = p :+ v++instance Bifunctor VertexData where+  bimap f g (VertexData p v) = VertexData (fmap f p) (g v)++instance (FromJSON r, FromJSON v) => FromJSON (VertexData r v) where+  parseJSON = fmap (\(l :+ d) -> VertexData l d) . parseJSON++instance (ToJSON r, ToJSON v) => ToJSON (VertexData r v) where+  toJSON     = toJSON     . vtxDataToExt+  toEncoding = toEncoding . vtxDataToExt++--------------------------------------------------------------------------------+-- * The PlaneGraph type++-- | Embedded, *connected*, planar graph+newtype PlaneGraph s v e f r =+    PlaneGraph { _graph :: PlanarGraph s Primal (VertexData r v) e f }+      deriving (Show,Eq,Generic)+makeLenses ''PlaneGraph++type instance NumType   (PlaneGraph s v e f r) = r+type instance Dimension (PlaneGraph s v e f r) = 2++instance Functor (PlaneGraph s v e f) where+  fmap f pg = pg&graph.PG.vertexData.traverse.location %~ fmap f++instance IsBoxable (PlaneGraph s v e f r) where+  boundingBox = boundingBoxList' . F.toList . fmap (^._2.location) . vertices+++--------------------------------------------------------------------------------+-- * Constructing a Plane Graph++-- | Construct a plane graph from a simple polygon. It is assumed that the+-- polygon is given in counterclockwise order.+--+-- the interior of the polygon will have faceId 0+--+-- pre: the input polygon is given in counterclockwise order+-- running time: \(O(n)\).+fromSimplePolygon                            :: proxy s+                                             -> SimplePolygon p r+                                             -> f -- ^ data inside+                                             -> f -- ^ data outside the polygon+                                             -> PlaneGraph s p () f r+fromSimplePolygon p (SimplePolygon vs) iD oD = PlaneGraph g'+  where+    g      = fromVertices p vs+    fData' = V.fromList [iD, oD]+    g'     = g & PG.faceData .~ fData'++-- | Constructs a planar from the given vertices+fromVertices      :: proxy s+                  -> C.CSeq (Point 2 r :+ p)+                  -> PlanarGraph s Primal (VertexData r p) () ()+fromVertices _ vs = g&PG.vertexData .~ vData'+  where+    n = length vs+    g = planarGraph [ [ (Dart (Arc i)               Positive, ())+                      , (Dart (Arc $ (i+1) `mod` n) Negative, ())+                      ]+                    | i <- [0..(n-1)]]+    vData' = V.fromList . map (\(p :+ e) -> VertexData p e) . F.toList $ vs++-- | Constructs a connected plane graph+--+-- pre: The segments form a single connected component+--+-- running time: \(O(n\log n)\)+fromConnectedSegments      :: (Foldable f, Ord r, Num r)+                           => proxy s+                           -> f (LineSegment 2 p r :+ e)+                           -> PlaneGraph s (NonEmpty.NonEmpty p) e () r+fromConnectedSegments _ ss = PlaneGraph $ planarGraph dts & PG.vertexData .~ vxData+  where+    pts         = M.fromListWith (<>) . concatMap f . zipWith g [0..] . F.toList $ ss+    f (s :+ e)  = [ ( s^.start.core+                    , SP (sing $ s^.start.extra) [(s^.end.core)   :+ h Positive e])+                  , ( s^.end.core+                    , SP (sing $ s^.end.extra)   [(s^.start.core) :+ h Negative e])+                  ]+    g i (s :+ e) = s :+ (Arc i :+ e)+    h d (a :+ e) = (Dart a d, e)++    sing x = x NonEmpty.:| []++    vts    = map (\(p,sp) -> (p,map (^.extra) . sortArround (ext p) <$> sp))+           . M.assocs $ pts+    -- vertex Data+    vxData = V.fromList . map (\(p,sp) -> VertexData p (sp^._1)) $ vts+    -- The darts+    dts    = map (^._2._2) vts+++--------------------------------------------------------------------------------+-- * Basic Graph information++-- | Get the number of vertices+--+-- >>> numVertices smallG+-- 4+numVertices :: PlaneGraph s v e f r  -> Int+numVertices = PG.numVertices . _graph++-- | Get the number of Darts+--+-- >>> numDarts smallG+-- 10+numDarts :: PlaneGraph s v e f r  -> Int+numDarts = PG.numDarts . _graph++-- | Get the number of Edges+--+-- >>> numEdges smallG+-- 5+numEdges :: PlaneGraph s v e f r  -> Int+numEdges = PG.numEdges . _graph++-- | Get the number of faces+--+-- >>> numFaces smallG+-- 3+numFaces :: PlaneGraph s v e f r  -> Int+numFaces = PG.numFaces . _graph++-- | Enumerate all vertices+--+-- >>> vertices' smallG+-- [VertexId 0,VertexId 1,VertexId 2,VertexId 3]+vertices'   :: PlaneGraph s v e f r  -> V.Vector (VertexId' s)+vertices' = PG.vertices' . _graph++-- | Enumerate all vertices, together with their vertex data+-- >>> mapM_ print $ vertices smallG+-- (VertexId 0,VertexData {_location = Point2 [0,0], _vData = 0})+-- (VertexId 1,VertexData {_location = Point2 [2,2], _vData = 1})+-- (VertexId 2,VertexData {_location = Point2 [2,0], _vData = 2})+-- (VertexId 3,VertexData {_location = Point2 [-1,4], _vData = 3})+vertices   :: PlaneGraph s v e f r  -> V.Vector (VertexId' s, VertexData r v)+vertices = PG.vertices . _graph++-- | Enumerate all darts+darts' :: PlaneGraph s v e f r  -> V.Vector (Dart s)+darts' = PG.darts' . _graph++-- | Get all darts together with their data+darts :: PlaneGraph s v e f r  -> V.Vector (Dart s, e)+darts = PG.darts . _graph++-- | Enumerate all edges. We report only the Positive darts+edges' :: PlaneGraph s v e f r  -> V.Vector (Dart s)+edges' = PG.edges' . _graph++-- | Lens to access the raw dart data, use at your own risk+rawDartData :: Lens (PlaneGraph s v e f r) (PlaneGraph s v e' f r)+                    (V.Vector e) (V.Vector e')+rawDartData = graph.PG.rawDartData++-- | lens to access the Dart Data+dartData :: Lens (PlaneGraph s v e f r) (PlaneGraph s v e' f r)+                 (V.Vector (Dart s, e)) (V.Vector (Dart s, e'))+dartData = graph.PG.dartData++-- | Lens to access face data+faceData :: Lens (PlaneGraph s v e f r) (PlaneGraph s v e f' r)+                 (V.Vector f) (V.Vector f')+faceData = graph.PG.faceData++vertexData :: Lens (PlaneGraph s v e f r) (PlaneGraph s v' e f r)+                   (V.Vector v) (V.Vector v')+vertexData = lens get'' set''+  where+    get'' pg    = let v = pg^.graph.PG.vertexData in (^.vData) <$> v+    set'' pg v' = pg&graph.PG.vertexData %~ V.zipWith f v'+    f x (VertexData l _) = VertexData l x++-- | Enumerate all edges with their edge data. We report only the Positive+-- darts.+--+-- >>> mapM_ print $ edges smallG+-- (Dart (Arc 0) +1,"0->2")+-- (Dart (Arc 1) +1,"0->1")+-- (Dart (Arc 2) +1,"0->3")+-- (Dart (Arc 4) +1,"1->2")+-- (Dart (Arc 3) +1,"1->3")+edges :: PlaneGraph s v e f r  -> V.Vector (Dart s, e)+edges = PG.edges . _graph++-- | Enumerate all faces in the plane graph+faces' :: PlaneGraph s v e f r  -> V.Vector (FaceId' s)+faces' = PG.faces' . _graph++-- | All faces with their face data.+--+-- >>> mapM_ print $ faces smallG+-- (FaceId 0,"OuterFace")+-- (FaceId 1,"A")+-- (FaceId 2,"B")+faces :: PlaneGraph s v e f r  -> V.Vector (FaceId' s, f)+faces = PG.faces . _graph+++-- | Reports the outerface and all internal faces separately.+-- running time: \(O(n)\)+faces''   :: (Ord r, Fractional r)+          => PlaneGraph s v e f r -> ((FaceId' s, f), V.Vector (FaceId' s, f))+faces'' g = let i = outerFaceId g+            in ((i,g^.dataOf i), V.filter (\(j,_) -> i /= j) $ faces g)++-- | Reports all internal faces.+-- running time: \(O(n)\)+internalFaces :: (Ord r, Fractional r)+              => PlaneGraph s v e f r -> V.Vector (FaceId' s, f)+internalFaces = snd . faces''++-- | The tail of a dart, i.e. the vertex this dart is leaving from+--+-- running time: \(O(1)\)+--+-- >>> tailOf (dart 0 "+1") smallG+-- VertexId 0+tailOf   :: Dart s -> PlaneGraph s v e f r  -> VertexId' s+tailOf d = PG.tailOf d . _graph++-- | The vertex this dart is heading in to+--+-- running time: \(O(1)\)+--+-- >>> headOf (dart 0 "+1") smallG+-- VertexId 2+headOf   :: Dart s -> PlaneGraph s v e f r  -> VertexId' s+headOf d = PG.headOf d . _graph++-- | endPoints d g = (tailOf d g, headOf d g)+--+-- running time: \(O(1)\)+--+-- >>> endPoints (dart 0 "+1") smallG+-- (VertexId 0,VertexId 2)+endPoints   :: Dart s -> PlaneGraph s v e f r+            -> (VertexId' s, VertexId' s)+endPoints d = PG.endPoints d . _graph++-- | All edges incident to vertex v, in counterclockwise order around v.+--+-- running time: \(O(k)\), where \(k\) is the output size+--+-- >>> incidentEdges (VertexId 1) smallG+-- [Dart (Arc 1) -1,Dart (Arc 4) +1,Dart (Arc 3) +1]+incidentEdges   :: VertexId' s -> PlaneGraph s v e f r -> V.Vector (Dart s)+incidentEdges v = PG.incidentEdges v . _graph++-- | All incoming edges incident to vertex v, in counterclockwise order around v.+--+-- >>> incomingEdges (VertexId 1) smallG+-- [Dart (Arc 1) -1]+incomingEdges   :: VertexId' s -> PlaneGraph s v e f r -> V.Vector (Dart s)+incomingEdges v = PG.incomingEdges v . _graph++-- | All outgoing edges incident to vertex v, in counterclockwise order around v.+--+-- >>> outgoingEdges (VertexId 1) smallG+-- [Dart (Arc 4) +1,Dart (Arc 3) +1]+outgoingEdges   :: VertexId' s -> PlaneGraph s v e f r  -> V.Vector (Dart s)+outgoingEdges v = PG.outgoingEdges v . _graph++-- | Gets the neighbours of a particular vertex, in counterclockwise order+-- around the vertex.+--+-- running time: \(O(k)\), where \(k\) is the output size+--+-- >>> neighboursOf (VertexId 1) smallG+-- [VertexId 0,VertexId 2,VertexId 3]+neighboursOf   :: VertexId' s -> PlaneGraph s v e f r+               -> V.Vector (VertexId' s)+neighboursOf v = PG.neighboursOf v . _graph++-- | Given a dart d that points into some vertex v, report the next dart in the+-- cyclic order around v in clockwise direction.+--+-- running time: \(O(1)\)+--+-- >>> nextIncidentEdge (dart 1 "+1") smallG+-- Dart (Arc 2) +1+nextIncidentEdge   :: Dart s -> PlaneGraph s v e f r -> Dart s+nextIncidentEdge d = PG.nextIncidentEdge d . _graph++-- | Given a dart d that points into some vertex v, report the next dart in the+-- cyclic order around v (in clockwise order)+--+-- running time: \(O(1)\)+--+-- >>> prevIncidentEdge (dart 1 "+1") smallG+-- Dart (Arc 0) +1+prevIncidentEdge   :: Dart s -> PlaneGraph s v e f r -> Dart s+prevIncidentEdge d = PG.prevIncidentEdge d . _graph+++-- | The face to the left of the dart+--+-- running time: \(O(1)\).+--+-- >>> leftFace (dart 1 "+1") smallG+-- FaceId 2+-- >>> leftFace (dart 1 "-1") smallG+-- FaceId 1+-- >>> leftFace (dart 2 "+1") smallG+-- FaceId 0+-- >>> leftFace (dart 2 "-1") smallG+-- FaceId 2+leftFace   :: Dart s -> PlaneGraph s v e f r  -> FaceId' s+leftFace d = PG.leftFace d . _graph++-- | The face to the right of the dart+--+-- running time: \(O(1)\).+--+-- >>> rightFace (dart 1 "+1") smallG+-- FaceId 1+-- >>> rightFace (dart 1 "-1") smallG+-- FaceId 2+-- >>> rightFace (dart 2 "+1") smallG+-- FaceId 2+-- >>> rightFace (dart 2 "-1") smallG+-- FaceId 0+rightFace   :: Dart s -> PlaneGraph s v e f r  -> FaceId' s+rightFace d = PG.rightFace d . _graph+++-- | Get the next edge along the face+--+--+-- running time: \(O(1)\).+--+-- >>> nextEdge (dart 1 "+1") smallG+-- Dart (Arc 4) +1+nextEdge   :: Dart s -> PlaneGraph s v e f r -> Dart s+nextEdge d = PG.nextEdge d . _graph++-- | Get the previous edge along the face+--+--+-- running time: \(O(1)\).+--+-- >>> prevEdge (dart 1 "+1") smallG+-- Dart (Arc 0) -1+prevEdge   :: Dart s -> PlaneGraph s v e f r -> Dart s+prevEdge d = PG.prevEdge d . _graph+++-- | The darts bounding this face, for internal faces in clockwise order, for+-- the outer face in counter clockwise order.+--+--+-- running time: \(O(k)\), where \(k\) is the output size.+--+--+boundary   :: FaceId' s -> PlaneGraph s v e f r  -> V.Vector (Dart s)+boundary f = PG.boundary f . _graph++-- | Generates the darts incident to a face, starting with the given dart.+--+--+-- \(O(k)\), where \(k\) is the number of darts reported+boundary'   :: Dart s -> PlaneGraph s v e f r -> V.Vector (Dart s)+boundary' d = PG.boundary' d . _graph++-- | Gets a dart bounding this face. I.e. a dart d such that the face lies to+-- the right of the dart.+boundaryDart   :: FaceId' s -> PlaneGraph s v e f r -> Dart s+boundaryDart f = PG.boundaryDart f . _graph++-- | The vertices bounding this face, for internal faces in clockwise order, for+-- the outer face in counter clockwise order.+--+--+-- running time: \(O(k)\), where \(k\) is the output size.+boundaryVertices   :: FaceId' s -> PlaneGraph s v e f r+                   -> V.Vector (VertexId' s)+boundaryVertices f = PG.boundaryVertices f . _graph+++--------------------------------------------------------------------------------+-- * Access data++vertexDataOf   :: VertexId' s -> Lens' (PlaneGraph s v e f r ) (VertexData r v)+vertexDataOf v = graph.PG.dataOf v++locationOf   :: VertexId' s -> Lens' (PlaneGraph s v e f r ) (Point 2 r)+locationOf v = vertexDataOf v.location+++instance HasDataOf (PlaneGraph s v e f r) (VertexId' s) where+  type DataOf (PlaneGraph s v e f r) (VertexId' s) = v+  dataOf v = graph.dataOf v.vData++instance HasDataOf (PlaneGraph s v e f r) (Dart s) where+  type DataOf (PlaneGraph s v e f r) (Dart s) = e+  dataOf d = graph.dataOf d++instance HasDataOf (PlaneGraph s v e f r) (FaceId' s) where+  type DataOf (PlaneGraph s v e f r) (FaceId' s) = f+  dataOf f = graph.dataOf f+++-- | Traverse the vertices+--+-- (^.vertexData) <$> traverseVertices (\i x -> Just (i,x)) smallG+-- Just [(VertexId 0,0),(VertexId 1,1),(VertexId 2,2),(VertexId 3,3)]+-- >>> traverseVertices (\i x -> print (i,x)) smallG >> pure ()+-- (VertexId 0,0)+-- (VertexId 1,1)+-- (VertexId 2,2)+-- (VertexId 3,3)+traverseVertices   :: Applicative m+                   => (VertexId' s -> v -> m v')+                   -> PlaneGraph s v e f r+                   -> m (PlaneGraph s v' e f r)+traverseVertices f = itraverseOf (vertexData.itraversed) (\i -> f (VertexId i))++-- | Traverses the darts+--+-- >>> traverseDarts (\d x -> print (d,x)) smallG >> pure ()+-- (Dart (Arc 0) +1,"0->2")+-- (Dart (Arc 0) -1,"2->0")+-- (Dart (Arc 1) +1,"0->1")+-- (Dart (Arc 1) -1,"1->0")+-- (Dart (Arc 2) +1,"0->3")+-- (Dart (Arc 2) -1,"3->0")+-- (Dart (Arc 3) +1,"1->3")+-- (Dart (Arc 3) -1,"3->1")+-- (Dart (Arc 4) +1,"1->2")+-- (Dart (Arc 4) -1,"2->1")+traverseDarts   :: Applicative m+                => (Dart s -> e -> m e')+                -> PlaneGraph s v e f r+                -> m (PlaneGraph s v e' f r)+traverseDarts f = traverseOf graph (PG.traverseDarts f)+++-- | Traverses the faces+--+-- >>> traverseFaces (\i x -> print (i,x)) smallG >> pure ()+-- (FaceId 0,"OuterFace")+-- (FaceId 1,"A")+-- (FaceId 2,"B")+traverseFaces   :: Applicative m+                => (FaceId' s  -> f -> m f')+                -> PlaneGraph s v e f r+                -> m (PlaneGraph s v e f' r)+traverseFaces f = traverseOf graph (PG.traverseFaces f)+++-- | Getter for the data at the endpoints of a dart+--+-- running time: \(O(1)\)+endPointsOf   :: Dart s -> Getter (PlaneGraph s v e f r )+                                  (VertexData r v, VertexData r v)+endPointsOf d = graph.PG.endPointDataOf d++-- | Data corresponding to the endpoints of the dart+--+-- running time: \(O(1)\)+endPointData   :: Dart s -> PlaneGraph s v e f r+               ->  (VertexData r v, VertexData r v)+endPointData d = PG.endPointData d . _graph++--------------------------------------------------------------------------------++-- | gets the id of the outer face+--+-- running time: \(O(n)\)+--+outerFaceId    :: (Ord r, Fractional r) => PlaneGraph s v e f r -> FaceId' s+outerFaceId ps = leftFace (outerFaceDart ps) ps+++-- | gets a dart incident to the outer face (in particular, that has the+-- outerface on its left)+--+-- running time: \(O(n)\)+--+outerFaceDart    :: (Ord r, Fractional r) => PlaneGraph s v e f r -> Dart s+outerFaceDart ps = d+  where+    (v,_)  = V.minimumBy (comparing (^._2.location)) . vertices $ ps+           -- compare lexicographically; i.e. if same x-coord prefer the one with the+           -- smallest y-coord+    d :+ _ = V.maximumBy (cmpSlope `on` (^.extra))+           .  fmap (\d' -> d' :+ (edgeSegment d' ps)^.core.to supportingLine)+           $ incidentEdges v ps+    -- based on the approach sketched at https://cstheory.stackexchange.com/questions/27586/finding-outer-face-in-plane-graph-embedded-planar-graph+    -- basically: find the leftmost vertex, find the incident edge with the largest slope+    -- and take the face left of that edge. This is the outerface.+    -- note that this requires that the edges are straight line segments+++--------------------------------------------------------------------------------+-- * Reporting Geometries++-- | Reports all edges as line segments+--+-- >>> mapM_ print $ edgeSegments smallG+-- (Dart (Arc 0) +1,LineSegment (Closed (Point2 [0,0] :+ 0)) (Closed (Point2 [2,0] :+ 2)) :+ "0->2")+-- (Dart (Arc 1) +1,LineSegment (Closed (Point2 [0,0] :+ 0)) (Closed (Point2 [2,2] :+ 1)) :+ "0->1")+-- (Dart (Arc 2) +1,LineSegment (Closed (Point2 [0,0] :+ 0)) (Closed (Point2 [-1,4] :+ 3)) :+ "0->3")+-- (Dart (Arc 4) +1,LineSegment (Closed (Point2 [2,2] :+ 1)) (Closed (Point2 [2,0] :+ 2)) :+ "1->2")+-- (Dart (Arc 3) +1,LineSegment (Closed (Point2 [2,2] :+ 1)) (Closed (Point2 [-1,4] :+ 3)) :+ "1->3")+edgeSegments    :: PlaneGraph s v e f r -> V.Vector (Dart s, LineSegment 2 v r :+ e)+edgeSegments ps = fmap withSegment . edges $ ps+  where+    withSegment (d,e) = let (p,q) = bimap vtxDataToExt vtxDataToExt+                                  $ ps^.endPointsOf d+                            seg   = ClosedLineSegment p q+                        in (d, seg :+ e)++-- | Given a dart and the graph constructs the line segment representing the+-- dart. The segment \(\overline{uv})\) is has \(u\) as its tail and \(v\) as+-- its head.+--+-- \(O(1)\)+edgeSegment      :: Dart s -> PlaneGraph s v e f r -> LineSegment 2 v r :+ e+edgeSegment d ps = seg :+ ps^.dataOf d+  where+    seg = let (p,q) = bimap vtxDataToExt vtxDataToExt $ ps^.endPointsOf d+          in ClosedLineSegment p q++-- | The polygon describing the face+--+-- runningtime: \(O(k)\), where \(k\) is the size of the face.+--+--+rawFaceBoundary      :: FaceId' s -> PlaneGraph s v e f r+                    -> SimplePolygon v r :+ f+rawFaceBoundary i ps = pg :+ (ps^.dataOf i)+  where+    pg = fromPoints . F.toList . fmap (\j -> ps^.graph.dataOf j.to vtxDataToExt)+       . boundaryVertices i $ ps++-- | Alias for rawFace Boundary+--+-- runningtime: \(O(k)\), where \(k\) is the size of the face.+rawFacePolygon :: FaceId' s -> PlaneGraph s v e f r -> SimplePolygon v r :+ f+rawFacePolygon = rawFaceBoundary++-- | Lists all faces of the plane graph.+rawFacePolygons    :: PlaneGraph s v e f r+                   -> V.Vector (FaceId' s, SimplePolygon v r :+ f)+rawFacePolygons ps = fmap (\i -> (i,rawFacePolygon i ps)) . faces' $ ps++--------------------------------------------------------------------------------++-- | Labels the edges of a plane graph with their distances, as specified by+-- the distance function.+withEdgeDistances     :: (Point 2 r ->  Point 2 r -> a)+                      -> PlaneGraph s p e f r -> PlaneGraph s p (a :+ e) f r+withEdgeDistances f g = g&graph.PG.dartData %~ fmap (\(d,x) -> (d,len d :+ x))+  where+    len d = uncurry f . over both (^.location) $ endPointData d g
− src/Data/PlaneGraph/Draw.hs
@@ -1,24 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-module Data.PlaneGraph.Draw where--import           Data.Ext-import           Data.Geometry.Ipe-import           Data.PlaneGraph-import qualified Data.Vector as V---drawPlaneGraph   :: IpeOut (PlaneGraph s v e f r) Group r-drawPlaneGraph g = ipeGroup $ concatMap V.toList [vs, es, fs]-  where-    vs = (\(_,VertexData p _) -> iO $ defIO p) <$> vertices g-    es = (\(_,s :+ _)         -> iO $ defIO s) <$> edgeSegments g-    fs = (\(_,f :+ _)         -> iO $ defIO f) <$> rawFacePolygons g----- drawPlaneGraphWith :: (VertexId' s :+ v -> IpeObject r)---                    -> (Dart s :+ e      -> IpeObject r)---                    -> (FaceId' s :+ f   -> IpeObject r)---                    -> IpeObject--- drawPlaneGraphWith vertexF edgeF faceF g = asIpeGroup $ vs ++ es ++ fs---   where---     vs = map vertices ()
+ src/Data/PlaneGraph/IO.hs view
@@ -0,0 +1,128 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+--------------------------------------------------------------------------------+-- |+-- Module      :  Data.PlaneGraph.IO+-- Copyright   :  (C) Frank Staals+-- License     :  see the LICENSE file+-- Maintainer  :  Frank Staals+--+-- Converting from/to Adjacency Representation of the plane graph+--+--------------------------------------------------------------------------------+module Data.PlaneGraph.IO where++import           Control.Lens+import           Control.Monad (forM_)+import           Data.Aeson+import           Data.Bifunctor+import qualified Data.ByteString as B+import           Data.Ext+import           Data.Geometry.Point+import qualified Data.List as List+import qualified Data.PlanarGraph.AdjRep as PGA+import qualified Data.PlanarGraph.IO as PGIO+import           Data.PlaneGraph.Core+import           Data.PlaneGraph.AdjRep (Face,Vtx(Vtx),Gr(Gr))+import           Data.Proxy+import qualified Data.Vector as V+import qualified Data.Vector.Mutable as MV+import           Data.Yaml (ParseException)+import           Data.Yaml.Util++--------------------------------------------------------------------------------++-- $setup+-- >>> import Data.PlanarGraph.Dart+-- >>> import Data.PlanarGraph.AdjRep(Face(..))+-- >>> :{+-- let dart i s = Dart (Arc i) (read s)+--     small :: Gr (Vtx Int String Int) (Face String)+--     small = Gr [ Vtx 0 (Point2 0 0) [ (2,"0->2")+--                                     , (1,"0->1")+--                                     , (3,"0->3")+--                                     ] 0+--                , Vtx 1 (Point2 2 2) [ (0,"1->0")+--                                     , (2,"1->2")+--                                     , (3,"1->3")+--                                     ] 1+--                , Vtx 2 (Point2 2 0) [ (0,"2->0")+--                                     , (1,"2->1")+--                                     ] 2+--                , Vtx 3 (Point2 (-1) 4) [ (0,"3->0")+--                                        , (1,"3->1")+--                                        ] 3+--                ]+--                [ Face (2,1) "OuterFace"+--                , Face (0,1) "A"+--                , Face (1,0) "B"+--                ]+--     smallG = fromAdjRep (Proxy :: Proxy ()) small+-- :}+--+--+-- This represents the following graph. Note that the graph is undirected, the+-- arrows are just to indicate what the Positive direction of the darts is.+--+-- ![myGraph](docs/Data/PlaneGraph/small.png)++--------------------------------------------------------------------------------+-- * Reading and Writing the Plane Graph++-- | Reads a plane graph from a bytestring+readPlaneGraph   :: (FromJSON v, FromJSON e, FromJSON f, FromJSON r)+                 => proxy s -> B.ByteString+                 -> Either ParseException (PlaneGraph s v e f r)+readPlaneGraph _ = decodeYaml++-- | Writes a plane graph to a bytestring+writePlaneGraph :: (ToJSON v, ToJSON e, ToJSON f, ToJSON r)+                => PlaneGraph s v e f r -> B.ByteString+writePlaneGraph = encodeYaml++--------------------------------------------------------------------------------++instance (ToJSON v, ToJSON e, ToJSON f, ToJSON r) => ToJSON (PlaneGraph s v e f r) where+  toEncoding = toEncoding . toAdjRep+  toJSON     = toJSON     . toAdjRep++instance (FromJSON v, FromJSON e, FromJSON f, FromJSON r)+         => FromJSON (PlaneGraph s v e f r) where+  parseJSON v = fromAdjRep (Proxy :: Proxy s) <$> parseJSON v++--------------------------------------------------------------------------------++-- | Transforms the planar graph into a format taht can be easily converted+-- into JSON format. For every vertex, the adjacent vertices are given in+-- counter clockwise order.+--+-- See 'toAdjacencyLists' for notes on how we handle self-loops.+--+-- running time: \(O(n)\)+toAdjRep :: PlaneGraph s v e f r -> Gr (Vtx v e r) (Face f)+toAdjRep = first (\(PGA.Vtx v aj (VertexData p x)) -> Vtx v p aj x) . PGIO.toAdjRep+         .  view graph++fromAdjRep    :: proxy s -> Gr (Vtx v e r) (Face f) -> PlaneGraph s v e f r+fromAdjRep px = PlaneGraph . PGIO.fromAdjRep px+              . first (\(Vtx v p aj x) -> PGA.Vtx v aj $ VertexData p x)++--------------------------------------------------------------------------------++-- | Orders the adjacencylists of a plane graph (with \(n\) vertices) (in Adj+-- repr) so that they are all counter-clockwise around the vertices.+--+-- running time: \(O(n \log n)\)+makeCCW            :: (Num r, Ord r) => Gr (Vtx v e r) f -> Gr (Vtx v e r) f+makeCCW (Gr vs fs) = Gr (map sort' vs) fs+  where+    -- create an array that we can use to lookup the vertex locations in constant time.+    location' = V.create $ do+                   a <- MV.new (length vs)+                   forM_ vs $ \(Vtx i p _ _) ->+                     MV.write a i $ ext p+                   pure a+    -- sort the adjacencies around every vertex v+    sort' (Vtx v p ajs x) = Vtx v p (List.sortBy (around p) ajs) x+    around p (a,_) (b,_) = ccwCmpAround (ext p) (location' V.! a) (location' V.! b)++--------------------------------------------------------------------------------
− src/Data/Range.hs
@@ -1,244 +0,0 @@-{-# LANGUAGE TemplateHaskell   #-}-{-# LANGUAGE DeriveAnyClass  #-}------------------------------------------------------------------------------------ |--- Module      :  Data.Range--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ Data type for representing Generic Ranges (Intervals) and functions that--- work with them.-------------------------------------------------------------------------------------module Data.Range( EndPoint(..)-                 , isOpen, isClosed-                 , unEndPoint-                 , Range(..)-                 , prettyShow-                 , lower, upper-                 , pattern OpenRange, pattern ClosedRange, pattern Range'-                 , inRange, width, clipLower, clipUpper, midPoint-                 , isValid, covers--                 , shiftLeft, shiftRight-                 ) where--import Control.Lens-import Data.Geometry.Properties-import Data.Vinyl.CoRec-import Text.Printf(printf)-import GHC.Generics (Generic)-import Control.DeepSeq------------------------------------------------------------------------------------- * Representing Endpoints of a Range---- | Endpoints of a range may either be open or closed.-data EndPoint a = Open   !a-                | Closed !a-                deriving (Show,Read,Eq,Functor,Foldable,Traversable,Generic,NFData)--instance Ord a => Ord (EndPoint a) where-  -- | order on the actual value, and Open before Closed-  a `compare` b = f a `compare` f b-    where-      f (Open x)   = (x,False)-      f (Closed x) = (x,True)--_unEndPoint            :: EndPoint a -> a-_unEndPoint (Open a)   = a-_unEndPoint (Closed a) = a--unEndPoint :: Lens (EndPoint a) (EndPoint b) a b-unEndPoint = lens _unEndPoint f-  where-    f (Open _) a   = Open a-    f (Closed _) a = Closed a-{-# INLINE unEndPoint #-}--isOpen          :: EndPoint a -> Bool-isOpen (Open _) = True-isOpen _        = False--isClosed :: EndPoint a -> Bool-isClosed = not . isOpen-------------------------------------------------------------------------------------- * The Range Data type---- | Data type for representing ranges.-data Range a = Range { _lower :: !(EndPoint a)-                     , _upper :: !(EndPoint a)-                     }-               deriving (Eq,Functor,Foldable,Traversable,Generic,NFData)-makeLenses ''Range--instance Show a => Show (Range a) where-  show (Range l u) = printf "Range (%s) (%s)" (show l) (show u)--type instance NumType (Range a) = a--pattern OpenRange       :: a -> a -> Range a-pattern OpenRange   l u = Range (Open l)   (Open u)--pattern ClosedRange     :: a -> a -> Range a-pattern ClosedRange l u = Range (Closed l) (Closed u)---- | A range from l to u, ignoring/forgetting the type of the endpoints-pattern Range'     :: a -> a -> Range a-pattern Range' l u <- ((\r -> (r^.lower.unEndPoint,r^.upper.unEndPoint) -> (l,u)))-{-# COMPLETE Range' #-}----- | Helper function to show a range in mathematical notation.------ >>> prettyShow $ OpenRange 0 2--- "(0,2)"--- >>> prettyShow $ ClosedRange 0 2--- "[0,2]"--- >>> prettyShow $ Range (Open 0) (Closed 5)--- "(0,5]"-prettyShow             :: Show a => Range a -> String-prettyShow (Range l u) = concat [ lowerB, show (l^.unEndPoint), ","-                                , show (u^.unEndPoint), upperB-                                ]-  where-    lowerB = if isOpen l then "(" else "["-    upperB = if isOpen u then ")" else "]"------ | Test if a value lies in a range.------ >>> 1 `inRange` (OpenRange 0 2)--- True--- >>> 1 `inRange` (OpenRange 0 1)--- False--- >>> 1 `inRange` (ClosedRange 0 1)--- True--- >>> 1 `inRange` (ClosedRange 1 1)--- True--- >>> 10 `inRange` (OpenRange 1 10)--- False--- >>> 10 `inRange` (ClosedRange 0 1)--- False-inRange                 :: Ord a => a -> Range a -> Bool-x `inRange` (Range l u) = case ((l^.unEndPoint) `compare` x, x `compare` (u^.unEndPoint)) of-    (_, GT) -> False-    (GT, _) -> False-    (LT,LT) -> True-    (LT,EQ) -> include u -- depends on only u-    (EQ,LT) -> include l -- depends on only l-    (EQ,EQ) -> include l || include u -- depends on l and u-  where-    include = isClosed--type instance IntersectionOf (Range a) (Range a) = [ NoIntersection, Range a]--instance Ord a => (Range a) `IsIntersectableWith` (Range a) where--  nonEmptyIntersection = defaultNonEmptyIntersection--  -- The intersection is empty, if after clipping, the order of the end points is inverted-  -- or if the endpoints are the same, but both are open.-  (Range l u) `intersect` s = let i = clipLower' l . clipUpper' u $ s-                              in if isValid i then coRec i else coRec NoIntersection---- | Get the width of the interval------ >>> width $ ClosedRange 1 10--- 9--- >>> width $ OpenRange 5 10--- 5-width   :: Num r => Range r -> r-width i = i^.upper.unEndPoint - i^.lower.unEndPoint--midPoint   :: Fractional r => Range r -> r-midPoint r = let w = width r in r^.lower.unEndPoint + (w / 2)-------------------------------------------------------------------------------------- * Helper functions---- | Clip the interval from below. I.e. intersect with the interval {l,infty),--- where { is either open, (, orr closed, [.-clipLower     :: Ord a => EndPoint a -> Range a -> Maybe (Range a)-clipLower l r = let r' = clipLower' l r in if isValid r' then Just r' else Nothing---- | Clip the interval from above. I.e. intersect with (-\infty, u}, where } is--- either open, ), or closed, ],-clipUpper     :: Ord a => EndPoint a -> Range a -> Maybe (Range a)-clipUpper u r = let r' = clipUpper' u r in if isValid r' then Just r' else Nothing---- | Wether or not the first range completely covers the second one-covers       :: (Ord a) => Range a -> Range a -> Bool-a `covers` b = maybe False (== b) . asA (Identity a) $ a `intersect` b----- | Check if the range is valid and nonEmpty, i.e. if the lower endpoint is--- indeed smaller than the right endpoint. Note that we treat empty open-ranges--- as invalid as well.-isValid             :: Ord a => Range a -> Bool-isValid (Range l u) = case (_unEndPoint l) `compare` (_unEndPoint u) of-                          LT                            -> True-                          EQ | isClosed l || isClosed u -> True-                          _                             -> False---- operation is unsafe, as it may produce an invalid range (where l > u)-clipLower'                  :: Ord a => EndPoint a -> Range a -> Range a-clipLower' l' r@(Range l u) = case l' `cmpLower` l of-                                GT -> Range l' u-                                _  -> r--- operation is unsafe, as it may produce an invalid range (where l > u)-clipUpper'                  :: Ord a => EndPoint a -> Range a -> Range a-clipUpper' u' r@(Range l u) = case u' `cmpUpper` u of-                                LT -> Range l u'-                                _  -> r---- | Compare end points, Closed < Open-cmpLower     :: Ord a => EndPoint a -> EndPoint a -> Ordering-cmpLower a b = case (_unEndPoint a) `compare` (_unEndPoint b) of-                 LT -> LT-                 GT -> GT-                 EQ -> case (a,b) of-                         (Open _,   Open _)   -> EQ  -- if both are same type, report EQ-                         (Closed _, Closed _) -> EQ-                         (Open _,  _)         -> GT  -- otherwise, choose the Closed one-                         (Closed _,_)         -> LT  -- is the *smallest*----- | Compare the end points, Open < Closed-cmpUpper     :: Ord a => EndPoint a -> EndPoint a -> Ordering-cmpUpper a b = case (_unEndPoint a) `compare` (_unEndPoint b) of-                 LT -> LT-                 GT -> GT-                 EQ -> case (a,b) of-                         (Open _,   Open _)   -> EQ  -- if both are same type, report EQ-                         (Closed _, Closed _) -> EQ-                         (Open _,  _)         -> LT  -- otherwise, choose the Closed one-                         (Closed _,_)         -> GT  -- is the *largest*----------------------------------------------------------------------------------------- | Shift a range x units to the left------ >>> prettyShow $ shiftLeft 10 (ClosedRange 10 20)--- "[0,10]"--- >>> prettyShow $ shiftLeft 10 (OpenRange 15 25)--- "(5,15)"-shiftLeft   :: Num r => r -> Range r -> Range r-shiftLeft x = shiftRight (-x)---- | Shifts the range to the right------ >>> prettyShow $ shiftRight 10 (ClosedRange 10 20)--- "[20,30]"--- >>> prettyShow $ shiftRight 10 (OpenRange 15 25)--- "(25,35)"-shiftRight   :: Num r => r -> Range r -> Range r-shiftRight x = fmap (+x)
− src/Data/Sequence/Util.hs
@@ -1,76 +0,0 @@-module Data.Sequence.Util where--import Data.Sequence(Seq, ViewL(..),ViewR(..))-import qualified Data.Sequence as S-import qualified Data.Vector.Generic as V-------------------------------------------------------------------------------------- | Given a monotonic predicate, Get the index h such that everything strictly--- smaller than h has: p i = False, and all i >= h, we have p h = True------ returns Nothing if no element satisfies p------ running time: \(O(\log^2 n + T*\log n)\), where \(T\) is the time to execute the--- predicate.-binarySearchSeq     :: (a -> Bool) -> Seq a -> Maybe Int-binarySearchSeq p s = case S.viewr s of-                       EmptyR                 -> Nothing-                       (_ :> x)   | p x       -> Just $ case S.viewl s of-                         (y :< _) | p y          -> 0-                         _                       -> binarySearch p' 0 u-                                  | otherwise -> Nothing-  where-    p' = p . S.index s-    u  = S.length s - 1---- | Given a monotonic predicate, get the index h such that everything strictly--- smaller than h has: p i = False, and all i >= h, we have p h = True------ returns Nothing if no element satisfies p------ running time: \(O(T*\log n)\), where \(T\) is the time to execute the--- predicate.-binarySearchVec                             :: V.Vector v a-                                            => (a -> Bool) -> v a -> Maybe Int-binarySearchVec p' v | V.null v   = Nothing-                     | not $ p n' = Nothing-                     | otherwise  = Just $ if p 0 then 0-                                                  else binarySearch p 0 n'-  where-    n' = V.length v - 1-    p = p' . (v V.!)----- | Partition the seq s given a monotone predicate p into (xs,ys) such that------ all elements in xs do *not* satisfy the predicate p--- all elements in ys do       satisfy the predicate p------ all elements in s occur in either xs or ys.------ running time: \(O(\log^2 n + T*\log n)\), where \(T\) is the time to execute the--- predicate.-splitMonotone     :: (a -> Bool) -> Seq a -> (Seq a, Seq a)-splitMonotone p s = case binarySearchSeq p s of-                      Nothing -> (s,S.empty)-                      Just i  -> S.splitAt i s----- | Given a monotonic predicate p, a lower bound l, and an upper bound u, with:---  p l = False---  p u = True---  l < u.------ Get the index h such that everything strictly smaller than h has: p i =--- False, and all i >= h, we have p h = True------ running time: \(O(\log(u - l))\)-{-# SPECIALIZE binarySearch :: (Int -> Bool) -> Int -> Int -> Int #-}-{-# SPECIALIZE binarySearch :: (Word -> Bool) -> Word -> Word -> Word #-}-binarySearch       :: Integral a => (a -> Bool) -> a -> a -> a-binarySearch p l u = let d = u - l-                         m = l + (d `div` 2)-                     in if d == 1 then u else-                          if p m then binarySearch p l m-                                 else binarySearch p m u
− src/Data/SlowSeq.hs
@@ -1,205 +0,0 @@-module Data.SlowSeq where---import           Control.Lens (bimap)--- import qualified Data.FingerTree as FT--- import           Data.FingerTree hiding (null, viewl, viewr)-import           Data.FingerTree(ViewL(..),ViewR(..))-import qualified Data.Foldable as F-import           Data.Maybe-import qualified Data.Sequence as S-import qualified Data.Sequence.Util as SU--------------------------------------------------------------------------------------data Key a = NoKey | Key { getKey :: a } deriving (Show,Eq,Ord)--instance Semigroup (Key a) where-  k <> NoKey = k-  _ <> k     = k--instance Monoid (Key a) where-  mempty = NoKey-  k `mappend` k' = k <> k'--liftCmp                     :: (a -> a -> Ordering) -> Key a -> Key a -> Ordering-liftCmp _   NoKey   NoKey   = EQ-liftCmp _   NoKey   (Key _) = LT-liftCmp _   (Key _) NoKey   = GT-liftCmp cmp (Key x) (Key y) = x `cmp` y------ newtype Elem a = Elem { getElem :: a } deriving (Eq,Ord,Traversable,Foldable,Functor)---- instance Show a => Show (Elem a) where---   show (Elem x) = "Elem " <> show x---newtype OrdSeq a = OrdSeq { _asSeq :: S.Seq a }-                   deriving (Show,Eq)--instance Semigroup (OrdSeq a) where-  (OrdSeq s) <> (OrdSeq t) = OrdSeq $ s `mappend` t--instance Monoid (OrdSeq a) where-  mempty = OrdSeq mempty-  mappend = (<>)--instance Foldable OrdSeq where-  foldMap f = foldMap f . _asSeq-  null      = null . _asSeq-  length    = length . _asSeq-  minimum   = fromJust . lookupMin-  maximum   = fromJust . lookupMax---- instance Measured (Key a) (Elem a) where---   measure (Elem x) = Key x---type Compare a = a -> a -> Ordering---- | Insert into a monotone OrdSeq.------ pre: the comparator maintains monotonicity------ \(O(\log^2 n)\)-insertBy                  :: Compare a -> a -> OrdSeq a -> OrdSeq a-insertBy cmp x (OrdSeq s) = OrdSeq $ l `mappend` (x S.<| r)-  where-    (l,r) = split (\v -> cmp v x `elem` [EQ, GT]) s--------- | Insert into a sorted OrdSeq------ \(O(\log^2 n)\)-insert :: Ord a => a -> OrdSeq a -> OrdSeq a-insert = insertBy compare--deleteAllBy         :: Compare a -> a -> OrdSeq a -> OrdSeq a-deleteAllBy cmp x s = l <> r-  where-    (l,_,r) = splitBy cmp x s--    -- (l,m) = split (\v -> liftCmp cmp v (Key x) `elem` [EQ,GT]) s-    -- (_,r) = split (\v -> liftCmp cmp v (Key x) == GT) m----- | \(O(\log^2 n)\)-splitBy                  :: Compare a -> a -> OrdSeq a -> (OrdSeq a, OrdSeq a, OrdSeq a)-splitBy cmp x (OrdSeq s) = (OrdSeq l, OrdSeq m', OrdSeq r)-  where-    (l, m) = split (\v -> cmp v x `elem` [EQ,GT]) s-    (m',r) = split (\v -> cmp v x == GT) m----- | Given a monotonic function f that maps a to b, split the sequence s--- depending on the b values. I.e. the result (l,m,r) is such that--- * all (< x) . fmap f $ l--- * all (== x) . fmap f $ m--- * all (> x) . fmap f $ r------ >>> splitOn id 3 $ fromAscList' [1..5]--- (OrdSeq {_asSeq = fromList [Elem 1,Elem 2]},OrdSeq {_asSeq = fromList [Elem 3]},OrdSeq {_asSeq = fromList [Elem 4,Elem 5]})--- >>> splitOn fst 2 $ fromAscList' [(0,"-"),(1,"A"),(2,"B"),(2,"C"),(3,"D"),(4,"E")]--- (OrdSeq {_asSeq = fromList [Elem (0,"-"),Elem (1,"A")]},OrdSeq {_asSeq = fromList [Elem (2,"B"),Elem (2,"C")]},OrdSeq {_asSeq = fromList [Elem (3,"D"),Elem (4,"E")]})------ \(O(\log^2 n)\)-splitOn :: Ord b => (a -> b) -> b -> OrdSeq a -> (OrdSeq a, OrdSeq a, OrdSeq a)-splitOn f x (OrdSeq s) = (OrdSeq l, OrdSeq m', OrdSeq r)-  where-    (l, m) = split (\v -> compare (f v) x `elem` [EQ,GT]) s-    (m',r) = split (\v -> compare (f v) x ==     GT)      m---- | Given a monotonic predicate p, splits the sequence s into two sequences---  (as,bs) such that all (not p) as and all p bs------ \(O(\log^2 n)\)-splitMonotonic  :: (a -> Bool) -> OrdSeq a -> (OrdSeq a, OrdSeq a)-splitMonotonic p = bimap OrdSeq OrdSeq . split p . _asSeq----- monotonic split for Sequences------ \(O(\log^2 n)\)-split :: (a -> Bool) -> S.Seq a -> (S.Seq a, S.Seq a)-split = SU.splitMonotone---- Deletes all elements from the OrdDeq------ \(O(\log^2 n)\)-deleteAll :: Ord a => a -> OrdSeq a -> OrdSeq a-deleteAll = deleteAllBy compare----- | inserts all eleements in order--- \(O(n\log n)\)-fromListBy     :: Compare a -> [a] -> OrdSeq a-fromListBy cmp = foldr (insertBy cmp) mempty---- | inserts all eleements in order--- \(O(n\log n)\)-fromListByOrd :: Ord a => [a] -> OrdSeq a-fromListByOrd = fromListBy compare---- | O(n)-fromAscList' :: [a] -> OrdSeq a-fromAscList' = OrdSeq . S.fromList----- | \(O(\log^2 n)\)-lookupBy                  :: Compare a -> a -> OrdSeq a -> Maybe a-lookupBy cmp x s = let (_,m,_) = splitBy cmp x s in listToMaybe . F.toList $ m--memberBy        :: Compare a -> a -> OrdSeq a -> Bool-memberBy cmp x = isJust . lookupBy cmp x----- | Fmap, assumes the order does not change--- \(O(n)\)-mapMonotonic   :: (a -> b) -> OrdSeq a -> OrdSeq b-mapMonotonic f = fromAscList' . map f . F.toList----- | Gets the first element from the sequence--- \(O(1)\)-viewl :: OrdSeq a -> ViewL OrdSeq a-viewl = f . S.viewl . _asSeq-  where-    f S.EmptyL         = EmptyL-    f (x S.:< s)  = x :< OrdSeq s---- Last element--- \(O(1)\)-viewr :: OrdSeq a -> ViewR OrdSeq a-viewr = f . S.viewr . _asSeq-  where-    f S.EmptyR    = EmptyR-    f (s S.:> x)  = OrdSeq s :> x----- \(O(1)\)-minView   :: OrdSeq a -> Maybe (a, OrdSeq a)-minView s = case viewl s of-              EmptyL   -> Nothing-              (x :< t) -> Just (x,t)---- \(O(1)\)-lookupMin :: OrdSeq a -> Maybe a-lookupMin = fmap fst . minView---- \(O(1)\)-maxView   :: OrdSeq a -> Maybe (a, OrdSeq a)-maxView s = case viewr s of-              EmptyR   -> Nothing-              (t :> x) -> Just (x,t)---- \(O(1)\)-lookupMax :: OrdSeq a -> Maybe a-lookupMax = fmap fst . maxView
− src/Data/Tree/Util.hs
@@ -1,154 +0,0 @@-module Data.Tree.Util where--import Data.Maybe(listToMaybe,maybeToList)-import Control.Lens-import Control.Monad((>=>))-import Data.Tree-import qualified Data.List as List-------------------------------------------------------------------------------------- $setup--- >>> :{--- let myTree = Node 0 [ Node 1 []---                     , Node 2 []---                     , Node 3 [ Node 4 [] ]---                     ]--- :}------------------------------------------------------------------------------------- * Zipper on rose trees---- | Zipper for rose trees-data Zipper a = Zipper { focus      :: Tree a-                       , ancestors  :: [([Tree a], a, [Tree a])] -- left siblings in reverse order-                       }-              deriving (Show,Eq)---- | Create a new zipper focussiong on the root.-root :: Tree a -> Zipper a-root = flip Zipper []---- | Move the focus to the parent of this node.-up               :: Zipper a -> Maybe (Zipper a)-up (Zipper t as) = case as of-                     []              -> Nothing-                     ((ls,p,rs):as') -> Just $ Zipper (Node p (reverse ls <> [t] <> rs)) as'---- | Move the focus to the first child of this node.------ >>> firstChild $ root myTree--- Just (Zipper {focus = Node {rootLabel = 1, subForest = []}, ancestors = [([],0,[Node {rootLabel = 2, subForest = []},Node {rootLabel = 3, subForest = [Node {rootLabel = 4, subForest = []}]}])]})-firstChild                          :: Zipper a -> Maybe (Zipper a)-firstChild (Zipper (Node x chs) as) = case chs of-                                        []       -> Nothing-                                        (c:chs') -> Just $ Zipper c (([],x,chs'):as)---- | Move the focus to the next sibling of this node------ >>> (firstChild $ root myTree) >>= nextSibling--- Just (Zipper {focus = Node {rootLabel = 2, subForest = []}, ancestors = [([Node {rootLabel = 1, subForest = []}],0,[Node {rootLabel = 3, subForest = [Node {rootLabel = 4, subForest = []}]}])]})-nextSibling               :: Zipper a -> Maybe (Zipper a)-nextSibling (Zipper t as) = case as of-                              []                  -> Nothing -- no parent-                              ((_,_,[]):_)        -> Nothing -- no next sibling-                              ((ls,p,(r:rs)):as') -> Just $ Zipper r ((t:ls,p,rs):as')---- | Move the focus to the next sibling of this node-prevSibling               :: Zipper a -> Maybe (Zipper a)-prevSibling (Zipper t as) = case as of-                              []                  -> Nothing -- no parent-                              (([],_,_):_)        -> Nothing -- no prev sibling-                              (((l:ls),p,rs):as') -> Just $ Zipper l ((ls,p,t:rs):as')---- | Given a zipper that focussses on some subtree t, construct a list with--- zippers that focus on each child.-allChildren :: Zipper a -> [Zipper a]-allChildren = List.unfoldr ((\ch -> (ch, nextSibling ch)) <$>) . firstChild---- | Given a zipper that focussses on some subtree t, construct a list with--- zippers that focus on each of the nodes in the subtree of t.-allTrees   :: Zipper a -> [Zipper a]-allTrees r = r : concatMap allTrees (allChildren r)---- | Creates a new tree from the zipper that thas the current node as root. The--- ancestorTree (if there is any) forms the first child in this new root.-unZipperLocal                          :: Zipper a -> Tree a-unZipperLocal (Zipper (Node x chs) as) = Node x (maybeToList (constructTree as) <> chs)---- | Constructs a tree from the list of ancestors (if there are any)-constructTree :: [([Tree a],a,[Tree a])] -> Maybe (Tree a)-constructTree = listToMaybe-              . foldr (\(ls,p,rs) tas -> [Node p (tas <> reverse ls <> rs)]) []--------------------------------------------------------------------------------------- | Given a predicate on an element, find a node that matches the predicate, and turn that--- node into the root of the tree.------ running time: \(O(nT)\) where \(n\) is the size of the tree, and \(T\) is--- the time to evaluate a predicate.------ >>> findEvert (== 4) myTree--- Just (Node {rootLabel = 4, subForest = [Node {rootLabel = 3, subForest = [Node {rootLabel = 0, subForest = [Node {rootLabel = 1, subForest = []},Node {rootLabel = 2, subForest = []}]}]}]})--- >>> findEvert (== 5) myTree--- Nothing-findEvert   :: (a -> Bool) -> Tree a -> Maybe (Tree a)-findEvert p = findEvert' (p . rootLabel)---- | Given a predicate matching on a subtree, find a node that matches the predicate, and turn that--- node into the root of the tree.------ running time: \(O(nT(n))\) where \(n\) is the size of the tree, and \(T(m)\) is--- the time to evaluate a predicate on a subtree of size \(m\).-findEvert'   :: (Tree a -> Bool) -> Tree a -> Maybe (Tree a)-findEvert' p = fmap unZipperLocal . listToMaybe . filter (p . focus) . allTrees . root---- | Function to extract a path between a start node and an end node (if such a---path exists). If there are multiple paths, no guarantees are given about---which one is returned.------ running time: \(O(n(T_p+T_s)\), where \(n\) is the size of the tree, and--- \(T_p\) and \(T_s\) are the times it takes to evaluate the 'isStartingNode'--- and 'isEndingNode' predicates.--------- >>> findPath (== 1) (==4) myTree--- Just [1,0,3,4]--- >>>  findPath (== 1) (==2) myTree--- Just [1,0,2]--- >>>  findPath (== 1) (==1) myTree--- Just [1]--- >>>  findPath (== 1) (==2) myTree--- Just [1,0,2]--- >>>  findPath (== 4) (==2) myTree--- Just [4,3,0,2]-findPath               :: (a -> Bool) -- ^ is this node a starting node-                          -> (a -> Bool) -- ^ is this node an ending node-                          -> Tree a -> Maybe [a]-findPath isStart isEnd = findEvert isStart >=> findNode isEnd---- | Given a predicate on a, find (the path to) a node that satisfies the predicate.------ >>> findNode (== 4) myTree--- Just [0,3,4]-findNode   :: (a -> Bool) -> Tree a -> Maybe [a]-findNode p = listToMaybe . findNodes (p . rootLabel)---- | Find all paths to nodes that satisfy the predicate------ running time: \(O(nT(n))\) where \(n\) is the size of the tree, and \(T(m)\) is--- the time to evaluate a predicate on a subtree of size \(m\).------ >>> findNodes ((< 4) . rootLabel) myTree--- [[0],[0,1],[0,2],[0,3]]--- >>> findNodes (even . rootLabel) myTree--- [[0],[0,2],[0,3,4]]--- >>> let size = length in findNodes ((> 1) . size) myTree--- [[0],[0,3]]-findNodes   :: (Tree a -> Bool) -> Tree a -> [[a]]-findNodes p = go-  where-    go t = let mh = if p t then [[]] else []-           in map (rootLabel t:) $ mh <> concatMap go (children t)
− src/Data/UnBounded.hs
@@ -1,127 +0,0 @@-{-# LANGUAGE TemplateHaskell   #-}-module Data.UnBounded( Top, topToMaybe-                     , pattern ValT, pattern Top--                     , Bottom, bottomToMaybe-                     , pattern Bottom, pattern ValB--                     , UnBounded(..)-                     , unUnBounded-                     , unBoundedToMaybe-                     ) where--import           Control.Lens-import qualified Data.Foldable as F-import qualified Data.Traversable as T-import           Data.Functor.Classes------------------------------------------------------------------------------------- * Top and Bottom---- | `Top a` represents the type a, together with a 'Top' element, i.e. an element--- that is greater than any other element. We can think of `Top a` being defined as:------ >>> data Top a = ValT a | Top-newtype Top a = GTop { topToMaybe :: Maybe a }-                deriving (Eq,Functor,F.Foldable,T.Traversable,Applicative,Monad,Eq1)--pattern ValT  :: a -> Top a-pattern ValT x = GTop (Just x)--pattern Top    :: Top a-pattern Top    = GTop Nothing--{-# COMPLETE ValT, Top #-}---instance Ord1 Top where-  liftCompare _   Top       Top       = EQ-  liftCompare _   _         Top       = LT-  liftCompare _   Top       _         = GT-  liftCompare cmp ~(ValT x) ~(ValT y) = x `cmp` y--instance Ord a => Ord (Top a) where-  compare = compare1--instance Show a => Show (Top a) where-  show Top       = "Top"-  show ~(ValT x) = "ValT " ++ show x-------------------------------------------------------------------------------------- | `Bottom a` represents the type a, together with a 'Bottom' element,--- i.e. an element that is smaller than any other element. We can think of--- `Bottom a` being defined as:------ >>> data Bottom a = Bottom | ValB a-newtype Bottom a = GBottom { bottomToMaybe :: Maybe a }-                 deriving (Eq,Ord,Functor,F.Foldable,T.Traversable,Applicative,Monad,Eq1,Ord1)--pattern Bottom :: Bottom a-pattern Bottom = GBottom Nothing--pattern ValB   :: a -> Bottom a-pattern ValB x = GBottom (Just x)--{-# COMPLETE Bottom, ValB #-}--instance Show a => Show (Bottom a) where-  show Bottom    = "Bottom"-  show ~(ValB x) = "ValB " ++ show x-------------------------------------------------------------------------------------- | `UnBounded a` represents the type a, together with an element--- `MaxInfinity` larger than any other element, and an element `MinInfinity`,--- smaller than any other element.-data UnBounded a = MinInfinity | Val { _unUnBounded :: a }  | MaxInfinity-                 deriving (Eq,Ord,Functor,F.Foldable,T.Traversable)--makeLenses ''UnBounded--instance Show a => Show (UnBounded a) where-  show MinInfinity = "MinInfinity"-  show (Val x)     = "Val " ++ show x-  show MaxInfinity = "MaxInfinity"--instance Num a => Num (UnBounded a) where-  MinInfinity + _           = MinInfinity-  _           + MinInfinity = MinInfinity-  (Val x)     + (Val y)     = Val $ x + y-  _           + MaxInfinity = MaxInfinity-  MaxInfinity + _           = MaxInfinity---  MinInfinity * _           = MinInfinity-  _           * MinInfinity = MinInfinity--  (Val x)     * (Val y)     = Val $ x * y-  _           * MaxInfinity = MaxInfinity-  MaxInfinity * _           = MaxInfinity--  abs MinInfinity = MinInfinity-  abs (Val x)     = Val $ abs x-  abs MaxInfinity = MaxInfinity--  signum MinInfinity = -1-  signum (Val x)     = Val $ signum x-  signum MaxInfinity = 1--  fromInteger = Val . fromInteger--  negate MinInfinity = MaxInfinity-  negate (Val x)     = Val $ negate x-  negate MaxInfinity = MinInfinity--instance Fractional a => Fractional (UnBounded a) where-  MinInfinity / _       = MinInfinity-  (Val x)     / (Val y) = Val $ x / y-  (Val _)     / _       = 0-  MaxInfinity / _       = MaxInfinity--  fromRational = Val . fromRational---unBoundedToMaybe         :: UnBounded a -> Maybe a-unBoundedToMaybe (Val x) = Just x-unBoundedToMaybe _       = Nothing
− src/Data/Util.hs
@@ -1,96 +0,0 @@------------------------------------------------------------------------------------ |--- Module      :  Data.Util--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ Some basic types, mostly strict triples and pairs.-------------------------------------------------------------------------------------module Data.Util where--import Control.DeepSeq-import Control.Lens-import GHC.Generics (Generic)-import qualified Data.List as List------------------------------------------------------------------------------------- * Strict Triples---- |  strict triple-data STR a b c = STR { fst' :: !a, snd' :: !b , trd' :: !c}-               deriving (Show,Eq,Ord,Functor,Generic)--instance (Semigroup a, Semigroup b, Semigroup c) => Semigroup (STR a b c) where-  (STR a b c) <> (STR d e f) = STR (a <> d) (b <> e) (c <> f)--instance (Semigroup a, Semigroup b, Semigroup c-         , Monoid a, Monoid b, Monoid c) => Monoid (STR a b c) where-  mempty = STR mempty mempty mempty-  mappend = (<>)--instance (NFData a, NFData b, NFData c) => NFData (STR a b c)--instance Field1 (STR a b c) (STR d b c) a d where-  _1 = lens fst' (\(STR _ b c) d -> STR d b c)--instance Field2 (STR a b c) (STR a d c) b d where-  _2 = lens snd' (\(STR a _ c) d -> STR a d c)--instance Field3 (STR a b c) (STR a b d) c d where-  _3 = lens trd' (\(STR a b _) d -> STR a b d)---- | Generate All unique unordered triplets.----uniqueTriplets    :: [a] -> [STR a a a]-uniqueTriplets xs = [ STR x y z | (x:ys) <- nonEmptyTails xs, SP y z <- uniquePairs ys]-------------------------------------------------------------------------------------- * Strict Pairs----- | Strict pair-data SP a b = SP !a !b deriving (Show,Eq,Ord,Functor,Generic)--instance (Semigroup a, Semigroup b) => Semigroup (SP a b) where-  (SP a b) <> (SP c d) = SP (a <> c) (b <> d)--instance (Semigroup a, Semigroup b, Monoid a, Monoid b) => Monoid (SP a b) where-  mempty = SP mempty mempty-  mappend = (<>)--instance (NFData a, NFData b) => NFData (SP a b)---instance Field1 (SP a b) (SP c b) a c where-  _1 = lens (\(SP a _) -> a) (\(SP _ b) c -> SP c b)--instance Field2 (SP a b) (SP a c) b c where-  _2 = lens (\(SP _ b) -> b) (\(SP a _) c -> SP a c)--instance Bifunctor SP where-  bimap f g (SP a b) = SP (f a) (g b)------------------------------------------------------------------------------------- | * Strict pair whose elements are of the same type.---- | Strict pair with both items the same-type Two a = SP a a--pattern Two :: a -> a -> Two a-pattern Two a b = SP a b-{-# COMPLETE Two #-}---- | Given a list xs, generate all unique (unordered) pairs.-------uniquePairs    :: [a] -> [Two a]-uniquePairs xs = [ Two x y | (x:ys) <- nonEmptyTails xs, y <- ys ]-------------------------------------------------------------------------------------- | A version of List.tails in which we remove the emptylist-nonEmptyTails :: [a] -> [[a]]-nonEmptyTails = List.init . List.tails
− src/Data/Yaml/Util.hs
@@ -1,89 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}------------------------------------------------------------------------------------ |--- Module      :  Data.Yaml.Util--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals--- Description :  Helper functions for working with yaml-------------------------------------------------------------------------------------module Data.Yaml.Util( encodeYaml, encodeYamlFile-                     , decodeYaml, decodeYamlFile-                     , printYaml-                     , parseVersioned-                     , Versioned(Versioned), unversioned-                     ) where--import           Control.Applicative-import           Data.Aeson-import           Data.Aeson.Types (typeMismatch)-import           Data.ByteString (ByteString)-import qualified Data.ByteString.Char8 as B-import qualified Data.Text as T-import           Data.Version-import           Data.Yaml-import qualified Data.Yaml.Pretty as YamlP-import           GHC.Generics (Generic)-import           Text.ParserCombinators.ReadP (readP_to_S)-------------------------------------------------------------------------------------- | Write the output to yaml-encodeYaml :: ToJSON a => a -> ByteString-encodeYaml = YamlP.encodePretty YamlP.defConfig---- | Prints the yaml-printYaml :: ToJSON a => a -> IO ()-printYaml = B.putStrLn . encodeYaml---- | alias for decodeEither' from the Yaml Package-decodeYaml :: FromJSON a => ByteString -> Either ParseException a-decodeYaml = decodeEither'---- | alias for reading a yaml file-decodeYamlFile :: FromJSON a => FilePath -> IO (Either ParseException a)-decodeYamlFile = decodeFileEither---- | Encode a yaml file-encodeYamlFile    :: ToJSON a => FilePath -> a -> IO ()-encodeYamlFile fp = B.writeFile fp . encodeYaml----- | Data type for things that have a version-data Versioned a = Versioned { version :: Version-                             , content :: a-                             } deriving (Show,Read,Generic,Eq,Functor,Foldable,Traversable)--unversioned :: Versioned a -> a-unversioned = content--instance ToJSON a => ToJSON (Versioned a) where-  toJSON     (Versioned v x) = object [ "version" .= showVersion v, "content" .= x]-  toEncoding (Versioned v x) = pairs ("version" .= showVersion v <> "content" .= x)----- | Given a list of candidate parsers, select the right one-parseVersioned               :: [(Version -> Bool,Value -> Parser a)]-                             -> Value -> Parser (Versioned a)-parseVersioned ps (Object o) = do V v <- o .: "version"-                                  co  <- o .: "content"-                                  let ps' = map (\(_,p) -> Versioned v <$> p co)-                                          . filter (($ v) . fst) $ ps-                                      err = fail $ "no matching version found for version "-                                                   <> showVersion v-                                  foldr (<|>) err ps'-parseVersioned _ invalid     = typeMismatch "Versioned" invalid---- instance (FromJSON a) => FromJSON (Versioned a) where---   parseJSON (Object v) = Versioned <$> (unV <$> v .: "version")---                                    <*> v .: "content"---   parseJSON invalid    = typeMismatch "Versioned" invalid--newtype V = V Version--instance FromJSON V where-  parseJSON (String t) = case filter (null . snd) (readP_to_S parseVersion $ T.unpack t) of-     ((v,""):_) -> pure $ V v-     _          -> fail $ "parsing " <> show t <> " into a version failed"-  parseJSON invalid    = typeMismatch "Version" invalid
src/Graphics/Camera.hs view
@@ -18,18 +18,26 @@                        , toViewPort, perspectiveProjection, rotateCoordSystem                       , flipAxes+                       ) where -import Data.Ext import Control.Lens import Data.Geometry.Point import Data.Geometry.Vector import Data.Geometry.Transformation-import Data.Geometry.Triangle  -------------------------------------------------------------------------------- --- | defines a basic camera+-- | A basic camera data type. The fields stored are:+--+-- * the camera position,+-- * the raw camera normal, i.e. a unit vecotr into the center of the screen,+-- * the raw view up vector indicating which side points "upwards" in the scene,+-- * the viewplane depth (i.e. the distance from the camera position to the plane on which we project),+-- * the near distance (everything closer than this is clipped),+-- * the far distance (everything further away than this is clipped), and+-- * the screen dimensions.+-- data Camera r = Camera { _cameraPosition   :: !(Point 3 r)                        , _rawCameraNormal  :: !(Vector 3 r)                          -- ^ unit vector from camera into center of the screen@@ -40,8 +48,15 @@                        , _farDist          :: !r                        , _screenDimensions :: !(Vector 2 r)                        } deriving (Show,Eq,Ord)++----------------------------------------+-- * Field Accessor Lenses+ makeLenses ''Camera +--------------------------------------------------------------------------------+-- * Accessor Lenses+ -- | Lens to get and set the Camera normal, makes sure that the vector remains -- normalized. cameraNormal :: Floating r => Lens' (Camera r) (Vector 3 r)@@ -54,6 +69,10 @@ viewUp = lens _rawViewUp (\c n -> c { _rawViewUp = signorm n})  +--------------------------------------------------------------------------------+-- * Camera Transformation functions++ -- | Full transformation that renders the figure cameraTransform   :: Fractional r => Camera r -> Transformation 3 r cameraTransform c =  toViewPort c@@ -109,57 +128,3 @@                        (Vector4 0 0 1 0)                        (Vector4 0 1 0 0)                        (Vector4 0 0 0 1)------------------------------------------------------------------------------------myCamera :: Camera Rational-myCamera = Camera (Point3 50 0 50)-                  (Vector3 0 0 (-1))-                  (Vector3 0 1 0)-                  10-                  15-                  55-                  (Vector2 800 600)---myCamera1 :: Camera Double-myCamera1 = Camera origin-                  (Vector3 0 0 (-1))-                  (Vector3 0 1 0)-                  10-                  10-                  50 -- we can see up to the origin-                  (Vector2 60 40)--testProjection   :: Camera Double -> [Vector 3 Double]-testProjection c = map (transformBy t) [Vector3 30 30 (-10), Vector3 (30*50/10) 30 (-50)]-  where-    u = (c^.rawViewUp) `cross` n-    v = n `cross` u-    n = (-1) *^ c^.rawCameraNormal -- we need the normal from the scene *into* the camera-    t = perspectiveProjection c---myT :: Triangle 3 () Rational-myT = Triangle (ext $ Point3 1  1  10)-               (ext $ Point3 20 1  10)-               (ext $ Point3 20 30 10)----testToWorld   :: Camera Double -> [Vector 3 Double]-testToWorld c = map (transformBy t) [u, v, n, Vector3 80 20 40]-  where-    u = (c^.rawViewUp) `cross` n-    v = n `cross` u-    n = (-1) *^ c^.rawCameraNormal -- we need the normal from the scene *into* the camera-    t = worldToView c---testRotate   :: Camera Double -> [Vector 3 Double]-testRotate c = map (transformBy t) [u, v, n]-  where-    u = (c^.rawViewUp) `cross` n-    v = n `cross` u-    n = (-1) *^ c^.rawCameraNormal -- we need the normal from the scene *into* the camera-    t = rotateCoordSystem c
+ src/Graphics/Render.hs view
@@ -0,0 +1,50 @@+--------------------------------------------------------------------------------+-- |+-- Module      :  Graphics.Render+-- Copyright   :  (C) Frank Staals+-- License     :  see the LICENSE file+-- Maintainer  :  Frank Staals+-- Description :  Some rendering functions for rendering (drawing) geometric objects+--+--------------------------------------------------------------------------------+module Graphics.Render where++import Data.Ext+import Control.Lens+import Data.Geometry.Point+import Data.Geometry.Triangle+import Data.Geometry.LineSegment+import Data.Geometry.Transformation+import Data.Geometry.Properties++--------------------------------------------------------------------------------+-- * Rendering functions++-- | Rendering function for a triangle.+--+renderTriangle :: Fractional r => Transformation 3 r -> Triangle 3 p r -> Triangle 2 p r+renderTriangle = renderWithTransform projectTriangle+  where+    projectTriangle (Triangle p q r) = Triangle (p&core %~ projectPoint)+                                                (q&core %~ projectPoint)+                                                (r&core %~ projectPoint)++-- | Render a point+renderPoint :: Fractional r => Transformation 3 r -> Point 3 r -> Point 2 r+renderPoint = renderWithTransform projectPoint++-- | Renders a line segment+renderLineSegment :: Fractional r => Transformation 3 r -> LineSegment 3 p r -> LineSegment 2 p r+renderLineSegment = renderWithTransform project+  where+    project s = s&endPoints.core %~ projectPoint++++-- | Generic Rendering Function+renderWithTransform           :: (Fractional r, IsTransformable g, Dimension g ~ 3, NumType g ~ r)+                              => (g -> g') -- ^ Projection function+                              -> Transformation 3 r -- ^ The camera transform+                              -> g  -- ^ The thing we wish to transform+                              -> g'+renderWithTransform project t = project . transformBy t
− src/System/Random/Shuffle.hs
@@ -1,28 +0,0 @@-module System.Random.Shuffle(shuffle) where--import           Control.Monad-import qualified Data.Foldable as F-import           System.Random--import qualified Data.Vector.Mutable as MV-import qualified Data.Vector         as V------ | Fisher–Yates shuffle, which shuffles in O(n) time.-shuffle     :: (F.Foldable f, RandomGen g) => g -> f a -> [a]-shuffle gen = V.toList . V.modify (\v ->-                do-                  let n = MV.length v-                  forM_ (rands gen $ n - 1) $ \(SP i j) -> MV.swap v i j-              ) . V.fromList . F.toList---- | Strict pair-data SP a b = SP !a !a---- | Generate a list of indices in decreasing order, coupled with a random--- value in the range [0,i].-rands     :: RandomGen g => g -> Int -> [SP Int Int]-rands g i-      | i <= 0    = []-      | otherwise = let (j,g') = randomR (0,i) g in SP i j : rands g' (i-1)
− src/Test/QuickCheck/HGeometryInstances.hs
@@ -1,112 +0,0 @@-{-# LANGUAGE UndecidableInstances  #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# OPTIONS_GHC -fno-warn-orphans #-}------------------------------------------------------------------------------------ |--- Module      :  Test.QuickCheck.HGeometryInstances--- Copyright   :  (C) Frank Staals--- License     :  see the LICENSE file--- Maintainer  :  Frank Staals------ Arbitrary instances for most geometry types in HGeometry-------------------------------------------------------------------------------------module Test.QuickCheck.HGeometryInstances where--import           Control.Lens-import           Data.BinaryTree-import           Data.Ext-import           Data.Geometry hiding (vector)-import           Data.Geometry.Box-import           Data.PlanarGraph-import qualified Data.PlanarGraph as PlanarGraph-import           Data.Geometry.SubLine-import           Data.OrdSeq (OrdSeq, fromListByOrd)-import           Data.Proxy-import qualified Data.LSeq as LSeq-import           GHC.TypeLits-import           Test.QuickCheck-------------------------------------------------------------------------------------- instance Arbitrary a => Arbitrary (NonEmpty.NonEmpty a) where---   arbitrary = NonEmpty.fromList <$> listOf1 arbitrary--instance (Arbitrary a, Ord a) => Arbitrary (OrdSeq a) where-  arbitrary = fromListByOrd <$> arbitrary--instance Arbitrary a => Arbitrary (BinaryTree a) where-  arbitrary = sized f-    where f n | n <= 0    = pure Nil-              | otherwise = do-                              l <- choose (0,n-1)-                              Internal <$> f l <*> arbitrary <*> f (n-l-1)--instance (Arbitrary a, Arbitrary v) => Arbitrary (BinLeafTree v a) where-  arbitrary = sized f-    where f n | n <= 0    = Leaf <$> arbitrary-              | otherwise = do-                              l <- choose (0,n-1)-                              Node <$> f l <*> arbitrary <*> f (n-l-1)---instance (KnownNat n, Arbitrary a) => Arbitrary (LSeq.LSeq n a) where-  arbitrary = (\s s' -> LSeq.promise . LSeq.fromList $ s <> s')-            <$> vector (fromInteger . natVal $ (Proxy :: Proxy n))-            <*> arbitrary--instance (Arbitrary r, Arity d) => Arbitrary (Vector d r) where-  arbitrary = vectorFromListUnsafe <$> infiniteList--instance (Arbitrary r, Arity d) => Arbitrary (Point d r) where-  arbitrary = Point <$> arbitrary--instance (Arbitrary r, Arity d, Num r, Eq r) => Arbitrary (Line d r) where-  arbitrary = do p <- arbitrary-                 q <- suchThat arbitrary (/= p)-                 return $ lineThrough p q--instance (Arbitrary r, Arity d, Ord r) => Arbitrary (Box d () r) where-  arbitrary = (\p (q :: Point d r) -> boundingBoxList' [p,q]) <$> arbitrary <*> arbitrary---instance Arbitrary r => Arbitrary (EndPoint r) where-  arbitrary = frequency [ (1, Open   <$> arbitrary)-                        , (9, Closed <$> arbitrary)-                        ]--instance (Arbitrary r, Ord r) => Arbitrary (Range r) where-  arbitrary = do-                l <- arbitrary-                r <- suchThat arbitrary (p l)-                return $ Range l r-   where-     p (Open l)   r = l <  r^.unEndPoint-     p (Closed l) r = l <= r^.unEndPoint---instance (Arbitrary c, Arbitrary e) => Arbitrary (c :+ e) where-  arbitrary = (:+) <$> arbitrary <*> arbitrary--instance (Arbitrary r, Arbitrary p, Ord r, Ord p) => Arbitrary (Interval p r) where-  arbitrary = GInterval <$> arbitrary---instance (Arbitrary r, Arbitrary p, Arbitrary s, Arity d, Ord r, Ord s, Ord p, Num r)-         => Arbitrary (SubLine d p s r) where-  arbitrary = SubLine <$> arbitrary <*> arbitrary---instance (Arbitrary r, Arbitrary p, Arity d) => Arbitrary (LineSegment d p r) where-  arbitrary = LineSegment <$> arbitrary <*> arbitrary----instance Arbitrary (Arc s) where-  arbitrary = Arc <$> (arbitrary `suchThat` (>= 0))--instance Arbitrary Direction where-  arbitrary = (\b -> if b then PlanarGraph.Positive else Negative) <$> arbitrary--instance Arbitrary (Dart s) where-  arbitrary = Dart <$> arbitrary <*> arbitrary
− test/Algorithms/Geometry/ClosestPair/ClosestPairSpec.hs
@@ -1,45 +0,0 @@-module Algorithms.Geometry.ClosestPair.ClosestPairSpec where--import qualified Algorithms.Geometry.ClosestPair.DivideAndConquer as DivideAndConquer-import qualified Algorithms.Geometry.ClosestPair.Naive as Naive-import           Control.Lens-import           Data.Ext-import           Data.Geometry.Point-import           Data.LSeq (LSeq)-import qualified Data.LSeq as LSeq-import           Data.Util-import           Test.Hspec-import           Test.Hspec.QuickCheck-import           Test.QuickCheck-import           Test.QuickCheck.HGeometryInstances ()-import           Test.QuickCheck.Instances ()---spec :: Spec-spec = do-    describe "ClosestPairSpec Algorithms" $ do-      modifyMaxSuccess (const 1000) $-        it "Naive and DivideAnd Conquer report same closest pair distance (quickcheck)" $-          property $ \pts ->-            (squaredEuclideanDist' $ Naive.closestPair pts)-            ==-            (squaredEuclideanDist' $ DivideAndConquer.closestPair pts)-      it "Naive and DivideAnd Conquer report same closest pair distance (manual)" $ do-        let myPts = toLSeq myTest in-          (squaredEuclideanDist' $ Naive.closestPair myPts)-          `shouldBe`-          (squaredEuclideanDist' $ DivideAndConquer.closestPair myPts)---squaredEuclideanDist'                         :: Two (Point 2 Rational :+ ()) -> Rational-squaredEuclideanDist' (Two (p :+ _) (q :+ _)) = squaredEuclideanDist p q----- LSeq {toSeq = fromList [Point2 [(-33759522867779) % 7496802324005,10839434579010 % 8710408063243] :+ (),Point2 [27010230067287 % 7207136323822,(-3164483769031) % 742671498890] :+ (),Point2 [16411948329569 % 7616584565141,12511394381428 % 2834373835667] :+ (),Point2 [(-327606334581) % 728344280722,(-33692910597997) % 8003329261050] :+ (),Point2 [(-15920889254819) % 4416206444274,31639684978225 % 4753346825613] :+ ()]}---toLSeq :: [a] -> LSeq 2 a-toLSeq = LSeq.promise . LSeq.fromList--myTest :: [Point 2 Rational :+ ()]-myTest = read "[Point2 [146640303144371 % 4224053853937,101854287495663 % 611897639578] :+ (),Point2 [40638737917185 % 6880564569878,266207821342347 % 5620065708622] :+ (),Point2 [(-22768678067038) % 4099605651011,63425313194697 % 3004649322800] :+ (),Point2 [(-79043128684637) % 1637661769455,(-295977300701107) % 9093457570027] :+ (),Point2 [(-73583019410059) % 7397585905521,(-132085857579544) % 3023721689783] :+ (),Point2 [110730624564935 % 3206669900528,(-134126355694632) % 1030756818019] :+ (),Point2 [375473877556369 % 5688548958491,(-61990694642620) % 8334329062977] :+ (),Point2 [113637651255443 % 7393857491411,60345369766453 % 1970866530039] :+ (),Point2 [18099493254552 % 6747283329067,(-104898261130768) % 6685232742229] :+ (),Point2 [(-99452695817779) % 9671436420976,(-15569270478765) % 353842993324] :+ (),Point2 [(-307985949779841) % 8267832155219,(-104994723690859) % 937448083071] :+ (),Point2 [5298565527551 % 9166217911857,361269627209233 % 6403545389662] :+ (),Point2 [(-53286482779806) % 163082999159,32112688900059 % 718598733692] :+ (),Point2 [(-107690491383153) % 5350356516874,(-335465470420443) % 9259993302154] :+ (),Point2 [(-1431112842609) % 2908633300498,(-6394060822783) % 6674992423] :+ (),Point2 [(-297096490651238) % 8936478049895,88152403947309 % 6679373739130] :+ (),Point2 [(-69377170752544) % 423340544261,85249651585993 % 1566182413847] :+ (),Point2 [(-76831240905987) % 7713729889276,(-161201413608815) % 3632380150759] :+ (),Point2 [120510849091594 % 469904179619,(-172736649495640) % 5333925170989] :+ (),Point2 [(-188872871543069) % 1898068101049,355493261879401 % 7036186201752] :+ (),Point2 [(-255393995322931) % 1103177446757,265927198927640 % 3105872402029] :+ (),Point2 [(-69257424852911) % 283924670424,157163114450212 % 6947926872911] :+ (),Point2 [160793284019169 % 4243291855883,136543247038343 % 663996934927] :+ (),Point2 [349183720690751 % 69082861367,27899563589967 % 984451034746] :+ (),Point2 [(-6729975907016) % 287613226363,(-132751704193606) % 884101426259] :+ (),Point2 [158419738815649 % 1684813345364,(-232301201438133) % 2251322747338] :+ (),Point2 [53058623626229 % 834280423049,11416530634139 % 5498459429949] :+ (),Point2 [153130827172836 % 3179759716621,(-247386168772091) % 6720178879120] :+ (),Point2 [(-255140791023605) % 6181407399187,(-58852369239783) % 1447725941071] :+ (),Point2 [(-35688634701875) % 8985183678917,162916031022373 % 4757510120717] :+ ()]"
− test/Algorithms/Geometry/ConvexHull/ConvexHullSpec.hs
@@ -1,40 +0,0 @@-module Algorithms.Geometry.ConvexHull.ConvexHullSpec where--import qualified Algorithms.Geometry.ConvexHull.DivideAndConquer as DivideAndConquer-import qualified Algorithms.Geometry.ConvexHull.GrahamScan as GrahamScan-import           Control.Lens-import           Data.CircularSeq (isShiftOf)-import           Data.Ext-import           Data.Geometry.Point-import           Data.Geometry.Polygon-import           Data.Geometry.Polygon.Convex-import qualified Data.List as L-import qualified Data.List.NonEmpty as NonEmpty-import qualified Data.Map as Map-import           Data.Proxy-import qualified Data.Set as Set-import           Test.Hspec-import           Test.Hspec.QuickCheck-import           Test.QuickCheck-import           Test.QuickCheck.HGeometryInstances()-import           Test.QuickCheck.Instances()-import           Util--import           Debug.Trace--spec :: Spec-spec = do-    describe "ConvexHull Algorithms" $ do-      modifyMaxSize (const 1000) . modifyMaxSuccess (const 1000) $-        it "GrahamScan and DivideAnd Conquer are the same" $-          property $ \pts ->-            (PG $ GrahamScan.convexHull pts)-            ==-            (PG $ DivideAndConquer.convexHull pts)--newtype PG = PG (ConvexPolygon () Rational) deriving (Show)--instance Eq PG where-  (PG a) == (PG b) = let as = a^.simplePolygon.outerBoundary-                         bs = b^.simplePolygon.outerBoundary-                     in isShiftOf as bs
− test/Algorithms/Geometry/DelaunayTriangulation/DTSpec.hs
@@ -1,116 +0,0 @@-{-# LANGUAGE LambdaCase #-}-module Algorithms.Geometry.DelaunayTriangulation.DTSpec where--import qualified Algorithms.Geometry.DelaunayTriangulation.DivideAndConquer as DC-import qualified Algorithms.Geometry.DelaunayTriangulation.Naive as Naive-import           Algorithms.Geometry.DelaunayTriangulation.Types-import           Control.Lens-import qualified Data.CircularList.Util as CU-import           Data.Ext-import           Data.Geometry-import           Data.Geometry.Ipe-import qualified Data.List.NonEmpty as NonEmpty-import qualified Data.Map as M-import           Data.Maybe (mapMaybe, fromJust)-import qualified Data.Vector as V-import           Test.Hspec-import           Util---dtEdges :: (Fractional r, Ord r)-        => NonEmpty.NonEmpty (Point 2 r :+ p) -> [(VertexID, VertexID)]-dtEdges = tEdges . DC.delaunayTriangulation--take'   :: Int -> NonEmpty.NonEmpty a -> NonEmpty.NonEmpty a-take' i = NonEmpty.fromList . NonEmpty.take i------------------------------------------------------------------------------------spec :: Spec-spec = do-  describe "Testing Divide and Conquer Algorithm for Delaunay Triangulation" $ do-    it "singleton " $ do-      dtEdges (take' 1 myPoints) `shouldBe` []-    toSpec (TestCase "myPoints" myPoints)-    toSpec (TestCase "myPoints'" myPoints')-    ipeSpec--ipeSpec :: Spec-ipeSpec = testCases "test/Algorithms/Geometry/SmallestEnclosingDisk/manual.ipe"--testCases    :: FilePath -> Spec-testCases fp = (runIO $ readInput fp) >>= \case-    Left e    -> it "reading Delaunay Triangulation disk file" $-                   expectationFailure $ "Failed to read ipe file " ++ show e-    Right tcs -> mapM_ toSpec tcs----- | Point sets per color, Crosses form the solution-readInput    :: FilePath -> IO (Either ConversionError [TestCase Rational])-readInput fp = fmap f <$> readSinglePageFile fp-  where-    f page = [ TestCase "?" $ fmap (\p -> p^.core.symbolPoint :+ ()) pSet-             | pSet <- byStrokeColour' syms-             ]-      where-        syms = page^..content.traverse._IpeUse-        byStrokeColour' = mapMaybe NonEmpty.nonEmpty . byStrokeColour----data TestCase r = TestCase { _color    :: String-                           , _pointSet :: NonEmpty.NonEmpty (Point 2 r :+ ())-                           } deriving (Show,Eq)---toSpec                    :: (Fractional r, Ord r, Show r) => TestCase r -> Spec-toSpec (TestCase c pts) = describe ("testing on " ++ c ++ " points") $ do-                            sameAsNaive c pts--sameAsNaive       :: (Fractional r, Ord r, Show p, Show r)-                  => String -> NonEmpty.NonEmpty (Point 2 r :+ p) -> Spec-sameAsNaive s pts = it ("Divide And Conquer same answer as Naive on " ++ s) $-                      (Naive.delaunayTriangulation pts-                       `sameEdges`-                       DC.delaunayTriangulation pts) `shouldBe` True---sameEdges             :: Triangulation p r -> Triangulation p r -> Bool-triA `sameEdges` triB = all sameAdj . M.assocs $ mapping'-  where-    sameAdj (a, b) = (f $ adjA V.! a) `CU.isShiftOf` (adjB V.! b)--    adjA = triA^.neighbours-    adjB = triB^.neighbours--    mapping' = M.fromList $ zip (M.elems $ triA^.vertexIds) (M.elems $ triB^.vertexIds)--    f = fmap (fromJust . flip M.lookup mapping')--myPoints :: NonEmpty.NonEmpty (Point 2 Rational :+ ())-myPoints = NonEmpty.fromList . map ext $-           [ point2 1  3-           , point2 4  26-           , point2 5  17-           , point2 6  7-           , point2 12 16-           , point2 19 4-           , point2 20 0-           , point2 20 11-           , point2 23 23-           , point2 31 14-           , point2 33 5-           ]--myPoints' :: NonEmpty.NonEmpty (Point 2 Rational :+ ())-myPoints' = NonEmpty.fromList . map ext $-            [ point2 64  736-            , point2 96 688-            , point2 128 752-            , point2 160 704-            , point2 128 672-            , point2 64 656-            , point2 192 736-            , point2 208 704-            , point2 192 672-            ]
− test/Algorithms/Geometry/LineSegmentIntersection/BentleyOttmannSpec.hs
@@ -1,116 +0,0 @@-module Algorithms.Geometry.LineSegmentIntersection.BentleyOttmannSpec where--import           Algorithms.Geometry.LineSegmentIntersection (hasSelfIntersections)-import qualified Algorithms.Geometry.LineSegmentIntersection.BentleyOttmann as Sweep-import qualified Algorithms.Geometry.LineSegmentIntersection.Naive as Naive-import           Algorithms.Geometry.LineSegmentIntersection.Types-import           Control.Lens-import           Data.Ext-import           Data.Geometry.Interval-import           Data.Geometry.Ipe-import           Data.Geometry.LineSegment-import           Data.Geometry.Point-import           Data.Geometry.Polygon-import qualified Data.List as L-import qualified Data.List.NonEmpty as NonEmpty-import qualified Data.Map as Map-import           Data.Proxy-import           Data.Semigroup-import qualified Data.Set as Set-import           Test.Hspec-import           Test.QuickCheck-import           Util--import           Debug.Trace--spec :: Spec-spec = do-  describe "Testing Bentley Ottmann LineSegment Intersection" $ do-    -- toSpec (TestCase "myPoints" myPoints)-    -- toSpec (TestCase "myPoints'" myPoints')-    ipeSpec-  describe "Self Intersecting Polygon Tests" $ do-    siTestCases (testPath <> "selfIntersections.ipe")--testPath = "test/Algorithms/Geometry/LineSegmentIntersection/"--ipeSpec :: Spec-ipeSpec = testCases (testPath <> "manual.ipe")--testCases    :: FilePath -> Spec-testCases fp = (runIO $ readInput fp) >>= \case-    Left e    -> it "reading LineSegment Intersection file" $-                   expectationFailure $ "Failed to read ipe file " ++ show e-    Right tcs -> mapM_ toSpec tcs----- | Point sets per color, Crosses form the solution-readInput    :: FilePath -> IO (Either ConversionError [TestCase Rational])-readInput fp = fmap f <$> readSinglePageFile fp-  where-    f page = [TestCase segs]-      where-        segs = page^..content.traverse._IpePath.core._asLineSegment----data TestCase r = TestCase { _segments :: [LineSegment 2 () r]-                           } deriving (Show,Eq)---toSpec                 :: (Fractional r, Ord r, Show r) => TestCase r -> Spec-toSpec (TestCase segs) = describe ("testing segments ") $ do-                            samePointsAsNaive segs-                            sameAsNaive segs---- | Test if we have the same intersection points-samePointsAsNaive segs = it "Same points as Naive" $ do-  (Map.keys $ Sweep.intersections segs) `shouldBe` (Map.keys $ Naive.intersections segs)---- | Test if they every intersection point has the right segments-sameAsNaive      :: (Fractional r, Ord r, Eq p-                    , Show p, Show r-                    ) => [LineSegment 2 p r] -> Spec-sameAsNaive segs = it "Same as Naive " $ do-    (Sweep.intersections segs) `shouldBe` (Naive.intersections segs)---data SelfIntersectionTestCase r = SITestCase { _siPolygon :: SimplePolygon () r-                                             , _isSelfIntersectiong :: Bool-                                             } deriving (Show,Eq)---siTestCases    :: FilePath -> Spec-siTestCases fp = (runIO $ readSiInput fp) >>= \case-    Left e    -> it "reading SelfIntersection file" $-                   expectationFailure $ "Failed to read ipe file " ++ show e-    Right tcs -> mapM_ siToSpec tcs---- | polygons are considered self intersecting when they are red-readSiInput    :: FilePath -> IO (Either ConversionError [SelfIntersectionTestCase Rational])-readSiInput fp = fmap f <$> readSinglePageFile fp-  where-    f page = [ SITestCase pg (isRed a)-             | pg :+ a <- polies-             ]-      where-        polies = page^..content.to flattenGroups.traverse-               ._withAttrs _IpePath _asSimplePolygon-        isRed ats = lookupAttr (Proxy :: Proxy Stroke) ats == Just (IpeColor (Named "red"))---siToSpec                   :: SelfIntersectionTestCase Rational -> Spec-siToSpec (SITestCase pg b) = it ("SelfIntersecting?: " <> take 50 (show pg)) $ do-                               hasSelfIntersections pg `shouldBe` b------ flattenGroups :: [IpeObject r] -> [IpeObject r]--- flattenGroups = concatMap flattenGroups'---- flattenGroups'                              :: IpeObject r -> [IpeObject r]--- flattenGroups' (IpeGroup (Group gs :+ ats)) =---       map (applyAts ats) . concatMap flattenGroups' $ gs---     where---       applyAts ats = id--- flattenGroups' o                            = [o]
+ test/Algorithms/Geometry/LinearProgramming/manual.ipe view
@@ -0,0 +1,370 @@+<?xml version="1.0"?>+<!DOCTYPE ipe SYSTEM "ipe.dtd">+<ipe version="70206" creator="Ipe 7.2.7">+<info created="D:20190310094400" modified="D:20190310110316"/>+<ipestyle name="basic">+<symbol name="arrow/arc(spx)">+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">+0 0 m+-1 0.333 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/farc(spx)">+<path stroke="sym-stroke" fill="white" pen="sym-pen">+0 0 m+-1 0.333 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/ptarc(spx)">+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">+0 0 m+-1 0.333 l+-0.8 0 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/fptarc(spx)">+<path stroke="sym-stroke" fill="white" pen="sym-pen">+0 0 m+-1 0.333 l+-0.8 0 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="mark/circle(sx)" transformations="translations">+<path fill="sym-stroke">+0.6 0 0 0.6 0 0 e+0.4 0 0 0.4 0 0 e+</path>+</symbol>+<symbol name="mark/disk(sx)" transformations="translations">+<path fill="sym-stroke">+0.6 0 0 0.6 0 0 e+</path>+</symbol>+<symbol name="mark/fdisk(sfx)" transformations="translations">+<group>+<path fill="sym-fill">+0.5 0 0 0.5 0 0 e+</path>+<path fill="sym-stroke" fillrule="eofill">+0.6 0 0 0.6 0 0 e+0.4 0 0 0.4 0 0 e+</path>+</group>+</symbol>+<symbol name="mark/box(sx)" transformations="translations">+<path fill="sym-stroke" fillrule="eofill">+-0.6 -0.6 m+0.6 -0.6 l+0.6 0.6 l+-0.6 0.6 l+h+-0.4 -0.4 m+0.4 -0.4 l+0.4 0.4 l+-0.4 0.4 l+h+</path>+</symbol>+<symbol name="mark/square(sx)" transformations="translations">+<path fill="sym-stroke">+-0.6 -0.6 m+0.6 -0.6 l+0.6 0.6 l+-0.6 0.6 l+h+</path>+</symbol>+<symbol name="mark/fsquare(sfx)" transformations="translations">+<group>+<path fill="sym-fill">+-0.5 -0.5 m+0.5 -0.5 l+0.5 0.5 l+-0.5 0.5 l+h+</path>+<path fill="sym-stroke" fillrule="eofill">+-0.6 -0.6 m+0.6 -0.6 l+0.6 0.6 l+-0.6 0.6 l+h+-0.4 -0.4 m+0.4 -0.4 l+0.4 0.4 l+-0.4 0.4 l+h+</path>+</group>+</symbol>+<symbol name="mark/cross(sx)" transformations="translations">+<group>+<path fill="sym-stroke">+-0.43 -0.57 m+0.57 0.43 l+0.43 0.57 l+-0.57 -0.43 l+h+</path>+<path fill="sym-stroke">+-0.43 0.57 m+0.57 -0.43 l+0.43 -0.57 l+-0.57 0.43 l+h+</path>+</group>+</symbol>+<symbol name="arrow/fnormal(spx)">+<path stroke="sym-stroke" fill="white" pen="sym-pen">+0 0 m+-1 0.333 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/pointed(spx)">+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">+0 0 m+-1 0.333 l+-0.8 0 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/fpointed(spx)">+<path stroke="sym-stroke" fill="white" pen="sym-pen">+0 0 m+-1 0.333 l+-0.8 0 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/linear(spx)">+<path stroke="sym-stroke" pen="sym-pen">+-1 0.333 m+0 0 l+-1 -0.333 l+</path>+</symbol>+<symbol name="arrow/fdouble(spx)">+<path stroke="sym-stroke" fill="white" pen="sym-pen">+0 0 m+-1 0.333 l+-1 -0.333 l+h+-1 0 m+-2 0.333 l+-2 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/double(spx)">+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">+0 0 m+-1 0.333 l+-1 -0.333 l+h+-1 0 m+-2 0.333 l+-2 -0.333 l+h+</path>+</symbol>+<pen name="heavier" value="0.8"/>+<pen name="fat" value="1.2"/>+<pen name="ultrafat" value="2"/>+<symbolsize name="large" value="5"/>+<symbolsize name="small" value="2"/>+<symbolsize name="tiny" value="1.1"/>+<arrowsize name="large" value="10"/>+<arrowsize name="small" value="5"/>+<arrowsize name="tiny" value="3"/>+<color name="red" value="1 0 0"/>+<color name="green" value="0 1 0"/>+<color name="blue" value="0 0 1"/>+<color name="yellow" value="1 1 0"/>+<color name="orange" value="1 0.647 0"/>+<color name="gold" value="1 0.843 0"/>+<color name="purple" value="0.627 0.125 0.941"/>+<color name="gray" value="0.745"/>+<color name="brown" value="0.647 0.165 0.165"/>+<color name="navy" value="0 0 0.502"/>+<color name="pink" value="1 0.753 0.796"/>+<color name="seagreen" value="0.18 0.545 0.341"/>+<color name="turquoise" value="0.251 0.878 0.816"/>+<color name="violet" value="0.933 0.51 0.933"/>+<color name="darkblue" value="0 0 0.545"/>+<color name="darkcyan" value="0 0.545 0.545"/>+<color name="darkgray" value="0.663"/>+<color name="darkgreen" value="0 0.392 0"/>+<color name="darkmagenta" value="0.545 0 0.545"/>+<color name="darkorange" value="1 0.549 0"/>+<color name="darkred" value="0.545 0 0"/>+<color name="lightblue" value="0.678 0.847 0.902"/>+<color name="lightcyan" value="0.878 1 1"/>+<color name="lightgray" value="0.827"/>+<color name="lightgreen" value="0.565 0.933 0.565"/>+<color name="lightyellow" value="1 1 0.878"/>+<dashstyle name="dashed" value="[4] 0"/>+<dashstyle name="dotted" value="[1 3] 0"/>+<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>+<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>+<textsize name="large" value="\large"/>+<textsize name="Large" value="\Large"/>+<textsize name="LARGE" value="\LARGE"/>+<textsize name="huge" value="\huge"/>+<textsize name="Huge" value="\Huge"/>+<textsize name="small" value="\small"/>+<textsize name="footnote" value="\footnotesize"/>+<textsize name="tiny" value="\tiny"/>+<textstyle name="center" begin="\begin{center}" end="\end{center}"/>+<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/>+<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/>+<gridsize name="4 pts" value="4"/>+<gridsize name="8 pts (~3 mm)" value="8"/>+<gridsize name="16 pts (~6 mm)" value="16"/>+<gridsize name="32 pts (~12 mm)" value="32"/>+<gridsize name="10 pts (~3.5 mm)" value="10"/>+<gridsize name="20 pts (~7 mm)" value="20"/>+<gridsize name="14 pts (~5 mm)" value="14"/>+<gridsize name="28 pts (~10 mm)" value="28"/>+<gridsize name="56 pts (~20 mm)" value="56"/>+<anglesize name="90 deg" value="90"/>+<anglesize name="60 deg" value="60"/>+<anglesize name="45 deg" value="45"/>+<anglesize name="30 deg" value="30"/>+<anglesize name="22.5 deg" value="22.5"/>+<opacity name="10%" value="0.1"/>+<opacity name="30%" value="0.3"/>+<opacity name="50%" value="0.5"/>+<opacity name="75%" value="0.75"/>+<tiling name="falling" angle="-60" step="4" width="1"/>+<tiling name="rising" angle="30" step="4" width="1"/>+</ipestyle>+<ipestyle name="frank">+<arrowsize name="normal" value="5"/>+<arrowsize name="large" value="8"/>+<arrowsize name="huge" value="10"/>+<arrowsize name="small" value="3"/>+<arrowsize name="tiny" value="1"/>+<dashstyle name="dashed" value="[2 2] 0"/>+<dashstyle name="dotted" value="[0.5 1] 0"/>+<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>+<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>+<gridsize name="1 pts" value="1"/>+<gridsize name="2 pts" value="2"/>+<opacity name="10%" value="0.1"/>+<opacity name="30%" value="0.3"/>+<opacity name="50%" value="0.5"/>+<opacity name="20%" value="0.2"/>+<opacity name="40%" value="0.4"/>+<opacity name="60%" value="0.6"/>+<opacity name="70%" value="0.7"/>+<opacity name="80%" value="0.8"/>+<opacity name="90%" value="0.9"/>+</ipestyle>+<page>+<layer name="alpha"/>+<view layers="alpha" active="alpha"/>+<path layer="alpha" stroke="blue">+80 512 m+496 688 l+</path>+<path stroke="blue">+32 656 m+400 496 l+</path>+<path stroke="blue">+192 512 m+512 592 l+</path>+<path stroke="blue">+80 544 m+448 512 l+</path>+<path stroke="red">+48 608 m+400 768 l+</path>+<path stroke="red">+64 784 m+512 672 l+</path>+<path stroke="red">+64 720 m+560 688 l+</path>+<use name="mark/disk(sx)" pos="223.532 572.725" size="normal" stroke="black"/>+</page>+<page>+<layer name="alpha"/>+<view layers="alpha" active="alpha"/>+<path layer="alpha" matrix="2.40555 0 0 2.40555 -64.8028 -863.829" stroke="red">+46.1048 614.582 m+429.2 688.899 l+</path>+<path matrix="2.32631 0 0 2.32631 -54.964 -984.057" stroke="blue">+41.4414 741.953 m+423.596 711.062 l+</path>+<path stroke="red">+121.985 842 m+859.993 369.865 l+</path>+</page>+<page>+<layer name="alpha"/>+<view layers="alpha" active="alpha"/>+<path layer="alpha" stroke="red">+22.6642 533.532 m+595 760.836 l+</path>+<path stroke="red">+0 803.856 m+595 555.084 l+</path>+<path stroke="red">+-29.9681 598.468 m+794.006 675.181 l+</path>+<path stroke="red">+411.476 809.515 m+595 311.453 l+</path>+<path stroke="red">+0 382.909 m+437.853 1024.64 l+</path>+<path stroke="blue">+-16.5606 862.606 m+411.101 433.915 l+</path>+<path stroke="blue">+95.0642 522.237 m+857.65 676.395 l+</path>+<path stroke="blue">+277.375 460.704 m+642.518 950.636 l+</path>+<path stroke="blue">+450.168 450.864 m+868.112 754.196 l+</path>+<path stroke="blue">+28.6395 500.773 m+594.217 555.411 l+</path>+<use name="mark/disk(sx)" pos="284.74 560.58" size="normal" stroke="blue"/>+</page>+</ipe>
− test/Algorithms/Geometry/LowerEnvelope/LowerEnvSpec.hs
@@ -1,104 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE ScopedTypeVariables #-}-module Algorithms.Geometry.LowerEnvelope.LowerEnvSpec where--import qualified Algorithms.Geometry.LowerEnvelope.DualCH as DualCH-import           Control.Lens-import           Data.Eq.Approximate-import           Data.Ext-import           Data.Geometry-import           Data.Geometry.Ipe-import           Data.Geometry.Line-import           Data.List.NonEmpty (NonEmpty(..))-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Maybe (mapMaybe)-import           Data.Proxy-import           Data.Ratio-import           Data.Semigroup-import           Data.Vinyl.CoRec-import           GHC.TypeLits-import           Test.Hspec-import           Util---- import Algorithms.Geometry.LowerEnvelope.Types--spec :: Spec-spec = testCases "test/Algorithms/Geometry/LowerEnvelope/manual.ipe"--testCases    :: FilePath -> Spec-testCases fp = (runIO $ readInput fp) >>= \case-    Left e    -> it "reading Smallest enclosing disk file" $-                   expectationFailure $ "Failed to read ipe file " ++ show e-    Right tcs -> mapM_ toSpec tcs---type Approx r = AbsolutelyApproximateValue (Proxy 3) r----data TestCase r = TestCase { _lines    :: NonEmpty (Line 2 r :+ ())-                           , _color    :: Maybe (IpeColor r)-                           , _solution :: [Point 2 (Approx r)]-                           }-                  deriving (Show,Eq)---readInput    :: FilePath -> IO (Either ConversionError [TestCase Rational])-readInput fp = fmap f <$> readSinglePageFile fp-  where-    f page = [ let c = lookup' $ NonEmpty.head lSet-               in TestCase ((\l -> l^.core.to supportingLine :+ ()) <$> lSet)-                           c-                           (solutionOf c)-             | lSet <- mapMaybe NonEmpty.nonEmpty $ byStrokeColour segs-             ]-      where-        segs :: [LineSegment 2 () Rational :+ IpeAttributes Path Rational]-        segs = page^..content.traverse._withAttrs _IpePath _asLineSegment-        pts  = page^..content.traverse._IpeUse--        solutionOf c = [ AbsolutelyApproximateValue <$> p^.core.symbolPoint-                       | p <- pts, lookup' p == c-                       ]----lookup' (_ :+ ats) = lookupAttr (Proxy :: Proxy Stroke) ats---toSpec                    :: (Fractional r, Ord r, Show r) => TestCase r -> Spec-toSpec (TestCase ls c sol) = it ("testing the " <> show c <> " set") $-  (map (approx . (^.core))-   . DualCH.vertices . DualCH.lowerEnvelope $ ls) `shouldBe` sol---approx = fmap AbsolutelyApproximateValue---- shouldApprox       :: forall f r. ( Functor f, Eq (f (Approx r))---                                   , Show (f (Approx r))---                                   )---                    => f r -> f r -> Expectation--- a `shouldApprox` b = a' `shouldBe` b'---   where---     a' :: f (Approx r)---     a' = AbsolutelyApproximateValue <$> a---     b' :: f (Approx r)---     b' = AbsolutelyApproximateValue <$> b----instance KnownNat n => AbsoluteTolerance (Proxy n) where-  absoluteToleranceOf = toleranceFromKnownNat . getAbsoluteTolerance--toleranceFromKnownNat   :: (Fractional r, KnownNat n) => proxy n -> r-toleranceFromKnownNat p = recip . fromInteger $ (10 :: Integer) ^ (natVal p)--instance KnownNat n => RelativeTolerance (Proxy n) where-  relativeToleranceOf = toleranceFromKnownNat . getRelativeTolerance--instance KnownNat n => ZeroTolerance (Proxy n) where-  zeroToleranceOf = toleranceFromKnownNat . getZeroTolerance----     where---       f   :: Fractional r => AbsolutelyApproximateValue (Proxy n) r -> r---       f _ = recip $ (fromInteger 10) ^^ (natVal (Proxy :: Proxy n))
− test/Algorithms/Geometry/PolygonTriangulation/MakeMonotoneSpec.hs
@@ -1,58 +0,0 @@-module Algorithms.Geometry.PolygonTriangulation.MakeMonotoneSpec where--import Algorithms.Geometry.PolygonTriangulation.MakeMonotone-import Data.Geometry.Polygon-import Data.Geometry-import Data.Ext-import Control.Lens-import Test.Hspec-import qualified Data.List.NonEmpty as NonEmpty-import qualified Data.Set as Set--- import Data.Geometry.Ipe---spec :: Spec-spec = describe "GeomBook Example" $ do-         it "Classify Verticese" $-           (fmap (^.extra.extra) . polygonVertices $ classifyVertices geomBookPoly)-           `shouldBe` geomBookVertexTypes-         it "Diagonals" $-           (Set.fromList . map (\s -> sort' (s^.start.extra,s^.end.extra))-            $ computeDiagonals geomBookPoly)-           `shouldBe` geomBookDiagonals---  -- testCases "test/Algorithms/Geometry/SmallestEnclosingDisk/manual.ipe"--sort'       :: Ord a => (a,a) -> (a,a)-sort' (x,y) = (min x y, max x y)--geomBookPoly :: SimplePolygon Int Rational-geomBookPoly = fromPoints [ point2 20 20 :+ 1-                          , point2 18 19 :+ 2-                          , point2 16 25 :+ 3-                          , point2 13 23 :+ 4-                          , point2 10 24 :+ 5-                          , point2 6  22 :+ 6-                          , point2 8  21 :+ 7-                          , point2 7  18 :+ 8-                          , point2 2  19 :+ 9-                          , point2 1  10 :+ 10-                          , point2 3  5  :+ 11-                          , point2 11 7  :+ 12-                          , point2 15 1  :+ 13-                          , point2 12 15 :+ 14-                          , point2 15 12 :+ 15-                          ]-geomBookVertexTypes = NonEmpty.fromList [Start,Merge,Start,Merge,Start,Regular,Regular,Merge,Start,Regular,End,Split,End,Split,End]-geomBookDiagonals = Set.fromList [(4,6),(2,8),(8,14),(10,12)]----  -- let f i     = geomBookPoly !! (i-1)-  --                       seg i j =-  --                   in--  -- [Clo--  -- LineSegment (Closed (Point2 [6 % 1,22 % 1] :+ 6)) (Closed (Point2 [13 % 1,23 % 1] :+ 4)),LineSegment (Closed (Point2 [7 % 1,18 % 1] :+ 8)) (Closed (Point2 [18 % 1,19 % 1] :+ 2)),LineSegment (Closed (Point2 [12 % 1,15 % 1] :+ 14)) (Closed (Point2 [7 % 1,18 % 1] :+ 8)),LineSegment (Closed (Point2 [11 % 1,7 % 1] :+ 12)) (Closed (Point2 [1 % 1,10 % 1] :+ 10))]
− test/Algorithms/Geometry/PolygonTriangulation/TriangulateMonotoneSpec.hs
@@ -1,73 +0,0 @@-module Algorithms.Geometry.PolygonTriangulation.TriangulateMonotoneSpec where--import           Algorithms.Geometry.PolygonTriangulation.TriangulateMonotone-import           Control.Lens-import           Data.Ext-import           Data.Geometry-import           Data.Geometry.Ipe-import           Data.Geometry.Polygon-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Maybe-import qualified Data.Set as Set-import           Data.Vinyl-import           Test.Hspec-import           Util---spec :: Spec-spec = do testCases "test/Algorithms/Geometry/PolygonTriangulation/monotone.ipe"-          testCases "test/Algorithms/Geometry/PolygonTriangulation/simplepolygon6.ipe"--testCases    :: FilePath -> Spec-testCases fp = (runIO $ readInput fp) >>= \case-    Left e    -> it "reading TriangulateMonotone file" $-                   expectationFailure $ "Failed to read ipe file " ++ show e-    Right tcs -> mapM_ toSpec tcs---data TestCase r = TestCase { _polygon  :: MonotonePolygon () r :+ IpeColor r-                           , _solution :: [LineSegment 2 () r]-                           }-                  deriving (Show,Eq)---toSpec                            :: (Num r, Ord r, Show r) => TestCase r -> Spec-toSpec (TestCase (poly :+ c) sol) =-    describe ("testing polygions of color " ++ show c) $ do-      it "comparing with manual solution" $-        (naiveSet $ computeDiagonals poly) `shouldBe` naiveSet sol-  where-    naiveSet = NaiveSet . map S--newtype S p r = S (LineSegment 2 p r) deriving (Show)--instance (Eq p, Eq r) => Eq (S p r) where-  (S s) == (S y) =  (s^.start == y^.start && s^.end == y^.end)-                 || (s^.start == y^.end   && s^.end == y^.start)------ | Point sets per color, Crosses form the solution-readInput    :: FilePath -> IO (Either ConversionError [TestCase Rational])-readInput fp = fmap f <$> readSinglePageFile fp-  where-    f page = [ TestCase pg (solutionOf pg segs)-             | pg <- map g polies-             ]-      where-        g x@(pg :+ _) = toCounterClockWiseOrder pg :+ lookupColor x--        polies = page^..content.traverse._withAttrs _IpePath _asSimplePolygon-        segs   = page^..content.traverse._withAttrs _IpePath _asLineSegment--        solutionOf (_ :+ c) = map (^.core) . filter ((== c) . lookupColor)---        -- -- | Crosses form a solution-        -- isInSolution s = s^.core.symbolName == "mark/cross(sx)"--        -- right = either (const Nothing) Just-        -- solutionOf = right . fromList . map (^.core.symbolPoint) . filter isInSolution--lookupColor           :: i :+ IpeAttributes Path r -> IpeColor r-lookupColor (_ :+ ats) = fromMaybe (IpeColor $ Named "black") $ lookupAttr SStroke ats
+ test/Algorithms/Geometry/RedBlueSeparator/manual.ipe view
@@ -0,0 +1,355 @@+<?xml version="1.0"?>+<!DOCTYPE ipe SYSTEM "ipe.dtd">+<ipe version="70206" creator="Ipe 7.2.7">+<info created="D:20190316210045" modified="D:20190316234250"/>+<ipestyle name="basic">+<symbol name="arrow/arc(spx)">+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">+0 0 m+-1 0.333 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/farc(spx)">+<path stroke="sym-stroke" fill="white" pen="sym-pen">+0 0 m+-1 0.333 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/ptarc(spx)">+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">+0 0 m+-1 0.333 l+-0.8 0 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/fptarc(spx)">+<path stroke="sym-stroke" fill="white" pen="sym-pen">+0 0 m+-1 0.333 l+-0.8 0 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="mark/circle(sx)" transformations="translations">+<path fill="sym-stroke">+0.6 0 0 0.6 0 0 e+0.4 0 0 0.4 0 0 e+</path>+</symbol>+<symbol name="mark/disk(sx)" transformations="translations">+<path fill="sym-stroke">+0.6 0 0 0.6 0 0 e+</path>+</symbol>+<symbol name="mark/fdisk(sfx)" transformations="translations">+<group>+<path fill="sym-fill">+0.5 0 0 0.5 0 0 e+</path>+<path fill="sym-stroke" fillrule="eofill">+0.6 0 0 0.6 0 0 e+0.4 0 0 0.4 0 0 e+</path>+</group>+</symbol>+<symbol name="mark/box(sx)" transformations="translations">+<path fill="sym-stroke" fillrule="eofill">+-0.6 -0.6 m+0.6 -0.6 l+0.6 0.6 l+-0.6 0.6 l+h+-0.4 -0.4 m+0.4 -0.4 l+0.4 0.4 l+-0.4 0.4 l+h+</path>+</symbol>+<symbol name="mark/square(sx)" transformations="translations">+<path fill="sym-stroke">+-0.6 -0.6 m+0.6 -0.6 l+0.6 0.6 l+-0.6 0.6 l+h+</path>+</symbol>+<symbol name="mark/fsquare(sfx)" transformations="translations">+<group>+<path fill="sym-fill">+-0.5 -0.5 m+0.5 -0.5 l+0.5 0.5 l+-0.5 0.5 l+h+</path>+<path fill="sym-stroke" fillrule="eofill">+-0.6 -0.6 m+0.6 -0.6 l+0.6 0.6 l+-0.6 0.6 l+h+-0.4 -0.4 m+0.4 -0.4 l+0.4 0.4 l+-0.4 0.4 l+h+</path>+</group>+</symbol>+<symbol name="mark/cross(sx)" transformations="translations">+<group>+<path fill="sym-stroke">+-0.43 -0.57 m+0.57 0.43 l+0.43 0.57 l+-0.57 -0.43 l+h+</path>+<path fill="sym-stroke">+-0.43 0.57 m+0.57 -0.43 l+0.43 -0.57 l+-0.57 0.43 l+h+</path>+</group>+</symbol>+<symbol name="arrow/fnormal(spx)">+<path stroke="sym-stroke" fill="white" pen="sym-pen">+0 0 m+-1 0.333 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/pointed(spx)">+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">+0 0 m+-1 0.333 l+-0.8 0 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/fpointed(spx)">+<path stroke="sym-stroke" fill="white" pen="sym-pen">+0 0 m+-1 0.333 l+-0.8 0 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/linear(spx)">+<path stroke="sym-stroke" pen="sym-pen">+-1 0.333 m+0 0 l+-1 -0.333 l+</path>+</symbol>+<symbol name="arrow/fdouble(spx)">+<path stroke="sym-stroke" fill="white" pen="sym-pen">+0 0 m+-1 0.333 l+-1 -0.333 l+h+-1 0 m+-2 0.333 l+-2 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/double(spx)">+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">+0 0 m+-1 0.333 l+-1 -0.333 l+h+-1 0 m+-2 0.333 l+-2 -0.333 l+h+</path>+</symbol>+<pen name="heavier" value="0.8"/>+<pen name="fat" value="1.2"/>+<pen name="ultrafat" value="2"/>+<symbolsize name="large" value="5"/>+<symbolsize name="small" value="2"/>+<symbolsize name="tiny" value="1.1"/>+<arrowsize name="large" value="10"/>+<arrowsize name="small" value="5"/>+<arrowsize name="tiny" value="3"/>+<color name="red" value="1 0 0"/>+<color name="green" value="0 1 0"/>+<color name="blue" value="0 0 1"/>+<color name="yellow" value="1 1 0"/>+<color name="orange" value="1 0.647 0"/>+<color name="gold" value="1 0.843 0"/>+<color name="purple" value="0.627 0.125 0.941"/>+<color name="gray" value="0.745"/>+<color name="brown" value="0.647 0.165 0.165"/>+<color name="navy" value="0 0 0.502"/>+<color name="pink" value="1 0.753 0.796"/>+<color name="seagreen" value="0.18 0.545 0.341"/>+<color name="turquoise" value="0.251 0.878 0.816"/>+<color name="violet" value="0.933 0.51 0.933"/>+<color name="darkblue" value="0 0 0.545"/>+<color name="darkcyan" value="0 0.545 0.545"/>+<color name="darkgray" value="0.663"/>+<color name="darkgreen" value="0 0.392 0"/>+<color name="darkmagenta" value="0.545 0 0.545"/>+<color name="darkorange" value="1 0.549 0"/>+<color name="darkred" value="0.545 0 0"/>+<color name="lightblue" value="0.678 0.847 0.902"/>+<color name="lightcyan" value="0.878 1 1"/>+<color name="lightgray" value="0.827"/>+<color name="lightgreen" value="0.565 0.933 0.565"/>+<color name="lightyellow" value="1 1 0.878"/>+<dashstyle name="dashed" value="[4] 0"/>+<dashstyle name="dotted" value="[1 3] 0"/>+<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>+<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>+<textsize name="large" value="\large"/>+<textsize name="Large" value="\Large"/>+<textsize name="LARGE" value="\LARGE"/>+<textsize name="huge" value="\huge"/>+<textsize name="Huge" value="\Huge"/>+<textsize name="small" value="\small"/>+<textsize name="footnote" value="\footnotesize"/>+<textsize name="tiny" value="\tiny"/>+<textstyle name="center" begin="\begin{center}" end="\end{center}"/>+<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/>+<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/>+<gridsize name="4 pts" value="4"/>+<gridsize name="8 pts (~3 mm)" value="8"/>+<gridsize name="16 pts (~6 mm)" value="16"/>+<gridsize name="32 pts (~12 mm)" value="32"/>+<gridsize name="10 pts (~3.5 mm)" value="10"/>+<gridsize name="20 pts (~7 mm)" value="20"/>+<gridsize name="14 pts (~5 mm)" value="14"/>+<gridsize name="28 pts (~10 mm)" value="28"/>+<gridsize name="56 pts (~20 mm)" value="56"/>+<anglesize name="90 deg" value="90"/>+<anglesize name="60 deg" value="60"/>+<anglesize name="45 deg" value="45"/>+<anglesize name="30 deg" value="30"/>+<anglesize name="22.5 deg" value="22.5"/>+<opacity name="10%" value="0.1"/>+<opacity name="30%" value="0.3"/>+<opacity name="50%" value="0.5"/>+<opacity name="75%" value="0.75"/>+<tiling name="falling" angle="-60" step="4" width="1"/>+<tiling name="rising" angle="30" step="4" width="1"/>+</ipestyle>+<ipestyle name="frank">+<arrowsize name="normal" value="5"/>+<arrowsize name="large" value="8"/>+<arrowsize name="huge" value="10"/>+<arrowsize name="small" value="3"/>+<arrowsize name="tiny" value="1"/>+<dashstyle name="dashed" value="[2 2] 0"/>+<dashstyle name="dotted" value="[0.5 1] 0"/>+<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>+<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>+<gridsize name="1 pts" value="1"/>+<gridsize name="2 pts" value="2"/>+<opacity name="10%" value="0.1"/>+<opacity name="30%" value="0.3"/>+<opacity name="50%" value="0.5"/>+<opacity name="20%" value="0.2"/>+<opacity name="40%" value="0.4"/>+<opacity name="60%" value="0.6"/>+<opacity name="70%" value="0.7"/>+<opacity name="80%" value="0.8"/>+<opacity name="90%" value="0.9"/>+</ipestyle>+<page>+<layer name="alpha"/>+<view layers="alpha" active="alpha"/>+<use layer="alpha" name="mark/disk(sx)" pos="176 688" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="224 672" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="160 656" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="208 624" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="400 688" size="normal" stroke="red"/>+<use name="mark/disk(sx)" pos="448 640" size="normal" stroke="red"/>+<use matrix="1 0 0 1 -43.6079 16.3284" name="mark/disk(sx)" pos="400 640" size="normal" stroke="red"/>+</page>+<page>+<layer name="alpha"/>+<view layers="alpha" active="alpha"/>+<use layer="alpha" name="mark/disk(sx)" pos="208 608" size="normal" stroke="red"/>+<use name="mark/disk(sx)" pos="224 640" size="normal" stroke="red"/>+<use matrix="1 0 0 1 0 1.54293" name="mark/disk(sx)" pos="288 608" size="normal" stroke="red"/>+<use matrix="1 0 0 1 21.7014 -12.8726" name="mark/disk(sx)" pos="224 608" size="normal" stroke="red"/>+<use name="mark/disk(sx)" pos="336 640" size="normal" stroke="red"/>+<use name="mark/disk(sx)" pos="320 688" size="normal" stroke="red"/>+<use name="mark/disk(sx)" pos="64 704" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="160 656" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="160 752" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="112 672" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="112 592" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="288 736" size="normal" stroke="blue"/>+</page>+<page>+<layer name="alpha"/>+<view layers="alpha" active="alpha"/>+<use layer="alpha" name="mark/cross(sx)" pos="137.831 733.813" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="230.904 721.563" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="150.255 624.633" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="85.1135 709.576" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="160.209 702.601" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="160.209 702.601" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="170.678 688.287" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="251.915 645.615" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="55.337 684.816" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="129.955 678.571" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="130.15 631.793" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="249.435 558.192" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="324.114 668.358" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="324.114 668.358" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="361.354 661.106" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="189.131 599.845" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="143.375 537.289" size="normal" stroke="blue"/>+<use name="mark/cross(sx)" pos="359.679 584.286" size="normal" stroke="red"/>+<use name="mark/cross(sx)" pos="396.828 627.4" size="normal" stroke="red"/>+<use name="mark/cross(sx)" pos="417.481 668.711" size="normal" stroke="red"/>+<use name="mark/cross(sx)" pos="467.45 598.096" size="normal" stroke="red"/>+<use matrix="1 0 0 1 -93.524 0.18083" name="mark/cross(sx)" pos="326.916 608.601" size="normal" stroke="red"/>+<use name="mark/cross(sx)" pos="338.842 545.777" size="normal" stroke="red"/>+<use name="mark/cross(sx)" pos="432.668 573.584" size="normal" stroke="red"/>+<use name="mark/cross(sx)" pos="357.521 629.624" size="normal" stroke="red"/>+<use name="mark/cross(sx)" pos="309.927 526.735" size="normal" stroke="red"/>+<use name="mark/cross(sx)" pos="417.855 527.98" size="normal" stroke="red"/>+<use name="mark/cross(sx)" pos="425.293 604.935" size="normal" stroke="red"/>+<use name="mark/cross(sx)" pos="482.54 641.657" size="normal" stroke="red"/>+</page>+<page>+<layer name="alpha"/>+<view layers="alpha" active="alpha"/>+<use layer="alpha" name="mark/disk(sx)" pos="71.295 646.994" size="normal" stroke="red"/>+<use name="mark/disk(sx)" pos="124.003 669.524" size="normal" stroke="red"/>+<use name="mark/disk(sx)" pos="158.117 593.965" size="normal" stroke="red"/>+<use name="mark/disk(sx)" pos="106.985 602.699" size="normal" stroke="red"/>+<use name="mark/disk(sx)" pos="130.801 646.957" size="normal" stroke="red"/>+<use name="mark/disk(sx)" pos="183.976 638.614" size="normal" stroke="red"/>+<use name="mark/disk(sx)" pos="268.842 528.238" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="303.35 581.718" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="353.58 636.762" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="288.989 633.613" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="325.76 613.53" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="337.81 597.8" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="245.135 580.319" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="168.779 515.317" size="normal" stroke="blue"/>+<use name="mark/disk(sx)" pos="116.706 526.039" size="normal" stroke="blue"/>+</page>+</ipe>
− test/Algorithms/Geometry/SmallestEnclosingDisk/RISpec.hs
@@ -1,73 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE LambdaCase #-}-module Algorithms.Geometry.SmallestEnclosingDisk.RISpec where--import Util--import Control.Monad(when)-import System.Random(mkStdGen)-import Control.Lens-import Data.Ext-import Data.Maybe-import Data.Proxy-import Test.Hspec-import Data.Geometry-import Data.Geometry.Ball(fromDiameter, disk, Disk)-import Data.Geometry.Ipe--import Algorithms.Geometry.SmallestEnclosingBall.Types-import qualified Algorithms.Geometry.SmallestEnclosingBall.RandomizedIncrementalConstruction as RIC-import qualified Algorithms.Geometry.SmallestEnclosingBall.Naive as Naive---spec :: Spec-spec = testCases "test/Algorithms/Geometry/SmallestEnclosingDisk/manual.ipe"--testCases    :: FilePath -> Spec-testCases fp = (runIO $ readInput fp) >>= \case-    Left e    -> it "reading Smallest enclosing disk file" $-                   expectationFailure $ "Failed to read ipe file " ++ show e-    Right tcs -> mapM_ toSpec tcs---data TestCase r = TestCase { _pointSet :: [Point 2 r :+ ()]-                           , _solution :: Maybe (TwoOrThree (Point 2 r))-                           }-                  deriving (Show,Eq)---toSpec                    :: (Fractional r, Ord r, Show r) => TestCase r -> Spec-toSpec (TestCase pts sol) =-    describe ("testing point set with solution " ++ show sol) $ do-      it "comparing with naive solution" $-        ((RIC.smallestEnclosingDisk (mkStdGen 2123) pts)^.enclosingDisk)-        `shouldBe`-        ((Naive.smallestEnclosingDisk pts)^.enclosingDisk)-      when (isJust sol) $-        it "manal solution" $-          ((RIC.smallestEnclosingDisk (mkStdGen 5) pts)^.enclosingDisk)-          `shouldBe`-          (diskOf $ fromJust sol)---diskOf               :: (Fractional r, Eq r)-                     => TwoOrThree (Point 2 r) -> Disk () r-diskOf (Two p q)     = fromDiameter p q-diskOf (Three p q r) = fromMaybe (error "Wrong manual disk") $ disk p q r----- | Point sets per color, Crosses form the solution-readInput    :: FilePath -> IO (Either ConversionError [TestCase Rational])-readInput fp = fmap f <$> readSinglePageFile fp-  where-    f page = [ TestCase [p^.core.symbolPoint :+ () | p <- pSet] (solutionOf pSet)-             | pSet <- byStrokeColour syms-             ]-      where-        syms = page^..content.traverse._IpeUse--        -- | Crosses form a solution-        isInSolution s = s^.core.symbolName == "mark/cross(sx)"--        right = either (const Nothing) Just-        solutionOf = right . fromList . map (^.core.symbolPoint) . filter isInSolution
− test/Algorithms/Geometry/WellSeparatedPairDecomposition/WSPDSpec.hs
@@ -1,93 +0,0 @@-module Algorithms.Geometry.WellSeparatedPairDecomposition.WSPDSpec where--import           Algorithms.Geometry.Diameter-import           Algorithms.Geometry.WellSeparatedPairDecomposition.Types-import           Algorithms.Geometry.WellSeparatedPairDecomposition.WSPD-import           Control.Lens-import           Data.Ext-import qualified Data.Foldable as F-import           Data.Geometry-import qualified Data.List.NonEmpty as NonEmpty-import qualified Data.LSeq as LSeq-import qualified Data.Set as Set-import qualified Data.Vector as V-import           Test.Hspec-import           Util-import           GHC.TypeLits------------------------------------------------------------------------------------spec :: Spec-spec = do-  reIndexTest-  distributePointsTest--reIndexTest :: Spec-reIndexTest = describe "ReIndex tests" $ do-    it "simple input reordering " $ do-      reIndexPoints input `shouldBe` output-  where-    input = Vector2 (ptSeq [ origin :+ 1, point2 1 1 :+ 100, point2 5 5 :+ 101 ])-                    (ptSeq [ point2 1 1 :+ 100, point2 5 5 :+ 101, origin :+ 1 ])-    output = Vector2 (ptSeq [ origin :+ 0, point2 1 1 :+ 1, point2 5 5 :+ 2 ])-                     (ptSeq [ point2 1 1 :+ 1, point2 5 5 :+ 2, origin :+ 0 ])-------distributePointsTest :: Spec-distributePointsTest = describe "DistributePoints tests" $ do-    it "distributePoints' on a single list " $ do-      distributePoints' 3 levels input `shouldBe` output-    it "distributePoints on multiple lists" $ do-      distributePoints 3 levels (Vector2 input input) `shouldBe` output'--  where-    levels = V.fromList [Just $ Level 0 (Just 2),Just $ Level 1 (Just 1), Nothing]-    input  = ptSeq [ origin :+ 0, point2 1 1 :+ 1, point2 2 2 :+ 2]-    output = V.fromList [ ptSeq [origin :+ 0]-                        , ptSeq [point2 1 1 :+ 1]-                        , ptSeq [point2 2 2 :+ 2]-                        ]-    output' = fmap (\pts -> Vector2 pts pts) output--    --     input = v2 (f [ origin :+ 1, point2 1 1 :+ 100, point2 5 5 :+ 101 ])---                (f [ point2 1 1 :+ 100, point2 5 5 :+ 101, origin :+ 1 ])---     output = v2 (f [ origin :+ 0, point2 1 1 :+ 1, point2 5 5 :+ 2 ])---                 (f [ point2 1 1 :+ 1, point2 5 5 :+ 2, origin :+ 0 ])----     f =  LSeq.fromNonEmpty . NonEmpty.fromList . map (&extra %~ ext)--ptSeq = LSeq.fromNonEmpty . NonEmpty.fromList . map (&extra %~ ext)---- coversAll--points1 :: NonEmpty.NonEmpty (Point 2 Double :+ ())-points1 = ext <$> NonEmpty.fromList [point2 0 0, point2 1 1, point2 2 100, point2 3 101]----- | Computes all pairs of points that are uncovered by the WSPD with separation s-uncovered         :: (Floating r, Ord r, Arity d, Arity (d+1), Ord p)-                  => [Point d r :+ p] -> r -> SplitTree d p r a -> [(Point d r :+ p, Point d r :+ p)]-uncovered pts s t = Set.toList $ allPairs `Set.difference` covered-  where-    allPairs = Set.fromList [ (p,q) | p <- pts, q <- pts, p < q ]-    covered  = Set.unions [ mkSet as bs | (as,bs) <- wellSeparatedPairs s t]--    mkSet as bs = Set.fromList [ (min a b,max a b) | a <- F.toList as, b <- F.toList bs]---- | Naively check if a WSP pair is actually well separated with respect to--- separation s. i.e. computes the maximum diameter of as and bs, and then--- tests by brute force if all pairs (a,b) from different sets are at distance--- at least s times the maximum diameter.-isWellSeparated           :: (Floating r, Ord r, Arity d) => r -> WSP d p r a -> Bool-isWellSeparated s (as,bs) =-    and [ euclideanDist (a^.core) (b^.core) >= s*r | a <- F.toList as, b <- F.toList bs ]-  where-    r = (/2) . maximum . map (diameterNaive . F.toList) $ [as,bs]----allCoveredTest = describe
− test/Data/EdgeOracleSpec.hs
@@ -1,63 +0,0 @@-module Data.EdgeOracleSpec where--import           Control.Arrow-import           Data.Ext-import           Data.PlanarGraph-import           Data.Semigroup-import qualified Data.Set as S-import           Test.Hspec------------------------------------------------------------------------------------data TestG--type Vertex = VertexId TestG Primal---testEdges :: [(Vertex,[Vertex])]-testEdges = map (\(i,vs) -> (VertexId i, map VertexId vs))-            [ (0, [1])-            , (1, [0,1,2,4])-            , (2, [1,3,4])-            , (3, [2,5])-            , (4, [1,2,5])-            , (5, [3,4])-            ]--buildEdgeOracle'  :: [(Vertex,[Vertex])] -> EdgeOracle TestG Primal ()-buildEdgeOracle' = buildEdgeOracle . map (second $ fmap ext)---- | Flattens an adjacencylist representation into a set of edges-flattenEdges :: [(t, [a])] -> [(t, a)]-flattenEdges = concatMap (\(i,vs) -> map (i,) vs)---- | Given a set of edges, generates all non-edges, i.e. all pairs of vertices--- that do not form an edge-nonEdges    :: [(VertexId s w, [VertexId s w])] -> [(VertexId s w, VertexId s w)]-nonEdges es = flattenEdges . map (second $ f . S.fromList) $ es-  where-    f vs  = filter (`S.notMember` vs) allVs-    allVs = map fst es---- | Retains only the edges in the graph-hasEdges         :: EdgeOracle s w a -> [(VertexId s w, VertexId s w)]-                 -> [(VertexId s w, VertexId s w)]-oracle `hasEdges` es = filter (\(u,v) -> hasEdge u v oracle) es----- | Tests all edges es-edgeOracleSpec      :: String -> [(Vertex, [Vertex])]  -> Spec-edgeOracleSpec s es = do-    let oracle = buildEdgeOracle' es-    describe ("EdgeOracle on " <> s) $ do-      it "test postitive edges" $-          (oracle `hasEdges` flattenEdges es) `shouldBe` flattenEdges es-      it "test negative edges " $-          (oracle `hasEdges` nonEdges es) `shouldBe` []--      -- it "test maximum adjacency-list lengths" $-      --     (filter (\v -> length v > 6) . _unEdgeOracle $ oracle) `shouldBe` []--spec :: Spec-spec = do-         edgeOracleSpec "testEdges" testEdges
− test/Data/Geometry/ArrangementSpec.hs
@@ -1,102 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-module Data.Geometry.ArrangementSpec where--import           Control.Lens-import qualified Data.ByteString as B-import           Data.Ext-import           Data.Geometry-import           Data.Geometry.Arrangement-import           Data.Geometry.Arrangement.Draw-import           Data.Geometry.Ipe-import           Test.Hspec-import           Util(runOnFile)--spec :: Spec-spec = testCases "test/Data/Geometry/arrangement.ipe"---testCases    :: FilePath -> Spec-testCases fp = runIO (readInputFromFile fp) >>= \case-    Left e    -> it "reading arrangement file" $-                   expectationFailure $ "Failed to read ipe file " ++ show e-    Right tcs -> mapM_ toSpec tcs-----   ipeF <- beforeAll $ readInputFromFile "tests/Data/Geometry/pointInPolygon.ipe"---   describe "Point in Polygon tests" $ do---     it "returns the first element of a list" $ do---       head [23 ..] `shouldBe` (23 :: Int)---data TestCase r = TestCase { _lines      :: [Line 2 r :+ ()]-                           , _outFile    :: FilePath -- ^ filename of the output arrangement,-                                                     -- as an ipe file-                           }-                  deriving (Show)--data Test = Test--drawArr    :: [Line 2 Rational :+ a] -> B.ByteString-drawArr ls = let arr = constructArrangement (Identity Test) ls-                 out = [ iO $ drawArrangement arr ]-                 Just bs = toIpeXML . singlePageFromContent $ out-             in bs---toSpec                       :: TestCase Rational -> Spec-toSpec (TestCase ls outFile) = do-    runOnFile "test drawing arrangement"  outFile (pure $ drawArr ls)---- toSingleSpec poly r q = it msg $ (q `inPolygon` poly) `shouldBe` r---   where---     msg = "Point in polygon test with " ++ show q------ toSpec (TestCase poly is bs os) = do---                                     describe "inside tests" $---                                       mapM_ (toSingleSpec poly Inside) is---                                     describe "on boundary tests" $---                                       mapM_ (toSingleSpec poly OnBoundary) bs---                                     describe "outside tests" $---                                       mapM_ (toSingleSpec poly Outside) os--readInputFromFile    :: FilePath -> IO (Either ConversionError [TestCase Rational])-readInputFromFile fp = fmap f <$> readSinglePageFile fp-  where-    f      :: IpePage Rational -> [TestCase Rational]-    f page = [ TestCase [ ext $ supportingLine s-                        | (s :+ _ats) <- segs-                        ]-                        (fp <> ".out.ipe")-             ]-      where-        segs = page^..content.traverse._withAttrs _IpePath _asLineSegment-    -- f page = [ TestCase poly-    --                     [ s^.symbolPoint | s <- myPoints ats, isInsidePt  s ]-    --                     [ s^.symbolPoint | s <- myPoints ats, isBorderPt  s ]-    --                     [ s^.symbolPoint | s <- myPoints ats, isOutsidePt s ]-    --          | (poly :+ ats) <- polies-    --          ]-    --   where-    --     polies = page^..content.traverse._withAttrs _IpePath _asSimplePolygon-    --     syms   = page^..content.traverse._IpeUse---    --     myPoints polyAts = [s | (s :+ ats) <- syms, belongsToPoly ats polyAts ]--    --     -- We test a point/polygon combination if they have the same color-    --     belongsToPoly symAts polyAts =-    --         lookupAttr colorP symAts == lookupAttr colorP polyAts--    --     -- A point i inside if it is a disk-    --     isInsidePt   :: IpeSymbol r -> Bool-    --     isInsidePt s = s^.symbolName == "mark/disk(sx)"--    --     -- Boxes are on the boundary-    --     isBorderPt s = s^.symbolName == "mark/box(sx)"--    --     -- crosses are outside the polygon-    --     isOutsidePt s = s^.symbolName == "mark/cross(sx)"--    --     colorP = Proxy :: Proxy Stroke
− test/Data/Geometry/BoxSpec.hs
@@ -1,16 +0,0 @@-module Data.Geometry.BoxSpec where--import Data.Geometry-import Data.Geometry.Box-import Data.Geometry.Properties-import Test.Hspec---spec :: Spec-spec = do-  describe "Box" $ do-    it "intersect tests" $-      ((boundingBoxList' $ [point2 (-4) (-3), point2 (-4) (10 :: Int)])-       `intersects`-       (boundingBoxList' $ [point2 (-5) 1, point2 (-4) (0 :: Int)]))-      `shouldBe` True
− test/Data/Geometry/IntervalSpec.hs
@@ -1,68 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-module Data.Geometry.IntervalSpec where--import           Control.Lens-import           Data.Ext-import qualified Data.Foldable as F-import           Data.Geometry-import           Data.Geometry.Box-import           Data.Geometry.IntervalTree (IntervalTree)-import qualified Data.Geometry.IntervalTree as IntTree-import           Data.Geometry.SegmentTree (SegmentTree, I(..))-import qualified Data.Geometry.SegmentTree as SegTree-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Range-import qualified Data.Set as Set-import           GHC.TypeLits-import           Test.Hspec-import           Test.Hspec.QuickCheck-import           Test.QuickCheck-import           Test.QuickCheck.HGeometryInstances ()-import           Test.QuickCheck.Instances ()-import           Util--naive   :: (Ord r, Foldable f) => r -> f (Interval p r) -> [Interval p r]-naive q = filter (q `inInterval`) . F.toList--sameAsNaive                 :: (Ord r, Ord p, Foldable f)-                            => f (Interval p r)-                            -> (r -> t -> [Interval p r], t)-                            -> r-                            -> Bool-sameAsNaive is (search,t) q = search q t `sameElems` naive q is---sameElems    :: Eq a => [a] -> [a] -> Bool-sameElems xs = null . difference xs---allSameAsNaive       :: (Ord r, Ord p)-                     => NonEmpty.NonEmpty (Interval p r) -> [r] -> Bool-allSameAsNaive is = all (sameAsNaive is (\q t -> _unI <$> SegTree.search q t-                                        , SegTree.fromIntervals' is))---allSameAsNaiveIT       :: (Ord r, Ord p)-                     => NonEmpty.NonEmpty (Interval p r) -> [r] -> Bool-allSameAsNaiveIT is = all (sameAsNaive is (\q t -> IntTree.search q t-                                         , IntTree.fromIntervals $ F.toList is))--spec :: Spec-spec = modifyMaxSuccess (const 1000) $ do-    describe "Same as Naive" $ do-      it "quickcheck segmentTree" $-        property $ \(Intervals is :: Intervals Word) -> allSameAsNaive is-      it "quickcheck IntervalTree" $-        property $ \(Intervals is :: Intervals Word) -> allSameAsNaiveIT is---newtype Intervals r = Intervals (NonEmpty.NonEmpty (Interval () r)) deriving (Show,Eq)---- don't generate double open intervals, and don't generate intervals in which--- one endpoint is open, the other is closed, but at the same point-instance (Arbitrary r, Ord r) => Arbitrary (Intervals r) where-  arbitrary = Intervals . NonEmpty.fromList <$> listOf1 (suchThat arbitrary p)-    where-      p (OpenInterval _ _) = False-      p (Interval s e)     = not (isOpen s /= isOpen e-                                  && s^.unEndPoint.core == e^.unEndPoint.core)
− test/Data/Geometry/Ipe/ReaderSpec.hs
@@ -1,55 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-module Data.Geometry.Ipe.ReaderSpec where--import Test.Hspec-import Data.Ext-import Data.Geometry-import Data.Geometry.Ipe-import Data.ByteString(ByteString)-import Data.Proxy----- | specializes to use Double as Numtype-fromIpeXML' :: IpeRead (t Double) => ByteString -> Either ConversionError (t Double)-fromIpeXML' = fromIpeXML---spec :: Spec-spec = do-    describe "IpeReadText" $ do-      it "parses a polyline into a Path" $-        ipeReadText "\n128 656 m\n224 768 l\n304 624 l\n432 752 l\n"-        `shouldBe` Right ops-    describe "IpeReadAttrs" $ do-      it "parses a symbols attributes" $-        (show $ readXML useTxt-                >>= ipeReadAttrs (Proxy :: Proxy IpeSymbol) (Proxy :: Proxy Double))-        `shouldBe`-        "Right (Attrs {NoAttr, NoAttr, NoAttr, NoAttr, Attr IpeColor (Named \"black\"), NoAttr, NoAttr, Attr IpeSize (Named \"normal\")})"-    describe "IpeRead" $ do-      it "parses a Symbol" $-        fromIpeXML' useTxt-        `shouldBe` Right useSym-    -- it "parses a path" $-      --   (show $ fromIpeXML'-          -- "<use name=\"mark/disk(sx)\" pos=\"320 736\" size=\"normal\" stroke=\"black\"/>"--- )-      --   `shouldBe`--- "Right (Path {_pathSegments = PolyLineSegment (PolyLine {_points = Seq2 (Point2 [128.0,656.0] :+ ()) (fromList [Point2 [224.0,768.0] :+ (),Point2 [304.0,624.0] :+ ()]) (Point2 [432.0,752.0] :+ ())}) :< fromList []})"---  where-    useTxt = "<use name=\"mark/disk(sx)\" pos=\"320 736\" size=\"normal\" stroke=\"black\"/>"-    useSym = Symbol (point2 320 736) "mark/disk(sx)"---     symAttrs =--    translatedUse = "<use matrix=\"1 0 0 1 4.44908 -4.21815\" name=\"mark/disk(sx)\" pos=\"320 736\" size=\"normal\" stroke=\"black\"/>"-----    ops = [ MoveTo $ point2 128 (656 :: Double)-          , LineTo $ point2 224 768-          , LineTo $ point2 304 624-          , LineTo $ point2 432 752-          ]
− test/Data/Geometry/KDTreeSpec.hs
@@ -1,65 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-module Data.Geometry.KDTreeSpec where--import           Data.Ext-import qualified Data.Foldable as F-import           Data.Geometry-import           Data.Geometry.Box-import           Data.Geometry.KDTree-import qualified Data.LSeq as LSeq-import qualified Data.Set as Set-import           GHC.TypeLits-import           Test.QuickCheck.HGeometryInstances()-import           Test.Hspec-import           Test.QuickCheck------------------------------------------------------------------------------------naive    :: (Arity d, Ord r) => Box d q r -> [Point d r :+ p] -> [Point d r :+ p]-naive qr = filter (\(p :+ _) ->  p `intersects` qr)--sameAsNaive         :: (Ord r, Ord p, Arity d)-                    => [Point d r :+ p] -> KDTree d p r -> Box d q r -> Bool-sameAsNaive pts t q = Set.fromList (searchKDTree q t) == Set.fromList (naive q pts)--allSameAsNaive     :: (Ord r, Ord p, Arity d, 1 <= d, Foldable f)-                   => f (Point d r :+ p) -> [Box d () r] -> Bool-allSameAsNaive pts = let pts' = F.toList pts-                     in  all (sameAsNaive pts' $ buildKDTree pts')--allSame :: (Arity d, Eq a) => Vector d a -> Bool-allSame v = case F.toList v of-              []     -> True-              (x:xs) -> all (== x) xs---- newtype Pts n d r = Pts (PointSet (LSeq.LSeq n) d () r)--- deriving instance (Arity d, Show r) => Show (Pts n d r)---- instance (KnownNat n, Arity d, KnownNat d, Arbitrary r, Ord r) => Arbitrary (Pts n d r) where---   arbitrary = Pts . toPointSet . LSeq.toNonEmpty <$> arbitrary---spec :: Spec-spec = do-  describe "splitOn" $ do-    it "quickheck: left set same points" $-      property $ \c (pts :: LSeq.LSeq 2 (Point 2 Int :+ ())) ->-                   let (l,_,_) = splitOn (toEnum c) (toPointSet pts)-                   in allSame . fmap (Set.fromList . F.toList) $ l-    it "quickheck: right set same points" $-      property $ \c (pts :: LSeq.LSeq 2 (Point 2 Int :+ ())) ->-                   let (_,_,r) = splitOn (toEnum c) (toPointSet pts)-                   in allSame . fmap (Set.fromList . F.toList) $ r-  describe "Same as Naive" $ do-    it "quickcheck 1d" $-      property $ \(pts :: Set.Set (Point 1 Int :+ ())) -> allSameAsNaive pts-    it "quickcheck 2d" $-      property $ \(pts :: Set.Set (Point 2 Int :+ ())) -> allSameAsNaive pts-    it "quickcheck 3d" $-      property $ \(pts :: Set.Set (Point 3 Int :+ ())) -> allSameAsNaive pts-    it "quickcheck 8d" $-      property $ \(pts :: Set.Set (Point 8 Int :+ ())) -> allSameAsNaive pts----- pts = map ext [point2 (-2) 2, point2 5 (-1)]--- boxx = box (ext $ point2 3 (-4)) (ext $ point2 5 4)
− test/Data/Geometry/LineSegmentSpec.hs
@@ -1,20 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-module Data.Geometry.LineSegmentSpec where--import Data.Ext-import Data.Geometry-import Data.Vinyl.CoRec-import Test.Hspec-import Test.QuickCheck.HGeometryInstances ()--spec :: Spec-spec =-  describe "onSegment" $ do-    it "handles zero length segments correctly" $ do-      let zeroSegment :: LineSegment 2 () Rational-          zeroSegment = ClosedLineSegment (Point2 0 0 :+ ()) (Point2 0 0 :+ ())-      (Point2 0 0 `onSegment` zeroSegment) `shouldBe` True-      (Point2 1 0 `onSegment` zeroSegment) `shouldBe` False-    it "intersecting line segment and line" $ do-      let s = ClosedLineSegment (ext $ origin) (ext $ Point2 10 (0 :: Rational))-      (s `intersect` horizontalLine (0 :: Rational)) `shouldBe` coRec s
− test/Data/Geometry/LineSpec.hs
@@ -1,48 +0,0 @@-module Data.Geometry.LineSpec where--import Data.Ext-import Control.Lens-import Data.Geometry-import Data.Geometry.Box-import Data.Vinyl.CoRec-import Test.Hspec-import Data.Ratio-----spec :: Spec-spec = do-  describe "Line x Box intersections" $ do-    boxIntersections--boxIntersections :: Spec-boxIntersections = do-    it "proper intersection" $-      (lineThrough (Point2 1 5) (Point2 10 (7 :: Rational))-       `intersect` b-      ) `shouldBe`-      (coRec $ ClosedLineSegment (ext $ Point2 (0 :: Rational) (43 % 9))-                                 (ext $ Point2 14              (71 % 9))-      )-    it "boundary segment" $-      (lineThrough (Point2 0 0) (Point2 10 (0 :: Rational))-       `intersect` b-      ) `shouldBe`-      (coRec $ ClosedLineSegment (ext $ Point2 (0 :: Rational) 0)-                                 (ext $ Point2 14              0)-      )-    it "Touching in Point" $-      (lineThrough (Point2 0 0) (Point2 (-1) (1 :: Rational))-       `intersect`-       boundingBoxList' [Point2 0 (0 :: Rational), Point2 14 9]-      ) `shouldBe`-      (coRec (origin :: Point 2 Rational))-    it "No Intersection" $-      (lineThrough (Point2 (-1) 0) (Point2 (-2) (2 :: Rational))-       `intersect`-       boundingBoxList' [Point2 0 (0 :: Rational), Point2 14 9]-      ) `shouldBe`-      (coRec NoIntersection)-  where-    b = boundingBoxList' [Point2 0 (0 :: Rational), Point2 14 9]
− test/Data/Geometry/PlanarSubdivisionSpec.hs
@@ -1,294 +0,0 @@-{-# LANGUAGE PartialTypeSignatures #-}-module Data.Geometry.PlanarSubdivisionSpec where---import qualified Algorithms.Geometry.PolygonTriangulation.MakeMonotone as MM-import           Data.Bifunctor (second)-import           Data.Ext-import           Data.Foldable (toList, forM_)-import           Data.Geometry-import           Data.Geometry.PlanarSubdivision-import qualified Data.Geometry.PlanarSubdivision as PS-import           Data.Geometry.Polygon-import qualified Data.List.NonEmpty as NonEmpty-import           Data.PlanarGraph (FaceId(..),VertexId(..))-import qualified Data.PlaneGraph as PG-import           Test.Hspec-import qualified Data.Vector as V-import qualified Data.List as L--import qualified Algorithms.Geometry.PolygonTriangulation.TriangulateMonotone as TM-import qualified Algorithms.Geometry.PolygonTriangulation.Triangulate as TR--import           Control.Lens hiding (holesOf)-import           Data.Either (lefts)-import           Data.Geometry.Ipe-import           Data.Geometry.PlanarSubdivision.Draw-import           Data.Maybe (fromJust)-import           Data.PlaneGraph.Draw--import Data.Geometry.LineSegment-import Data.Geometry.Interval-import Data.Range-import Data.Ratio--data Test = Test-data Id a = Id a-----simplePg  = fromSimplePolygon (Id Test) simplePg' Inside Outside-simplePg' = toCounterClockWiseOrder . fromPoints $ map ext $ [ Point2 160 736-                                                             , Point2 128 688-                                                             , Point2 176 672-                                                             , Point2 256 672-                                                             , Point2 272 608-                                                             , Point2 384 656-                                                             , Point2 336 768-                                                             , Point2 272 720-                                                             ]--triangle :: PlanarSubdivision Test () () PolygonFaceData Rational-triangle = (\pg -> fromSimplePolygon (Id Test) pg Inside Outside)-         $ trianglePG--trianglePG = fromPoints . map ext $ [origin, Point2 10 0, Point2 10 10]---toNonEmpty :: Foldable f => f a -> NonEmpty.NonEmpty a-toNonEmpty = NonEmpty.fromList . toList--spec :: Spec-spec = do-  describe "PlanarSubdivision" $ do-    it "outerFaceId = 0 " $-      outerFaceId triangle `shouldBe` (FaceId $ VertexId 0)-    it "outerFace tests" $-      let [d] = toList $ holesOf (outerFaceId triangle) triangle-      in leftFace d triangle `shouldBe` (outerFaceId triangle)-    noEmptyFacesSpec-    testSpec testPoly-    testSpec testPoly2-    testSpec testPoly3-    testSpec testPoly4--    -- describe "incidentDarts" $ do-    --   forM_ (darts' triangle) $ \d ->-    --     it "incidentDarts indiv"  $-    --       boundary' d triangle `shouldBe` (toNonEmpty $ edges' triangle)-    -- this last test is nonsense---sameAsConnectedPG      :: (Eq v, Eq e, Eq f, Eq r, Show v, Show e, Show f, Show r)-                       => PlaneGraph s v e f r -> PlanarSubdivision s v e f r-                       -> Spec-sameAsConnectedPG g ps = describe "connected planarsubdiv, same as PlaneGraph" $ do-  it "same number of vertices" $-    PG.numVertices g `shouldBe` PS.numVertices ps-  it "same number of darts" $-    PG.numDarts g `shouldBe` PS.numDarts ps-  it "same number of edges" $-    PG.numEdges g `shouldBe` PS.numEdges ps-  it "same number of faces" $-    PG.numFaces g `shouldBe` PS.numFaces ps-  it "same vertices" $-    PG.vertices g `shouldBe` vertices ps-  it "same dart data" $-    (g^.PG.rawDartData) `shouldBe` ((^.dataVal) <$> ps^.rawDartData)-  -- it "same dart endpoints" $ do-  describe "same darts" $ do-    forM_ (darts' ps) $ \d ->-      it ("sameDarts: " ++ (show d)) $ endPoints d ps `shouldBe` PG.endPoints d g-  -- sameDarts g ps-  it "same edges" $-    (V.fromList . L.sortOn fst . toList $ PG.edgeSegments g) `shouldBe` edgeSegments ps-  it "same edges per vertex" $-    forM_ (PG.vertices' g) $ \v ->-      PG.incidentEdges v g `shouldBe` PS.incidentEdges v ps-  -- it "same face Id's" $-  --   PG.faces' g `shouldBe` faces' ps-  -- it "same outerface boundary" $-  --   (second (FaceData mempty)-  -- it "same faces" $-  --   (second (FaceData mempty) <$> PG.faces g) `shouldBe` faces ps----- sameDart g ps d =---- sameDarts          :: (Eq v, Eq e, Eq f, Eq r, Show v, Show e, Show f, Show r)---                        => PlaneGraph s v e f r -> PlanarSubdivision s v e f r---                        -> Spec--- sameDarts g ps =---     -- sameDart g ps----- sort' = V.fromList . L.sortOn fst . toList-----testSpec    :: (Ord r, Eq p, Fractional r, Show r, Show p)-            => SimplePolygon p r -> Spec-testSpec pg = do-  sameAsConnectedPG (PG.fromSimplePolygon (Id Test) pg Inside Outside)-                    (PS.fromSimplePolygon (Id Test) pg Inside Outside)-  -- sameAsConnectedPG (TM.triangulate' (Id Test) pg)-  --                   (TM.triangulate  (Id Test) pg)-  sameAsConnectedPG (TR.triangulate' (Id Test) pg)-                    (TR.triangulate  (Id Test) pg)----testPoly :: SimplePolygon () Rational-testPoly = toCounterClockWiseOrder . fromPoints $ map ext $ [-                                                              Point2 128 720-                                                            , Point2 192 752-                                                            , Point2 224 720-                                                            , Point2 240 672-                                                            , Point2 128 624-                                                            , Point2 176 672-                                                            ]---testPoly2 :: SimplePolygon () Rational-testPoly2 = toCounterClockWiseOrder . fromPoints $ map ext $ [ Point2 160 736-                                                             , Point2 128 688-                                                             , Point2 176 672-                                                             , Point2 256 672-                                                             , Point2 272 608-                                                             , Point2 384 656-                                                             , Point2 336 768-                                                             , Point2 272 720-                                                             ]----testPoly3 :: SimplePolygon () Rational-testPoly3 = toCounterClockWiseOrder . fromPoints $ map ext $ [ Point2 352 367-                                                             , Point2 128 176-                                                             , Point2 240 336-                                                             , Point2 80 272-                                                             , Point2 48 400-                                                             , Point2 96 384-                                                             , Point2 240 496-                                                             ]----testPoly4 :: SimplePolygon () Rational-testPoly4 = toCounterClockWiseOrder . fromPoints $ map ext $ [ Point2 64 544-                                                             , Point2 320 527-                                                             , Point2 208 496-                                                             , Point2 48 432-                                                             , Point2 16 560-                                                             ]--testPoly5 :: SimplePolygon () Rational-testPoly5 = toCounterClockWiseOrder . fromPoints $ map ext $ [ Point2 352 384-                                                             , Point2 128 176-                                                             , Point2 224 320-                                                             , Point2 48 400-                                                             , Point2 160 384-                                                             , Point2 240 496-                                                             ]---testPolyP  = fromSimplePolygon (Id Test) testPoly5 Inside Outside-testPolygPlaneG = fromJust $ testPolyP^?components.ix 0--monotonePs = MM.makeMonotone (Id Test) testPoly5-monotonePlaneG = fromJust $ monotonePs^?components.ix 0--test = TR.triangulate (Id Test) testPoly5-test' = TR.triangulate' (Id Test) testPoly5--- test = asIpe drawPlaneGraph testPolygPlaneG mempty--printMP = mapM_ printAsIpeSelection-        . map (iO' . (^.core) . snd)-        . toList . rawFacePolygons $ monotonePs----printP = mapM_ printAsIpeSelection-       . map (iO' . (^.core) . snd)-       . toList . PG.rawFacePolygons $ test'---printPPX = mapM_ printAsIpeSelection-        . map (iO' . (^.core) . snd)-        . toList . rawFacePolygons--printPP = printPPX test--parts' = map (\pg -> fromSimplePolygon (Id Test) pg Inside Outside)-       . lefts . map ((^.core) . snd) . toList . rawFacePolygons $ monotonePs--parts'' = lefts . map ((^.core) . snd) . toList . rawFacePolygons $ monotonePs-------------------------------------------------------------------------------------noEmptyFacesSpec :: Spec-noEmptyFacesSpec = describe "fromConnectedSegments, correct handling of high degree vertex" $ do-    it "ps1" $-      draw' testSegs `shouldBe` mempty-    it "ps5" $-      draw' testSegs2 `shouldBe` mempty-    it "ps3" $-      draw' testSegs3 `shouldBe` mempty-    -- segs4 <- runIO $ readFromIpeFile "test/Data/Geometry/connectedsegments_simple2.ipe"-    -- it "connected_simple2.ipe" $-    --   draw' segs4 `shouldBe` mempty-    -- segs2 <- runIO $ readFromIpeFile "test/Data/Geometry/connectedsegments_simple.ipe"-    -- it "connected_simple.ipe" $-    --   draw' segs2 `shouldBe` mempty-    -- segs3 <- runIO $ readFromIpeFile "test/Data/Geometry/connectedsegments.ipe"-    -- it "connectedsegments.ipe" $-    --   draw' segs3 `shouldBe` mempty-  where-    draw' = draw . fromConnectedSegments (Identity Test1)--readFromIpeFile    :: FilePath -> IO [LineSegment 2 () Rational :+ _]-readFromIpeFile fp = do Right page <- readSinglePageFile fp-                        pure $-                           page^..content.traverse._withAttrs _IpePath _asLineSegment--data Test1 = Test1--testX = do segs <- readFromIpeFile "test/Data/Geometry/connectedsegments_simple2.ipe"-           let ps = fromConnectedSegments (Identity Test1) segs-           print $ draw ps---draw = V.filter isEmpty . rawFacePolygons-  where-    isEmpty (_,Left  p :+ _) = (< 3) . length . polygonVertices $ p-    isEmpty (_,Right p :+ _) = (< 3) . length . polygonVertices $ p--testSegs = map (\(p,q) -> ClosedLineSegment (ext p) (ext q) :+ ())-                   [ (origin, Point2 10 10)-                   , (origin, Point2 12 10)-                   , (origin, Point2 20 5)-                   , (origin, Point2 13 20)-                   , (Point2 10 10, Point2 12 10)-                   , (Point2 10 10, Point2 13 20)-                   , (Point2 12 10, Point2 20 5)-                   ]--testSegs2 = map (\(p,q) -> ClosedLineSegment (ext p) (ext q) :+ ())-                   [ (Point2 160 192, Point2 80 112)-                   , (Point2 80 112, Point2 192 96)-                   , (Point2 192 96, Point2 160 192)-                   ]---testSegs3 = map (\(p,q) -> ClosedLineSegment (ext p) (ext q) :+ ())-                   [ (origin, Point2 10 0)-                   , (Point2 10 0, Point2 10 10)-                   , (origin, Point2 10 10)--                   , (origin, Point2 (-10) 0)-                   , (Point2 (-10) 0, Point2 (-10) (-10))-                   , (origin, Point2 (-10) (-10))-                   ]
− test/Data/Geometry/PointSpec.hs
@@ -1,93 +0,0 @@-module Data.Geometry.PointSpec where--import Data.Ext-import Data.Geometry.Point-import Data.Geometry.Vector-import Test.Hspec-import qualified Data.CircularList as C---spec :: Spec-spec = do-  describe "Add vector to point" $ do-    it "2d" $-      origin .+^ Vector2 1 2 `shouldBe` Point2 1 2-    it "3d" $-      origin .+^ Vector3 1 2 3 `shouldBe` Point3 1 2 3-  describe "Sort Arround a Point test" $ do-    it "Sort around origin" $-      sortArround (ext origin) (map ext [ point2 (-3) (-3)-                                        , point2 (-1) (-5)-                                        , point2 5    5-                                        , point2 6    (-4)-                                        , point2 (-5) 3-                                        , point2 10   1-                                        , point2 20   0-                                        , point2 0    (-6)-                                        , point2 5    7-                                        , point2 5    5-                                        , point2 2    2-                                        , point2 26   (-2)-                                        , point2 0    (-5)-                                        ])-      `shouldBe` map ext [ point2 20   0-                         , point2 10   1-                         , point2 2    2-                         , point2 5    5-                         , point2 5    5-                         , point2 5    7-                         , point2 (-5) 3-                         , point2 (-3) (-3)-                         , point2 (-1) (-5)-                         , point2 0    (-5)-                         , point2 0    (-6)-                         , point2 6    (-4)-                         , point2 26   (-2)-                         ]-    it "degenerate points on horizontal line" $-      sortArround (ext origin) (map ext [ point2 2    0-                                        , point2 (-1) 0-                                        , point2 10   0-                                        ])-      `shouldBe` map ext [ point2 2 0, point2 10 0, point2 (-1) 0 ]-    it "degenerate points on vertical line" $-      sortArround (ext origin) (map ext [ point2 0 2-                                        , point2 0 (-1)-                                        , point2 0 10-                                        ])-      `shouldBe` map ext [ point2 0 2, point2 0 10, point2 0 (-1) ]---  describe "Insert point in ciclically ordered list" $ do-    it "insert" $-      insertIntoCyclicOrder (ext origin) (ext $ point2 (-4) (-5))  (-        C.fromList $ map ext [ point2 20   0-                             , point2 10   1-                             , point2 2    2-                             , point2 5    5-                             , point2 5    5-                             , point2 5    7-                             , point2 (-5) 3-                             , point2 (-3) (-3)-                             , point2 (-1) (-5)-                             , point2 0    (-5)-                             , point2 0    (-6)-                             , point2 6    (-4)-                             , point2 26   (-2)-                             ])-      `shouldBe`-        (C.fromList $ map ext [ point2 20   0-                              , point2 10   1-                              , point2 2    2-                              , point2 5    5-                              , point2 5    5-                              , point2 5    7-                              , point2 (-5) 3-                              , point2 (-3) (-3)-                              , point2 (-4) (-5)-                              , point2 (-1) (-5)-                              , point2 0    (-5)-                              , point2 0    (-6)-                              , point2 6    (-4)-                              , point2 26   (-2)-                              ])
− test/Data/Geometry/Polygon/Convex/ConvexSpec.hs
@@ -1,115 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-module Data.Geometry.Polygon.Convex.ConvexSpec where--import           Algorithms.Geometry.ConvexHull.GrahamScan (convexHull)-import           Control.Applicative-import           Control.Arrow ((&&&))-import           Control.Lens-import           Data.Ext-import qualified Data.Foldable as F-import           Data.Geometry-import           Data.Geometry.Ipe-import           Data.Geometry.Polygon (extremesLinear)-import           Data.Geometry.Polygon.Convex-import qualified Data.List.NonEmpty as NonEmpty-import           Data.Traversable (traverse)-import           Test.QuickCheck.HGeometryInstances ()-import           Test.Hspec-import           Test.QuickCheck-import           Test.QuickCheck.Instances()----spec :: Spec-spec = testCases "test/Data/Geometry/Polygon/Convex/convexTests.ipe"--testCases    :: FilePath -> Spec-testCases fp = runIO (readInputFromFile fp) >>= \case-    Left e    -> it "reading ConvexTests file" $-                   expectationFailure . unwords $-                     [ "Failed to read ipe file", show fp, ":", show e]-    Right tcs -> do mapM_ toSpec tcs-                    minkowskiTests $ map _polygon tcs--data TestCase r = TestCase { _polygon    :: ConvexPolygon () r-                           }-                  deriving (Show)--toSingleSpec        :: (Num r, Ord r, Show r)-                    => ConvexPolygon q r -> Vector 2 r -> SpecWith ()-toSingleSpec poly u = it msg $-  -- test that the reported extremes are equally far in direction u-    F.all allEq (unzip [extremes u poly, extremesLinear u (poly^.simplePolygon)])-    `shouldBe` True-  where-    allEq (p:ps) = all (\q -> cmpExtreme u p q == EQ) ps-    msg = "Extremes test with direction " ++ show u---- | generates 360 vectors "equally" spaced/angled-directions :: Num r => [Vector 2 r]-directions = map (fmap toRat . uncurry Vector2 . (cos &&& sin) . toRad) ([0..359] :: [Double])-  where-    toRad i = i * (pi / 180)-    toRat x = fromIntegral . round $ 100000 * x--toSpec                 :: (Num r, Ord r, Show r) => TestCase r -> SpecWith ()-toSpec (TestCase poly) = do-                           describe "Extreme points; binsearch same as linear" $-                             mapM_ (toSingleSpec poly) directions---readInputFromFile    :: FilePath -> IO (Either ConversionError [TestCase Rational])-readInputFromFile fp = fmap f <$> readSinglePageFile fp-  where-    f page = [ TestCase (ConvexPolygon poly) | (poly :+ _) <- polies ]-      where-        polies = page^..content.traverse._withAttrs _IpePath _asSimplePolygon-------------------------------------------------------------------------------------minkowskiTests     ::  (Fractional r, Ord r, Show r) => [ConvexPolygon () r] -> Spec-minkowskiTests pgs = do-      minkowskiTests' "polygons in ipe file" pgs-      it "quickcheck minkowskisum same as naive" $-        property $ \(CP p :: CP Double) (CP q) ->-          minkowskiSum p q == naiveMinkowski p q----minkowskiTests'                      ::  (Fractional r, Ord r, Show r)-                                     => String -> [ConvexPolygon () r] -> Spec-minkowskiTests' s (map toCCW -> pgs) = describe ("Minkowskisums on " ++ s) $-    mapM_ (uncurry minkowskiTest) [ (p,q) | p <- pgs, q <- pgs ]---minkowskiTest     ::  (Fractional r, Ord r, Eq p, Show r, Show p)-                  => ConvexPolygon p r -> ConvexPolygon p r -> Spec-minkowskiTest p q = it "minkowskisum" $-  F (p,q) (minkowskiSum p q) `shouldBe` F (p,q) (naiveMinkowski p q)--naiveMinkowski     :: (Fractional r, Ord r)-                   => ConvexPolygon p r -> ConvexPolygon q r -> ConvexPolygon (p, q) r-naiveMinkowski p q = over (simplePolygon.outerBoundary) bottomMost-                   . toCCW . convexHull . NonEmpty.fromList-                   $ [ v .+. w | v <- p^..simplePolygon.outerBoundary.traverse-                               , w <- q^..simplePolygon.outerBoundary.traverse-                     ]-  where-    (v :+ ve) .+. (w :+ we) = v .+^ (toVec w) :+ (ve,we)---toCCW :: (Fractional r, Eq r) => ConvexPolygon p r -> ConvexPolygon p r-toCCW = over simplePolygon toCounterClockWiseOrder--data F a b = F a b deriving (Show)--instance Eq b => Eq (F a b) where-  (F _ b1) == (F _ b2) = b1 == b2---newtype CP r = CP (ConvexPolygon () r) deriving (Eq,Show)--instance (Arbitrary r, Fractional r, Ord r) => Arbitrary (CP r) where-  arbitrary =  CP . toCCW <$> suchThat (convexHull <$> arbitrary)-                              (\p -> p^.simplePolygon.outerBoundary.to length > 2)
+ test/Data/Geometry/Polygon/star_shaped.ipe view
@@ -0,0 +1,339 @@+<?xml version="1.0"?>+<!DOCTYPE ipe SYSTEM "ipe.dtd">+<ipe version="70206" creator="Ipe 7.2.7">+<info created="D:20190310121058" modified="D:20190310122053"/>+<ipestyle name="basic">+<symbol name="arrow/arc(spx)">+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">+0 0 m+-1 0.333 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/farc(spx)">+<path stroke="sym-stroke" fill="white" pen="sym-pen">+0 0 m+-1 0.333 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/ptarc(spx)">+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">+0 0 m+-1 0.333 l+-0.8 0 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/fptarc(spx)">+<path stroke="sym-stroke" fill="white" pen="sym-pen">+0 0 m+-1 0.333 l+-0.8 0 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="mark/circle(sx)" transformations="translations">+<path fill="sym-stroke">+0.6 0 0 0.6 0 0 e+0.4 0 0 0.4 0 0 e+</path>+</symbol>+<symbol name="mark/disk(sx)" transformations="translations">+<path fill="sym-stroke">+0.6 0 0 0.6 0 0 e+</path>+</symbol>+<symbol name="mark/fdisk(sfx)" transformations="translations">+<group>+<path fill="sym-fill">+0.5 0 0 0.5 0 0 e+</path>+<path fill="sym-stroke" fillrule="eofill">+0.6 0 0 0.6 0 0 e+0.4 0 0 0.4 0 0 e+</path>+</group>+</symbol>+<symbol name="mark/box(sx)" transformations="translations">+<path fill="sym-stroke" fillrule="eofill">+-0.6 -0.6 m+0.6 -0.6 l+0.6 0.6 l+-0.6 0.6 l+h+-0.4 -0.4 m+0.4 -0.4 l+0.4 0.4 l+-0.4 0.4 l+h+</path>+</symbol>+<symbol name="mark/square(sx)" transformations="translations">+<path fill="sym-stroke">+-0.6 -0.6 m+0.6 -0.6 l+0.6 0.6 l+-0.6 0.6 l+h+</path>+</symbol>+<symbol name="mark/fsquare(sfx)" transformations="translations">+<group>+<path fill="sym-fill">+-0.5 -0.5 m+0.5 -0.5 l+0.5 0.5 l+-0.5 0.5 l+h+</path>+<path fill="sym-stroke" fillrule="eofill">+-0.6 -0.6 m+0.6 -0.6 l+0.6 0.6 l+-0.6 0.6 l+h+-0.4 -0.4 m+0.4 -0.4 l+0.4 0.4 l+-0.4 0.4 l+h+</path>+</group>+</symbol>+<symbol name="mark/cross(sx)" transformations="translations">+<group>+<path fill="sym-stroke">+-0.43 -0.57 m+0.57 0.43 l+0.43 0.57 l+-0.57 -0.43 l+h+</path>+<path fill="sym-stroke">+-0.43 0.57 m+0.57 -0.43 l+0.43 -0.57 l+-0.57 0.43 l+h+</path>+</group>+</symbol>+<symbol name="arrow/fnormal(spx)">+<path stroke="sym-stroke" fill="white" pen="sym-pen">+0 0 m+-1 0.333 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/pointed(spx)">+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">+0 0 m+-1 0.333 l+-0.8 0 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/fpointed(spx)">+<path stroke="sym-stroke" fill="white" pen="sym-pen">+0 0 m+-1 0.333 l+-0.8 0 l+-1 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/linear(spx)">+<path stroke="sym-stroke" pen="sym-pen">+-1 0.333 m+0 0 l+-1 -0.333 l+</path>+</symbol>+<symbol name="arrow/fdouble(spx)">+<path stroke="sym-stroke" fill="white" pen="sym-pen">+0 0 m+-1 0.333 l+-1 -0.333 l+h+-1 0 m+-2 0.333 l+-2 -0.333 l+h+</path>+</symbol>+<symbol name="arrow/double(spx)">+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">+0 0 m+-1 0.333 l+-1 -0.333 l+h+-1 0 m+-2 0.333 l+-2 -0.333 l+h+</path>+</symbol>+<pen name="heavier" value="0.8"/>+<pen name="fat" value="1.2"/>+<pen name="ultrafat" value="2"/>+<symbolsize name="large" value="5"/>+<symbolsize name="small" value="2"/>+<symbolsize name="tiny" value="1.1"/>+<arrowsize name="large" value="10"/>+<arrowsize name="small" value="5"/>+<arrowsize name="tiny" value="3"/>+<color name="red" value="1 0 0"/>+<color name="green" value="0 1 0"/>+<color name="blue" value="0 0 1"/>+<color name="yellow" value="1 1 0"/>+<color name="orange" value="1 0.647 0"/>+<color name="gold" value="1 0.843 0"/>+<color name="purple" value="0.627 0.125 0.941"/>+<color name="gray" value="0.745"/>+<color name="brown" value="0.647 0.165 0.165"/>+<color name="navy" value="0 0 0.502"/>+<color name="pink" value="1 0.753 0.796"/>+<color name="seagreen" value="0.18 0.545 0.341"/>+<color name="turquoise" value="0.251 0.878 0.816"/>+<color name="violet" value="0.933 0.51 0.933"/>+<color name="darkblue" value="0 0 0.545"/>+<color name="darkcyan" value="0 0.545 0.545"/>+<color name="darkgray" value="0.663"/>+<color name="darkgreen" value="0 0.392 0"/>+<color name="darkmagenta" value="0.545 0 0.545"/>+<color name="darkorange" value="1 0.549 0"/>+<color name="darkred" value="0.545 0 0"/>+<color name="lightblue" value="0.678 0.847 0.902"/>+<color name="lightcyan" value="0.878 1 1"/>+<color name="lightgray" value="0.827"/>+<color name="lightgreen" value="0.565 0.933 0.565"/>+<color name="lightyellow" value="1 1 0.878"/>+<dashstyle name="dashed" value="[4] 0"/>+<dashstyle name="dotted" value="[1 3] 0"/>+<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>+<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>+<textsize name="large" value="\large"/>+<textsize name="Large" value="\Large"/>+<textsize name="LARGE" value="\LARGE"/>+<textsize name="huge" value="\huge"/>+<textsize name="Huge" value="\Huge"/>+<textsize name="small" value="\small"/>+<textsize name="footnote" value="\footnotesize"/>+<textsize name="tiny" value="\tiny"/>+<textstyle name="center" begin="\begin{center}" end="\end{center}"/>+<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/>+<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/>+<gridsize name="4 pts" value="4"/>+<gridsize name="8 pts (~3 mm)" value="8"/>+<gridsize name="16 pts (~6 mm)" value="16"/>+<gridsize name="32 pts (~12 mm)" value="32"/>+<gridsize name="10 pts (~3.5 mm)" value="10"/>+<gridsize name="20 pts (~7 mm)" value="20"/>+<gridsize name="14 pts (~5 mm)" value="14"/>+<gridsize name="28 pts (~10 mm)" value="28"/>+<gridsize name="56 pts (~20 mm)" value="56"/>+<anglesize name="90 deg" value="90"/>+<anglesize name="60 deg" value="60"/>+<anglesize name="45 deg" value="45"/>+<anglesize name="30 deg" value="30"/>+<anglesize name="22.5 deg" value="22.5"/>+<opacity name="10%" value="0.1"/>+<opacity name="30%" value="0.3"/>+<opacity name="50%" value="0.5"/>+<opacity name="75%" value="0.75"/>+<tiling name="falling" angle="-60" step="4" width="1"/>+<tiling name="rising" angle="30" step="4" width="1"/>+</ipestyle>+<ipestyle name="frank">+<arrowsize name="normal" value="5"/>+<arrowsize name="large" value="8"/>+<arrowsize name="huge" value="10"/>+<arrowsize name="small" value="3"/>+<arrowsize name="tiny" value="1"/>+<dashstyle name="dashed" value="[2 2] 0"/>+<dashstyle name="dotted" value="[0.5 1] 0"/>+<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>+<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>+<gridsize name="1 pts" value="1"/>+<gridsize name="2 pts" value="2"/>+<opacity name="10%" value="0.1"/>+<opacity name="30%" value="0.3"/>+<opacity name="50%" value="0.5"/>+<opacity name="20%" value="0.2"/>+<opacity name="40%" value="0.4"/>+<opacity name="60%" value="0.6"/>+<opacity name="70%" value="0.7"/>+<opacity name="80%" value="0.8"/>+<opacity name="90%" value="0.9"/>+</ipestyle>+<page>+<layer name="alpha"/>+<view layers="alpha" active="alpha"/>+<path layer="alpha" stroke="blue">+176 752 m+208 688 l+160 624 l+288 672 l+304 752 l+256 736 l+h+</path>+<path stroke="red">+384 784 m+448 624 l+368 576 l+512 624 l+448 704 l+560 672 l+528 576 l+592 688 l+h+</path>+<path stroke="red">+240 544 m+80 416 l+224 336 l+320 336 l+208 416 l+352 416 l+320 320 l+480 400 l+448 496 l+320 496 l+256 464 l+h+</path>+<path stroke="blue">+176 272 m+144 80 l+400 176 l+h+</path>+<path stroke="blue">+432 272 m+480 144 l+528 192 l+496 192 l+512 240 l+480 224 l+h+</path>+<path stroke="blue">+64 656 m+32 592 l+80 640 l+144 640 l+80 656 l+96 704 l+80 672 l+h+</path>+</page>+</ipe>
− test/Data/Geometry/PolygonSpec.hs
@@ -1,87 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-module Data.Geometry.PolygonSpec where--import Data.Traversable(traverse)-import Data.Ext-import Control.Lens-import Control.Applicative-import Data.Geometry-import Data.Geometry.Boundary-import Data.Geometry.Ipe-import Data.Proxy-import Test.Hspec--spec :: Spec-spec = testCases "test/Data/Geometry/pointInPolygon.ipe"---testCases    :: FilePath -> Spec-testCases fp = runIO (readInputFromFile fp) >>= \case-    Left e    -> it "reading point in polygon file" $-                   expectationFailure $ "Failed to read ipe file " ++ show e-    Right tcs -> mapM_ toSpec tcs-----   ipeF <- beforeAll $ readInputFromFile "tests/Data/Geometry/pointInPolygon.ipe"---   describe "Point in Polygon tests" $ do---     it "returns the first element of a list" $ do---       head [23 ..] `shouldBe` (23 :: Int)---data TestCase r = TestCase { _polygon    :: SimplePolygon () r-                           , _inside     :: [Point 2 r]-                           , _onBoundary :: [Point 2 r]-                           , _outside    :: [Point 2 r]-                           }-                  deriving (Show)---toSingleSpec poly r q = it msg $ (q `inPolygon` poly) `shouldBe` r-  where-    msg = "Point in polygon test with " ++ show q---toSpec (TestCase poly is bs os) = do-                                    describe "inside tests" $-                                      mapM_ (toSingleSpec poly Inside) is-                                    describe "on boundary tests" $-                                      mapM_ (toSingleSpec poly OnBoundary) bs-                                    describe "outside tests" $-                                      mapM_ (toSingleSpec poly Outside) os--readInputFromFile    :: FilePath -> IO (Either ConversionError [TestCase Rational])-readInputFromFile fp = fmap f <$> readSinglePageFile fp-  where-    f page = [ TestCase poly-                        [ s^.symbolPoint | s <- myPoints ats, isInsidePt  s ]-                        [ s^.symbolPoint | s <- myPoints ats, isBorderPt  s ]-                        [ s^.symbolPoint | s <- myPoints ats, isOutsidePt s ]-             | (poly :+ ats) <- polies-             ]-      where-        polies = page^..content.traverse._withAttrs _IpePath _asSimplePolygon-        syms   = page^..content.traverse._IpeUse---        myPoints polyAts = [s | (s :+ ats) <- syms, belongsToPoly ats polyAts ]--        -- We test a point/polygon combination if they have the same color-        belongsToPoly symAts polyAts =-            lookupAttr colorP symAts == lookupAttr colorP polyAts--        -- A point i inside if it is a disk-        isInsidePt   :: IpeSymbol r -> Bool-        isInsidePt s = s^.symbolName == "mark/disk(sx)"--        -- Boxes are on the boundary-        isBorderPt s = s^.symbolName == "mark/box(sx)"--        -- crosses are outside the polygon-        isOutsidePt s = s^.symbolName == "mark/cross(sx)"--        colorP = Proxy :: Proxy Stroke------- main = readInputFromFile "tests/Data/Geometry/pointInPolygon.ipe"
− test/Data/Geometry/SubLineSpec.hs
@@ -1,56 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-module Data.Geometry.SubLineSpec where--import Control.Lens-import Data.Ext-import Data.Geometry-import Data.Geometry.Line-import Data.Geometry.LineSegment-import Data.Geometry.SubLine-import Data.Ratio-import Data.UnBounded-import Data.Vinyl.CoRec-import Test.QuickCheck.HGeometryInstances ()-import Test.Hspec-import Test.QuickCheck---spec :: Spec-spec = do-  describe "subLineTests" $-    it "subline specialization in R^2" $-      property $ \(alpha :: Rational) l@(Line p v) (i :: Interval () Rational)  ->-        let q  = p .+^ alpha *^ v-            sl = SubLine l i-        in onSubLineOrig q sl `shouldBe` onSubLine2 q sl--  it "manual test " $-      ((Point2 (-1) (-1 :: Rational)) `onSubLine2`-       (seg^._SubLine))-    `shouldBe` False--  it "Intersection test" $-    let mySeg :: LineSegment 2 () Rational-        mySeg    = ClosedLineSegment (ext origin) (ext $ Point2 14 0)-        myLine :: SubLine 2 () (UnBounded Rational) Rational-        myLine   = fromLine $ lineThrough (Point2 0 0) (Point2 10 0)-        myAnswer :: Interval () (UnBounded Rational)-        myAnswer = ClosedInterval (ext $ Val 0) (ext . Val $ 7 % 5)-    in (myLine `intersect` (mkSL mySeg))-       `shouldBe`-       coRec (myLine&subRange .~ myAnswer)---mkSL  :: (Num r, Arity d) => LineSegment d () r -> SubLine d () (UnBounded r) r-mkSL s = s^._SubLine.re _unBounded---seg :: LineSegment 2 () Rational-seg = ClosedLineSegment (ext (Point2 1 1)) (ext (Point2 5 5))------ | Original def of onSubline-onSubLineOrig                 :: (Ord r, Fractional r, Arity d)-                          => Point d r -> SubLine d p r r -> Bool-onSubLineOrig p (SubLine l r) = toOffset' p l `inInterval` r
− test/Data/Geometry/TriangleSpec.hs
@@ -1,107 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-module Data.Geometry.TriangleSpec where--import Data.Traversable(traverse)-import Data.Ext-import Control.Lens-import Control.Applicative-import Data.Geometry-import Data.Geometry.Triangle-import Data.Geometry.Boundary-import Data.Geometry.Ipe-import Data.Proxy-import Test.Hspec-import Data.Ratio-import Data.Vinyl.CoRec--spec :: Spec-spec = do testCases "test/Data/Geometry/pointInTriangle.ipe"-          describe "intersection tests" $ do-            it "intersecting Line 2 with Triangle 2 " $ do-              let t :: Triangle 2 () Rational-                  t = Triangle (ext origin) (ext $ Point2 10 0) (ext $ Point2 10 10)-                  hor :: Rational -> Line 2 Rational-                  hor = horizontalLine-              (hor 3 `intersect` t)-                `shouldBe` (coRec $ ClosedLineSegment (ext $ Point2 10 (3 :: Rational))-                                                      (ext $ Point2 3  (3 :: Rational)))-              (hor 10 `intersect` t)-                `shouldBe` (coRec $ Point2 10 (10 :: Rational))-              (hor 11 `intersect` t)-                `shouldBe` (coRec NoIntersection)---testCases    :: FilePath -> Spec-testCases fp = runIO (readInputFromFile fp) >>= \case-    Left e    -> it "reading point in triangle file" $-                   expectationFailure $ "Failed to read ipe file " ++ show e-    Right tcs -> mapM_ toSpec tcs-----   ipeF <- beforeAll $ readInputFromFile "tests/Data/Geometry/pointInPolygon.ipe"---   describe "Point in Polygon tests" $ do---     it "returns the first element of a list" $ do---       head [23 ..] `shouldBe` (23 :: Int)---data TestCase r = TestCase { _triangle   :: Triangle 2 () r-                           , _inside     :: [Point 2 r]-                           , _onBoundary :: [Point 2 r]-                           , _outside    :: [Point 2 r]-                           }-                  deriving (Show)---toSingleSpec poly r q = it msg $ (q `inTriangle` poly) `shouldBe` r-  where-    msg = "Point in triangle test with " ++ show q---toSpec                          ::  (Show r, Ord r, Fractional r)-                                =>  TestCase r -> Spec-toSpec (TestCase poly is bs os) = do-                                    describe "inside tests" $-                                      mapM_ (toSingleSpec poly Inside) is-                                    describe "on boundary tests" $-                                      mapM_ (toSingleSpec poly OnBoundary) bs-                                    describe "outside tests" $-                                      mapM_ (toSingleSpec poly Outside) os----readInputFromFile    :: FilePath -> IO (Either ConversionError [TestCase Rational])-readInputFromFile fp = fmap f <$> readSinglePageFile fp-  where-    f page = [ TestCase poly-                        [ s^.symbolPoint | s <- myPoints ats, isInsidePt  s ]-                        [ s^.symbolPoint | s <- myPoints ats, isBorderPt  s ]-                        [ s^.symbolPoint | s <- myPoints ats, isOutsidePt s ]-             | (poly :+ ats) <- polies-             ]-      where-        polies = page^..content.traverse._withAttrs _IpePath _asTriangle-        syms   = page^..content.traverse._IpeUse---        myPoints polyAts = [s | (s :+ ats) <- syms, belongsToPoly ats polyAts ]--        -- We test a point/polygon combination if they have the same color-        belongsToPoly symAts polyAts =-            lookupAttr colorP symAts == lookupAttr colorP polyAts--        -- A point i inside if it is a disk-        isInsidePt   :: IpeSymbol r -> Bool-        isInsidePt s = s^.symbolName == "mark/disk(sx)"--        -- Boxes are on the boundary-        isBorderPt s = s^.symbolName == "mark/box(sx)"--        -- crosses are outside the polygon-        isOutsidePt s = s^.symbolName == "mark/cross(sx)"--        colorP = Proxy :: Proxy Stroke------- main = readInputFromFile "tests/Data/Geometry/pointInPolygon.ipe"
test/Data/Geometry/arrangement.ipe.out.ipe view
@@ -189,33 +189,6 @@ 172.658536585365 637.898780487804 l </path><path>172.658536585365 637.898780487804 m 172.658536585365 746.000060937506 l-</path><path>252.176396921200 637.048780487804 m-331.322580645161 637.048780487804 l-331.322580645161 660.923387096774 l-331.322580645161 661.698387096774 l-331.322580645161 746.000060937506 l-303.200073125007 746.000060937506 l-302.461611663469 746.000060937506 l-195.199902499989 746.000060937506 l-172.658536585365 746.000060937506 l-172.658536585365 637.898780487804 l-172.658536585365 637.215447154471 l-172.658536585365 637.048780487804 l-h--252.176396921200 637.048780487804 m-331.322580645161 637.048780487804 l-331.322580645161 660.923387096774 l-331.322580645161 661.698387096774 l-331.322580645161 746.000060937506 l-303.200073125007 746.000060937506 l-302.461611663469 746.000060937506 l-195.199902499989 746.000060937506 l-172.658536585365 746.000060937506 l-172.658536585365 637.898780487804 l-172.658536585365 637.215447154471 l-172.658536585365 637.048780487804 l-h </path><path>172.658536585365 637.215447154471 m 173.658536585365 638.048780487804 l 258.512437254286 650.776865588142 l
− test/Data/OrdSeqSpec.hs
@@ -1,58 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-module Data.OrdSeqSpec where--import qualified Data.Foldable as F-import qualified Data.List as List-import           Data.OrdSeq (OrdSeq)-import qualified Data.OrdSeq as OrdSeq-import           Data.Semigroup-import           Test.QuickCheck.HGeometryInstances-import           Test.Hspec-import           Test.QuickCheck--spec :: Spec-spec = do-  describe "OrdSeq tests" $ do-    it "fromListBy" $-      property $ \(xs :: [Int]) ->-          F.toList (OrdSeq.fromListBy compare xs) `shouldBe` List.sort xs-    it "splitOn, <" $-      property $ \x (xs :: OrdSeq Int) ->-          let (l,_,_) = OrdSeq.splitOn id x xs-          in all (< x) l-    it "splitOn, ==" $-      property $ \x (xs :: OrdSeq Int) ->-          let (_,m,_) = OrdSeq.splitOn id x xs-          in all (== x) m-    it "splitOn, >=" $-      property $ \x (xs :: OrdSeq Int) ->-          let (_,_,r) = OrdSeq.splitOn id x xs-          in all (> x) r-    it "join" $-      property $ \x (xs :: [Int]) -> let (ys,zs) = List.partition (<= x) $ xs in-          (F.toList $ OrdSeq.fromListByOrd ys <> OrdSeq.fromListByOrd zs)-          `shouldBe`-          List.sort (ys <> zs)-    it "positive member" $-      property $ \(xs :: OrdSeq Int) ->-         all (\x -> OrdSeq.memberBy compare x xs) xs-    it "member" $-      property $ \x (xs :: OrdSeq Int) ->-         OrdSeq.memberBy compare x xs-         `shouldBe`-         F.elem x (F.toList xs)-    it "lookupMin" $-       property $ \(xs :: OrdSeq Int) ->-         OrdSeq.lookupMin xs-         `shouldBe`-         (safe minimum $ F.toList xs)-    it "lookupMax" $-       property $ \(xs :: OrdSeq Int) ->-         OrdSeq.lookupMax xs-         `shouldBe`-         (safe maximum $ F.toList xs)---safe      :: ([t] -> a) -> [t] -> Maybe a-safe _ [] = Nothing-safe f xs = Just . f $ xs
− test/Data/PlanarGraphSpec.hs
@@ -1,116 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}-module Data.PlanarGraphSpec where---import           Data.Bifunctor-import qualified Data.ByteString.Char8 as B-import qualified Data.Foldable as F-import qualified Data.Map.Strict as SM-import           Data.Permutation (toCycleRep)-import           Data.PlanarGraph-import qualified Data.PlanarGraph as PlanarGraph-import qualified Data.Set as S-import           Data.Util-import qualified Data.Vector as V-import           Data.Yaml (prettyPrintParseException)-import           Data.Yaml.Util-import           Test.Hspec-import           Test.QuickCheck-import           Test.QuickCheck.HGeometryInstances ()---data TestG--type Vertex = VertexId TestG Primal---- | Report all adjacnecies from g missing in h-missingAdjacencies     :: PlanarGraph s w v e f -> PlanarGraph s w v e f-                    -> [(VertexId s w, VertexId s w)]-missingAdjacencies g h = concatMap f . vertices' $ g-  where-    f u = let adjUh = S.fromList . F.toList $ neighboursOf u h-          in F.toList . fmap (u,) . V.filter (`S.notMember` adjUh) $ neighboursOf u g---sameGraphs s g h = do-    describe ("Same Adjacencies " <> s) $ do-      it "Missing edges from g in h" $-          (missingAdjacencies g h) `shouldBe` []-      it "Missing edges from h in g" $-          (missingAdjacencies h g) `shouldBe` []--spec :: Spec-spec = do-    describe "PlanarGraph spec" $ do-      sameGraphs "testEdges" (fromAdjacencyLists testEdges) (fromAdjacencyListsOld testEdges)-    it "quickheck Dart:  (toEnum (fromEnum d)) = d" $-      property $ \(d :: Dart TestG) -> toEnum (fromEnum d) `shouldBe` d-    it "quickheck Dart: fromEnum (toEnum i) = i" $-      property $ \(NonNegative i) -> fromEnum ((toEnum i) :: Dart TestG) `shouldBe` i-    it "encode yaml test" $ do-      b <- B.readFile "test/Data/myGraph.yaml"-      encodeYaml (fromAdjacencyLists testEdges) `shouldBe` b-    it "decode yaml test" $ do-      (first prettyPrintParseException <$> decodeYamlFile "test/Data/myGraph.yaml")-      `shouldReturn`-      (Right $ fromAdjacencyLists testEdges)---testEdges :: [(Vertex,[Vertex])]-testEdges = map (\(i,vs) -> (VertexId i, map VertexId vs))-            [ (0, [1])-            , (1, [0,2,4])-            , (2, [1,3,4])-            , (3, [2,5])-            , (4, [1,2,5])-            , (5, [3,4])-            ]---- testGraph = fromAdjacencyLists testEdges---- enccode = let g =---           in encodeYamlFile--------------------------------------------------------------------------------------- - m: a Map, mapping edges, represented by a pair of vertexId's (u,v) with---            u < v, to arcId's.--- - a: the next available unused arcID--- - x: the data value we are interested in computing-type STR' s b = STR (SM.Map (VertexId s Primal,VertexId s Primal) Int) Int b---- | Construct a planar graph from a adjacency matrix. For every vertex, all--- vertices should be given in counter clockwise order.------ running time: $O(n \log n)$.-fromAdjacencyListsOld      :: forall s f.(Foldable f, Functor f)-                        => [(VertexId s Primal, f (VertexId s Primal))]-                        -> PlanarGraph s Primal () () ()-fromAdjacencyListsOld adjM = planarGraph' . toCycleRep n $ perm-  where-    n    = sum . fmap length $ perm-    perm = trd' . foldr toOrbit (STR mempty 0 mempty) $ adjM---    -- | Given a vertex with its adjacent vertices (u,vs) (in CCW order) convert this-    -- vertex with its adjacent vertices into an Orbit-    toOrbit                     :: Foldable f-                                => (VertexId s Primal, f (VertexId s Primal))-                                -> STR' s [[Dart s]]-                                -> STR' s [[Dart s]]-    toOrbit (u,vs) (STR m a dss) =-      let (STR m' a' ds') = foldr (toDart . (u,)) (STR m a mempty) . F.toList $ vs-      in STR m' a' (ds':dss)---    -- | Given an edge (u,v) and a triplet (m,a,ds) we construct a new dart-    -- representing this edge.-    toDart                    :: (VertexId s Primal,VertexId s Primal)-                              -> STR' s [Dart s]-                              -> STR' s [Dart s]-    toDart (u,v) (STR m a ds) = let dir = if u < v then PlanarGraph.Positive else Negative-                                    t'  = (min u v, max u v)-                               in case SM.lookup t' m of-      Just a' -> STR m                  a     (Dart (Arc a') dir : ds)-      Nothing -> STR (SM.insert t' a m) (a+1) (Dart (Arc a)  dir : ds)
+ test/Data/PlaneGraph/myPlaneGraph.yaml view
@@ -0,0 +1,90 @@+faces:+- incidentEdge:+  - 0+  - 4+  fData: []+- incidentEdge:+  - 0+  - 2+  fData: []+- incidentEdge:+  - 0+  - 1+  fData: []+- incidentEdge:+  - 0+  - 3+  fData: []+ajacencies:+- adj:+  - - 4+    - []+  - - 2+    - []+  - - 1+    - []+  - - 3+    - []+  id: 0+  loc:+  - 0+  - 0+  vData:+  - []+  - []+  - []+  - []+- adj:+  - - 2+    - []+  - - 3+    - []+  - - 0+    - []+  id: 1+  loc:+  - 10+  - 10+  vData:+  - []+  - []+  - []+- adj:+  - - 1+    - []+  - - 0+    - []+  - - 4+    - []+  id: 2+  loc:+  - 12+  - 10+  vData:+  - []+  - []+  - []+- adj:+  - - 0+    - []+  - - 1+    - []+  id: 3+  loc:+  - 13+  - 20+  vData:+  - []+  - []+- adj:+  - - 2+    - []+  - - 0+    - []+  id: 4+  loc:+  - 20+  - 5+  vData:+  - []+  - []
+ test/Data/PlaneGraph/small.yaml view
@@ -0,0 +1,58 @@+faces:+- incidentEdge:+  - 0+  - 2+  fData: OuterFace+- incidentEdge:+  - 0+  - 1+  fData: A+- incidentEdge:+  - 0+  - 3+  fData: B+ajacencies:+- adj:+  - - 2+    - 0->2+  - - 1+    - 0->1+  - - 3+    - 0->3+  id: 0+  loc:+  - 0+  - 0+  vData: 0+- adj:+  - - 0+    - 1->0+  - - 2+    - 1->2+  - - 3+    - 1->3+  id: 1+  loc:+  - 2+  - 2+  vData: 1+- adj:+  - - 0+    - 2->0+  - - 1+    - 2->1+  id: 2+  loc:+  - 2+  - 0+  vData: 2+- adj:+  - - 0+    - 3->0+  - - 1+    - 3->1+  id: 3+  loc:+  - -1+  - 4+  vData: 3
+ test/Data/PlaneGraph/testsegs.png view

binary file changed (absent → 56081 bytes)

− test/Data/PlaneGraphSpec.hs
@@ -1,72 +0,0 @@-{-# LANGUAGE PartialTypeSignatures #-}-module Data.PlaneGraphSpec where---import           Control.Lens-import           Data.Bifunctor-import qualified Data.ByteString as B-import           Data.Ext-import           Data.Geometry.LineSegment-import           Data.Geometry.Point-import           Data.Geometry.Polygon-import           Data.PlaneGraph-import           Data.Util-import qualified Data.Vector as V-import           Data.Yaml (prettyPrintParseException)-import           Data.Yaml.Util-import           Test.Hspec-----------------------------------------------------------------------------------spec :: Spec-spec = describe "PlaneGraph tests" $ do-         it "fromConnectedSegments, correct handling of high degree vertex" $ do-           draw test `shouldBe` mempty-           draw test2 `shouldBe` mempty-         it "encode yaml test" $ do-           b <- B.readFile "test/Data/myPlaneGraph.yaml"-           encodeYaml myGraph `shouldBe` b-         -- it "decode yaml test" $ do-         --   (first prettyPrintParseException-         --     <$> decodeYamlFile "test/Data/myPlaneGraph.yaml")-         --   `shouldReturn`-         --   (Right myGraph)-        -- the result is the same up to renumbering it seems. That is fine.-  where-    myGraph = fromConnectedSegments (Identity Test1) testSegs---data Test1 = Test1--draw  :: PlaneGraph s p e extra r -> V.Vector (FaceId' s, Polygon 'Simple p r :+ extra)-draw = V.filter isEmpty . rawFacePolygons-  where-    isEmpty (_,p :+ _) = (< 3) . length . polygonVertices $ p--test :: PlaneGraph Test1 _ () () Integer-test = fromConnectedSegments (Identity Test1) testSegs--test2 :: PlaneGraph Test1 _ () () Integer-test2 = fromConnectedSegments (Identity Test1) testSegs2--testSegs :: [LineSegment 2 () Integer :+ ()]-testSegs = map (\(p,q) -> ClosedLineSegment (ext p) (ext q) :+ ())-                   [ (origin, Point2 10 10)-                   , (origin, Point2 12 10)-                   , (origin, Point2 20 5)-                   , (origin, Point2 13 20)-                   , (Point2 10 10, Point2 12 10)-                   , (Point2 10 10, Point2 13 20)-                   , (Point2 12 10, Point2 20 5)-                   ]-testSegs2 :: [LineSegment 2 () Integer :+ ()]-testSegs2 = map (\(p,q) -> ClosedLineSegment (ext p) (ext q) :+ ())-                   [ (origin, Point2 10 0)-                   , (Point2 10 0, Point2 10 10)-                   , (origin, Point2 10 10)--                   , (origin, Point2 (-10) 0)-                   , (Point2 (-10) 0, Point2 (-10) (-10))-                   , (origin, Point2 (-10) (-10))-                   ]---- segs2 =
− test/Data/RangeSpec.hs
@@ -1,46 +0,0 @@-module Data.RangeSpec where--import Data.Geometry.Properties-import Data.Range-import Test.Hspec---spec :: Spec-spec = do-  describe "RangeRange Intersection" $ do-    it "openRange cap openrange" $ do-      ((OpenRange 1 (10 :: Int))  `intersect` (OpenRange 5 (10 :: Int)))-      `shouldBe` (coRec $ OpenRange 5 (10 :: Int))-    it "disjoint open ranges" $ do-      ((OpenRange 1 (10 :: Int)) `intersect` (OpenRange 10 (12 :: Int)))-      `shouldBe` (coRec NoIntersection)-    it "closed cap open, disjoint" $ do-      ((ClosedRange (1::Int) 10) `intersect` (OpenRange 50 (60 :: Int)))-      `shouldBe` (coRec NoIntersection)-    -- it "closed intersect open" $-    --   ((OpenRange 1 (10 :: Int)) `intersect` (ClosedRange 10 (12 :: Int)))-    --   `shouldBe` (coRec NoIntersection)--    -- it "open rage intersect closed " $ do-    --   ((OpenRange 1 (10 :: Int)) `intersect` (ClosedRange 10 (12 :: Int)))-    --   `shouldBe` (coRec $ Range (Open 10) (Open (10 :: Int)))-  -- (Col Range {_lower = Closed 10, _upper = Open 10})-  -- >>> (OpenRange 1 10) `intersect` (ClosedRange 10 12)---    -- it "closed open " $ do-    --   ((ClosedRange 1 10) `intersect` (OpenRange 5 10))-    --   `shouldBe`-    --   (Col (Range (Open 5) (Closed 10)))-            -- encode "no-padding!!" `shouldBe` "bm8tcGFkZGluZyEh"--    -- |-  ---  -- >>>-  ---  -- >>>-  -- (Col NoIntersection)-  -- >>> (OpenRange 1 10) `intersect` (ClosedRange 10 12)-  -- (Col Range {_lower = Closed 10, _upper = Open 10})-  -- >>> (OpenRange 1 10) `intersect` (ClosedRange 10 12)-  -- FALSE
− test/Data/myGraph.yaml
@@ -1,98 +0,0 @@-adjacencies:-- - 0-  - - 1-- - 1-  - - 0-    - 2-    - 4-- - 2-  - - 1-    - 3-    - 4-- - 3-  - - 2-    - 5-- - 4-  - - 1-    - 2-    - 5-- - 5-  - - 3-    - 4-faces:-- extra: []-  core: 0-- extra: []-  core: 1-- extra: []-  core: 2-darts:-- extra: []-  core:-  - 0-  - 1-- extra: []-  core:-  - 1-  - 0-- extra: []-  core:-  - 1-  - 2-- extra: []-  core:-  - 1-  - 4-- extra: []-  core:-  - 2-  - 1-- extra: []-  core:-  - 2-  - 3-- extra: []-  core:-  - 2-  - 4-- extra: []-  core:-  - 3-  - 2-- extra: []-  core:-  - 3-  - 5-- extra: []-  core:-  - 4-  - 1-- extra: []-  core:-  - 4-  - 2-- extra: []-  core:-  - 4-  - 5-- extra: []-  core:-  - 5-  - 3-- extra: []-  core:-  - 5-  - 4-vertices:-- extra: []-  core: 0-- extra: []-  core: 1-- extra: []-  core: 2-- extra: []-  core: 3-- extra: []-  core: 4-- extra: []-  core: 5
− test/Data/myPlaneGraph.yaml
@@ -1,131 +0,0 @@-adjacencies:-- - 0-  - - 4-    - 2-    - 1-    - 3-- - 1-  - - 2-    - 3-    - 0-- - 2-  - - 1-    - 0-    - 4-- - 3-  - - 0-    - 1-- - 4-  - - 2-    - 0-faces:-- extra: []-  core: 0-- extra: []-  core: 1-- extra: []-  core: 2-- extra: []-  core: 3-darts:-- extra: []-  core:-  - 0-  - 4-- extra: []-  core:-  - 0-  - 2-- extra: []-  core:-  - 0-  - 1-- extra: []-  core:-  - 0-  - 3-- extra: []-  core:-  - 1-  - 2-- extra: []-  core:-  - 1-  - 3-- extra: []-  core:-  - 1-  - 0-- extra: []-  core:-  - 2-  - 1-- extra: []-  core:-  - 2-  - 0-- extra: []-  core:-  - 2-  - 4-- extra: []-  core:-  - 3-  - 0-- extra: []-  core:-  - 3-  - 1-- extra: []-  core:-  - 4-  - 2-- extra: []-  core:-  - 4-  - 0-vertices:-- extra:-    extra:-    - []-    - []-    - []-    - []-    core:-    - 0-    - 0-  core: 0-- extra:-    extra:-    - []-    - []-    - []-    core:-    - 10-    - 10-  core: 1-- extra:-    extra:-    - []-    - []-    - []-    core:-    - 12-    - 10-  core: 2-- extra:-    extra:-    - []-    - []-    core:-    - 13-    - 20-  core: 3-- extra:-    extra:-    - []-    - []-    core:-    - 20-    - 5-  core: 4
− test/Spec.hs
@@ -1,1 +0,0 @@-{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
− test/Util.hs
@@ -1,91 +0,0 @@-module Util where--import           Control.Exception.Base (bracket)-import           Control.Monad (when)-import qualified Data.ByteString as B-import qualified Data.ByteString.Lazy as LB-import           Data.Ext-import           Data.Function (on)-import           Data.Geometry.Ipe-import qualified Data.List as L-import           Data.Proxy-import           Data.Singletons (Apply)-import           Data.Vinyl-import           System.Directory (removeFile, getTemporaryDirectory)-import           System.FilePath (takeExtension)-import           System.IO (hClose,openTempFile, Handle)-import           Test.Hspec------------------------------------------------------------------------------------byStrokeColour :: (Stroke ∈ ats, Ord (Apply f Stroke))-               => [a :+ Attributes f ats] -> [[a :+ Attributes f ats]]-byStrokeColour = map (map fst) . L.groupBy ((==) `on` snd) . L.sortOn snd-               . map (\x -> (x,lookup' x))-  where-    lookup' (_ :+ ats) = lookupAttr (Proxy :: Proxy Stroke) ats---- | Computes all elements on which the two lists differ-difference :: Eq a => [a] -> [a] -> [a]-difference xs ys = (xs L.\\ ys) ++ (ys L.\\ xs)---- differenceBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]---diffBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]-diffBy p xs ys = foldr (L.deleteBy p) ys xs---- | \(O(n^2)\) set that ignores duplicates and order-newtype NaiveSet a = NaiveSet [a] deriving (Show)--instance Eq a => Eq (NaiveSet a) where-  (NaiveSet xs) == (NaiveSet ys) = L.null $ difference xs ys----- | Given a file with some file contents and a procedure that produces a--- bytestring. Verify that the bytestring that we produce is the same as the--- one stored in the file. If not, the output is stored in a temporary file so--- that we can later look at the details.-runOnFile             :: String    -- ^ the description-                      -> FilePath  -- ^ the expected output file-                      -> IO B.ByteString -- ^ the algorithm to run.-                      -> Spec-runOnFile s expFP alg = runOnFile' s expFP (\h -> alg >>= B.hPut h)---data Res = Res Bool FilePath FilePath-         | True' deriving (Show)--instance Eq Res where-  Res b _ _ == _ = b-  True'     == _ = True---- | Given a file with some file contents and a procedure that produces a--- bytestring. Verify that the bytestring that we produce is the same as the--- one stored in the file. If not, the output is stored in a temporary file so--- that we can later look at the details.-runOnFile'                 :: String    -- ^ the description-                           -> FilePath  -- ^ the expected output file-                           -> (Handle -> IO ()) -- ^ the algorithm to run.-                           -> Spec-runOnFile' descr expFP alg = it descr $ do-                               runAlgo `shouldReturn` True'-  where-    runAlgo = do-                dir <- getTemporaryDirectory-                outFP <- bracket (openTempFile dir outFPName)-                                 (hClose . snd)-                                 (\(fp,h) -> do-                                     alg h-                                     pure fp)-                res <- sameFile expFP outFP-                when res $ removeFile outFP-                pure $ Res res expFP outFP-    outFPName = "hgeometry_runOnFile_algo" <> takeExtension expFP----- | Test if two files are the same. Warning: uses lazy IO.-sameFile       :: FilePath -> FilePath -> IO Bool-sameFile fa fb = do a <- LB.readFile fa-                    b <- LB.readFile fb-                    pure $ a == b