packages feed

svg-icons 0.1.0.2 → 0.1.0.3

raw patch · 13 files changed

+1954/−1631 lines, 13 filesnew-component:exe:svg-icons-exePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Icons.Cosmos: moonFull :: Svg
- Images.Flags: ad :: Svg
- Images.Flags: af :: Svg
- Images.Flags: al :: Svg
- Images.Flags: at :: Svg
- Images.Flags: ba :: Svg
- Images.Flags: be :: Svg
- Images.Flags: bg :: Svg
- Images.Flags: blr :: Svg
- Images.Flags: ch :: Svg
- Images.Flags: cyp :: Svg
- Images.Flags: cz :: Svg
- Images.Flags: de :: Svg
- Images.Flags: dk :: Svg
- Images.Flags: ee :: Svg
- Images.Flags: es :: Svg
- Images.Flags: eu :: Svg
- Images.Flags: fi :: Svg
- Images.Flags: flagH3Eq :: (Float, Float) -> String -> String -> String -> Svg
- Images.Flags: flagV3Eq :: (Float, Float) -> String -> String -> String -> Svg
- Images.Flags: flags :: [(String, Svg)]
- Images.Flags: fr :: Svg
- Images.Flags: gr :: Svg
- Images.Flags: hrv :: Svg
- Images.Flags: ie :: Svg
- Images.Flags: is :: Svg
- Images.Flags: it :: Svg
- Images.Flags: li :: Svg
- Images.Flags: lt :: Svg
- Images.Flags: lu :: Svg
- Images.Flags: lv :: Svg
- Images.Flags: mc :: Svg
- Images.Flags: md :: Svg
- Images.Flags: me :: Svg
- Images.Flags: mk :: Svg
- Images.Flags: mt :: Svg
- Images.Flags: nl :: Svg
- Images.Flags: no :: Svg
- Images.Flags: pl :: Svg
- Images.Flags: pt :: Svg
- Images.Flags: ro :: Svg
- Images.Flags: rs :: Svg
- Images.Flags: ru :: Svg
- Images.Flags: se :: Svg
- Images.Flags: si :: Svg
- Images.Flags: sk :: Svg
- Images.Flags: sm :: Svg
- Images.Flags: ua :: Svg
- Images.Flags: uk :: Svg
- Images.Flags: va :: Svg
- Images.Flags: xk :: Svg
- Images.FlagsCoA: alCoA :: Svg
- Images.FlagsCoA: cyCoA :: Svg
- Images.FlagsCoA: skCoA :: Svg
- Images.FlagsCoA: xkCoA :: Svg
- Main: renderFlags :: FilePath -> IO ()
+ Icons.Cosmos: moonHalf :: Svg
+ Icons.Tools: cog6 :: Svg
+ Icons.Tools: cog9 :: Svg
+ Images.CountryFlags: ad :: Svg
+ Images.CountryFlags: af :: Svg
+ Images.CountryFlags: al :: Svg
+ Images.CountryFlags: at :: Svg
+ Images.CountryFlags: ba :: Svg
+ Images.CountryFlags: be :: Svg
+ Images.CountryFlags: bg :: Svg
+ Images.CountryFlags: blr :: Svg
+ Images.CountryFlags: ch :: Svg
+ Images.CountryFlags: countryFlags :: [(String, Svg)]
+ Images.CountryFlags: cyp :: Svg
+ Images.CountryFlags: cz :: Svg
+ Images.CountryFlags: de :: Svg
+ Images.CountryFlags: dk :: Svg
+ Images.CountryFlags: ee :: Svg
+ Images.CountryFlags: es :: Svg
+ Images.CountryFlags: eu :: Svg
+ Images.CountryFlags: fi :: Svg
+ Images.CountryFlags: flagH3Eq :: (Float, Float) -> String -> String -> String -> Svg
+ Images.CountryFlags: flagV3Eq :: (Float, Float) -> String -> String -> String -> Svg
+ Images.CountryFlags: fr :: Svg
+ Images.CountryFlags: gr :: Svg
+ Images.CountryFlags: hrv :: Svg
+ Images.CountryFlags: ie :: Svg
+ Images.CountryFlags: is :: Svg
+ Images.CountryFlags: it :: Svg
+ Images.CountryFlags: li :: Svg
+ Images.CountryFlags: lt :: Svg
+ Images.CountryFlags: lu :: Svg
+ Images.CountryFlags: lv :: Svg
+ Images.CountryFlags: mc :: Svg
+ Images.CountryFlags: md :: Svg
+ Images.CountryFlags: me :: Svg
+ Images.CountryFlags: mk :: Svg
+ Images.CountryFlags: mt :: Svg
+ Images.CountryFlags: nl :: Svg
+ Images.CountryFlags: no :: Svg
+ Images.CountryFlags: pl :: Svg
+ Images.CountryFlags: pt :: Svg
+ Images.CountryFlags: ro :: Svg
+ Images.CountryFlags: rs :: Svg
+ Images.CountryFlags: ru :: Svg
+ Images.CountryFlags: se :: Svg
+ Images.CountryFlags: si :: Svg
+ Images.CountryFlags: sk :: Svg
+ Images.CountryFlags: sm :: Svg
+ Images.CountryFlags: ua :: Svg
+ Images.CountryFlags: uk :: Svg
+ Images.CountryFlags: va :: Svg
+ Images.CountryFlags: xk :: Svg
+ Images.CountryFlagsCoAs: alCoA :: Svg
+ Images.CountryFlagsCoAs: cyCoA :: Svg
+ Images.CountryFlagsCoAs: skCoA :: Svg
+ Images.CountryFlagsCoAs: xkCoA :: Svg
+ Main: renderCountryFlags :: FilePath -> IO ()

Files

src/Core/Geometry.hs view
@@ -66,7 +66,7 @@ 
 First species means that one vertice is skipped when joining vertices.
 The number of vertices must be strictly greater than 4.
-Can be customized with the usual `blaze-svg` functions.
+Can be customized with the usual [blaze-svg](https://hackage.haskell.org/package/blaze-svg) functions.
 -}
 starPolygonFirstSpecies 
   :: Int             -- ^ number of vertices 
@@ -107,7 +107,7 @@ 
 The difference with the previous function is the stroke:
 the previous function's stroke runs inside the figure 
-(so it would draw a pentagram), while this funtion's stroke
+(so it would draw a pentagram), while this function's stroke
 runs outside the shape (so it would draw a star).
 There is no visual difference if you only fill the paths (with no stroke).
 -}
src/Core/Render.hs view
@@ -22,7 +22,7 @@ `renderSvgFiles` renders svg code to .svg files.
 
 Takes a folder path in your computer and a list
-of pairs `(String, Svg)` and renders the svg code of every
+of pairs @(String, Svg)@ and renders the svg code of every
 second element into a svg file named as the first element.
 You should not write the .svg file extension in the first element.
 This function also adds the correct DOCTYPE and xml:ns
@@ -31,13 +31,13 @@ 
 >renderSvgFiles
 >  "./assets/img/"
->  [ (,) "sun"      (sun 14)
->  , (,) "moon"      moon
->  , (,) "crescent"  crescent
+>  [ (,) "moonCrescent"  moonCrescent
+>  , (,) "moonHalf"      moonHalf
+>  , (,) "sun"          (sun 14)
 >  ]
 
-This will create 3 files inside the ./assets/svg/ folder,
-namely sun.svg, moon.svg and crescent.svg
+This will create 3 files inside the @.\/assets\/svg\/@ folder,
+namely @sun.svg@, @moonHalf.svg@ and @moonCrescent.svg@
 -}
 renderSvgFiles :: FilePath -> [ (FilePath , Svg) ] -> IO ()
 renderSvgFiles folder svgs = 
@@ -53,7 +53,7 @@ 
 
 {- |
-`renderSvgReact` renders svg code to .jsx files
+`renderSvgReact` renders svg code to .jsx files (React.js files)
 
 Works as the previous function but creates .jsx files
 instead of .svg files. This function does not prepend
@@ -74,7 +74,7 @@ >  [ (,) "cancel" myCancelIcon
 >  ]
 
-This call will create a cancel.jsx file inside the ./assets/svg/ folder
+This call will create a cancel.jsx file inside the @.\/assets\/svg\/@ folder
 with the following code inside:
 
 >import React from 'react';
@@ -105,7 +105,7 @@ so you don't have to call it manually.
 
 This function writes the @import React from 'react';@ line
-and the export line; and more importantly, changes all hyphen-joined
+and the export line. And more importantly, changes all hyphen-joined
 attributes to camelCase, because React will complain otherwise.
 For example, @stroke-width@ changes to @strokeWidth@ and @text-anchor@
 changes to @textAnchor@.
src/Core/Style.hs view
@@ -18,7 +18,7 @@ 
 {- |
 `stdDims` takes some svg content and wraps it with the
-@svg@ tag, with attributes: 
+@\<svg\>@ tag, with attributes: 
 
 * @viewbox="-1 -1 2 2"@
 * @height="300px"@
src/Core/Utils.hs view
@@ -21,10 +21,10 @@ 
 
 {- |
-Splits a list into two lists:
+Splits a list @xs@ into two lists:
 
-* The first one contains all the elements in odd positions
-* The second one contains all the elements in even positions
+* The first one contains all odd positioned elements of @xs@
+* The second one contains all even positioned elements of @xs@
 -}
 evenOddSplit :: [a] -> ([a], [a])
 evenOddSplit [] = ([], [])
@@ -102,7 +102,7 @@ Takes the 4 numbers of the viewbox @(x0, y0, width, height)@
 and returns a path with a very thin stroke which connects all 
 consecutive corners of the viewbox and also connects opposite
-middle points.
+middle points of the sides of the viewbox.
 -}
 frame :: Float -> Float -> Float -> Float -> S.Svg
 frame x y w h =
src/Icons/Cosmos.hs view
@@ -5,7 +5,7 @@ module Icons.Cosmos 
   ( svgCosmos
   , moonCrescent
-  , moonFull
+  , moonHalf
   , sun
   ) where
 
@@ -24,14 +24,14 @@ >svgCosmos :: [ (String , S.Svg) ]
 >svgCosmos =
 >  [ (,) "moonCrescent"  moonCrescent
->  , (,) "moonFull"      moonFull
+>  , (,) "moonHalf"      moonHalf
 >  , (,) "sun"          (sun 14)
 >  ]
 -}
 svgCosmos :: [ (String , S.Svg) ]
 svgCosmos =
   [ (,) "moonCrescent"  moonCrescent
-  , (,) "moonFull"      moonFull
+  , (,) "moonHalf"      moonHalf
   , (,) "sun"          (sun 14)
   ]
 
@@ -77,14 +77,14 @@ 
 
 {- |
-![fill style](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/cosmos/moonFull_fill.svg)
+![fill style](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/cosmos/moonHalf_fill.svg)
 
-![fill and stroke](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/cosmos/moonFull_full.svg)
+![fill and stroke](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/cosmos/moonHalf_full.svg)
 
-![stroke style](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/cosmos/moonFull_strk.svg)
+![stroke style](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/cosmos/moonHalf_strk.svg)
 -}
-moonFull :: Svg
-moonFull =
+moonHalf :: Svg
+moonHalf =
     S.path
       ! A.strokeLinejoin "round"
       ! A.d moonDirs
src/Icons/Religion.hs view
@@ -331,8 +331,12 @@ ![stroke style](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/religion/exampleHexagram_strk.svg)
 
 Function to draw a hexagram from the Yi Ching (the Book of Mutations).
-If all six numbers belong to {0,1} it draws only the hexagram lines.
+
+If all six numbers belong to @{0,1}@ it draws only the hexagram lines.
 Otherwise, the numbers are printed right to their line
+
+__NOTE:__ as always with the Yi Ching, numbers go from bottom to top 
+(the first number of the tuple corresponds to the lowest line)
 -}
 iChingHexagram :: (Int,Int,Int,Int,Int,Int) -> Svg
 iChingHexagram (n1,n2,n3,n4,n5,n6) =
src/Icons/Tools.hs view
@@ -5,6 +5,8 @@ module Icons.Tools 
   ( svgTools
   , cogwheel
+  , cog6
+  , cog9
   , key
   , keyWithArc
   , lock
@@ -173,18 +175,6 @@ 
 
 {- |
-![fill style](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/tools/cog6_fill.svg)
-
-![fill and stroke](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/tools/cog6_full.svg)
-
-![stroke style](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/tools/cog6_strk.svg)
-
-![fill style](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/tools/cog9_fill.svg)
-
-![fill and stroke](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/tools/cog9_full.svg)
-
-![stroke style](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/tools/cog9_strk.svg)
-
 Takes a natural number @n@ which is the number of cogs, 
 and a real number @eps@ which controls how 'pointy' the cogs are. 
 -}
@@ -221,6 +211,12 @@ 
 {- |
 prop> cog6 = cogwheel 6 0.18
+
+![fill style](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/tools/cog6_fill.svg)
+
+![fill and stroke](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/tools/cog6_full.svg)
+
+![stroke style](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/tools/cog6_strk.svg)
 -}
 cog6 :: S.Svg
 cog6 = cogwheel 6 0.18
@@ -229,6 +225,12 @@ 
 {- |
 prop> cog = cogwheel 9 0.12
+
+![fill style](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/tools/cog9_fill.svg)
+
+![fill and stroke](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/tools/cog9_full.svg)
+
+![stroke style](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/icons/tools/cog9_strk.svg)
 -}
 cog9 :: S.Svg
 cog9 = cogwheel 9 0.12
+ src/Images/CountryFlags.hs view
@@ -0,0 +1,1797 @@+{-# LANGUAGE     OverloadedStrings       #-}
+
+
+{- |
+Country flags (only Europe at this moment) and the European Union flag.
+
+All flags are built on a @viewbox "0 0 w h"@ 
+where @w@ and @h@ are particular to each flag (according to official ratios)
+
+Flags are named with the 2-letter ISO code of each country, with very few exceptions, 
+named with the 3-letter ISO code to avoid name collision with some HTML or `Attribute` functions 
+like `hr` or `cy`.
+-}
+module Images.CountryFlags where
+
+import           Text.Blaze.Svg11 ((!))
+import           Text.Blaze.Svg11 as S
+import           Text.Blaze.Svg11.Attributes as A
+
+import Core.Geometry
+import Core.Utils
+import Images.CountryFlagsCoAs
+
+
+{- |
+A list with all the flags of this module, 
+together with appropriate names.
+
+>countryFlags :: [ (String , S.Svg) ]
+>countryFlags =
+>  [ (,) "ad" ad
+>  , (,) "af" af
+>  , (,) "al" al
+>  , (,) "at" at
+>  , (,) "ba" ba
+>  , (,) "be" be
+>  , (,) "bg" bg
+>  , (,) "by" blr
+>  , (,) "ch" ch
+>  , (,) "cy" cyp
+>  , (,) "cz" cz
+>  , (,) "de" de
+>  , (,) "dk" dk
+>  , (,) "ee" ee
+>  , (,) "es" es
+>  , (,) "eu" eu
+>  , (,) "fi" fi
+>  , (,) "fr" fr
+>  , (,) "gr" gr
+>  , (,) "hr" hrv
+>  , (,) "ie" ie
+>  , (,) "is" is
+>  , (,) "it" it
+>  , (,) "li" li
+>  , (,) "lt" lt
+>  , (,) "lu" lu
+>  , (,) "lv" lv
+>  , (,) "mc" mc
+>  , (,) "md" md
+>  , (,) "me" me
+>  , (,) "mk" mk
+>  , (,) "mt" mt
+>  , (,) "nl" nl
+>  , (,) "no" no
+>  , (,) "pl" pl
+>  , (,) "pt" pt
+>  , (,) "ro" ro
+>  , (,) "rs" rs
+>  , (,) "ru" ru
+>  , (,) "se" se
+>  , (,) "si" si
+>  , (,) "sk" sk
+>  , (,) "sm" sm
+>  , (,) "ua" ua
+>  , (,) "uk" uk
+>  , (,) "va" va
+>  , (,) "xk" xk
+>  ]
+-}
+countryFlags :: [ (String , S.Svg) ]
+countryFlags =
+  [ (,) "ad" ad
+  , (,) "af" af
+  , (,) "al" al
+  , (,) "at" at
+  , (,) "ba" ba
+  , (,) "be" be
+  , (,) "bg" bg
+  , (,) "by" blr
+  , (,) "ch" ch
+  , (,) "cy" cyp
+  , (,) "cz" cz
+  , (,) "de" de
+  , (,) "dk" dk
+  , (,) "ee" ee
+  , (,) "es" es
+  , (,) "eu" eu
+  , (,) "fi" fi
+  , (,) "fr" fr
+  , (,) "gr" gr
+  , (,) "hr" hrv
+  , (,) "ie" ie
+  , (,) "is" is
+  , (,) "it" it
+  , (,) "li" li
+  , (,) "lt" lt
+  , (,) "lu" lu
+  , (,) "lv" lv
+  , (,) "mc" mc
+  , (,) "md" md
+  , (,) "me" me
+  , (,) "mk" mk
+  , (,) "mt" mt
+  , (,) "nl" nl
+  , (,) "no" no
+  , (,) "pl" pl
+  , (,) "pt" pt
+  , (,) "ro" ro
+  , (,) "rs" rs
+  , (,) "ru" ru
+  , (,) "se" se
+  , (,) "si" si
+  , (,) "sk" sk
+  , (,) "sm" sm
+  , (,) "ua" ua
+  , (,) "uk" uk
+  , (,) "va" va
+  , (,) "xk" xk
+  ]
+
+
+
+{- |
+Handy function to draw a flag with 3 vertical stripes of the same size.
+-}
+flagV3Eq 
+  :: (Float,Float) -- ^ @w@ and @h@ parameters for the viewbox (multiplied by 100 for width and height)
+  -> String        -- ^ color for the left stripe
+  -> String        -- ^ color for the central stripe
+  -> String        -- ^ color for the right stripe
+  -> Svg           -- ^ resulting flag
+flagV3Eq (w,h) c1 c2 c3 =
+    S.svg
+      ! A.viewbox (S.toValue $ "0 0 " ++ show w ++ " " ++ show h)
+      ! (A.width  .: 100*w)
+      ! (A.height .: 100*h)
+      $ do
+        leftStripe
+        centralStripe
+        rightStripe
+  where
+    leftStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: w/3)
+        ! (A.height .: h)
+        ! A.stroke "none"
+        ! A.fill (S.toValue c1)
+    centralStripe =
+      S.rect
+        ! (A.x .: w/3)
+        ! (A.y .: 0)
+        ! (A.width  .: w/3)
+        ! (A.height .: h)
+        ! A.stroke "none"
+        ! A.fill (S.toValue c2)
+    rightStripe = 
+      S.rect
+        ! (A.x .: 2*w/3)
+        ! (A.y .: 0)
+        ! (A.width  .: w/3)
+        ! (A.height .: h)
+        ! A.stroke "none"
+        ! A.fill (S.toValue c3)
+
+
+
+{- |
+Handy function to draw a flag with 3 horizontal stripes of the same size.
+-}
+flagH3Eq
+  :: (Float,Float) -- ^ @w@ and @h@ parameters for the viewbox (multiplied by 100 for width and height)
+  -> String        -- ^ color for the top stripe
+  -> String        -- ^ color for the central stripe
+  -> String        -- ^ color for the bottom stripe
+  -> Svg           -- ^ resulting flag
+flagH3Eq (w,h) c1 c2 c3 =
+    S.svg
+      ! A.viewbox (S.toValue $ "0 0 " ++ show w ++ " " ++ show h)
+      ! (A.width  .: 100*w)
+      ! (A.height .: 100*h)
+      $ do
+        topStripe
+        midStripe
+        botStripe
+  where
+    topStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: w)
+        ! (A.height .: h/3)
+        ! A.stroke "none"
+        ! A.fill (S.toValue c1)
+    midStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: h/3)
+        ! (A.width  .: w)
+        ! (A.height .: h/3)
+        ! A.stroke "none"
+        ! A.fill (S.toValue c2)
+    botStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 2*h/3)
+        ! (A.width  .: w)
+        ! (A.height .: h/3)
+        ! A.stroke "none"
+        ! A.fill (S.toValue c3)
+
+
+--------------------------------------------------------------------------------
+
+{- |
+Flag of Andorra
+
+![flag of Andorra](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/ad.svg)
+-}
+ad :: Svg
+ad = 
+    S.svg
+      ! A.viewbox "0 0 20 14"
+      ! A.width  "200px"
+      ! A.height "140px"
+      $ do
+        leftStripe
+        centreStripe
+        rightStripe
+  where
+    leftStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 6.4)
+        ! (A.height .: 14)
+        ! A.stroke "none"
+        ! A.fill "#10069F"
+    centreStripe =
+      S.rect
+        ! (A.x .: 6.4)
+        ! (A.y .: 0)
+        ! (A.width  .: 7.2)
+        ! (A.height .: 14)
+        ! A.stroke "none"
+        ! A.fill "#FEDD00"
+    rightStripe =
+      S.rect
+        ! (A.x .: 13.6)
+        ! (A.y .: 0)
+        ! (A.width  .: 6.4)
+        ! (A.height .: 14)
+        ! A.stroke "none"
+        ! A.fill "#D50032"
+
+
+
+{- |
+Flag of Afghanistan
+
+![flag of Afghanistan](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/af.svg)
+-}
+af :: Svg
+af =
+  flagV3Eq
+    (3,2)
+    "rgb(0,0,0)"
+    "rgb(190,0,0)"
+    "rgb(0,122,54)"
+
+
+
+{- |
+Flag of Albania
+
+![flag of Albania](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/al.svg)
+-}
+al :: Svg
+al =
+    S.svg
+      ! A.viewbox "0 0 980 700"
+      ! A.width  "490px"
+      ! A.height "350px"
+      $ do
+        background
+        alCoA
+  where
+    background =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 980)
+        ! (A.height .: 700)
+        ! A.stroke "none"
+        ! A.fill "#FF0000"
+
+
+
+{- |
+Flag of Austria
+
+![flag of Austria](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/at.svg)
+-}
+at :: Svg
+at = 
+  flagH3Eq
+    (3,2)
+    "#C8102E"
+    "#FFFFFF"
+    "#C8102E"
+
+
+
+{- |
+Flag of Bosnia and Herzegovina
+
+![flag of Bosnia and Herzegovina](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/ba.svg)
+-}
+ba :: Svg
+ba = 
+    S.svg
+      ! A.viewbox "0 0 400 200"
+      ! A.width  "400px"
+      ! A.height "200px"
+      $ do
+        defs $ 
+          starDef
+        background
+        triangle
+        S.g $ do
+          star
+          star ! A.transform (translate  25  25)
+          star ! A.transform (translate  50  50)
+          star ! A.transform (translate  75  75)
+          star ! A.transform (translate 100 100)
+          star ! A.transform (translate 125 125)
+          star ! A.transform (translate 150 150)
+          star ! A.transform (translate 175 175)
+          star ! A.transform (translate 200 200)
+  where
+    background =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 400)
+        ! (A.height .: 200)
+        ! A.stroke "none"
+        ! A.fill "#001489"
+    triangle =
+      S.path
+        ! A.fill "#FFCD00"
+        ! A.stroke "none"
+        ! A.strokeWidth "0"
+        ! A.d triangleDirs
+    triangleDirs = mkPath $ do
+      m   106    0
+      l   306    0
+      l   306  200
+      S.z
+    a = (19 * (sqrt 5) - 38) / 2
+    starDef =
+      starRegular 5 19 (68,-a)
+        ! A.fill "#FFFFFF"
+        ! A.strokeWidth "0"
+        ! A.id_ "HaskellSvgIcons-baFlagStar"
+    star =
+      S.use 
+        ! A.fill "#FFFFFF"
+        ! A.xlinkHref "#HaskellSvgIcons-baFlagStar"
+
+
+
+{- |
+Flag of Belgium
+
+![flag of Belgium](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/be.svg)
+-}
+be :: Svg
+be =
+  flagV3Eq
+    (3,2.6)
+    "#000000"
+    "#FFE936"
+    "#FF0F21"
+
+
+
+{- |
+Flag of Bulgaria
+
+![flag of Bulgaria](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/bg.svg)
+-}
+bg :: Svg
+bg =
+  flagH3Eq
+    (5,3)
+    "#FFFFFF"
+    "#009B74"
+    "#D01C1F"
+
+
+
+{- |
+Flag of Belarus
+
+![flag of Belarus](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/by.svg)
+-}
+blr :: Svg
+blr = 
+    S.svg
+      ! A.viewbox "0 0 90 45"
+      ! A.width  "400px"
+      ! A.height "200px"
+      $ do
+        topStripe
+        botStripe
+        whiteStripe
+        ruchnik
+  where
+    topStripe =
+      S.rect
+        ! (A.x .: 10)
+        ! (A.y .:  0)
+        ! (A.width  .: 80)
+        ! (A.height .: 30)
+        ! A.stroke "none"
+        ! A.fill "#CF101A"
+    botStripe =
+      S.rect
+        ! (A.x .: 10)
+        ! (A.y .: 30)
+        ! (A.width  .: 80)
+        ! (A.height .: 15)
+        ! A.stroke "none"
+        ! A.fill "#007D2C"
+    whiteStripe =
+      S.rect
+        ! (A.x .: 1)
+        ! (A.y .: 0)
+        ! (A.width  .:  9)
+        ! (A.height .: 45)
+        ! A.stroke "none"
+        ! A.fill "#FFFFFF"
+    ruchnikMatrix =
+      [ [0,0,0,0,1,1,1,0,0,0,0,1]
+      , [1,0,0,1,1,1,1,1,0,0,0,1]
+      , [0,0,1,1,1,0,1,1,1,0,0,0]
+      , [0,1,1,1,0,0,0,1,1,1,0,0]
+      , [1,1,1,0,0,1,0,0,1,1,1,0] -- center 1
+      , [0,1,1,1,0,0,0,1,1,1,0,0]
+      , [0,0,1,1,1,0,1,1,1,0,0,0]
+      , [1,0,0,1,1,1,1,1,0,0,0,1]
+      , [0,0,0,0,1,1,1,0,0,0,0,1]
+      , [0,0,1,0,0,1,0,0,1,0,0,0]
+      , [0,1,1,1,0,0,0,1,1,1,0,0]
+      , [1,1,0,1,1,0,1,1,0,1,1,0] -- center 2
+      , [0,1,1,1,0,0,0,1,1,1,0,0]
+      , [0,0,1,0,0,1,0,0,1,0,0,0]
+      , [0,0,0,0,1,1,1,0,0,0,0,1]
+      , [1,0,0,1,1,1,1,1,0,0,0,1]
+      , [0,0,1,1,1,1,1,1,1,0,0,0]
+      , [0,1,1,1,1,1,1,1,1,1,0,0]
+      , [1,1,1,1,1,1,1,1,1,1,1,0]
+      , [1,1,1,1,0,0,0,1,1,1,1,1] -- center 3
+      , [0,1,1,1,1,1,0,0,1,1,1,1]
+      , [0,0,1,1,1,0,0,0,0,1,1,1]
+      , [1,0,0,1,0,0,0,0,1,1,1,1]
+      , [0,0,0,0,0,0,0,1,1,1,1,0]
+      , [1,0,0,0,0,0,1,1,1,1,0,0]
+      , [1,1,0,0,0,1,1,1,1,0,0,1]
+      , [1,1,1,0,1,1,1,1,0,0,0,0]
+      , [0,1,1,1,1,1,1,0,0,1,0,0]
+      , [0,0,1,1,1,1,0,0,0,1,1,0]
+      , [0,0,0,1,1,1,0,0,0,0,1,1]
+      , [0,0,0,0,1,1,0,1,0,0,0,1]
+      ]
+    w = 10 / 23
+    h = 45 / 61
+    ruchnik =
+      S.path
+        ! A.fill "none"
+        ! A.stroke "#CF101A"
+        ! (A.strokeWidth .: w)
+        ! A.d ruchnikDirs
+    ruchnikDirs = mkPath $ do
+      mapM_ 
+        (\n -> drawLine (fromIntegral n) $ ruchnikMatrix !! n) 
+        [0 .. 30]
+      mapM_ 
+        (\n -> drawLine (fromIntegral n) $ ruchnikMatrix !! (60 - n)) 
+        [31 .. 60]
+    drawLine n binL = do
+      mapM_ 
+        (\k ->
+          if 0 == binL !! (fromEnum k)
+            then return ()
+            else m  ( 0 + (fromIntegral k)*w + w/2)  (n*h)  >>  vr h
+        ) [0 .. 10]
+      if 0 == binL !! 11 
+        then return ()
+        else m 5 (n*h) >> vr h
+      mapM_ 
+        (\k ->
+          if 0 == binL !! k
+            then return ()
+            else m  (10 - (fromIntegral k)*w - w/2)  (n*h)  >>  vr h
+        ) [0 .. 10]
+
+
+
+{- |
+Flag of Switzerland
+
+![flag of Switzerland](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/ch.svg)
+-}
+ch :: S.Svg
+ch =
+    S.svg
+      ! A.viewbox "0 0 32 32"
+      ! A.width  "200px"
+      ! A.height "200px"
+      $ do
+        background
+        cross
+  where
+    background =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 32)
+        ! (A.height .: 32)
+        ! A.stroke "none"
+        ! A.fill "#FF0000"
+    cross =
+      S.path
+        ! A.fill "none"
+        ! A.stroke "#FFFFFF"
+        ! A.strokeWidth "6"
+        ! A.d crossDirs
+    crossDirs = mkPath $ do
+      m  16  6
+      l  16 26
+      m   6 16
+      l  26 16
+
+
+
+{- |
+Flag of Cyprus
+
+![flag of Cyprus](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/cy.svg)
+-}
+cyp :: S.Svg
+cyp =
+    S.svg
+      ! A.viewbox "0 0 900 600"
+      ! A.width  "300px"
+      ! A.height "200px"
+      $ do
+        background
+        cyCoA
+  where
+    background =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 900)
+        ! (A.height .: 600)
+        ! A.stroke "none"
+        ! A.fill "#FFFFFF"
+
+
+
+{- |
+Flag of Czech Republic
+
+![flag of Czech Republic](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/cz.svg)
+-}
+cz :: S.Svg
+cz =
+    S.svg
+      ! A.viewbox "0 0 6 4"
+      ! A.width  "300px"
+      ! A.height "200px"
+      $ do
+        topStripe
+        leftTriangle
+        botStripe
+  where
+    topStripe =
+      S.path 
+        ! A.strokeWidth "0"
+        ! A.fill "#FFFFFF"
+        ! A.d topDirs
+    topDirs = mkPath $ do
+      m  0 0
+      l  6 0
+      l  6 2
+      l  3 2
+      S.z
+    leftTriangle =
+      S.path
+        ! A.strokeWidth "0"
+        ! A.fill "#11457E"
+        ! A.d triangleDirs
+    triangleDirs = mkPath $ do
+      m  0 0
+      l  3 2
+      l  0 4
+      S.z
+    botStripe =
+      S.path
+        ! A.strokeWidth "0"
+        ! A.fill "#D7141A"
+        ! A.d botDirs
+    botDirs = mkPath $ do
+      m  0 4
+      l  6 4
+      l  6 2
+      l  3 2
+      S.z
+
+
+
+{- |
+Flag of Germany
+
+![flag of Germany](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/de.svg)
+-}
+de :: Svg
+de =
+  flagH3Eq
+    (5,3)
+    "rgb(0,0,0)"
+    "rgb(255,0,0)"
+    "rgb(255,204,0)"
+
+
+
+{- |
+Flag of Denmark
+
+![flag of Denmark](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/dk.svg)
+-}
+dk :: Svg
+dk =
+    S.svg
+      ! A.viewbox "0 0 37 28"
+      ! A.width  "370px"
+      ! A.height "280px"
+      $ do
+        background
+        cross
+  where
+    background =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 37)
+        ! (A.height .: 28)
+        ! A.stroke "none"
+        ! A.fill "#C8102E"
+    cross =
+      S.path
+        ! A.fill "none"
+        ! A.stroke "#FFFFFF"
+        ! A.strokeWidth "4"
+        ! A.d crossDirs
+    crossDirs = mkPath $ do
+      m  14  0
+      l  14 28
+      m   0 14
+      l  37 14
+
+
+
+{- |
+Flag of Estonia
+
+![flag of Estonia](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/ee.svg)
+-}
+ee :: Svg
+ee =
+  flagH3Eq
+    (5.5, 3.5)
+    "#0072CE"
+    "#000000"
+    "#FFFFFF"
+
+
+
+{- |
+Flag of Spain
+
+![flag of Spain](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/es.svg)
+-}
+es :: Svg
+es =
+    S.svg
+      ! A.viewbox "0 0 3 2"
+      ! A.width  "300px"
+      ! A.height "200px"
+      $ do
+        redBandTop
+        yellowBand
+        redBandBot
+  where
+    colRed = "rgb(198,11,30)"
+    colYellow = "rgb(255,196,0)"
+    redBandTop =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 3)
+        ! (A.height .: 0.5)
+        ! A.stroke "none"
+        ! A.fill colRed
+    yellowBand =
+      S.rect 
+        ! (A.x .: 0)
+        ! (A.y .: 0.5)
+        ! (A.width  .: 3)
+        ! (A.height .: 1)
+        ! A.stroke "none"
+        ! A.fill colYellow
+    redBandBot =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 1.5)
+        ! (A.width  .: 3)
+        ! (A.height .: 0.5)
+        ! A.stroke "none"
+        ! A.fill colRed
+
+
+
+{- |
+Flag of the European Union
+
+![flag of the European Union](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/eu.svg)
+-}
+eu :: Svg
+eu =
+    S.svg
+      ! A.viewbox "0 0 3 2"
+      ! A.width  "300px"
+      ! A.height "200px"
+      $ do
+        background
+        mapM_ star [0..11]
+  where
+    background =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 3)
+        ! (A.height .: 2)
+        ! A.stroke "none"
+        ! A.fill "#003399"
+    starPos k = 
+      ( 3/2 + (2/3) * cos (k*pi/6) 
+      , 1   + (2/3) * sin (k*pi/6)
+      )
+    star k =
+      starRegular 5 (1/9) (starPos k)
+        ! A.fill "#FFCC00"
+        ! A.id_ "HaskellSvgIcons-euFlagStar"
+
+
+
+{- |
+Flag of Finland
+
+![flag of Finland](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/fi.svg)
+-}
+fi :: S.Svg
+fi =
+    S.svg
+      ! A.viewbox "0 0 36 22"
+      ! A.width  "360px"
+      ! A.height "220px"
+      $ do
+        background
+        cross
+  where
+    background =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 36)
+        ! (A.height .: 22)
+        ! A.stroke "none"
+        ! A.fill "#FFFFFF"
+    cross =
+      S.path
+        ! A.fill "none"
+        ! A.stroke "#002F6C"
+        ! A.strokeWidth "6"
+        ! A.d crossDirs
+    crossDirs = mkPath $ do
+      m  13  0
+      l  13 26
+      m   0 11
+      l  36 11
+
+
+
+{- |
+Flag of France
+
+![flag of France](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/fr.svg)
+-}
+fr :: S.Svg
+fr =
+  flagV3Eq
+    (3,2)
+    "rgb(0,85,164)"
+    "rgb(255,255,255"
+    "rgb(239,65,53)"
+
+
+
+{- |
+Flag of Greece
+
+![flag of Greece](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/gr.svg)
+-}
+gr :: Svg
+gr =
+    S.svg
+      ! A.viewbox "0 0 27 18"
+      ! A.width  "300px"
+      ! A.height "200px"
+      $ do
+        blueLines
+        whiteLines
+        blueSquare
+        greekCross
+  where
+    blueLines =
+      S.path
+        ! A.fill "none"
+        ! A.stroke "#004C98"
+        ! A.strokeWidth "2"
+        ! A.d blueDirs
+    whiteLines =
+      S.path
+        ! A.fill "none"
+        ! A.stroke "#FFFFFF"
+        ! A.strokeWidth "2"
+        ! A.d whiteDirs
+    blueDirs = mkPath $ do
+      m  0  1  >>  hr 27
+      m  0  5  >>  hr 27
+      m  0  9  >>  hr 27
+      m  0 13  >>  hr 27
+      m  0 17  >>  hr 27
+    whiteDirs = mkPath $ do
+      m  0  3  >>  hr 27
+      m  0  7  >>  hr 27
+      m  0 11  >>  hr 27
+      m  0 15  >>  hr 27
+    blueSquare =
+      S.rect 
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 10)
+        ! (A.height .: 10)
+        ! A.stroke "none"
+        ! A.fill "#004C98"
+    greekCross =
+      S.path
+        ! A.fill "none"
+        ! A.stroke "#FFFFFF"
+        ! A.strokeWidth "2"
+        ! A.d crossDirs
+    crossDirs = mkPath $ do
+      m   5   0
+      l   5  10
+      m   0   5
+      l  10   5
+
+
+
+{- |
+Flag of Croatia
+
+![flag of Croatia](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/hr.svg)
+-}
+hrv :: Svg
+hrv =
+  flagH3Eq
+    (4,2)
+    "#FF0000"
+    "#FFFFFF"
+    "#171796"
+
+
+
+{- |
+Flag of Ireland
+
+![flag of Ireland](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/ie.svg)
+-}
+ie :: S.Svg
+ie =
+  flagV3Eq
+    (3,1.5)
+    "rgb(22,155,98)"
+    "rgb(255,255,255)"
+    "rgb(255,136,62)"
+
+
+
+{- |
+Flag of Iceland
+
+![flag of Iceland](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/is.svg)
+-}
+is :: S.Svg
+is = 
+    S.svg 
+      ! A.viewbox "0 0 25 18"
+      ! A.width  "250px"
+      ! A.height "180px"
+      $ do
+        background
+        whiteCross
+        redCross
+  where
+    background =
+      S.rect 
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 25)
+        ! (A.height .: 18)
+        ! A.stroke "none"
+        ! A.fill "#02529C"
+    whiteCross =
+      S.path 
+        ! A.fill "none"
+        ! A.strokeWidth "4"
+        ! A.stroke "#FFFFFF"
+        ! A.d crossDirs
+    redCross =
+      S.path 
+        ! A.fill "none"
+        ! A.strokeWidth "2"
+        ! A.stroke "#DC1E35"
+        ! A.d crossDirs
+    crossDirs = mkPath $ do
+      m   0   9
+      l  25   9
+      m   9   0
+      l   9  18
+
+
+
+{- |
+Flag of Italy
+
+![flag of Italy](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/it.svg)
+-}
+it :: Svg
+it = 
+  flagV3Eq
+    (3,2)
+    "rgb(0,140,69)"
+    "rgb(244,249,255"
+    "rgb(205,33,42)" 
+
+
+
+{- |
+Flag of Liechtenstein
+
+![flag of Liechtenstein](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/li.svg)
+-}
+li :: Svg
+li = 
+    S.svg
+      ! A.viewbox "0 0 5 3"
+      ! A.width  "500px"
+      ! A.height "300px"
+      $ do
+        topStripe
+        botStripe
+  where
+    topStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 5)
+        ! (A.height .: 1.5)
+        ! A.stroke "none"
+        ! A.fill "#002780"
+    botStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 1.5)
+        ! (A.width  .: 5)
+        ! (A.height .: 1.5)
+        ! A.stroke "none"
+        ! A.fill "#CF0921"
+
+
+
+{- |
+Flag of Lithuania
+
+![flag of Lithuania](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/lt.svg)
+-}
+lt :: Svg
+lt =
+  flagH3Eq
+    (5,3)
+    "#FFB81C"
+    "#046A38"
+    "#BE3A34"
+
+
+
+{- |
+Flag of Luxembourg
+
+![flag of Luxembourg](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/lu.svg)
+-}
+lu :: S.Svg
+lu =
+  flagH3Eq
+    (3,2)
+    "#EA141D"
+    "#FFFFFF"
+    "#51ADDA"
+
+
+
+{- |
+Flag of Latvia
+
+![flag of Latvia](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/lv.svg)
+-}
+lv :: S.Svg
+lv = 
+    S.svg
+      ! A.viewbox "0 0 20 10"
+      ! A.width  "300px"
+      ! A.height "150px"
+      $ do
+        topStripe
+        midStripe
+        botStripe
+  where
+    topStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 20)
+        ! (A.height .: 4)
+        ! A.stroke "none"
+        ! A.fill "#A4343A"
+    midStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 4)
+        ! (A.width  .: 20)
+        ! (A.height .: 2)
+        ! A.stroke "none"
+        ! A.fill "#FFFFFF"
+    botStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 6)
+        ! (A.width  .: 20)
+        ! (A.height .: 4)
+        ! A.stroke "none"
+        ! A.fill "#A4343A"
+
+
+
+{- |
+Flag of Monaco
+
+![flag of Monaco](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/mc.svg)
+-}
+mc :: S.Svg
+mc =
+    S.svg
+      ! A.viewbox "0 0 5 4"
+      ! A.width  "500px"
+      ! A.height "400px"
+      $ do
+        topStripe
+        botStripe
+  where
+    topStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 5)
+        ! (A.height .: 2)
+        ! A.stroke "none"
+        ! A.fill "#CE1126"
+    botStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 2)
+        ! (A.width  .: 5)
+        ! (A.height .: 2)
+        ! A.stroke "none"
+        ! A.fill "#FFFFFF"
+
+
+
+{- |
+Flag of Moldova
+
+![flag of Moldova](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/md.svg)
+-}
+md :: Svg
+md =
+  flagV3Eq
+    (3,1.5)
+    "#003DA5"
+    "#FFD100"
+    "#C8102E"
+
+
+
+{- |
+Flag of Montenegro
+
+![flag of Montenegro](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/me.svg)
+-}
+me :: Svg
+me = 
+    S.svg
+      ! A.viewbox (S.toValue $ "0 0 " ++ show w ++ " " ++ show h)
+      ! A.width  "400px"
+      ! A.height "200px"
+      $ do
+        background
+        border
+  where
+    w = 400
+    h = 200
+    s = h / 40
+    background =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 400)
+        ! (A.height .: 200)
+        ! A.stroke "none"
+        ! A.fill "#FF0000"
+    border =
+      S.path
+        ! A.fill "none"
+        ! A.stroke "#E6B319"
+        ! (A.strokeWidth .: 2*s)
+        ! A.d borderDirs
+    borderDirs = mkPath $ do
+      m  (0 + s) (0 + s)
+      l  (w - s) (0 + s)
+      l  (w - s) (h - s)
+      l  (0 + s) (h - s)
+      S.z
+
+
+
+{- |
+Flag of North Macedonia
+
+![flag of North Macedonia](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/mk.svg)
+-}
+mk :: Svg
+mk =
+    S.svg
+      ! A.viewbox "0 0 2 1"
+      ! A.width  "400px"
+      ! A.height "200px"
+      $ do
+        background
+        rays
+        sun
+  where
+    background =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 2)
+        ! (A.height .: 1)
+        ! A.stroke "none"
+        ! A.fill "#CE2028"
+    d = 2/7
+    sun =
+      S.circle
+        ! (A.cx .: 1)
+        ! (A.cy .: 0.5)
+        ! (A.r  .: d/2)
+        ! A.fill "#F9D616"
+        ! A.stroke "#CE2028"
+        ! (A.strokeWidth .: d/8)
+    rays =
+      S.path
+        ! A.stroke "none"
+        ! A.strokeWidth "0"
+        ! A.fill "#F9D616"
+        ! A.d raysDirs
+    x1 = 1 + (1/68) * sqrt (3825 / 98)  -- 1.09187 etc.
+    x2 = 1 - (1/68) * sqrt (3825 / 98)
+    y1 = (3/5) * x1 - 1/10
+    y2 = (3/5) * x2 - 1/10
+    raysDirs = mkPath $ do
+      m  (1 - 0.1)  (0)
+      l  (1 + 0.1)  (0)
+      l  (1      )  (0.5 - d/2 + d/8)
+      S.z
+      m  (1 - 0.1)  (1)
+      l  (1 + 0.1)  (1)
+      l  (1      )  (0.5 + d/2 - d/8)
+      S.z
+      m  (0      )  (0.5 - 0.1)
+      l  (0      )  (0.5 + 0.1)
+      l  (1      )   0.5
+      S.z
+      m  (2      )  (0.5 - 0.1)
+      l  (2      )  (0.5 + 0.1)
+      l  (1      )   0.5
+      S.z
+      m  (0      )   0
+      l  (0 + 0.3)   0
+      l   x1         y1
+      S.z
+      m  (2 - 0.3)   0
+      l  (2      )   0
+      l   x2         y1
+      S.z
+      m  (2 - 0.3)   1
+      l  (2      )   1
+      l   x2         y2
+      S.z
+      m  (0      )   1
+      l  (0 + 0.3)   1
+      l   x1         y2
+      S.z
+
+
+
+{- |
+Flag of Malta
+
+![flag of Malta](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/mt.svg)
+-}
+mt :: Svg
+mt =
+    S.svg
+      ! A.viewbox "0 0 3 2"
+      ! A.width  "300px"
+      ! A.height "200px"
+      $ do
+        leftStripe
+        rightStripe
+  where
+    leftStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 1.5)
+        ! (A.height .: 2)
+        ! A.stroke "none"
+        ! A.fill "#FFFFFF"
+    rightStripe =
+      S.rect
+        ! (A.x .: 1.5)
+        ! (A.y .: 0)
+        ! (A.width  .: 1.5)
+        ! (A.height .: 2)
+        ! A.stroke "none"
+        ! A.fill "#C01B22"
+
+
+
+{- |
+Flag of the Netherlands
+
+![flag of the Netherlands](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/nl.svg)
+-}
+nl :: S.Svg
+nl =
+  flagH3Eq
+    (3,2)
+    "#AE1C28"
+    "#FFFFFF"
+    "#21468B"
+
+
+
+{- |
+Flag of Norway
+
+![flag of Norway](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/no.svg)
+-}
+no :: S.Svg
+no =
+    S.svg
+      ! A.viewbox "0 0 22 16"
+      ! A.width  "330px"
+      ! A.height "240px"
+      $ do
+        background
+        whiteCross
+        blueCross
+  where
+    background =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 22)
+        ! (A.height .: 16)
+        ! A.stroke "none"
+        ! A.fill "#BA0C2F"
+    whiteCross =
+      S.path
+        ! A.fill "none"
+        ! A.stroke "#FFFFFF"
+        ! A.strokeWidth "4"
+        ! A.d crossDirs
+    blueCross =
+      S.path
+        ! A.fill "none"
+        ! A.stroke "#00205B"
+        ! A.strokeWidth "2"
+        ! A.d crossDirs
+    crossDirs = mkPath $ do
+      m   8  0
+      l   8 16
+      m   0  8
+      l  22  8
+
+
+
+{- |
+Flag of Polonia
+
+![flag of Polonia](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/pl.svg)
+-}
+pl :: Svg
+pl =
+    S.svg
+      ! A.viewbox "0 0 8 5"
+      ! A.width  "400px"
+      ! A.height "250px"
+      $ do
+        topStripe
+        botStripe
+  where
+    topStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 8)
+        ! (A.height .: 2.5)
+        ! A.stroke "none"
+        ! A.fill "#FFFFFF"
+    botStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 2.5)
+        ! (A.width  .: 8)
+        ! (A.height .: 2.5)
+        ! A.stroke "none"
+        ! A.fill "#DC143C"
+
+
+
+{- |
+Flag of Portugal
+
+![flag of Portugal](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/pt.svg)
+-}
+pt :: S.Svg
+pt =
+    S.svg
+      ! A.viewbox "0 0 3 2"
+      ! A.width  "300px"
+      ! A.height "200px"
+      $ do
+        greenBand
+        redBand
+  where
+    greenBand =
+      S.rect 
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 6/5)
+        ! (A.height .: 2)
+        ! A.stroke "none"
+        ! A.fill "rgb(0,102,0)"
+    redBand =
+      S.rect
+        ! (A.x .: 6/5)
+        ! (A.y .: 0)
+        ! (A.width  .: 9/5)
+        ! (A.height .: 2)
+        ! A.stroke "none"
+        ! A.fill "rgb(255,0,0)"
+
+
+
+{- |
+Flag of Romania
+
+![flag of Romania](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/ro.svg)
+-}
+ro :: Svg
+ro =
+  flagV3Eq
+    (3,2)
+    "#002B7F"
+    "#FCD116"
+    "#CE1126"
+
+
+
+{- |
+Flag of Serbia
+
+![flag of Serbia](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/rs.svg)
+-}
+rs :: Svg
+rs =
+  flagH3Eq
+    (3,2)
+    "#C7363D"
+    "#0C4077"
+    "#FFFFFF"
+
+
+
+{- |
+Flag of Russia
+
+![flag of Russia](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/ru.svg)
+-}
+ru :: S.Svg
+ru =
+  flagH3Eq
+    (3,2)
+    "#FFFFFF"
+    "#0039A6"
+    "#E4181C"
+
+
+
+{- |
+Flag of Sweden
+
+![flag of Sweden](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/se.svg)
+-}
+se :: S.Svg
+se =
+    S.svg
+      ! A.viewbox "0 0 16 10"
+      ! A.width  "320px"
+      ! A.height "200px"
+      $ do
+        background
+        cross
+  where
+    background =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 16)
+        ! (A.height .: 10)
+        ! A.stroke "none"
+        ! A.fill "#006AA7"
+    cross =
+      S.path
+        ! A.fill "none"
+        ! A.stroke "#FECC02"
+        ! A.strokeWidth "2"
+        ! A.d crossDirs
+    crossDirs = mkPath $ do
+      m   6  0
+      l   6 10
+      m   0  5
+      l  16  5
+
+
+
+{- |
+Flag of Slovenia
+
+![flag of Slovenia](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/si.svg)
+-}
+si :: Svg
+si =
+  flagH3Eq
+    (4,2)
+    "#FFFFFF"
+    "#0000FF"
+    "#FF0000"
+
+
+
+{- |
+Flag of Slovakia
+
+![flag of Slovakia](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/sk.svg)
+-}
+sk :: Svg
+sk =
+    S.svg
+      ! A.viewbox "0 0 18 12"
+      ! A.width  "360px"
+      ! A.height "240px"
+      $ do
+        topStripe
+        midStripe
+        botStripe
+  where
+    topStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 18)
+        ! (A.height .:  4)
+        ! A.stroke "none"
+        ! A.fill "#FFFFFF"
+    midStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 4)
+        ! (A.width  .: 18)
+        ! (A.height .:  4)
+        ! A.stroke "none"
+        ! A.fill "#0B4EA2"
+    botStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 8)
+        ! (A.width  .: 18)
+        ! (A.height .:  4)
+        ! A.stroke "none"
+        ! A.fill "#EE1C25"
+    
+
+
+{- |
+Flag of San Marino
+
+![flag of San Marino](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/sm.svg)
+-}
+sm :: Svg
+sm =
+    S.svg
+      ! A.viewbox "0 0 4 3"
+      ! A.width  "400px"
+      ! A.height "300px"
+      $ do
+        topStripe
+        botStripe
+  where
+    topStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 4)
+        ! (A.height .: 1.5)
+        ! A.stroke "none"
+        ! A.fill "#FFFFFF"
+    botStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 1.5)
+        ! (A.width  .: 4)
+        ! (A.height .: 1.5)
+        ! A.stroke "none"
+        ! A.fill "#73E6F2"
+
+
+
+{- |
+Flag of Ukraine
+
+![flag of Ukraine](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/ua.svg)
+-}
+ua :: S.Svg
+ua =
+    S.svg
+      ! A.viewbox "0 0 3 2"
+      ! A.width  "300px"
+      ! A.height "200px"
+      $ do
+        topStripe
+        botStripe
+  where
+    topStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 3)
+        ! (A.height .: 1)
+        ! A.stroke "none"
+        ! A.fill "#0057B7"
+    botStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 1)
+        ! (A.width  .: 3)
+        ! (A.height .: 1)
+        ! A.stroke "none"
+        ! A.fill "#FFDD00"
+
+
+
+{- |
+Flag of Great Britain
+
+![flag of Great Britain](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/uk.svg)
+-}
+uk :: S.Svg
+uk =
+    S.svg
+      ! A.viewbox "0 0 50 30"
+      ! A.width  "250px"
+      ! A.height "150px"
+      $ do
+        scotland
+        irelandBase
+        irelandBase ! A.transform (rotateAround 180 mx my)
+        englandRed
+        englandWhite
+  where
+    w = 50
+    h = 30
+    mx = w / 2
+    my = h / 2
+    -- x0 = 3 / sin (atan (3/5))
+    x1 = 2 / sin (atan (3/5))
+    -- y0 = 3 / sin (atan (5/3))
+    y1 = 2 / sin (atan (5/3))
+    colWhite = "white"
+    colBlue = "rgb(1,33,105)"
+    colRed = "rgb(200,16,46)"
+    scotland = do
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: w)
+        ! (A.height .: h)
+        ! A.stroke "none"
+        ! A.fill colBlue
+      S.path
+        ! (A.strokeWidth .: 6)
+        ! A.stroke colWhite
+        ! A.fill "none"
+        ! A.d scotlandDirs
+    scotlandDirs = mkPath $ do
+      m   0  0
+      l   w  h
+      m   0  h
+      l   w  0
+    irelandBase =
+      S.path
+        ! A.stroke "none"
+        ! A.fill colRed
+        ! A.d irelandDirs
+    irelandDirs = mkPath $ do
+      m   0         0
+      l   0         y1
+      l   (mx - x1) my
+      l   mx        my
+      S.z
+      m   0         h
+      l   x1        h
+      l   mx        (my + y1)
+      l   mx        my
+      S.z
+    englandRed =
+      S.path 
+        ! (A.strokeWidth .: 6)
+        ! A.stroke colRed
+        ! A.fill "none"
+        ! A.d englandDirsRed
+    englandWhite =
+      S.path
+        ! (A.strokeWidth .: 2)
+        ! A.stroke colWhite
+        ! A.fill "none"
+        ! A.d englandDirsWhite
+    englandDirsRed = mkPath $ do
+      m   0   my
+      l   w   my
+      m   mx  0
+      l   mx  h
+    englandDirsWhite = mkPath $ do
+      m   0         (my + 4)
+      l   (mx - 4)  (my + 4)
+      l   (mx - 4)  h
+      m   (mx + 4)  h
+      l   (mx + 4)  (my + 4)
+      l   w         (my + 4)
+      m   w         (my - 4)
+      l   (mx + 4)  (my - 4)
+      l   (mx + 4)  0
+      m   (mx - 4)  0
+      l   (mx - 4)  (my - 4)
+      l   0         (my - 4)
+
+
+
+{- |
+Flag of the Holy See (Vatican City)
+
+![flag of the Holy See (Vatican City)](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/va.svg)
+-}
+va :: S.Svg
+va = 
+    S.svg 
+      ! A.viewbox "0 0 1 1"
+      ! A.width  "300px"
+      ! A.height "300px"
+      $ do
+        leftStripe
+        rightStripe
+  where
+    leftStripe =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 0.5)
+        ! (A.height .: 1)
+        ! A.stroke "none"
+        ! A.fill "#FFE000"
+    rightStripe =
+      S.rect
+        ! (A.x .: 0.5)
+        ! (A.y .: 0)
+        ! (A.width  .: 0.5)
+        ! (A.height .: 1)
+        ! A.stroke "none"
+        ! A.fill "#FFFFFF"
+
+
+
+{- |
+Flag of Kosovo
+
+![flag of Kosovo](https://raw.githubusercontent.com/RamiroPastor/SvgIcons/main/svg/images/countryFlags/xk.svg)
+-}
+xk :: Svg
+xk =
+    S.svg
+      ! A.viewbox "0 0 840 600"
+      ! A.width  "420px"
+      ! A.height "300px"
+      $ do
+        background
+        xkCoA
+        star (420 - d3, y3)
+        star (420 - d2, y2)
+        star (420 - d1, y1)
+        star (420 + d1, y1)
+        star (420 + d2, y2)
+        star (420 + d3, y3)
+  where
+    d1 = 42
+    d2 = 124.3
+    d3 = 203
+    y1 = 121.7
+    y2 = 136
+    y3 = 164.8
+    background =
+      S.rect
+        ! (A.x .: 0)
+        ! (A.y .: 0)
+        ! (A.width  .: 840)
+        ! (A.height .: 600)
+        ! A.stroke "none"
+        ! A.fill "#244AA5"
+    star (c0,c1) =
+      starRegular 5 36 (c0,c1)
+        ! A.fill "#FFFFFF"
+ src/Images/CountryFlagsCoAs.hs view
@@ -0,0 +1,102 @@+{-# LANGUAGE     OverloadedStrings       #-}
+
+
+{- |
+Coat of Arms for flags (or more generally, 
+anything hard to draw which should be put inside a flag)
+-}
+module Images.CountryFlagsCoAs where
+
+import           Text.Blaze.Svg11 ((!))
+import           Text.Blaze.Svg11 as S
+import           Text.Blaze.Svg11.Attributes as A
+
+import Core.Geometry
+import Core.Utils
+
+
+--------------------------------------------------------------------------------
+
+
+-- Flag of Albania "coat of arms"
+-- Drawn for a viewbox 0 0 980 700
+alCoA :: Svg
+alCoA =
+    S.path
+      ! A.stroke "none"
+      ! A.strokeWidth "0"
+      ! A.fillRule "evenodd"
+      ! A.fill "#000000"
+      ! A.d (S.toValue dirs)
+  where
+    dirs :: String
+    dirs = "M516.51 528.944c-6.15-5.332-13.605-16.13-13.5-26.538.55-7.761 5.873-12.27 9.312-2.796 4.862 10.457 15.29 27.749 29.66 17.605 6.278-4.608 6.18-11.392-2.428-10.614-10.63-.728-17.16-6.577-21.917-21.636-.865-8.282 2.58-8.075 7.387-2.747 6.18 7.09 18.478 17.806 32.046 12.063 7.54-3.16 9.668-9.68-1.723-11.285-10.784.157-19.587-6.834-28.35-17.498-4.805-5.9 2.282-11.856 6.537-6.834 3.795 3.26 9.11 9.266 13.665 10.094 5.267 1.034 11.796.52 19.03-3.31 7.798-6.527 5.266-11.236-4.2-12.32-7.338.364-11.335 3.153-20.8-3.16-17.014-11.5-30.54-26.865-32.653-45.347-1.388-12.156 5.148-15.837 10.582-14.438 14.78 3.802 24.449 31.422 34.675 46.595 3.348 4.373 6.424 4.444 8.6 3.096 4.102-3.517 7.378-6.408 11.48-10.34 0 0 30.085 5.406 46.468 10.746l-18.242 6.483c-6.907-3.814-15.243.298-15.243 6.915-6.536 4.52-6.01 9.819-3.19 14.933.86-3.561 1.594-8.186 6.757-8.801 7.369 3.048 15.955-1.302 15.955-7.057l21.519-8.458 21.74 12.308c0 8.32 7.883 10.956 16.085 8.71 3.865 2.4 6.35 6.564 7.659 11.017 2.42-6.422 1.915-10.956-1.875-14.107 2.175-8.303-9.46-16.287-18.467-10.97l-15.64-8.98 26.77-.75c3.107 5.5 14.337 5.803 17.613 0 2.8-.767 5.166-1.255 10.625 2.803-1.72-6.566-5.068-9.373-10.09-9.373-3.816-6.761-17.626-6.73-19.62.882l-27.881.775 16.543-11.778c6.175 3.646 14.84-.407 16.575-7.03 2.462-2.927 5.498-4.302 11.474-2.316-3.08-5.455-7.42-7.083-15.258-3.38-7.15-5.418-16.574 1.153-15.144 6.608l-22.01 14.975c-15.976-4.767-44.91-12.19-44.91-12.19 3.445-3.624 6.94-6.991 10.379-10.665 1.242-2.152-.656-4.658-3.293-5.18-25.816-5.328-40.597-15.735-49.553-42.186-3.746-11.078 4.353-14.388 7.136-7.612 3.85 9.424 8.098 19.724 19.69 27.7 3.998 2.796 15.899.513 8.86-6.164-7.29-6.006-10.428-8.588-14.02-23.19 0-7.398 7.54-10.715 11.746-3.624 4.5 14.545 4.96 20.808 13.107 30.18 6.173 7.092 14.223 11.857 18.22 11.75 7.192-.1 14.432-7.87 4.813-13.511-14.125-5.642-19.287-13.353-21.366-20.708-2.274-12.833.21-19.046 7.952-12.733 10.98 12.476 31.94 35.717 42.92 46.538 12.305 9.424 26.423 9.73 37.66.157 6.432-7.404 4.15-15.372-5.921-13.667-22.726 1.918-39.935-9.367-58.817-39.862-3.697-6.884-4.71-16.771 3.445-9.416 9.41 12.733 23.13 23.554 35.89 28.212 12.806 4.602 23.38 2.06 27.481-1.968 4.943-4.942 3.643-17.392-4.91-14.39-7.038 2.484-16.957 3.104-27.28-.883-10.331-4.038-21.06-12.733-32.45-27.485-3.9-8.332-2.63-15.373 5.265-11.08 18.68 15.845 42.775 28.678 55.072 20.967 9.062-5.643 9.215-20.138-2.274-19.204-23.137 3.153-31.891-1.968-54.115-21.585-5.058-3.781-4.708-13.361 3.34-7.248 18.68 12.063 44.19 16.77 54.214 10.458 9.013-5.643 7.694-22.885-7.491-16.778-12.151 7.404-25.565 7.197-52.442-12.006-6.78-5.642-1.723-12.997 3.844-9.837 21.617 12.32 53.104 17.598 61.3-7.454 3.188-9.574-2.58-15.166-11.035-8.54-18.576 17.185-39.635 8.746-51.423.1-3.376-1.99-9.57-12.062 1.31-10.193 28.147 6.42 55.986.828 61.05-19.103 2.937-6.47-2.84-17.912-13.113-8.332-13.512 13.354-27.84 13.817-45.857 13.717-9.166-1.918-9.263-12.012-1.57-13.51 14.223.306 28.244-5.907 39.482-12.22 10.986-6.313 20.096-15.166 22.984-27.435 1.77-10.972-8.81-22.62-15.186-10.972-9.417 17.028-30.273 33.078-53.46 35.975-1.207-2.02-4.248-7.198-7.994-5.743-6.808 2.64-14.92 6.172-23.272 10.139-18.004 8.549-25.507 12.669-23.345 27.44 2.257 15.413-9.626 25.153-19.44 22.463-8.56-2.304-13.282-10.036-11.748-23.447 1.229-10.686 11.957-23.612 24.046-30.39 7.826-4.38 19.642-6.776 33.865-9.936 8.656-1.705 13.065-5.072 13.568-8.596 0 0-5.917 4.33-15.388 3.68-4.478-.32-7.478-2.29-8.608-4.3 3.293-.67 9.264.107 14.628.107 7.135-.057 23.702-1.655 28.097-11.7 1.367-6.626-2.987-7.817-7.038-3.573-4.353 4.587-6.146 8.71-14.88 10.25-5.314.935-10.63 2.02-17.466.365 3.85-4.573 9.968-9.252 15.186-8.39 1.716.286 3.997 1.87 5.824 4.716 1.116-7.248-.865-15.43-20.25-12.013.308-5.485-11.238-7.868-18.17-7.761-3.948.1-11.998 2.433-17.816 5.222-9.214 2.853-18.324 4.922-29.06 5.7 6.23 5.328 7.395 5.642 13.616 10.143-9.41 3.517-16.7 10.765-19.991 15.53 0 0 10.986-.307 13.77.934-11.496 3.36-16.659 5.379-22.733 11.592 2.127.364 5.314.984 6.682 1.505 1.423.514 1.053 1.448-.098 2.326-2.476 1.89-12.708 13.774-15.694 16.62-2.986-2.846-13.218-14.73-15.694-16.62-1.151-.878-1.521-1.812-.098-2.326 1.367-.52 4.555-1.141 6.682-1.505-6.075-6.213-11.237-8.232-22.733-11.592 2.784-1.241 13.77-.934 13.77-.934-3.293-4.765-10.582-12.013-19.992-15.53 6.222-4.501 7.387-4.815 13.616-10.144-10.735-.777-19.845-2.846-29.06-5.7-5.817-2.788-13.867-5.121-17.815-5.221-6.933-.107-18.478 2.276-18.17 7.76-19.385-3.416-21.366 4.766-20.25 12.014 1.827-2.846 4.108-4.43 5.824-4.715 5.218-.863 11.335 3.816 15.186 8.389-6.836 1.655-12.152.57-17.467-.364-8.733-1.54-10.526-5.664-14.88-10.25-4.051-4.245-8.404-3.054-7.037 3.573 4.395 10.044 20.96 11.642 28.097 11.699 5.364 0 11.335-.778 14.628-.107-1.13 2.012-4.13 3.98-8.608 4.3-9.472.65-15.388-3.68-15.388-3.68.503 3.524 4.91 6.89 13.568 8.596 14.223 3.16 26.039 5.557 33.865 9.937 12.089 6.777 22.817 19.703 24.045 30.389 1.534 13.41-3.188 21.143-11.747 23.447-9.814 2.69-21.697-7.05-19.44-22.463 2.162-14.771-5.341-18.891-23.345-27.44-8.352-3.967-16.464-7.5-23.272-10.14-3.746-1.454-6.787 3.725-7.994 5.744-23.187-2.897-44.043-18.947-53.46-35.975-6.376-11.648-16.957 0-15.186 10.972 2.888 12.27 11.998 21.122 22.984 27.435 11.238 6.313 25.259 12.526 39.482 12.22 7.693 1.498 7.596 11.592-1.57 13.51-18.018.1-32.345-.363-45.857-13.717-10.274-9.58-16.05 1.862-13.113 8.332 5.064 19.93 32.903 25.523 61.049 19.103 10.88-1.87 4.687 8.204 1.31 10.194-11.787 8.645-32.846 17.084-51.422-.1-8.454-6.627-14.224-1.035-11.035 8.539 8.196 25.052 39.683 19.774 61.3 7.454 5.567-3.16 10.624 4.195 3.844 9.837-26.877 19.203-40.29 19.41-52.442 12.006-15.185-6.107-16.504 11.135-7.491 16.778 10.023 6.313 35.533 1.605 54.213-10.458 8.05-6.113 8.398 3.467 3.34 7.248-22.223 19.617-30.977 24.738-54.114 21.585-11.49-.934-11.336 13.56-2.274 19.204 12.297 7.71 36.39-5.122 55.07-20.966 7.897-4.294 9.166 2.747 5.267 11.079-11.39 14.752-22.12 23.447-32.45 27.485-10.323 3.987-20.242 3.367-27.28.884-8.553-3.003-9.853 9.447-4.911 14.389 4.103 4.028 14.676 6.57 27.483 1.968 12.758-4.658 26.479-15.48 35.889-28.212 8.154-7.355 7.142 2.532 3.445 9.416-18.882 30.495-36.09 41.78-58.817 39.862-10.072-1.705-12.353 6.263-5.922 13.667 11.238 9.573 25.356 9.267 37.66-.157 10.98-10.821 31.94-34.062 42.92-46.538 7.743-6.313 10.227-.1 7.953 12.733-2.08 7.355-7.24 15.066-21.366 20.708-9.62 5.643-2.38 13.41 4.813 13.51 3.997.108 12.047-4.657 18.22-11.748 8.147-9.373 8.608-15.636 13.107-30.181 4.206-7.091 11.746-3.774 11.746 3.623-3.592 14.603-6.731 17.185-14.02 23.19-7.04 6.678 4.862 8.96 8.859 6.165 11.593-7.976 15.84-18.276 19.69-27.7 2.784-6.776 10.883-3.466 7.137 7.612-8.956 26.45-23.737 36.858-49.553 42.187-2.637.52-4.535 3.027-3.294 5.179 3.44 3.674 6.935 7.04 10.38 10.665 0 0-28.935 7.423-44.911 12.19l-22.01-14.975c1.43-5.455-7.993-12.026-15.144-6.61-7.839-3.701-12.178-2.073-15.258 3.382 5.976-1.986 9.012-.611 11.474 2.315 1.735 6.624 10.4 10.677 16.575 7.03l16.543 11.78-27.88-.776c-1.995-7.611-15.805-7.643-19.622-.882-5.02 0-8.37 2.807-10.09 9.373 5.46-4.058 7.827-3.57 10.626-2.803 3.276 5.803 14.506 5.5 17.612 0l26.771.75-15.64 8.98c-9.007-5.317-20.642 2.667-18.467 10.97-3.79 3.15-4.296 7.685-1.875 14.107 1.308-4.453 3.794-8.617 7.66-11.018 8.2 2.247 16.084-.388 16.084-8.71l21.74-12.307 21.52 8.458c0 5.755 8.585 10.105 15.954 7.057 5.163.615 5.897 5.24 6.757 8.8 2.82-5.113 3.346-10.412-3.19-14.932 0-6.617-8.336-10.73-15.243-6.915l-18.242-6.483c16.383-5.34 46.469-10.745 46.469-10.745 4.101 3.93 7.377 6.822 11.48 10.34 2.176 1.347 5.252 1.276 8.6-3.097 10.226-15.173 19.894-42.793 34.675-46.595 5.434-1.4 11.97 2.282 10.582 14.438-2.114 18.482-15.64 33.848-32.652 45.347-9.466 6.313-13.463 3.524-20.801 3.16-9.466 1.084-11.998 5.793-4.2 12.32 7.234 3.83 13.763 4.344 19.03 3.31 4.555-.828 9.87-6.834 13.665-10.094 4.255-5.022 11.342.934 6.536 6.834-8.762 10.664-17.565 17.655-28.35 17.498-11.39 1.605-9.262 8.125-1.722 11.285 13.568 5.743 25.865-4.972 32.046-12.063 4.806-5.328 8.252-5.535 7.387 2.747-4.758 15.059-11.287 20.908-21.917 21.636-8.608-.778-8.706 6.006-2.428 10.614 14.37 10.144 24.798-7.148 29.66-17.605 3.439-9.473 8.76-4.965 9.312 2.796.105 10.408-7.35 21.206-13.5 26.538C457.344 534.278 490 568.18 490 568.18s32.657-33.904 26.509-39.237zm43.763-383.94c-5.083 0-8.223 1.78-8.223 3.94 0 2.194 3.14 3.982 8.223 3.982 5.053 0 8.262-1.95 8.262-4.147 0-2.16-3.21-3.776-8.262-3.776zm-140.544 0c5.083 0 8.223 1.78 8.223 3.94 0 2.194-3.14 3.982-8.223 3.982-5.053 0-8.262-1.95-8.262-4.147 0-2.16 3.21-3.776 8.262-3.776z"
+
+
+-- Flag of Cyprus "coat of arms"
+-- Drawn for a viewbox 0 0 900 600
+cyCoA :: Svg
+cyCoA = 
+  do
+    defs $
+      S.path
+        ! A.id_ "HaskellSvgIcons-cyFlagBranch"
+        ! A.stroke "none"
+        ! A.strokeWidth "0"
+        ! A.fill "#4E5B31"
+        ! A.d (S.toValue branchDirs)
+    S.path
+      ! A.stroke "none"
+      ! A.strokeWidth "0"
+      ! A.fill "#D57800"
+      ! A.d (S.toValue cyprusDirs)
+    S.use
+      ! A.xlinkHref "#HaskellSvgIcons-cyFlagBranch"
+    S.use
+      ! A.xlinkHref "#HaskellSvgIcons-cyFlagBranch"
+      ! A.transform (matrix (-1) 0 0 1 900 0)
+  where
+    cyprusDirs :: String
+    cyprusDirs = "M 727.13,103.96 l -2.35,0.93 l -0.92,0.36 L 721,105.11 l -2.67,1.28 l -4.74,3.23 l -0.20,0.15 l -1.76,0.46 l -1.64,-0.70 l -0.93,0.42 l -0.32,1.92 l -0.88,1.37 l -1.09,0.76 l -3.78,0.38 l -3.19,1.64 l -4.15,-1.11 l -1.92,0.75 l -4.1,3.69 l -2.09,0.99 l -0.73,-0.04 l -2.77,-0.14 l -1.17,0.38 l -1.75,1.69 l -3.31,0.25 l -1.03,0.71 l -1.61,3.26 l -1.75,1.80 l -1,0.21 l -1.08,-0.4 l -0.81,0.14 l -0.37,2.08 l -0.79,0.87 l -2.21,0.76 l -1.77,1.47 l -1.55,0.8 l -2.08,-0.05 h -0.47 l -2.07,1.14 l -3.9,0.34 l -1.62,1.54 l -0.35,0.33 l -0.75,0.45 l -1.24,0.74 l -0.3,0.18 l -1.5,-0.26 l -1.75,0.69 l -0.70,-1.08 l -1.21,0.72 l -1.6,0.06 l -2,-0.88 l -1.52,-0.67 l -1.11,0.16 l -0.38,1.94 l -0.03,0.20 l -1.17,1.55 l -2.18,1.32 l -0.3,0.38 l -2.48,3.20 l -4.72,4.96 l -3.99,2.02 l -4.13,1.25 l -2.9,2.38 l -7.6,3.76 L 597.58,166.7 l -2.45,0.78 l -3.52,0.56 l -6.27,2.31 l -5.53,1.67 l -0.30,0.09 l -1.1,0.33 l -7.81,2.36 l -3.63,-0.38 l -2.15,0.78 l -5.60,-0.62 l -3.9,0.07 l -2.46,0.51 l -4.63,2.22 l -7.82,3.76 l -2.58,2.36 l -4.02,2.1 l -4.71,1.49 l 0.01,-1.98 l -0.02,-0.08 l -1.63,0.51 l -1.18,0.37 l -3.82,0.59 h -2.12 l -1.32,-0.38 l -0.2,0.06 l -7.81,2.56 l -8.71,0.84 l -4.36,1.4 l -3.26,-0.05 l -2.03,0.60 l -4,0.48 l -1.42,-0.38 l -0.32,-0.08 l -11.75,0.51 l -5.37,-0.60 l -2.56,0.58 l -4.3,-1.44 l -6.26,-0.72 l -1.46,-0.43 l -3.3,-0.97 l -1.49,0.85 l -1.11,0.11 l -2.66,-0.96 l -0.96,-0.02 l -2.2,0.8 l -1.26,-0.32 l -1.17,-0.93 l -2.76,-0.41 l -1.68,-1.41 l -9.4,1.24 l -2.55,-0.75 l -8.55,-2.49 l -1.36,0.06 l -1.7,1.27 l -2.54,0.92 l -2.21,0.57 l -3.01,0.1 l -3.5,-0.91 l -3.60,-1.74 l -1.33,-0.31 l -2.97,0.3 l -0.91,0.08 l -5.46,-2.93 l -7.04,-4.4 l -4.77,-2.3 l -1.79,-0.29 l -0.24,0.85 l 0.89,2.8 l 0.3,2.77 l -0.09,2.56 l -0.04,1.58 l 0.44,1.42 l 1.72,1.91 l 0.71,1.92 l 0.52,5.28 l -0.00,5.36 l -0.83,8.55 l -0.28,1.3 l -1,4.43 l -0.91,4.06 l -3.54,10.83 l -0.97,1.34 l -2.39,1.63 l -5.41,3.68 l -3.99,2.3 l -1.26,0.52 l -3.23,0.24 l -2.01,-0.1 l -2.51,-1.36 l -2.46,-0.63 l -3.23,-2.32 l -3.6,-0.74 l -3.94,-2.27 l -1.02,-1.23 l -2.14,-0.2 l -2.97,-0.89 v -0.00 l -1.09,-0.32 l -0.75,-0.22 l 0,0 l -3.8,-0.1 l -3.54,-1.63 l -1.86,-0.45 l -2.54,-0.12 l -2.66,1.23 l 0,0 l -1.35,0.62 l -1.70,-0.67 l -1.23,0.07 l -1.4,2.11 L 308,231.1 l -0.96,0.51 l -1.2,-0.01 l -0.93,-0.02 l -1.01,0.44 l -1.36,0.59 l 0,0 l -1.20,0.52 l -0.59,0.25 l -0.01,-0.01 l -0.36,0.07 l -0.64,0.11 l -0.8,0.15 l -1.41,-0.82 l -0.75,-0.44 l -1.25,-0.25 l -0.67,0.48 l -0.13,2.3 l -0.61,1.37 l -1.96,1.73 l -1.99,1.75 l -1.38,2.04 l -3.67,8.39 l -2.3,3.38 l -0.71,0.78 l -2.41,2.66 l -2.13,1.65 l -4.92,3.81 l -4.65,1.74 l -4.01,0.82 l -1.95,0.00 l -3.7,-0.49 l -3.32,-1.02 l -3.65,-2.28 l -4,-3.21 l -5.79,-5.72 l -0.82,-0.49 l -0.17,-0.11 l -1.82,-1.16 l -1.35,0.03 l -0.53,0.87 l -0.29,1.26 l -0.24,1.12 l -0.66,6.36 l 0.04,0.36 l 0.34,2.62 l 4.4,6.15 l 1.35,3.26 l 0.22,0.37 l 0.90,1.52 l 0.69,1.16 l 0.06,0.11 l 1.5,4.48 l -1.05,2.53 l 0.53,1.7 l -1.33,1.03 l -0.24,1.46 l 3.95,4.95 l 0.86,2.18 l -0.96,3.02 l -1.53,1.67 l -0.42,0.45 l 0.21,1.28 l 1.81,1.63 l 3.08,2.75 l 1.64,4.08 l 1.25,1.1 l 1.45,-0.31 l 0.81,0.61 l 1.22,-0.02 l 1.20,1.20 l 0.78,0.37 l 1.23,0.61 l 0.97,1.27 l 0.21,3.91 l 1.82,4.86 l 0.02,2.63 l 0.01,0.37 l 1.13,1.94 l 0.35,1.53 l -0.6,4.06 l 1.44,1.30 l 1.56,-0.32 l 1.01,0.16 l 1.62,1.35 l 1.96,3 l 1.92,-0.28 l 1.22,0.58 l 5.9,5.33 l 1.33,0.67 l 0.07,0.04 l 0.96,0.48 l 1.2,1.20 l 1.85,-1.23 l 0.20,-0.02 l 2.01,-0.17 l 0.88,0.6 l 1.7,1.14 l 2.23,-0.02 l 4.84,1.48 l 2.11,0.54 l 4.26,2.64 l 1.81,1.12 l 1.07,0.87 l 1.42,1.16 l 2.84,1.22 l 2.44,0.58 l 1.32,0.31 l 1,0.38 l 0.02,-0.06 h 0.01 l -0.02,0.06 l 5.28,2.02 l 2.86,0.66 l 2.64,0.97 l 1.92,0.7 l 1.41,0.02 l 2,-1.68 l 1.93,-0.11 l 1.60,0.4 l 1.57,-0.26 l 2.48,-1.53 l 0.48,-0.71 l 1.76,-0.83 l 5.94,-0.73 l 1.73,0.56 l 4.46,-1.94 l 2.98,0.83 l 2.64,-0.93 l 5.77,1.28 l 1.53,1.08 l 1.71,1.96 l 0.21,0.00 l 1.91,0.03 l -0.8,1.33 l 2.52,2.64 l 2.27,3.44 l 0.15,0.45 l 1.65,4.86 l 1.23,1.72 l 0.86,2.40 l 0.04,1.56 l -1.34,1.02 l -0.22,0.58 l -0.07,0.21 l 0.27,0.65 l 0.50,-0.27 l 0.96,-0.53 L 380,379.26 l 2.06,0.22 l 1.36,0.14 l 2.15,-1.06 l 1.42,-0.71 l 2.29,0.98 l 2.52,-0.02 l 1.05,0.47 l 3,1.35 l 1.52,0.14 l 0.56,-0.37 l 0.36,-0.85 l -0.18,-1 L 397,377.23 l -2.53,-2.93 l -1.03,-1.51 l -0.78,-2.18 l -0.24,-2.79 l -0.17,-1.88 l 0.31,-2.47 l 0.68,-0.88 l 0.5,-1.96 h 0.00 l 0.12,-0.51 l 1.40,-1.86 l 3.72,-2.39 l 4,-3.58 l 3.16,-2.08 l 3.26,-1.41 l 0.08,-0.4 l 0.36,0.14 l 8.29,-2.81 l 0.13,-0.01 l 3.69,-0.64 l 24.92,1.75 l 0.92,-0.27 v -0.00 l 0.83,-2.33 l 0.44,-0.43 l 0.3,-0.28 l 2.74,-1.20 l 1.28,-0.18 l 3.55,0.87 l 1.45,0.35 l 2.33,-1.30 l 1.65,0.02 l 3.41,-1.86 l 2.11,0.05 l 0.8,-0.32 l 4.11,-2.95 l 3.96,-1.13 l 1.03,-0.54 l 0.36,-0.2 l 4.06,-2.14 l 2.57,-1.98 l 2.22,-1.18 l 2.43,-0.62 l 6.38,-0.44 l 1.28,-2.13 l 2.74,-0.36 l 1.65,-1.87 l 1.9,-0.77 l 1.35,-1.95 l 1.13,-1.64 l 1.59,-0.92 l 5.1,-0.32 l 6.04,0.74 l 0.8,-0.48 l 1.36,-4.87 l 1.43,-0.91 l 3.85,-5.61 l 0.01,-2.04 v -1.70 l 0.63,-2.43 l -0.43,-4.39 l 0.51,-4.44 l 2.39,-5.65 l 2.10,-2.27 l 3.4,-2.3 l 1.72,-0.75 l 2.44,-0.41 v 0.00 l 0.36,-0.06 l 0.62,-0.10 l 8.43,-0.11 c 0.11,-0.08 3.06,-0.04 3.06,-0.04 l 2.81,-0.03 L 561.38,282 l 0.50,0.08 l 2.4,0.77 l 2.77,2.15 L 570,287.89 l 0.55,0.53 l 1.9,0.8 l 0.57,0.25 l 1.57,-0.25 l 2.23,-1.16 l 1.68,-1.42 l 2.3,-1.25 l 0.05,-0.08 l 1.29,-1.94 l 0.03,-0.04 l 0.02,0.00 v -0.01 h -0.02 l 0.51,-0.77 l 4.44,-1.73 l 5.23,-0.3 l 0.58,-0.31 l 0.32,-0.17 l 1.38,-1.62 l 1.29,-0.01 l 3.13,1.13 l 2.2,-0.43 l 1.75,0.7 l 1.36,-0.16 l 2.56,-0.3 l 2.75,1.93 l 1.60,0.2 l 5.65,3.31 l 0.29,0.04 l 0.15,0.02 l 0.32,0.05 l 0.67,-0.2 l 1,-0.28 l 0.13,-0.03 l 0.12,0.17 l 0.64,0.90 l 0.88,0.12 l 1.04,-1.39 l -0.41,-0.63 l -0.15,-0.23 l -2.02,-0.41 l -1.81,-3.1 l 1.72,-1.86 l -2.71,-3.32 l -0.45,-0.55 l -0.15,-0.23 l -0.93,-1.42 l -4.74,-7.23 l -6.18,-4.93 l 0,0 l -2.16,-1.73 l -0.01,-0.01 l -0.75,-0.6 l -3.3,-3.35 l -2.35,-3.13 l -0.30,-0.67 l -0.48,-1.06 l -1.41,-3.07 l -2.46,-1.9 l -2.00,-2.19 l -0.1,-0.12 l -4.14,-5.62 l -0.68,-0.94 l -0.97,-0.56 l -2.06,-0.01 l -0.2,-0.2 l -0.11,-0.12 l 0.07,-0.07 l 0.99,-0.98 l 1.10,-0.27 l 0.47,-1.08 l -2.10,-6.1 l -0.01,-0.21 l -0.15,-1.95 l 1.71,-8.85 l 0.22,-1.07 l 2.92,-5.95 l 1.81,-1.48 l 1.98,-3.89 l 1.7,-2.48 l 1.62,-1.58 l 0.28,-0.16 l 2.93,-1.77 l 2.46,-0.34 l 2.34,-0.33 l 4.1,1.26 l 3.9,-0.07 l 0.76,-0.08 l 1.77,-0.2 l 2.91,-0.91 l 1.37,-0.84 l 0.71,-1.09 l 1.48,-4.98 l 0.47,-1.58 l 0.91,-1.72 l 5.30,-6.10 l 4.01,-3.71 l 9.01,-6.61 l 4.41,-2.63 l 2.25,-1.34 l 20.12,-8.94 l 5.23,-5.3 l 2.72,-2.75 l 4.82,-3.23 l 5.64,-2.31 l 4.85,-3.84 l 1.06,-1.33 l 1.33,-4.3 l 1.11,-0.26 l 1,-2.17 l 0.28,-0.61 l 3.96,-2.79 l 0.44,-0.22 l 15.38,-7.71 l 2.23,0.30 l 1.2,-1.79 l 4.47,-0.75 l 0.82,-0.14 l 1.1,-0.55 l 0.93,-1.6 v -0.31 l 0.12,-4.27 l 0.95,-1.15 l 0.52,-2.81 l 0.49,-0.65 l 0.51,-0.67 l 1.26,-0.89 l -0.22,-0.53 L 727.13,103.96 z"
+    branchDirs :: String
+    branchDirs = "M 463.1,506.74 c -0.13,-0.05 -0.25,-0.14 -0.34,-0.24 l -0.12,-0.11 c -0.55,-0.51 -1.08,-1.06 -1.58,-1.64 c -1.33,-1.51 -3.11,-3.72 -4.69,-5.68 c -3.11,-3.88 -5.68,-7.22 -6.17,-7.85 l -0.79,-1.03 l -7.76,-2.39 l -5.67,-2.64 l 3.03,-3.40 l 10.40,4.45 l 7.76,1.59 l 14.36,10.56 l -0.01,0.00 c -0.02,0.02 -2.08,1.73 -4.13,3.6 c -0.91,0.83 -2.06,1.9 -2.87,2.78 c -0.33,0.35 -0.64,0.74 -0.93,1.14 c -0.17,0.28 -0.32,0.57 -0.46,0.88 M 409.76,490.72 c -7.00,-0.06 -13.87,-1.98 -19.89,-5.56 h -0.00 v -0.00 c 0.73,-1.22 1.71,-2.27 2.87,-3.1 c 1.94,-1.42 5.44,-3.12 11.1,-3.15 h 0.11 c 6.7,0 14.9,2.27 24.37,6.77 C 422.71,489.00 416.29,490.75 409.76,490.72 l 0.01,0.01 L 409.76,490.72 z M 380.39,484.21 c -1.19,0.02 -2.34,-0.46 -3.17,-1.33 c -0.70,-0.82 -1.19,-1.81 -1.42,-2.87 c -0.32,-1.38 -0.43,-2.80 -0.35,-4.21 c 0.49,-0.21 1.02,-0.33 1.56,-0.35 h 0.11 c 2.51,0 4.49,2.17 5.33,4.33 c 0.46,0.95 0.56,2.04 0.27,3.06 c -0.42,0.89 -1.35,1.43 -2.34,1.37 L 380.39,484.21 z M 432.07,478.22 c -17.35,-2.47 -24.71,-8.75 -27.83,-13.58 c -1.97,-2.93 -2.90,-6.43 -2.63,-9.96 v -0.01 h 0.01 c 0.87,-0.2 1.76,-0.29 2.65,-0.29 c 4.61,0 16.43,2.32 27.8,23.84 l 0.00,0.01 l -0.02,-0.01 L 432.07,478.22 z M 396.49,474.78 c -7.41,0 -13.06,-1.28 -16.78,-3.8 c -1.58,-1.01 -2.85,-2.44 -3.68,-4.12 c -0.30,-0.63 -0.50,-1.32 -0.59,-2.02 c 2.47,-1.00 5.1,-1.56 7.76,-1.65 c 0.38,-0.01 0.76,-0.02 1.17,-0.03 c 5.73,0 14.44,1.87 23.64,10.78 l 0.00,0.00 h -0.01 c -3.82,0.52 -7.67,0.80 -11.53,0.84 L 396.49,474.78 z M 360.58,473.40 c -7.82,0 -18.56,-2.38 -25.26,-9.08 l -0.00,-0.00 h 0.02 c 5.09,-1.20 10.29,-1.89 15.52,-2.06 c 0.48,-0.01 0.98,-0.01 1.47,-0.01 c 7.33,0 12.94,1.42 16.68,4.22 c 1.04,0.62 1.82,1.61 2.17,2.78 c 0.08,0.85 -0.32,1.69 -1.05,2.15 c -1.68,1.27 -4.69,1.94 -8.94,2.01 l -0.6,0.02 L 360.58,473.40 z M 335.24,460.40 c -0.95,0.00 -1.86,-0.42 -2.47,-1.16 c -0.56,-0.74 -0.94,-1.60 -1.10,-2.52 c -0.25,-1.20 -0.35,-2.44 -0.29,-3.67 v -0.01 c 0.38,-0.17 0.79,-0.27 1.21,-0.27 l 0,0 c 0.98,0.03 1.90,0.45 2.58,1.15 c 0.75,0.74 1.33,1.64 1.68,2.64 c 0.35,0.83 0.41,1.76 0.18,2.63 c -0.29,0.73 -1.00,1.21 -1.8,1.21 L 335.24,460.40 z M 393.77,459.08 c -1.19,0.02 -2.34,-0.46 -3.17,-1.33 c -0.70,-0.82 -1.19,-1.81 -1.42,-2.87 c -0.32,-1.38 -0.43,-2.80 -0.35,-4.21 c 0.49,-0.21 1.02,-0.33 1.56,-0.35 h 0.11 c 2.51,0 4.49,2.17 5.33,4.33 c 0.46,0.95 0.56,2.04 0.27,3.06 c -0.42,0.89 -1.35,1.43 -2.34,1.37 L 393.77,459.08 z M 365.26,457.90 c -15.73,-0.55 -23.9,-5.02 -27.98,-8.68 c -1.74,-1.53 -3.18,-3.37 -4.24,-5.44 c -0.39,-0.77 -0.69,-1.59 -0.90,-2.43 l 0.02,-0.00 c 1.26,-0.38 2.56,-0.57 3.88,-0.57 h 0.36 c 5.30,0 16.11,2.22 28.85,17.15 v 0.01 L 365.26,457.90 z M 382.35,456.31 c -12.66,-1.92 -19.83,-7.36 -23.62,-11.58 c -2.33,-2.51 -4.11,-5.48 -5.21,-8.73 c 1.28,-0.29 2.58,-0.45 3.9,-0.46 c 0.16,0 0.34,-0.00 0.52,-0.00 s 0.36,0 0.55,0.00 c 6.36,0.13 17.93,3.02 23.85,20.78 h 0.01 L 382.35,456.31 z M 317.35,450.23 c -4.03,0.01 -8.04,-0.46 -11.96,-1.43 c -6.62,-1.65 -9.47,-4.18 -10.69,-6.02 c -0.52,-0.75 -0.87,-1.62 -1.03,-2.53 c -0.05,-0.35 -0.06,-0.71 -0.03,-1.07 l 0.03,-0.01 c 3.42,-0.84 6.93,-1.29 10.46,-1.32 c 0.23,0 0.48,-0.00 0.72,-0.00 c 2.87,-0.00 5.74,0.27 8.56,0.83 c 6.39,1.33 12.09,4.93 16.05,10.14 v 0.00 h -0.01 c -3.96,0.97 -8.03,1.44 -12.12,1.42 L 317.35,450.23 z M 346.74,439.55 c -1.19,0.03 -2.34,-0.44 -3.17,-1.3 c -0.71,-0.83 -1.2,-1.83 -1.42,-2.90 c -0.32,-1.37 -0.43,-2.78 -0.35,-4.18 c 0.49,-0.21 1.02,-0.33 1.56,-0.35 h 0.11 c 2.50,0 4.48,2.17 5.33,4.33 c 0.45,0.94 0.53,2.02 0.24,3.03 c -0.40,0.89 -1.32,1.44 -2.31,1.38 L 346.74,439.55 z M 324.64,436.52 c -4.20,-1.19 -8.23,-2.94 -11.96,-5.22 c -5.54,-3.41 -12.32,-9.45 -13.15,-18.83 l 0,0 h 0.01 c 0.42,-0.09 0.84,-0.14 1.27,-0.15 c 0.1,0 0.21,-0.00 0.33,-0.00 c 1.65,0 5.04,0.46 9.14,3.58 c 5.22,3.98 10.04,10.92 14.35,20.65 L 324.64,436.52 z M 339.07,435.99 c -3.43,-1.56 -6.62,-3.60 -9.46,-6.08 c -7.35,-6.33 -13.08,-14.33 -16.71,-23.33 c 0.90,-0.42 1.88,-0.66 2.88,-0.71 c 0.1,-0.00 0.2,-0.00 0.30,-0.00 c 0.15,0 0.30,0 0.46,0.00 c 2.41,0.06 6.08,1.07 10.15,5.46 c 4.67,5.04 8.85,13.34 12.4,24.65 l 0.01,0.03 l -0.03,-0.01 L 339.07,435.99 z M 301.68,434.90 c -4.82,0 -6.47,-2.61 -6.95,-3.74 c -0.48,-1.17 -0.67,-2.44 -0.55,-3.70 v -0.02 c 0.78,-0.19 1.59,-0.30 2.4,-0.31 h 0.16 c 3.15,-0.07 6.15,1.34 8.08,3.84 c 0.25,0.37 1.03,1.69 0.39,2.72 c -0.52,0.81 -1.7,1.22 -3.53,1.22 L 301.68,434.90 z M 291,421.43 c -3.73,0.00 -7.46,-0.31 -11.14,-0.95 c -4.29,-0.78 -6.72,-4.43 -8.01,-7.35 c -0.86,-1.99 -1.46,-4.10 -1.8,-6.25 h 0.01 c 13.28,0.39 19.55,4.27 22.47,7.45 c 1.81,1.88 2.94,4.32 3.20,6.92 h -0.00 c -0.02,0 -1.89,0.18 -4.74,0.18 L 291,421.43 z M 304.83,407.61 c -0.01,-0.02 -1.53,-1.9 -3.03,-4.22 c -1.57,-2.44 -3.02,-5 -3.02,-7.08 c 0,-2.01 -0.47,-6.26 -0.75,-8.61 c -0.35,-2.98 -0.72,-5.54 -0.75,-5.75 h 0.01 c 0.33,0.12 8.30,3.11 8.30,10.59 s -0.73,15.01 -0.74,15.08 v 0.01 H 304.82 L 304.83,407.61 z M 294.5,406.90 c -0.08,-0 -0.16,-0.00 -0.25,-0.02 c -2.35,-0.39 -6.5,-2.19 -11.07,-4.81 c -5.08,-2.91 -9.20,-6.03 -11.62,-8.79 c -2.2,-2.51 -3.5,-6.45 -3.88,-11.72 c -0.16,-2.38 -0.13,-4.78 0.08,-7.16 c 0.42,-0.13 0.86,-0.20 1.31,-0.2 c 1.76,0.02 3.64,0.82 6.18,2.57 c 2.31,1.64 4.48,3.49 6.49,5.51 c 2.54,2.52 4.94,5.18 7.2,7.97 l 0.03,0.04 c 0.26,0.47 2.53,4.57 4.30,8.55 c 0.88,1.83 1.56,3.76 2.02,5.74 c 0.17,0.58 0.17,1.2 0,1.78 c -0.07,0.18 -0.21,0.34 -0.38,0.44 c -0.13,0.06 -0.28,0.09 -0.44,0.09 L 294.5,406.90 z"
+
+
+
+-- Flag of Slovakia coat of arms
+-- WORK IN PROGRESS
+skCoA :: Svg
+skCoA = 
+  do
+    S.path
+      ! A.fill "#EE1C25"
+      ! A.stroke "#FFFFFF"
+      ! (A.strokeWidth .: 2*s)
+      ! A.d coatDirs
+  where
+    s = 0.09
+    k1 = 3
+    y1 = 6
+    k2 = 2.5
+    y2 = 8.3
+    cm = 5.77
+    cw = 2.77
+    coatDirs = mkPath $ do
+      m   (3 - s )  (3 - s)
+      c   (cm - k1)  y1  (cm - k2)  y2   cm           (9 + s)
+      c   (cm + k2)  y2  (cm + k1)  y1  (cm + cw + s) (3 - s)
+      S.z
+
+  
+-- Flag of Kosovo "coat of arms"
+-- Drawn for a viewbox 0 0 840 600
+xkCoA :: Svg
+xkCoA = 
+    S.path
+      ! A.stroke "none"
+      ! A.strokeWidth "0"
+      ! A.fill "#D0A650"
+      ! A.d (S.toValue dirs)
+  where
+    dirs :: String
+    dirs = "m 424.54,190.13 c 3.51,4.10 5.86,8.2 5.86,13.18 -2.95,1.45 -7.02,2.05 -9.38,4.69 14.65,-2.05 17.57,14.93 33.97,8.48 0.59,2.35 2.94,4.40 5.86,3.51 l 1.75,-4.67 c 6.43,-1.75 4.67,8.78 11.73,6.72 3.51,2.93 1.16,7.90 3.51,11.43 0,4.09 1.75,7.60 3.51,11.12 1.75,-2.03 2.91,-4.97 7.02,-4.09 2.91,3.21 5.27,6.14 5.86,9.66 -1.19,6.74 -2.94,12.59 4.08,16.11 v 2.05 c 4.70,2.05 15.24,-2.05 15.24,6.14 -0.59,2.93 2.91,0.29 4.10,2.05 2.91,-1.17 7.02,-0.57 10.54,-0.57 2.91,6.14 -3.51,10.54 -5.27,16.11 2.91,2.91 1.75,8.20 1.16,11.70 l -1.75,0.87 c 4.67,0.87 10.54,-0.56 14.65,2.07 l 7.62,2.91 c 3.51,-2.03 7.59,-2.35 12.29,-2.03 3.51,2.63 -1.19,7.02 1.75,9.06 4.11,0 7.62,0.59 8.18,4.11 l 0.59,1.16 c 2.91,-5.27 11.13,-1.75 14.65,-5.55 5.86,0 7.02,6.43 9.94,9.94 1.19,9.09 -9.94,13.20 -6.43,22.27 -2.35,4.39 -7.02,7.90 -10.54,12.01 1.16,0.59 0.56,2.03 0.56,2.91 -3.51,2.07 -0.56,8.22 -5.27,8.78 -0.56,3.82 -7.59,2.35 -5.27,6.46 4.70,6.14 -2.32,9.94 -2.32,15.53 -2.94,3.23 -8.81,-2.94 -8.81,3.23 -3.51,0.87 -7.02,-3.23 -9.34,0.28 -1.19,4.11 2.32,5.55 1.75,9.66 5.83,-0.59 7.59,5.27 9.94,8.78 l 5.86,5.86 c -5.86,4.67 -13.49,-0.59 -20.51,2.03 -1.75,-0.87 0,-3.2 -1.75,-4.07 -1.75,-2.07 -5.27,-2.07 -8.18,-2.63 0.56,2.63 -4.70,3.51 -2.35,6.71 0,0.87 1.16,3.51 -1.16,3.51 -4.70,1.47 -4.10,-4.07 -8.22,-2.03 -5.27,2.03 -1.16,9.94 -8.78,9.06 1.16,7.05 -11.70,11.73 -2.91,17.88 1.16,1.16 0.56,3.51 0.56,5.27 -5.27,4.70 -14.62,2.94 -20.48,1.19 -4.70,-1.19 -1.75,-7.05 -3.51,-10.25 -1.75,-2.94 -7.02,-4.98 -7.02,-9.09 -3.51,-1.44 -6.46,-2.35 -8.81,-5.27 -8.18,7.90 -18.16,15.53 -29.86,15.81 -5.27,2.63 -8.21,13.20 -16.40,8.81 -3.21,5.27 -12.89,0 -13.47,7.59 -3.81,1.47 -2.05,6.46 -4.39,8.78 -0.87,5.86 0,10.85 4.97,14.37 2.05,4.39 -4.39,4.39 -1.75,8.50 0.59,1.44 0,3.51 -0.87,4.10 -1.75,0.87 -2.33,1.75 -1.75,3.51 -1.45,0 -2.05,0.87 -3.21,2.03 -1.47,2.91 -6.14,4.39 -9.38,6.43 -3.21,0.87 -5.56,-1.44 -7.60,-3.51 -0.59,3.23 -3.23,4.98 -6.44,4.98 -4.69,0 -3.81,-4.11 -7.32,-5.86 1.45,-5.27 -3.23,-7.59 -1.75,-12.29 3.81,-2.91 10.24,-4.98 8.48,-11.13 -4.09,-4.95 -2.63,-12.29 -6.72,-18.16 -2.63,-2.32 -7.02,-5.83 -5.56,-11.42 3.81,-4.39 0,-9.66 -2.05,-14.33 -0.87,-3.82 -3.21,-7.34 -3.21,-11.73 -6.44,-3.79 -6.74,-13.77 -15.82,-14.65 -6.44,0 -7.60,-8.18 -14.05,-7.62 -0.59,-1.16 -2.05,-2.03 -3.23,-3.2 -4.67,3.2 -10.54,-0.87 -16.39,0.56 -3.81,-6.43 3.21,-15.21 -7.04,-19.04 v -4.07 c 1.17,0.56 1.75,-0.59 2.05,-1.19 0.58,-4.39 -7.32,-4.95 -4.09,-9.94 -1.75,-1.47 -3.81,-2.07 -2.63,-4.98 -4.40,-9.06 -17.58,-8.18 -20.51,-17.28 2.35,-2.03 2.35,-4.11 3.23,-5.86 -2.05,-3.51 -2.63,-7.31 -2.05,-11.10 2.05,-0.59 3.21,-3.23 4.39,-5.30 -2.63,-1.75 -5.85,-4.39 -8.78,-3.51 -5.27,-0.87 -9.08,-4.95 -13.77,-7.31 -1.17,-1.16 -0.57,-3.23 -0.57,-4.67 6.44,-2.07 -0.87,-11.15 7.02,-9.97 2.05,-2.63 6.44,-3.51 9.66,-5.56 3.23,-0.57 5.86,0.59 9.08,1.47 2.63,3.49 7.32,2.03 9.96,4.97 2.63,-0.59 5.86,-2.05 9.08,-0.59 0,-4.97 2.33,-7.90 5.86,-11.42 0.58,-2.03 3.79,-3.51 6.43,-4.67 4.98,1.16 10.84,1.16 14.37,-2.35 2.33,1.47 4.39,-1.45 7.02,-1.45 3.21,-0.59 5.85,0.28 8.20,1.75 0.28,-5.86 10.54,-0.87 12.59,-7.90 2.33,-4.69 -6.44,-6.44 -5.86,-10.55 -1.45,-4.69 2.05,-7.02 3.81,-10.24 2.05,-0.87 4.39,-2.05 7.02,-1.47 6.74,-2.33 1.47,-16.11 12.31,-11.12 0,1.45 -0.59,3.21 0.28,3.51 3.81,0 4.39,-4.39 7.04,-5.86 1.16,-4.09 -1.47,-9.08 2.03,-12.29 1.75,-0.29 3.23,-0.87 4.39,-2.35 0,-3.21 -1.75,-4.97 -4.39,-7.02 -0.87,1.46 -3.21,0.29 -4.68,0.87 0,-3.51 -2.04,-5.85 -2.63,-9.08 -1.75,-0.87 -2.63,-2.33 -2.03,-4.39 2.63,-2.63 0,-9.08 6.14,-7.62 2.33,-2.04 6.44,-0.58 8.78,-4.09 6.14,-3.51 14.35,-3.51 19.04,-9.96 2.05,0.29 4.39,-1.75 6.44,0 0.58,3.81 6.15,2.33 6.15,5"
− src/Images/Flags.hs
@@ -1,1483 +0,0 @@-{-# LANGUAGE     OverloadedStrings       #-}
-
-
-
-module Images.Flags where
-
-import           Text.Blaze.Svg11 ((!))
-import           Text.Blaze.Svg11 as S
-import           Text.Blaze.Svg11.Attributes as A
-
-import Core.Geometry
-import Core.Utils
-import Images.FlagsCoA
-
-
-
-flags :: [ (String , S.Svg) ]
-flags =
-  [ (,) "ad" ad
-  , (,) "af" af
-  , (,) "al" al
-  , (,) "at" at
-  , (,) "ba" ba
-  , (,) "be" be
-  , (,) "bg" bg
-  , (,) "by" blr
-  , (,) "ch" ch
-  , (,) "cy" cyp
-  , (,) "cz" cz
-  , (,) "de" de
-  , (,) "dk" dk
-  , (,) "ee" ee
-  , (,) "es" es
-  , (,) "eu" eu
-  , (,) "fi" fi
-  , (,) "fr" fr
-  , (,) "gr" gr
-  , (,) "hr" hrv
-  , (,) "ie" ie
-  , (,) "is" is
-  , (,) "it" it
-  , (,) "li" li
-  , (,) "lt" lt
-  , (,) "lu" lu
-  , (,) "lv" lv
-  , (,) "mc" mc
-  , (,) "md" md
-  , (,) "me" me
-  , (,) "mk" mk
-  , (,) "mt" mt
-  , (,) "nl" nl
-  , (,) "no" no
-  , (,) "pl" pl
-  , (,) "pt" pt
-  , (,) "ro" ro
-  , (,) "rs" rs
-  , (,) "ru" ru
-  , (,) "se" se
-  , (,) "si" si
-  , (,) "sk" sk
-  , (,) "sm" sm
-  , (,) "ua" ua
-  , (,) "uk" uk
-  , (,) "va" va
-  , (,) "xk" xk
-  ]
-
-
-flagV3Eq :: (Float,Float) -> String -> String -> String -> Svg
-flagV3Eq (w,h) c1 c2 c3 =
-    S.svg
-      ! A.viewbox (S.toValue $ "0 0 " ++ show w ++ " " ++ show h)
-      ! (A.width  .: 100*w)
-      ! (A.height .: 100*h)
-      $ do
-        leftStripe
-        centralStripe
-        rightStripe
-  where
-    leftStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: w/3)
-        ! (A.height .: h)
-        ! A.stroke "none"
-        ! A.fill (S.toValue c1)
-    centralStripe =
-      S.rect
-        ! (A.x .: w/3)
-        ! (A.y .: 0)
-        ! (A.width  .: w/3)
-        ! (A.height .: h)
-        ! A.stroke "none"
-        ! A.fill (S.toValue c2)
-    rightStripe = 
-      S.rect
-        ! (A.x .: 2*w/3)
-        ! (A.y .: 0)
-        ! (A.width  .: w/3)
-        ! (A.height .: h)
-        ! A.stroke "none"
-        ! A.fill (S.toValue c3)
-
-
-flagH3Eq :: (Float,Float) -> String -> String -> String -> Svg
-flagH3Eq (w,h) c1 c2 c3 =
-    S.svg
-      ! A.viewbox (S.toValue $ "0 0 " ++ show w ++ " " ++ show h)
-      ! (A.width  .: 100*w)
-      ! (A.height .: 100*h)
-      $ do
-        topStripe
-        midStripe
-        botStripe
-  where
-    topStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: w)
-        ! (A.height .: h/3)
-        ! A.stroke "none"
-        ! A.fill (S.toValue c1)
-    midStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: h/3)
-        ! (A.width  .: w)
-        ! (A.height .: h/3)
-        ! A.stroke "none"
-        ! A.fill (S.toValue c2)
-    botStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 2*h/3)
-        ! (A.width  .: w)
-        ! (A.height .: h/3)
-        ! A.stroke "none"
-        ! A.fill (S.toValue c3)
-
-
---------------------------------------------------------------------------------
-
--- flag of Andorra
-ad :: Svg
-ad = 
-    S.svg
-      ! A.viewbox "0 0 20 14"
-      ! A.width  "200px"
-      ! A.height "140px"
-      $ do
-        leftStripe
-        centreStripe
-        rightStripe
-  where
-    leftStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 6.4)
-        ! (A.height .: 14)
-        ! A.stroke "none"
-        ! A.fill "#10069F"
-    centreStripe =
-      S.rect
-        ! (A.x .: 6.4)
-        ! (A.y .: 0)
-        ! (A.width  .: 7.2)
-        ! (A.height .: 14)
-        ! A.stroke "none"
-        ! A.fill "#FEDD00"
-    rightStripe =
-      S.rect
-        ! (A.x .: 13.6)
-        ! (A.y .: 0)
-        ! (A.width  .: 6.4)
-        ! (A.height .: 14)
-        ! A.stroke "none"
-        ! A.fill "#D50032"
-
-
--- flag of Afghanistan
-af :: Svg
-af =
-  flagV3Eq
-    (3,2)
-    "rgb(0,0,0)"
-    "rgb(190,0,0)"
-    "rgb(0,122,54)"
-
-
--- flag of Albania
-al :: Svg
-al =
-    S.svg
-      ! A.viewbox "0 0 980 700"
-      ! A.width  "490px"
-      ! A.height "350px"
-      $ do
-        background
-        alCoA
-  where
-    background =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 980)
-        ! (A.height .: 700)
-        ! A.stroke "none"
-        ! A.fill "#FF0000"
-
-
--- flag of Austria
-at :: Svg
-at = 
-  flagH3Eq
-    (3,2)
-    "#C8102E"
-    "#FFFFFF"
-    "#C8102E"
-
-
--- flag of Bosnia and Herzegovina
-ba :: Svg
-ba = 
-    S.svg
-      ! A.viewbox "0 0 400 200"
-      ! A.width  "400px"
-      ! A.height "200px"
-      $ do
-        defs $ 
-          starDef
-        background
-        triangle
-        S.g $ do
-          star
-          star ! A.transform (translate  25  25)
-          star ! A.transform (translate  50  50)
-          star ! A.transform (translate  75  75)
-          star ! A.transform (translate 100 100)
-          star ! A.transform (translate 125 125)
-          star ! A.transform (translate 150 150)
-          star ! A.transform (translate 175 175)
-          star ! A.transform (translate 200 200)
-  where
-    background =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 400)
-        ! (A.height .: 200)
-        ! A.stroke "none"
-        ! A.fill "#001489"
-    triangle =
-      S.path
-        ! A.fill "#FFCD00"
-        ! A.stroke "none"
-        ! A.strokeWidth "0"
-        ! A.d triangleDirs
-    triangleDirs = mkPath $ do
-      m   106    0
-      l   306    0
-      l   306  200
-      S.z
-    a = (19 * (sqrt 5) - 38) / 2
-    starDef =
-      starRegular 5 19 (68,-a)
-        ! A.fill "#FFFFFF"
-        ! A.strokeWidth "0"
-        ! A.id_ "HaskellSvgIcons-baFlagStar"
-    star =
-      S.use 
-        ! A.fill "#FFFFFF"
-        ! A.xlinkHref "#HaskellSvgIcons-baFlagStar"
-
-
--- flag of Belgium
-be :: Svg
-be =
-  flagV3Eq
-    (3,2.6)
-    "#000000"
-    "#FFE936"
-    "#FF0F21"
-
-
--- flag of Bulgaria
-bg :: Svg
-bg =
-  flagH3Eq
-    (5,3)
-    "#FFFFFF"
-    "#009B74"
-    "#D01C1F"
-
-
--- flag of Belarus
-blr :: Svg
-blr = 
-    S.svg
-      ! A.viewbox "0 0 90 45"
-      ! A.width  "400px"
-      ! A.height "200px"
-      $ do
-        topStripe
-        botStripe
-        whiteStripe
-        ruchnik
-  where
-    topStripe =
-      S.rect
-        ! (A.x .: 10)
-        ! (A.y .:  0)
-        ! (A.width  .: 80)
-        ! (A.height .: 30)
-        ! A.stroke "none"
-        ! A.fill "#CF101A"
-    botStripe =
-      S.rect
-        ! (A.x .: 10)
-        ! (A.y .: 30)
-        ! (A.width  .: 80)
-        ! (A.height .: 15)
-        ! A.stroke "none"
-        ! A.fill "#007D2C"
-    whiteStripe =
-      S.rect
-        ! (A.x .: 1)
-        ! (A.y .: 0)
-        ! (A.width  .:  9)
-        ! (A.height .: 45)
-        ! A.stroke "none"
-        ! A.fill "#FFFFFF"
-    ruchnikMatrix =
-      [ [0,0,0,0,1,1,1,0,0,0,0,1]
-      , [1,0,0,1,1,1,1,1,0,0,0,1]
-      , [0,0,1,1,1,0,1,1,1,0,0,0]
-      , [0,1,1,1,0,0,0,1,1,1,0,0]
-      , [1,1,1,0,0,1,0,0,1,1,1,0] -- center 1
-      , [0,1,1,1,0,0,0,1,1,1,0,0]
-      , [0,0,1,1,1,0,1,1,1,0,0,0]
-      , [1,0,0,1,1,1,1,1,0,0,0,1]
-      , [0,0,0,0,1,1,1,0,0,0,0,1]
-      , [0,0,1,0,0,1,0,0,1,0,0,0]
-      , [0,1,1,1,0,0,0,1,1,1,0,0]
-      , [1,1,0,1,1,0,1,1,0,1,1,0] -- center 2
-      , [0,1,1,1,0,0,0,1,1,1,0,0]
-      , [0,0,1,0,0,1,0,0,1,0,0,0]
-      , [0,0,0,0,1,1,1,0,0,0,0,1]
-      , [1,0,0,1,1,1,1,1,0,0,0,1]
-      , [0,0,1,1,1,1,1,1,1,0,0,0]
-      , [0,1,1,1,1,1,1,1,1,1,0,0]
-      , [1,1,1,1,1,1,1,1,1,1,1,0]
-      , [1,1,1,1,0,0,0,1,1,1,1,1] -- center 3
-      , [0,1,1,1,1,1,0,0,1,1,1,1]
-      , [0,0,1,1,1,0,0,0,0,1,1,1]
-      , [1,0,0,1,0,0,0,0,1,1,1,1]
-      , [0,0,0,0,0,0,0,1,1,1,1,0]
-      , [1,0,0,0,0,0,1,1,1,1,0,0]
-      , [1,1,0,0,0,1,1,1,1,0,0,1]
-      , [1,1,1,0,1,1,1,1,0,0,0,0]
-      , [0,1,1,1,1,1,1,0,0,1,0,0]
-      , [0,0,1,1,1,1,0,0,0,1,1,0]
-      , [0,0,0,1,1,1,0,0,0,0,1,1]
-      , [0,0,0,0,1,1,0,1,0,0,0,1]
-      ]
-    w = 10 / 23
-    h = 45 / 61
-    ruchnik =
-      S.path
-        ! A.fill "none"
-        ! A.stroke "#CF101A"
-        ! (A.strokeWidth .: w)
-        ! A.d ruchnikDirs
-    ruchnikDirs = mkPath $ do
-      mapM_ 
-        (\n -> drawLine (fromIntegral n) $ ruchnikMatrix !! n) 
-        [0 .. 30]
-      mapM_ 
-        (\n -> drawLine (fromIntegral n) $ ruchnikMatrix !! (60 - n)) 
-        [31 .. 60]
-    drawLine n binL = do
-      mapM_ 
-        (\k ->
-          if 0 == binL !! (fromEnum k)
-            then return ()
-            else m  ( 0 + (fromIntegral k)*w + w/2)  (n*h)  >>  vr h
-        ) [0 .. 10]
-      if 0 == binL !! 11 
-        then return ()
-        else m 5 (n*h) >> vr h
-      mapM_ 
-        (\k ->
-          if 0 == binL !! k
-            then return ()
-            else m  (10 - (fromIntegral k)*w - w/2)  (n*h)  >>  vr h
-        ) [0 .. 10]
-
-
--- flag of Switzerland
-ch :: S.Svg
-ch =
-    S.svg
-      ! A.viewbox "0 0 32 32"
-      ! A.width  "200px"
-      ! A.height "200px"
-      $ do
-        background
-        cross
-  where
-    background =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 32)
-        ! (A.height .: 32)
-        ! A.stroke "none"
-        ! A.fill "#FF0000"
-    cross =
-      S.path
-        ! A.fill "none"
-        ! A.stroke "#FFFFFF"
-        ! A.strokeWidth "6"
-        ! A.d crossDirs
-    crossDirs = mkPath $ do
-      m  16  6
-      l  16 26
-      m   6 16
-      l  26 16
-
-
--- flag of Cyprus
-cyp :: S.Svg
-cyp =
-    S.svg
-      ! A.viewbox "0 0 900 600"
-      ! A.width  "300px"
-      ! A.height "200px"
-      $ do
-        background
-        cyCoA
-  where
-    background =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 900)
-        ! (A.height .: 600)
-        ! A.stroke "none"
-        ! A.fill "#FFFFFF"
-
-
--- flag of Czech Republic
-cz :: S.Svg
-cz =
-    S.svg
-      ! A.viewbox "0 0 6 4"
-      ! A.width  "300px"
-      ! A.height "200px"
-      $ do
-        topStripe
-        leftTriangle
-        botStripe
-  where
-    topStripe =
-      S.path 
-        ! A.strokeWidth "0"
-        ! A.fill "#FFFFFF"
-        ! A.d topDirs
-    topDirs = mkPath $ do
-      m  0 0
-      l  6 0
-      l  6 2
-      l  3 2
-      S.z
-    leftTriangle =
-      S.path
-        ! A.strokeWidth "0"
-        ! A.fill "#11457E"
-        ! A.d triangleDirs
-    triangleDirs = mkPath $ do
-      m  0 0
-      l  3 2
-      l  0 4
-      S.z
-    botStripe =
-      S.path
-        ! A.strokeWidth "0"
-        ! A.fill "#D7141A"
-        ! A.d botDirs
-    botDirs = mkPath $ do
-      m  0 4
-      l  6 4
-      l  6 2
-      l  3 2
-      S.z
-
-
--- flag of Germany
-de :: Svg
-de =
-  flagH3Eq
-    (5,3)
-    "rgb(0,0,0)"
-    "rgb(255,0,0)"
-    "rgb(255,204,0)"
-
-
--- flag of Denmark
-dk :: Svg
-dk =
-    S.svg
-      ! A.viewbox "0 0 37 28"
-      ! A.width  "370px"
-      ! A.height "280px"
-      $ do
-        background
-        cross
-  where
-    background =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 37)
-        ! (A.height .: 28)
-        ! A.stroke "none"
-        ! A.fill "#C8102E"
-    cross =
-      S.path
-        ! A.fill "none"
-        ! A.stroke "#FFFFFF"
-        ! A.strokeWidth "4"
-        ! A.d crossDirs
-    crossDirs = mkPath $ do
-      m  14  0
-      l  14 28
-      m   0 14
-      l  37 14
-
-
--- flag of Estonia
-ee :: Svg
-ee =
-  flagH3Eq
-    (5.5, 3.5)
-    "#0072CE"
-    "#000000"
-    "#FFFFFF"
-
-
--- flag of Spain
-es :: Svg
-es =
-    S.svg
-      ! A.viewbox "0 0 3 2"
-      ! A.width  "300px"
-      ! A.height "200px"
-      $ do
-        redBandTop
-        yellowBand
-        redBandBot
-  where
-    colRed = "rgb(198,11,30)"
-    colYellow = "rgb(255,196,0)"
-    redBandTop =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 3)
-        ! (A.height .: 0.5)
-        ! A.stroke "none"
-        ! A.fill colRed
-    yellowBand =
-      S.rect 
-        ! (A.x .: 0)
-        ! (A.y .: 0.5)
-        ! (A.width  .: 3)
-        ! (A.height .: 1)
-        ! A.stroke "none"
-        ! A.fill colYellow
-    redBandBot =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 1.5)
-        ! (A.width  .: 3)
-        ! (A.height .: 0.5)
-        ! A.stroke "none"
-        ! A.fill colRed
-
-
--- flag of the European Union
-eu :: Svg
-eu =
-    S.svg
-      ! A.viewbox "0 0 3 2"
-      ! A.width  "300px"
-      ! A.height "200px"
-      $ do
-        background
-        mapM_ star [0..11]
-  where
-    background =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 3)
-        ! (A.height .: 2)
-        ! A.stroke "none"
-        ! A.fill "#003399"
-    starPos k = 
-      ( 3/2 + (2/3) * cos (k*pi/6) 
-      , 1   + (2/3) * sin (k*pi/6)
-      )
-    star k =
-      starRegular 5 (1/9) (starPos k)
-        ! A.fill "#FFCC00"
-        ! A.id_ "HaskellSvgIcons-euFlagStar"
-
-
--- flag of Finland
-fi :: S.Svg
-fi =
-    S.svg
-      ! A.viewbox "0 0 36 22"
-      ! A.width  "360px"
-      ! A.height "220px"
-      $ do
-        background
-        cross
-  where
-    background =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 36)
-        ! (A.height .: 22)
-        ! A.stroke "none"
-        ! A.fill "#FFFFFF"
-    cross =
-      S.path
-        ! A.fill "none"
-        ! A.stroke "#002F6C"
-        ! A.strokeWidth "6"
-        ! A.d crossDirs
-    crossDirs = mkPath $ do
-      m  13  0
-      l  13 26
-      m   0 11
-      l  36 11
-
-
--- flag of France
-fr :: S.Svg
-fr =
-  flagV3Eq
-    (3,2)
-    "rgb(0,85,164)"
-    "rgb(255,255,255"
-    "rgb(239,65,53)"
-
-
--- flag of Greece
-gr :: Svg
-gr =
-    S.svg
-      ! A.viewbox "0 0 27 18"
-      ! A.width  "300px"
-      ! A.height "200px"
-      $ do
-        blueLines
-        whiteLines
-        blueSquare
-        greekCross
-  where
-    blueLines =
-      S.path
-        ! A.fill "none"
-        ! A.stroke "#004C98"
-        ! A.strokeWidth "2"
-        ! A.d blueDirs
-    whiteLines =
-      S.path
-        ! A.fill "none"
-        ! A.stroke "#FFFFFF"
-        ! A.strokeWidth "2"
-        ! A.d whiteDirs
-    blueDirs = mkPath $ do
-      m  0  1  >>  hr 27
-      m  0  5  >>  hr 27
-      m  0  9  >>  hr 27
-      m  0 13  >>  hr 27
-      m  0 17  >>  hr 27
-    whiteDirs = mkPath $ do
-      m  0  3  >>  hr 27
-      m  0  7  >>  hr 27
-      m  0 11  >>  hr 27
-      m  0 15  >>  hr 27
-    blueSquare =
-      S.rect 
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 10)
-        ! (A.height .: 10)
-        ! A.stroke "none"
-        ! A.fill "#004C98"
-    greekCross =
-      S.path
-        ! A.fill "none"
-        ! A.stroke "#FFFFFF"
-        ! A.strokeWidth "2"
-        ! A.d crossDirs
-    crossDirs = mkPath $ do
-      m   5   0
-      l   5  10
-      m   0   5
-      l  10   5
-
-
--- flag of Croatia
-hrv :: Svg
-hrv =
-  flagH3Eq
-    (4,2)
-    "#FF0000"
-    "#FFFFFF"
-    "#171796"
-
-
--- flag of Ireland
-ie :: S.Svg
-ie =
-  flagV3Eq
-    (3,1.5)
-    "rgb(22,155,98)"
-    "rgb(255,255,255)"
-    "rgb(255,136,62)"
-
-
--- flag of Iceland
-is :: S.Svg
-is = 
-    S.svg 
-      ! A.viewbox "0 0 25 18"
-      ! A.width  "250px"
-      ! A.height "180px"
-      $ do
-        background
-        whiteCross
-        redCross
-  where
-    background =
-      S.rect 
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 25)
-        ! (A.height .: 18)
-        ! A.stroke "none"
-        ! A.fill "#02529C"
-    whiteCross =
-      S.path 
-        ! A.fill "none"
-        ! A.strokeWidth "4"
-        ! A.stroke "#FFFFFF"
-        ! A.d crossDirs
-    redCross =
-      S.path 
-        ! A.fill "none"
-        ! A.strokeWidth "2"
-        ! A.stroke "#DC1E35"
-        ! A.d crossDirs
-    crossDirs = mkPath $ do
-      m   0   9
-      l  25   9
-      m   9   0
-      l   9  18
-
-
--- flag of Italy
-it :: Svg
-it = 
-  flagV3Eq
-    (3,2)
-    "rgb(0,140,69)"
-    "rgb(244,249,255"
-    "rgb(205,33,42)" 
-
-
---flag of Liechtenstein
-li :: Svg
-li = 
-    S.svg
-      ! A.viewbox "0 0 5 3"
-      ! A.width  "500px"
-      ! A.height "300px"
-      $ do
-        topStripe
-        botStripe
-  where
-    topStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 5)
-        ! (A.height .: 1.5)
-        ! A.stroke "none"
-        ! A.fill "#002780"
-    botStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 1.5)
-        ! (A.width  .: 5)
-        ! (A.height .: 1.5)
-        ! A.stroke "none"
-        ! A.fill "#CF0921"
-
-
--- flag of Lithuania
-lt :: Svg
-lt =
-  flagH3Eq
-    (5,3)
-    "#FFB81C"
-    "#046A38"
-    "#BE3A34"
-
-
--- flag of Luxembourg
-lu :: S.Svg
-lu =
-  flagH3Eq
-    (3,2)
-    "#EA141D"
-    "#FFFFFF"
-    "#51ADDA"
-
-
--- flag of Latvia
-lv :: S.Svg
-lv = 
-    S.svg
-      ! A.viewbox "0 0 20 10"
-      ! A.width  "300px"
-      ! A.height "150px"
-      $ do
-        topStripe
-        midStripe
-        botStripe
-  where
-    topStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 20)
-        ! (A.height .: 4)
-        ! A.stroke "none"
-        ! A.fill "#A4343A"
-    midStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 4)
-        ! (A.width  .: 20)
-        ! (A.height .: 2)
-        ! A.stroke "none"
-        ! A.fill "#FFFFFF"
-    botStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 6)
-        ! (A.width  .: 20)
-        ! (A.height .: 4)
-        ! A.stroke "none"
-        ! A.fill "#A4343A"
-
-
--- flag of Monaco
-mc :: S.Svg
-mc =
-    S.svg
-      ! A.viewbox "0 0 5 4"
-      ! A.width  "500px"
-      ! A.height "400px"
-      $ do
-        topStripe
-        botStripe
-  where
-    topStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 5)
-        ! (A.height .: 2)
-        ! A.stroke "none"
-        ! A.fill "#CE1126"
-    botStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 2)
-        ! (A.width  .: 5)
-        ! (A.height .: 2)
-        ! A.stroke "none"
-        ! A.fill "#FFFFFF"
-
-
--- flag of Moldova
-md :: Svg
-md =
-  flagV3Eq
-    (3,1.5)
-    "#003DA5"
-    "#FFD100"
-    "#C8102E"
-
-
--- flag of Montenegro
-me :: Svg
-me = 
-    S.svg
-      ! A.viewbox (S.toValue $ "0 0 " ++ show w ++ " " ++ show h)
-      ! A.width  "400px"
-      ! A.height "200px"
-      $ do
-        background
-        border
-  where
-    w = 400
-    h = 200
-    s = h / 40
-    background =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 400)
-        ! (A.height .: 200)
-        ! A.stroke "none"
-        ! A.fill "#FF0000"
-    border =
-      S.path
-        ! A.fill "none"
-        ! A.stroke "#E6B319"
-        ! (A.strokeWidth .: 2*s)
-        ! A.d borderDirs
-    borderDirs = mkPath $ do
-      m  (0 + s) (0 + s)
-      l  (w - s) (0 + s)
-      l  (w - s) (h - s)
-      l  (0 + s) (h - s)
-      S.z
-
-
--- flag of North Macedonia
-mk :: Svg
-mk =
-    S.svg
-      ! A.viewbox "0 0 2 1"
-      ! A.width  "400px"
-      ! A.height "200px"
-      $ do
-        background
-        rays
-        sun
-  where
-    background =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 2)
-        ! (A.height .: 1)
-        ! A.stroke "none"
-        ! A.fill "#CE2028"
-    d = 2/7
-    sun =
-      S.circle
-        ! (A.cx .: 1)
-        ! (A.cy .: 0.5)
-        ! (A.r  .: d/2)
-        ! A.fill "#F9D616"
-        ! A.stroke "#CE2028"
-        ! (A.strokeWidth .: d/8)
-    rays =
-      S.path
-        ! A.stroke "none"
-        ! A.strokeWidth "0"
-        ! A.fill "#F9D616"
-        ! A.d raysDirs
-    x1 = 1 + (1/68) * sqrt (3825 / 98)  -- 1.09187 etc.
-    x2 = 1 - (1/68) * sqrt (3825 / 98)
-    y1 = (3/5) * x1 - 1/10
-    y2 = (3/5) * x2 - 1/10
-    raysDirs = mkPath $ do
-      m  (1 - 0.1)  (0)
-      l  (1 + 0.1)  (0)
-      l  (1      )  (0.5 - d/2 + d/8)
-      S.z
-      m  (1 - 0.1)  (1)
-      l  (1 + 0.1)  (1)
-      l  (1      )  (0.5 + d/2 - d/8)
-      S.z
-      m  (0      )  (0.5 - 0.1)
-      l  (0      )  (0.5 + 0.1)
-      l  (1      )   0.5
-      S.z
-      m  (2      )  (0.5 - 0.1)
-      l  (2      )  (0.5 + 0.1)
-      l  (1      )   0.5
-      S.z
-      m  (0      )   0
-      l  (0 + 0.3)   0
-      l   x1         y1
-      S.z
-      m  (2 - 0.3)   0
-      l  (2      )   0
-      l   x2         y1
-      S.z
-      m  (2 - 0.3)   1
-      l  (2      )   1
-      l   x2         y2
-      S.z
-      m  (0      )   1
-      l  (0 + 0.3)   1
-      l   x1         y2
-      S.z
-
-
--- flag of Malta
-mt :: Svg
-mt =
-    S.svg
-      ! A.viewbox "0 0 3 2"
-      ! A.width  "300px"
-      ! A.height "200px"
-      $ do
-        leftStripe
-        rightStripe
-  where
-    leftStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 1.5)
-        ! (A.height .: 2)
-        ! A.stroke "none"
-        ! A.fill "#FFFFFF"
-    rightStripe =
-      S.rect
-        ! (A.x .: 1.5)
-        ! (A.y .: 0)
-        ! (A.width  .: 1.5)
-        ! (A.height .: 2)
-        ! A.stroke "none"
-        ! A.fill "#C01B22"
-
-
--- flag of Netherlands
-nl :: S.Svg
-nl =
-  flagH3Eq
-    (3,2)
-    "#AE1C28"
-    "#FFFFFF"
-    "#21468B"
-
-
--- flag of Norway
-no :: S.Svg
-no =
-    S.svg
-      ! A.viewbox "0 0 22 16"
-      ! A.width  "330px"
-      ! A.height "240px"
-      $ do
-        background
-        whiteCross
-        blueCross
-  where
-    background =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 22)
-        ! (A.height .: 16)
-        ! A.stroke "none"
-        ! A.fill "#BA0C2F"
-    whiteCross =
-      S.path
-        ! A.fill "none"
-        ! A.stroke "#FFFFFF"
-        ! A.strokeWidth "4"
-        ! A.d crossDirs
-    blueCross =
-      S.path
-        ! A.fill "none"
-        ! A.stroke "#00205B"
-        ! A.strokeWidth "2"
-        ! A.d crossDirs
-    crossDirs = mkPath $ do
-      m   8  0
-      l   8 16
-      m   0  8
-      l  22  8
-
-
---flag of Poland
-pl :: Svg
-pl =
-    S.svg
-      ! A.viewbox "0 0 8 5"
-      ! A.width  "400px"
-      ! A.height "250px"
-      $ do
-        topStripe
-        botStripe
-  where
-    topStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 8)
-        ! (A.height .: 2.5)
-        ! A.stroke "none"
-        ! A.fill "#FFFFFF"
-    botStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 2.5)
-        ! (A.width  .: 8)
-        ! (A.height .: 2.5)
-        ! A.stroke "none"
-        ! A.fill "#DC143C"
-
-
--- flag of Portugal
-pt :: S.Svg
-pt =
-    S.svg
-      ! A.viewbox "0 0 3 2"
-      ! A.width  "300px"
-      ! A.height "200px"
-      $ do
-        greenBand
-        redBand
-  where
-    greenBand =
-      S.rect 
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 6/5)
-        ! (A.height .: 2)
-        ! A.stroke "none"
-        ! A.fill "rgb(0,102,0)"
-    redBand =
-      S.rect
-        ! (A.x .: 6/5)
-        ! (A.y .: 0)
-        ! (A.width  .: 9/5)
-        ! (A.height .: 2)
-        ! A.stroke "none"
-        ! A.fill "rgb(255,0,0)"
-
-
--- flag of Romania
-ro :: Svg
-ro =
-  flagV3Eq
-    (3,2)
-    "#002B7F"
-    "#FCD116"
-    "#CE1126"
-
-
--- flag of Serbia
-rs :: Svg
-rs =
-  flagH3Eq
-    (3,2)
-    "#C7363D"
-    "#0C4077"
-    "#FFFFFF"
-
-
--- flag of Russia
-ru :: S.Svg
-ru =
-  flagH3Eq
-    (3,2)
-    "#FFFFFF"
-    "#0039A6"
-    "#E4181C"
-
-
--- flag of Sweden
-se :: S.Svg
-se =
-    S.svg
-      ! A.viewbox "0 0 16 10"
-      ! A.width  "320px"
-      ! A.height "200px"
-      $ do
-        background
-        cross
-  where
-    background =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 16)
-        ! (A.height .: 10)
-        ! A.stroke "none"
-        ! A.fill "#006AA7"
-    cross =
-      S.path
-        ! A.fill "none"
-        ! A.stroke "#FECC02"
-        ! A.strokeWidth "2"
-        ! A.d crossDirs
-    crossDirs = mkPath $ do
-      m   6  0
-      l   6 10
-      m   0  5
-      l  16  5
-
-
--- flag of Slovenia
-si :: Svg
-si =
-  flagH3Eq
-    (4,2)
-    "#FFFFFF"
-    "#0000FF"
-    "#FF0000"
-
-
--- flag of Slovakia
-sk :: Svg
-sk =
-    S.svg
-      ! A.viewbox "0 0 18 12"
-      ! A.width  "360px"
-      ! A.height "240px"
-      $ do
-        topStripe
-        midStripe
-        botStripe
-  where
-    topStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 18)
-        ! (A.height .:  4)
-        ! A.stroke "none"
-        ! A.fill "#FFFFFF"
-    midStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 4)
-        ! (A.width  .: 18)
-        ! (A.height .:  4)
-        ! A.stroke "none"
-        ! A.fill "#0B4EA2"
-    botStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 8)
-        ! (A.width  .: 18)
-        ! (A.height .:  4)
-        ! A.stroke "none"
-        ! A.fill "#EE1C25"
-    
-
--- flag of San Marino
-sm :: Svg
-sm =
-    S.svg
-      ! A.viewbox "0 0 4 3"
-      ! A.width  "400px"
-      ! A.height "300px"
-      $ do
-        topStripe
-        botStripe
-  where
-    topStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 4)
-        ! (A.height .: 1.5)
-        ! A.stroke "none"
-        ! A.fill "#FFFFFF"
-    botStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 1.5)
-        ! (A.width  .: 4)
-        ! (A.height .: 1.5)
-        ! A.stroke "none"
-        ! A.fill "#73E6F2"
-
-
--- flag of Ukraine
-ua :: S.Svg
-ua =
-    S.svg
-      ! A.viewbox "0 0 3 2"
-      ! A.width  "300px"
-      ! A.height "200px"
-      $ do
-        topStripe
-        botStripe
-  where
-    topStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 3)
-        ! (A.height .: 1)
-        ! A.stroke "none"
-        ! A.fill "#0057B7"
-    botStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 1)
-        ! (A.width  .: 3)
-        ! (A.height .: 1)
-        ! A.stroke "none"
-        ! A.fill "#FFDD00"
-
-
--- flag of Great Britain
-uk :: S.Svg
-uk =
-    S.svg
-      ! A.viewbox "0 0 50 30"
-      ! A.width  "250px"
-      ! A.height "150px"
-      $ do
-        scotland
-        irelandBase
-        irelandBase ! A.transform (rotateAround 180 mx my)
-        englandRed
-        englandWhite
-  where
-    w = 50
-    h = 30
-    mx = w / 2
-    my = h / 2
-    -- x0 = 3 / sin (atan (3/5))
-    x1 = 2 / sin (atan (3/5))
-    -- y0 = 3 / sin (atan (5/3))
-    y1 = 2 / sin (atan (5/3))
-    colWhite = "white"
-    colBlue = "rgb(1,33,105)"
-    colRed = "rgb(200,16,46)"
-    scotland = do
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: w)
-        ! (A.height .: h)
-        ! A.stroke "none"
-        ! A.fill colBlue
-      S.path
-        ! (A.strokeWidth .: 6)
-        ! A.stroke colWhite
-        ! A.fill "none"
-        ! A.d scotlandDirs
-    scotlandDirs = mkPath $ do
-      m   0  0
-      l   w  h
-      m   0  h
-      l   w  0
-    irelandBase =
-      S.path
-        ! A.stroke "none"
-        ! A.fill colRed
-        ! A.d irelandDirs
-    irelandDirs = mkPath $ do
-      m   0         0
-      l   0         y1
-      l   (mx - x1) my
-      l   mx        my
-      S.z
-      m   0         h
-      l   x1        h
-      l   mx        (my + y1)
-      l   mx        my
-      S.z
-    englandRed =
-      S.path 
-        ! (A.strokeWidth .: 6)
-        ! A.stroke colRed
-        ! A.fill "none"
-        ! A.d englandDirsRed
-    englandWhite =
-      S.path
-        ! (A.strokeWidth .: 2)
-        ! A.stroke colWhite
-        ! A.fill "none"
-        ! A.d englandDirsWhite
-    englandDirsRed = mkPath $ do
-      m   0   my
-      l   w   my
-      m   mx  0
-      l   mx  h
-    englandDirsWhite = mkPath $ do
-      m   0         (my + 4)
-      l   (mx - 4)  (my + 4)
-      l   (mx - 4)  h
-      m   (mx + 4)  h
-      l   (mx + 4)  (my + 4)
-      l   w         (my + 4)
-      m   w         (my - 4)
-      l   (mx + 4)  (my - 4)
-      l   (mx + 4)  0
-      m   (mx - 4)  0
-      l   (mx - 4)  (my - 4)
-      l   0         (my - 4)
-
-
--- flag of the Holy See
-va :: S.Svg
-va = 
-    S.svg 
-      ! A.viewbox "0 0 1 1"
-      ! A.width  "300px"
-      ! A.height "300px"
-      $ do
-        leftStripe
-        rightStripe
-  where
-    leftStripe =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 0.5)
-        ! (A.height .: 1)
-        ! A.stroke "none"
-        ! A.fill "#FFE000"
-    rightStripe =
-      S.rect
-        ! (A.x .: 0.5)
-        ! (A.y .: 0)
-        ! (A.width  .: 0.5)
-        ! (A.height .: 1)
-        ! A.stroke "none"
-        ! A.fill "#FFFFFF"
-
-
-
--- flag of Kosovo
-xk :: Svg
-xk =
-    S.svg
-      ! A.viewbox "0 0 840 600"
-      ! A.width  "420px"
-      ! A.height "300px"
-      $ do
-        background
-        xkCoA
-        star (420 - d3, y3)
-        star (420 - d2, y2)
-        star (420 - d1, y1)
-        star (420 + d1, y1)
-        star (420 + d2, y2)
-        star (420 + d3, y3)
-  where
-    d1 = 42
-    d2 = 124.3
-    d3 = 203
-    y1 = 121.7
-    y2 = 136
-    y3 = 164.8
-    background =
-      S.rect
-        ! (A.x .: 0)
-        ! (A.y .: 0)
-        ! (A.width  .: 840)
-        ! (A.height .: 600)
-        ! A.stroke "none"
-        ! A.fill "#244AA5"
-    star (c0,c1) =
-      starRegular 5 36 (c0,c1)
-        ! A.fill "#FFFFFF"
− src/Images/FlagsCoA.hs
@@ -1,99 +0,0 @@-{-# LANGUAGE     OverloadedStrings       #-}
-
-
-
-module Images.FlagsCoA where
-
-import           Text.Blaze.Svg11 ((!))
-import           Text.Blaze.Svg11 as S
-import           Text.Blaze.Svg11.Attributes as A
-
-import Core.Geometry
-import Core.Utils
-
-
---------------------------------------------------------------------------------
-
-
--- Flag of Albania "coat of arms"
--- Drawn for a viewbox 0 0 980 700
-alCoA :: Svg
-alCoA =
-    S.path
-      ! A.stroke "none"
-      ! A.strokeWidth "0"
-      ! A.fillRule "evenodd"
-      ! A.fill "#000000"
-      ! A.d (S.toValue dirs)
-  where
-    dirs :: String
-    dirs = "M516.51 528.944c-6.15-5.332-13.605-16.13-13.5-26.538.55-7.761 5.873-12.27 9.312-2.796 4.862 10.457 15.29 27.749 29.66 17.605 6.278-4.608 6.18-11.392-2.428-10.614-10.63-.728-17.16-6.577-21.917-21.636-.865-8.282 2.58-8.075 7.387-2.747 6.18 7.09 18.478 17.806 32.046 12.063 7.54-3.16 9.668-9.68-1.723-11.285-10.784.157-19.587-6.834-28.35-17.498-4.805-5.9 2.282-11.856 6.537-6.834 3.795 3.26 9.11 9.266 13.665 10.094 5.267 1.034 11.796.52 19.03-3.31 7.798-6.527 5.266-11.236-4.2-12.32-7.338.364-11.335 3.153-20.8-3.16-17.014-11.5-30.54-26.865-32.653-45.347-1.388-12.156 5.148-15.837 10.582-14.438 14.78 3.802 24.449 31.422 34.675 46.595 3.348 4.373 6.424 4.444 8.6 3.096 4.102-3.517 7.378-6.408 11.48-10.34 0 0 30.085 5.406 46.468 10.746l-18.242 6.483c-6.907-3.814-15.243.298-15.243 6.915-6.536 4.52-6.01 9.819-3.19 14.933.86-3.561 1.594-8.186 6.757-8.801 7.369 3.048 15.955-1.302 15.955-7.057l21.519-8.458 21.74 12.308c0 8.32 7.883 10.956 16.085 8.71 3.865 2.4 6.35 6.564 7.659 11.017 2.42-6.422 1.915-10.956-1.875-14.107 2.175-8.303-9.46-16.287-18.467-10.97l-15.64-8.98 26.77-.75c3.107 5.5 14.337 5.803 17.613 0 2.8-.767 5.166-1.255 10.625 2.803-1.72-6.566-5.068-9.373-10.09-9.373-3.816-6.761-17.626-6.73-19.62.882l-27.881.775 16.543-11.778c6.175 3.646 14.84-.407 16.575-7.03 2.462-2.927 5.498-4.302 11.474-2.316-3.08-5.455-7.42-7.083-15.258-3.38-7.15-5.418-16.574 1.153-15.144 6.608l-22.01 14.975c-15.976-4.767-44.91-12.19-44.91-12.19 3.445-3.624 6.94-6.991 10.379-10.665 1.242-2.152-.656-4.658-3.293-5.18-25.816-5.328-40.597-15.735-49.553-42.186-3.746-11.078 4.353-14.388 7.136-7.612 3.85 9.424 8.098 19.724 19.69 27.7 3.998 2.796 15.899.513 8.86-6.164-7.29-6.006-10.428-8.588-14.02-23.19 0-7.398 7.54-10.715 11.746-3.624 4.5 14.545 4.96 20.808 13.107 30.18 6.173 7.092 14.223 11.857 18.22 11.75 7.192-.1 14.432-7.87 4.813-13.511-14.125-5.642-19.287-13.353-21.366-20.708-2.274-12.833.21-19.046 7.952-12.733 10.98 12.476 31.94 35.717 42.92 46.538 12.305 9.424 26.423 9.73 37.66.157 6.432-7.404 4.15-15.372-5.921-13.667-22.726 1.918-39.935-9.367-58.817-39.862-3.697-6.884-4.71-16.771 3.445-9.416 9.41 12.733 23.13 23.554 35.89 28.212 12.806 4.602 23.38 2.06 27.481-1.968 4.943-4.942 3.643-17.392-4.91-14.39-7.038 2.484-16.957 3.104-27.28-.883-10.331-4.038-21.06-12.733-32.45-27.485-3.9-8.332-2.63-15.373 5.265-11.08 18.68 15.845 42.775 28.678 55.072 20.967 9.062-5.643 9.215-20.138-2.274-19.204-23.137 3.153-31.891-1.968-54.115-21.585-5.058-3.781-4.708-13.361 3.34-7.248 18.68 12.063 44.19 16.77 54.214 10.458 9.013-5.643 7.694-22.885-7.491-16.778-12.151 7.404-25.565 7.197-52.442-12.006-6.78-5.642-1.723-12.997 3.844-9.837 21.617 12.32 53.104 17.598 61.3-7.454 3.188-9.574-2.58-15.166-11.035-8.54-18.576 17.185-39.635 8.746-51.423.1-3.376-1.99-9.57-12.062 1.31-10.193 28.147 6.42 55.986.828 61.05-19.103 2.937-6.47-2.84-17.912-13.113-8.332-13.512 13.354-27.84 13.817-45.857 13.717-9.166-1.918-9.263-12.012-1.57-13.51 14.223.306 28.244-5.907 39.482-12.22 10.986-6.313 20.096-15.166 22.984-27.435 1.77-10.972-8.81-22.62-15.186-10.972-9.417 17.028-30.273 33.078-53.46 35.975-1.207-2.02-4.248-7.198-7.994-5.743-6.808 2.64-14.92 6.172-23.272 10.139-18.004 8.549-25.507 12.669-23.345 27.44 2.257 15.413-9.626 25.153-19.44 22.463-8.56-2.304-13.282-10.036-11.748-23.447 1.229-10.686 11.957-23.612 24.046-30.39 7.826-4.38 19.642-6.776 33.865-9.936 8.656-1.705 13.065-5.072 13.568-8.596 0 0-5.917 4.33-15.388 3.68-4.478-.32-7.478-2.29-8.608-4.3 3.293-.67 9.264.107 14.628.107 7.135-.057 23.702-1.655 28.097-11.7 1.367-6.626-2.987-7.817-7.038-3.573-4.353 4.587-6.146 8.71-14.88 10.25-5.314.935-10.63 2.02-17.466.365 3.85-4.573 9.968-9.252 15.186-8.39 1.716.286 3.997 1.87 5.824 4.716 1.116-7.248-.865-15.43-20.25-12.013.308-5.485-11.238-7.868-18.17-7.761-3.948.1-11.998 2.433-17.816 5.222-9.214 2.853-18.324 4.922-29.06 5.7 6.23 5.328 7.395 5.642 13.616 10.143-9.41 3.517-16.7 10.765-19.991 15.53 0 0 10.986-.307 13.77.934-11.496 3.36-16.659 5.379-22.733 11.592 2.127.364 5.314.984 6.682 1.505 1.423.514 1.053 1.448-.098 2.326-2.476 1.89-12.708 13.774-15.694 16.62-2.986-2.846-13.218-14.73-15.694-16.62-1.151-.878-1.521-1.812-.098-2.326 1.367-.52 4.555-1.141 6.682-1.505-6.075-6.213-11.237-8.232-22.733-11.592 2.784-1.241 13.77-.934 13.77-.934-3.293-4.765-10.582-12.013-19.992-15.53 6.222-4.501 7.387-4.815 13.616-10.144-10.735-.777-19.845-2.846-29.06-5.7-5.817-2.788-13.867-5.121-17.815-5.221-6.933-.107-18.478 2.276-18.17 7.76-19.385-3.416-21.366 4.766-20.25 12.014 1.827-2.846 4.108-4.43 5.824-4.715 5.218-.863 11.335 3.816 15.186 8.389-6.836 1.655-12.152.57-17.467-.364-8.733-1.54-10.526-5.664-14.88-10.25-4.051-4.245-8.404-3.054-7.037 3.573 4.395 10.044 20.96 11.642 28.097 11.699 5.364 0 11.335-.778 14.628-.107-1.13 2.012-4.13 3.98-8.608 4.3-9.472.65-15.388-3.68-15.388-3.68.503 3.524 4.91 6.89 13.568 8.596 14.223 3.16 26.039 5.557 33.865 9.937 12.089 6.777 22.817 19.703 24.045 30.389 1.534 13.41-3.188 21.143-11.747 23.447-9.814 2.69-21.697-7.05-19.44-22.463 2.162-14.771-5.341-18.891-23.345-27.44-8.352-3.967-16.464-7.5-23.272-10.14-3.746-1.454-6.787 3.725-7.994 5.744-23.187-2.897-44.043-18.947-53.46-35.975-6.376-11.648-16.957 0-15.186 10.972 2.888 12.27 11.998 21.122 22.984 27.435 11.238 6.313 25.259 12.526 39.482 12.22 7.693 1.498 7.596 11.592-1.57 13.51-18.018.1-32.345-.363-45.857-13.717-10.274-9.58-16.05 1.862-13.113 8.332 5.064 19.93 32.903 25.523 61.049 19.103 10.88-1.87 4.687 8.204 1.31 10.194-11.787 8.645-32.846 17.084-51.422-.1-8.454-6.627-14.224-1.035-11.035 8.539 8.196 25.052 39.683 19.774 61.3 7.454 5.567-3.16 10.624 4.195 3.844 9.837-26.877 19.203-40.29 19.41-52.442 12.006-15.185-6.107-16.504 11.135-7.491 16.778 10.023 6.313 35.533 1.605 54.213-10.458 8.05-6.113 8.398 3.467 3.34 7.248-22.223 19.617-30.977 24.738-54.114 21.585-11.49-.934-11.336 13.56-2.274 19.204 12.297 7.71 36.39-5.122 55.07-20.966 7.897-4.294 9.166 2.747 5.267 11.079-11.39 14.752-22.12 23.447-32.45 27.485-10.323 3.987-20.242 3.367-27.28.884-8.553-3.003-9.853 9.447-4.911 14.389 4.103 4.028 14.676 6.57 27.483 1.968 12.758-4.658 26.479-15.48 35.889-28.212 8.154-7.355 7.142 2.532 3.445 9.416-18.882 30.495-36.09 41.78-58.817 39.862-10.072-1.705-12.353 6.263-5.922 13.667 11.238 9.573 25.356 9.267 37.66-.157 10.98-10.821 31.94-34.062 42.92-46.538 7.743-6.313 10.227-.1 7.953 12.733-2.08 7.355-7.24 15.066-21.366 20.708-9.62 5.643-2.38 13.41 4.813 13.51 3.997.108 12.047-4.657 18.22-11.748 8.147-9.373 8.608-15.636 13.107-30.181 4.206-7.091 11.746-3.774 11.746 3.623-3.592 14.603-6.731 17.185-14.02 23.19-7.04 6.678 4.862 8.96 8.859 6.165 11.593-7.976 15.84-18.276 19.69-27.7 2.784-6.776 10.883-3.466 7.137 7.612-8.956 26.45-23.737 36.858-49.553 42.187-2.637.52-4.535 3.027-3.294 5.179 3.44 3.674 6.935 7.04 10.38 10.665 0 0-28.935 7.423-44.911 12.19l-22.01-14.975c1.43-5.455-7.993-12.026-15.144-6.61-7.839-3.701-12.178-2.073-15.258 3.382 5.976-1.986 9.012-.611 11.474 2.315 1.735 6.624 10.4 10.677 16.575 7.03l16.543 11.78-27.88-.776c-1.995-7.611-15.805-7.643-19.622-.882-5.02 0-8.37 2.807-10.09 9.373 5.46-4.058 7.827-3.57 10.626-2.803 3.276 5.803 14.506 5.5 17.612 0l26.771.75-15.64 8.98c-9.007-5.317-20.642 2.667-18.467 10.97-3.79 3.15-4.296 7.685-1.875 14.107 1.308-4.453 3.794-8.617 7.66-11.018 8.2 2.247 16.084-.388 16.084-8.71l21.74-12.307 21.52 8.458c0 5.755 8.585 10.105 15.954 7.057 5.163.615 5.897 5.24 6.757 8.8 2.82-5.113 3.346-10.412-3.19-14.932 0-6.617-8.336-10.73-15.243-6.915l-18.242-6.483c16.383-5.34 46.469-10.745 46.469-10.745 4.101 3.93 7.377 6.822 11.48 10.34 2.176 1.347 5.252 1.276 8.6-3.097 10.226-15.173 19.894-42.793 34.675-46.595 5.434-1.4 11.97 2.282 10.582 14.438-2.114 18.482-15.64 33.848-32.652 45.347-9.466 6.313-13.463 3.524-20.801 3.16-9.466 1.084-11.998 5.793-4.2 12.32 7.234 3.83 13.763 4.344 19.03 3.31 4.555-.828 9.87-6.834 13.665-10.094 4.255-5.022 11.342.934 6.536 6.834-8.762 10.664-17.565 17.655-28.35 17.498-11.39 1.605-9.262 8.125-1.722 11.285 13.568 5.743 25.865-4.972 32.046-12.063 4.806-5.328 8.252-5.535 7.387 2.747-4.758 15.059-11.287 20.908-21.917 21.636-8.608-.778-8.706 6.006-2.428 10.614 14.37 10.144 24.798-7.148 29.66-17.605 3.439-9.473 8.76-4.965 9.312 2.796.105 10.408-7.35 21.206-13.5 26.538C457.344 534.278 490 568.18 490 568.18s32.657-33.904 26.509-39.237zm43.763-383.94c-5.083 0-8.223 1.78-8.223 3.94 0 2.194 3.14 3.982 8.223 3.982 5.053 0 8.262-1.95 8.262-4.147 0-2.16-3.21-3.776-8.262-3.776zm-140.544 0c5.083 0 8.223 1.78 8.223 3.94 0 2.194-3.14 3.982-8.223 3.982-5.053 0-8.262-1.95-8.262-4.147 0-2.16 3.21-3.776 8.262-3.776z"
-
-
--- Flag of Cyprus "coat of arms"
--- Drawn for a viewbox 0 0 900 600
-cyCoA :: Svg
-cyCoA = 
-  do
-    defs $
-      S.path
-        ! A.id_ "HaskellSvgIcons-cyFlagBranch"
-        ! A.stroke "none"
-        ! A.strokeWidth "0"
-        ! A.fill "#4E5B31"
-        ! A.d (S.toValue branchDirs)
-    S.path
-      ! A.stroke "none"
-      ! A.strokeWidth "0"
-      ! A.fill "#D57800"
-      ! A.d (S.toValue cyprusDirs)
-    S.use
-      ! A.xlinkHref "#HaskellSvgIcons-cyFlagBranch"
-    S.use
-      ! A.xlinkHref "#HaskellSvgIcons-cyFlagBranch"
-      ! A.transform (matrix (-1) 0 0 1 900 0)
-  where
-    cyprusDirs :: String
-    cyprusDirs = "M 727.13,103.96 l -2.35,0.93 l -0.92,0.36 L 721,105.11 l -2.67,1.28 l -4.74,3.23 l -0.20,0.15 l -1.76,0.46 l -1.64,-0.70 l -0.93,0.42 l -0.32,1.92 l -0.88,1.37 l -1.09,0.76 l -3.78,0.38 l -3.19,1.64 l -4.15,-1.11 l -1.92,0.75 l -4.1,3.69 l -2.09,0.99 l -0.73,-0.04 l -2.77,-0.14 l -1.17,0.38 l -1.75,1.69 l -3.31,0.25 l -1.03,0.71 l -1.61,3.26 l -1.75,1.80 l -1,0.21 l -1.08,-0.4 l -0.81,0.14 l -0.37,2.08 l -0.79,0.87 l -2.21,0.76 l -1.77,1.47 l -1.55,0.8 l -2.08,-0.05 h -0.47 l -2.07,1.14 l -3.9,0.34 l -1.62,1.54 l -0.35,0.33 l -0.75,0.45 l -1.24,0.74 l -0.3,0.18 l -1.5,-0.26 l -1.75,0.69 l -0.70,-1.08 l -1.21,0.72 l -1.6,0.06 l -2,-0.88 l -1.52,-0.67 l -1.11,0.16 l -0.38,1.94 l -0.03,0.20 l -1.17,1.55 l -2.18,1.32 l -0.3,0.38 l -2.48,3.20 l -4.72,4.96 l -3.99,2.02 l -4.13,1.25 l -2.9,2.38 l -7.6,3.76 L 597.58,166.7 l -2.45,0.78 l -3.52,0.56 l -6.27,2.31 l -5.53,1.67 l -0.30,0.09 l -1.1,0.33 l -7.81,2.36 l -3.63,-0.38 l -2.15,0.78 l -5.60,-0.62 l -3.9,0.07 l -2.46,0.51 l -4.63,2.22 l -7.82,3.76 l -2.58,2.36 l -4.02,2.1 l -4.71,1.49 l 0.01,-1.98 l -0.02,-0.08 l -1.63,0.51 l -1.18,0.37 l -3.82,0.59 h -2.12 l -1.32,-0.38 l -0.2,0.06 l -7.81,2.56 l -8.71,0.84 l -4.36,1.4 l -3.26,-0.05 l -2.03,0.60 l -4,0.48 l -1.42,-0.38 l -0.32,-0.08 l -11.75,0.51 l -5.37,-0.60 l -2.56,0.58 l -4.3,-1.44 l -6.26,-0.72 l -1.46,-0.43 l -3.3,-0.97 l -1.49,0.85 l -1.11,0.11 l -2.66,-0.96 l -0.96,-0.02 l -2.2,0.8 l -1.26,-0.32 l -1.17,-0.93 l -2.76,-0.41 l -1.68,-1.41 l -9.4,1.24 l -2.55,-0.75 l -8.55,-2.49 l -1.36,0.06 l -1.7,1.27 l -2.54,0.92 l -2.21,0.57 l -3.01,0.1 l -3.5,-0.91 l -3.60,-1.74 l -1.33,-0.31 l -2.97,0.3 l -0.91,0.08 l -5.46,-2.93 l -7.04,-4.4 l -4.77,-2.3 l -1.79,-0.29 l -0.24,0.85 l 0.89,2.8 l 0.3,2.77 l -0.09,2.56 l -0.04,1.58 l 0.44,1.42 l 1.72,1.91 l 0.71,1.92 l 0.52,5.28 l -0.00,5.36 l -0.83,8.55 l -0.28,1.3 l -1,4.43 l -0.91,4.06 l -3.54,10.83 l -0.97,1.34 l -2.39,1.63 l -5.41,3.68 l -3.99,2.3 l -1.26,0.52 l -3.23,0.24 l -2.01,-0.1 l -2.51,-1.36 l -2.46,-0.63 l -3.23,-2.32 l -3.6,-0.74 l -3.94,-2.27 l -1.02,-1.23 l -2.14,-0.2 l -2.97,-0.89 v -0.00 l -1.09,-0.32 l -0.75,-0.22 l 0,0 l -3.8,-0.1 l -3.54,-1.63 l -1.86,-0.45 l -2.54,-0.12 l -2.66,1.23 l 0,0 l -1.35,0.62 l -1.70,-0.67 l -1.23,0.07 l -1.4,2.11 L 308,231.1 l -0.96,0.51 l -1.2,-0.01 l -0.93,-0.02 l -1.01,0.44 l -1.36,0.59 l 0,0 l -1.20,0.52 l -0.59,0.25 l -0.01,-0.01 l -0.36,0.07 l -0.64,0.11 l -0.8,0.15 l -1.41,-0.82 l -0.75,-0.44 l -1.25,-0.25 l -0.67,0.48 l -0.13,2.3 l -0.61,1.37 l -1.96,1.73 l -1.99,1.75 l -1.38,2.04 l -3.67,8.39 l -2.3,3.38 l -0.71,0.78 l -2.41,2.66 l -2.13,1.65 l -4.92,3.81 l -4.65,1.74 l -4.01,0.82 l -1.95,0.00 l -3.7,-0.49 l -3.32,-1.02 l -3.65,-2.28 l -4,-3.21 l -5.79,-5.72 l -0.82,-0.49 l -0.17,-0.11 l -1.82,-1.16 l -1.35,0.03 l -0.53,0.87 l -0.29,1.26 l -0.24,1.12 l -0.66,6.36 l 0.04,0.36 l 0.34,2.62 l 4.4,6.15 l 1.35,3.26 l 0.22,0.37 l 0.90,1.52 l 0.69,1.16 l 0.06,0.11 l 1.5,4.48 l -1.05,2.53 l 0.53,1.7 l -1.33,1.03 l -0.24,1.46 l 3.95,4.95 l 0.86,2.18 l -0.96,3.02 l -1.53,1.67 l -0.42,0.45 l 0.21,1.28 l 1.81,1.63 l 3.08,2.75 l 1.64,4.08 l 1.25,1.1 l 1.45,-0.31 l 0.81,0.61 l 1.22,-0.02 l 1.20,1.20 l 0.78,0.37 l 1.23,0.61 l 0.97,1.27 l 0.21,3.91 l 1.82,4.86 l 0.02,2.63 l 0.01,0.37 l 1.13,1.94 l 0.35,1.53 l -0.6,4.06 l 1.44,1.30 l 1.56,-0.32 l 1.01,0.16 l 1.62,1.35 l 1.96,3 l 1.92,-0.28 l 1.22,0.58 l 5.9,5.33 l 1.33,0.67 l 0.07,0.04 l 0.96,0.48 l 1.2,1.20 l 1.85,-1.23 l 0.20,-0.02 l 2.01,-0.17 l 0.88,0.6 l 1.7,1.14 l 2.23,-0.02 l 4.84,1.48 l 2.11,0.54 l 4.26,2.64 l 1.81,1.12 l 1.07,0.87 l 1.42,1.16 l 2.84,1.22 l 2.44,0.58 l 1.32,0.31 l 1,0.38 l 0.02,-0.06 h 0.01 l -0.02,0.06 l 5.28,2.02 l 2.86,0.66 l 2.64,0.97 l 1.92,0.7 l 1.41,0.02 l 2,-1.68 l 1.93,-0.11 l 1.60,0.4 l 1.57,-0.26 l 2.48,-1.53 l 0.48,-0.71 l 1.76,-0.83 l 5.94,-0.73 l 1.73,0.56 l 4.46,-1.94 l 2.98,0.83 l 2.64,-0.93 l 5.77,1.28 l 1.53,1.08 l 1.71,1.96 l 0.21,0.00 l 1.91,0.03 l -0.8,1.33 l 2.52,2.64 l 2.27,3.44 l 0.15,0.45 l 1.65,4.86 l 1.23,1.72 l 0.86,2.40 l 0.04,1.56 l -1.34,1.02 l -0.22,0.58 l -0.07,0.21 l 0.27,0.65 l 0.50,-0.27 l 0.96,-0.53 L 380,379.26 l 2.06,0.22 l 1.36,0.14 l 2.15,-1.06 l 1.42,-0.71 l 2.29,0.98 l 2.52,-0.02 l 1.05,0.47 l 3,1.35 l 1.52,0.14 l 0.56,-0.37 l 0.36,-0.85 l -0.18,-1 L 397,377.23 l -2.53,-2.93 l -1.03,-1.51 l -0.78,-2.18 l -0.24,-2.79 l -0.17,-1.88 l 0.31,-2.47 l 0.68,-0.88 l 0.5,-1.96 h 0.00 l 0.12,-0.51 l 1.40,-1.86 l 3.72,-2.39 l 4,-3.58 l 3.16,-2.08 l 3.26,-1.41 l 0.08,-0.4 l 0.36,0.14 l 8.29,-2.81 l 0.13,-0.01 l 3.69,-0.64 l 24.92,1.75 l 0.92,-0.27 v -0.00 l 0.83,-2.33 l 0.44,-0.43 l 0.3,-0.28 l 2.74,-1.20 l 1.28,-0.18 l 3.55,0.87 l 1.45,0.35 l 2.33,-1.30 l 1.65,0.02 l 3.41,-1.86 l 2.11,0.05 l 0.8,-0.32 l 4.11,-2.95 l 3.96,-1.13 l 1.03,-0.54 l 0.36,-0.2 l 4.06,-2.14 l 2.57,-1.98 l 2.22,-1.18 l 2.43,-0.62 l 6.38,-0.44 l 1.28,-2.13 l 2.74,-0.36 l 1.65,-1.87 l 1.9,-0.77 l 1.35,-1.95 l 1.13,-1.64 l 1.59,-0.92 l 5.1,-0.32 l 6.04,0.74 l 0.8,-0.48 l 1.36,-4.87 l 1.43,-0.91 l 3.85,-5.61 l 0.01,-2.04 v -1.70 l 0.63,-2.43 l -0.43,-4.39 l 0.51,-4.44 l 2.39,-5.65 l 2.10,-2.27 l 3.4,-2.3 l 1.72,-0.75 l 2.44,-0.41 v 0.00 l 0.36,-0.06 l 0.62,-0.10 l 8.43,-0.11 c 0.11,-0.08 3.06,-0.04 3.06,-0.04 l 2.81,-0.03 L 561.38,282 l 0.50,0.08 l 2.4,0.77 l 2.77,2.15 L 570,287.89 l 0.55,0.53 l 1.9,0.8 l 0.57,0.25 l 1.57,-0.25 l 2.23,-1.16 l 1.68,-1.42 l 2.3,-1.25 l 0.05,-0.08 l 1.29,-1.94 l 0.03,-0.04 l 0.02,0.00 v -0.01 h -0.02 l 0.51,-0.77 l 4.44,-1.73 l 5.23,-0.3 l 0.58,-0.31 l 0.32,-0.17 l 1.38,-1.62 l 1.29,-0.01 l 3.13,1.13 l 2.2,-0.43 l 1.75,0.7 l 1.36,-0.16 l 2.56,-0.3 l 2.75,1.93 l 1.60,0.2 l 5.65,3.31 l 0.29,0.04 l 0.15,0.02 l 0.32,0.05 l 0.67,-0.2 l 1,-0.28 l 0.13,-0.03 l 0.12,0.17 l 0.64,0.90 l 0.88,0.12 l 1.04,-1.39 l -0.41,-0.63 l -0.15,-0.23 l -2.02,-0.41 l -1.81,-3.1 l 1.72,-1.86 l -2.71,-3.32 l -0.45,-0.55 l -0.15,-0.23 l -0.93,-1.42 l -4.74,-7.23 l -6.18,-4.93 l 0,0 l -2.16,-1.73 l -0.01,-0.01 l -0.75,-0.6 l -3.3,-3.35 l -2.35,-3.13 l -0.30,-0.67 l -0.48,-1.06 l -1.41,-3.07 l -2.46,-1.9 l -2.00,-2.19 l -0.1,-0.12 l -4.14,-5.62 l -0.68,-0.94 l -0.97,-0.56 l -2.06,-0.01 l -0.2,-0.2 l -0.11,-0.12 l 0.07,-0.07 l 0.99,-0.98 l 1.10,-0.27 l 0.47,-1.08 l -2.10,-6.1 l -0.01,-0.21 l -0.15,-1.95 l 1.71,-8.85 l 0.22,-1.07 l 2.92,-5.95 l 1.81,-1.48 l 1.98,-3.89 l 1.7,-2.48 l 1.62,-1.58 l 0.28,-0.16 l 2.93,-1.77 l 2.46,-0.34 l 2.34,-0.33 l 4.1,1.26 l 3.9,-0.07 l 0.76,-0.08 l 1.77,-0.2 l 2.91,-0.91 l 1.37,-0.84 l 0.71,-1.09 l 1.48,-4.98 l 0.47,-1.58 l 0.91,-1.72 l 5.30,-6.10 l 4.01,-3.71 l 9.01,-6.61 l 4.41,-2.63 l 2.25,-1.34 l 20.12,-8.94 l 5.23,-5.3 l 2.72,-2.75 l 4.82,-3.23 l 5.64,-2.31 l 4.85,-3.84 l 1.06,-1.33 l 1.33,-4.3 l 1.11,-0.26 l 1,-2.17 l 0.28,-0.61 l 3.96,-2.79 l 0.44,-0.22 l 15.38,-7.71 l 2.23,0.30 l 1.2,-1.79 l 4.47,-0.75 l 0.82,-0.14 l 1.1,-0.55 l 0.93,-1.6 v -0.31 l 0.12,-4.27 l 0.95,-1.15 l 0.52,-2.81 l 0.49,-0.65 l 0.51,-0.67 l 1.26,-0.89 l -0.22,-0.53 L 727.13,103.96 z"
-    branchDirs :: String
-    branchDirs = "M 463.1,506.74 c -0.13,-0.05 -0.25,-0.14 -0.34,-0.24 l -0.12,-0.11 c -0.55,-0.51 -1.08,-1.06 -1.58,-1.64 c -1.33,-1.51 -3.11,-3.72 -4.69,-5.68 c -3.11,-3.88 -5.68,-7.22 -6.17,-7.85 l -0.79,-1.03 l -7.76,-2.39 l -5.67,-2.64 l 3.03,-3.40 l 10.40,4.45 l 7.76,1.59 l 14.36,10.56 l -0.01,0.00 c -0.02,0.02 -2.08,1.73 -4.13,3.6 c -0.91,0.83 -2.06,1.9 -2.87,2.78 c -0.33,0.35 -0.64,0.74 -0.93,1.14 c -0.17,0.28 -0.32,0.57 -0.46,0.88 M 409.76,490.72 c -7.00,-0.06 -13.87,-1.98 -19.89,-5.56 h -0.00 v -0.00 c 0.73,-1.22 1.71,-2.27 2.87,-3.1 c 1.94,-1.42 5.44,-3.12 11.1,-3.15 h 0.11 c 6.7,0 14.9,2.27 24.37,6.77 C 422.71,489.00 416.29,490.75 409.76,490.72 l 0.01,0.01 L 409.76,490.72 z M 380.39,484.21 c -1.19,0.02 -2.34,-0.46 -3.17,-1.33 c -0.70,-0.82 -1.19,-1.81 -1.42,-2.87 c -0.32,-1.38 -0.43,-2.80 -0.35,-4.21 c 0.49,-0.21 1.02,-0.33 1.56,-0.35 h 0.11 c 2.51,0 4.49,2.17 5.33,4.33 c 0.46,0.95 0.56,2.04 0.27,3.06 c -0.42,0.89 -1.35,1.43 -2.34,1.37 L 380.39,484.21 z M 432.07,478.22 c -17.35,-2.47 -24.71,-8.75 -27.83,-13.58 c -1.97,-2.93 -2.90,-6.43 -2.63,-9.96 v -0.01 h 0.01 c 0.87,-0.2 1.76,-0.29 2.65,-0.29 c 4.61,0 16.43,2.32 27.8,23.84 l 0.00,0.01 l -0.02,-0.01 L 432.07,478.22 z M 396.49,474.78 c -7.41,0 -13.06,-1.28 -16.78,-3.8 c -1.58,-1.01 -2.85,-2.44 -3.68,-4.12 c -0.30,-0.63 -0.50,-1.32 -0.59,-2.02 c 2.47,-1.00 5.1,-1.56 7.76,-1.65 c 0.38,-0.01 0.76,-0.02 1.17,-0.03 c 5.73,0 14.44,1.87 23.64,10.78 l 0.00,0.00 h -0.01 c -3.82,0.52 -7.67,0.80 -11.53,0.84 L 396.49,474.78 z M 360.58,473.40 c -7.82,0 -18.56,-2.38 -25.26,-9.08 l -0.00,-0.00 h 0.02 c 5.09,-1.20 10.29,-1.89 15.52,-2.06 c 0.48,-0.01 0.98,-0.01 1.47,-0.01 c 7.33,0 12.94,1.42 16.68,4.22 c 1.04,0.62 1.82,1.61 2.17,2.78 c 0.08,0.85 -0.32,1.69 -1.05,2.15 c -1.68,1.27 -4.69,1.94 -8.94,2.01 l -0.6,0.02 L 360.58,473.40 z M 335.24,460.40 c -0.95,0.00 -1.86,-0.42 -2.47,-1.16 c -0.56,-0.74 -0.94,-1.60 -1.10,-2.52 c -0.25,-1.20 -0.35,-2.44 -0.29,-3.67 v -0.01 c 0.38,-0.17 0.79,-0.27 1.21,-0.27 l 0,0 c 0.98,0.03 1.90,0.45 2.58,1.15 c 0.75,0.74 1.33,1.64 1.68,2.64 c 0.35,0.83 0.41,1.76 0.18,2.63 c -0.29,0.73 -1.00,1.21 -1.8,1.21 L 335.24,460.40 z M 393.77,459.08 c -1.19,0.02 -2.34,-0.46 -3.17,-1.33 c -0.70,-0.82 -1.19,-1.81 -1.42,-2.87 c -0.32,-1.38 -0.43,-2.80 -0.35,-4.21 c 0.49,-0.21 1.02,-0.33 1.56,-0.35 h 0.11 c 2.51,0 4.49,2.17 5.33,4.33 c 0.46,0.95 0.56,2.04 0.27,3.06 c -0.42,0.89 -1.35,1.43 -2.34,1.37 L 393.77,459.08 z M 365.26,457.90 c -15.73,-0.55 -23.9,-5.02 -27.98,-8.68 c -1.74,-1.53 -3.18,-3.37 -4.24,-5.44 c -0.39,-0.77 -0.69,-1.59 -0.90,-2.43 l 0.02,-0.00 c 1.26,-0.38 2.56,-0.57 3.88,-0.57 h 0.36 c 5.30,0 16.11,2.22 28.85,17.15 v 0.01 L 365.26,457.90 z M 382.35,456.31 c -12.66,-1.92 -19.83,-7.36 -23.62,-11.58 c -2.33,-2.51 -4.11,-5.48 -5.21,-8.73 c 1.28,-0.29 2.58,-0.45 3.9,-0.46 c 0.16,0 0.34,-0.00 0.52,-0.00 s 0.36,0 0.55,0.00 c 6.36,0.13 17.93,3.02 23.85,20.78 h 0.01 L 382.35,456.31 z M 317.35,450.23 c -4.03,0.01 -8.04,-0.46 -11.96,-1.43 c -6.62,-1.65 -9.47,-4.18 -10.69,-6.02 c -0.52,-0.75 -0.87,-1.62 -1.03,-2.53 c -0.05,-0.35 -0.06,-0.71 -0.03,-1.07 l 0.03,-0.01 c 3.42,-0.84 6.93,-1.29 10.46,-1.32 c 0.23,0 0.48,-0.00 0.72,-0.00 c 2.87,-0.00 5.74,0.27 8.56,0.83 c 6.39,1.33 12.09,4.93 16.05,10.14 v 0.00 h -0.01 c -3.96,0.97 -8.03,1.44 -12.12,1.42 L 317.35,450.23 z M 346.74,439.55 c -1.19,0.03 -2.34,-0.44 -3.17,-1.3 c -0.71,-0.83 -1.2,-1.83 -1.42,-2.90 c -0.32,-1.37 -0.43,-2.78 -0.35,-4.18 c 0.49,-0.21 1.02,-0.33 1.56,-0.35 h 0.11 c 2.50,0 4.48,2.17 5.33,4.33 c 0.45,0.94 0.53,2.02 0.24,3.03 c -0.40,0.89 -1.32,1.44 -2.31,1.38 L 346.74,439.55 z M 324.64,436.52 c -4.20,-1.19 -8.23,-2.94 -11.96,-5.22 c -5.54,-3.41 -12.32,-9.45 -13.15,-18.83 l 0,0 h 0.01 c 0.42,-0.09 0.84,-0.14 1.27,-0.15 c 0.1,0 0.21,-0.00 0.33,-0.00 c 1.65,0 5.04,0.46 9.14,3.58 c 5.22,3.98 10.04,10.92 14.35,20.65 L 324.64,436.52 z M 339.07,435.99 c -3.43,-1.56 -6.62,-3.60 -9.46,-6.08 c -7.35,-6.33 -13.08,-14.33 -16.71,-23.33 c 0.90,-0.42 1.88,-0.66 2.88,-0.71 c 0.1,-0.00 0.2,-0.00 0.30,-0.00 c 0.15,0 0.30,0 0.46,0.00 c 2.41,0.06 6.08,1.07 10.15,5.46 c 4.67,5.04 8.85,13.34 12.4,24.65 l 0.01,0.03 l -0.03,-0.01 L 339.07,435.99 z M 301.68,434.90 c -4.82,0 -6.47,-2.61 -6.95,-3.74 c -0.48,-1.17 -0.67,-2.44 -0.55,-3.70 v -0.02 c 0.78,-0.19 1.59,-0.30 2.4,-0.31 h 0.16 c 3.15,-0.07 6.15,1.34 8.08,3.84 c 0.25,0.37 1.03,1.69 0.39,2.72 c -0.52,0.81 -1.7,1.22 -3.53,1.22 L 301.68,434.90 z M 291,421.43 c -3.73,0.00 -7.46,-0.31 -11.14,-0.95 c -4.29,-0.78 -6.72,-4.43 -8.01,-7.35 c -0.86,-1.99 -1.46,-4.10 -1.8,-6.25 h 0.01 c 13.28,0.39 19.55,4.27 22.47,7.45 c 1.81,1.88 2.94,4.32 3.20,6.92 h -0.00 c -0.02,0 -1.89,0.18 -4.74,0.18 L 291,421.43 z M 304.83,407.61 c -0.01,-0.02 -1.53,-1.9 -3.03,-4.22 c -1.57,-2.44 -3.02,-5 -3.02,-7.08 c 0,-2.01 -0.47,-6.26 -0.75,-8.61 c -0.35,-2.98 -0.72,-5.54 -0.75,-5.75 h 0.01 c 0.33,0.12 8.30,3.11 8.30,10.59 s -0.73,15.01 -0.74,15.08 v 0.01 H 304.82 L 304.83,407.61 z M 294.5,406.90 c -0.08,-0 -0.16,-0.00 -0.25,-0.02 c -2.35,-0.39 -6.5,-2.19 -11.07,-4.81 c -5.08,-2.91 -9.20,-6.03 -11.62,-8.79 c -2.2,-2.51 -3.5,-6.45 -3.88,-11.72 c -0.16,-2.38 -0.13,-4.78 0.08,-7.16 c 0.42,-0.13 0.86,-0.20 1.31,-0.2 c 1.76,0.02 3.64,0.82 6.18,2.57 c 2.31,1.64 4.48,3.49 6.49,5.51 c 2.54,2.52 4.94,5.18 7.2,7.97 l 0.03,0.04 c 0.26,0.47 2.53,4.57 4.30,8.55 c 0.88,1.83 1.56,3.76 2.02,5.74 c 0.17,0.58 0.17,1.2 0,1.78 c -0.07,0.18 -0.21,0.34 -0.38,0.44 c -0.13,0.06 -0.28,0.09 -0.44,0.09 L 294.5,406.90 z"
-
-
-
--- Flag of Slovakia coat of arms
--- WORK IN PROGRESS
-skCoA :: Svg
-skCoA = 
-  do
-    S.path
-      ! A.fill "#EE1C25"
-      ! A.stroke "#FFFFFF"
-      ! (A.strokeWidth .: 2*s)
-      ! A.d coatDirs
-  where
-    s = 0.09
-    k1 = 3
-    y1 = 6
-    k2 = 2.5
-    y2 = 8.3
-    cm = 5.77
-    cw = 2.77
-    coatDirs = mkPath $ do
-      m   (3 - s )  (3 - s)
-      c   (cm - k1)  y1  (cm - k2)  y2   cm           (9 + s)
-      c   (cm + k2)  y2  (cm + k1)  y1  (cm + cw + s) (3 - s)
-      S.z
-
-  
--- Flag of Kosovo "coat of arms"
--- Drawn for a viewbox 0 0 840 600
-xkCoA :: Svg
-xkCoA = 
-    S.path
-      ! A.stroke "none"
-      ! A.strokeWidth "0"
-      ! A.fill "#D0A650"
-      ! A.d (S.toValue dirs)
-  where
-    dirs :: String
-    dirs = "m 424.54,190.13 c 3.51,4.10 5.86,8.2 5.86,13.18 -2.95,1.45 -7.02,2.05 -9.38,4.69 14.65,-2.05 17.57,14.93 33.97,8.48 0.59,2.35 2.94,4.40 5.86,3.51 l 1.75,-4.67 c 6.43,-1.75 4.67,8.78 11.73,6.72 3.51,2.93 1.16,7.90 3.51,11.43 0,4.09 1.75,7.60 3.51,11.12 1.75,-2.03 2.91,-4.97 7.02,-4.09 2.91,3.21 5.27,6.14 5.86,9.66 -1.19,6.74 -2.94,12.59 4.08,16.11 v 2.05 c 4.70,2.05 15.24,-2.05 15.24,6.14 -0.59,2.93 2.91,0.29 4.10,2.05 2.91,-1.17 7.02,-0.57 10.54,-0.57 2.91,6.14 -3.51,10.54 -5.27,16.11 2.91,2.91 1.75,8.20 1.16,11.70 l -1.75,0.87 c 4.67,0.87 10.54,-0.56 14.65,2.07 l 7.62,2.91 c 3.51,-2.03 7.59,-2.35 12.29,-2.03 3.51,2.63 -1.19,7.02 1.75,9.06 4.11,0 7.62,0.59 8.18,4.11 l 0.59,1.16 c 2.91,-5.27 11.13,-1.75 14.65,-5.55 5.86,0 7.02,6.43 9.94,9.94 1.19,9.09 -9.94,13.20 -6.43,22.27 -2.35,4.39 -7.02,7.90 -10.54,12.01 1.16,0.59 0.56,2.03 0.56,2.91 -3.51,2.07 -0.56,8.22 -5.27,8.78 -0.56,3.82 -7.59,2.35 -5.27,6.46 4.70,6.14 -2.32,9.94 -2.32,15.53 -2.94,3.23 -8.81,-2.94 -8.81,3.23 -3.51,0.87 -7.02,-3.23 -9.34,0.28 -1.19,4.11 2.32,5.55 1.75,9.66 5.83,-0.59 7.59,5.27 9.94,8.78 l 5.86,5.86 c -5.86,4.67 -13.49,-0.59 -20.51,2.03 -1.75,-0.87 0,-3.2 -1.75,-4.07 -1.75,-2.07 -5.27,-2.07 -8.18,-2.63 0.56,2.63 -4.70,3.51 -2.35,6.71 0,0.87 1.16,3.51 -1.16,3.51 -4.70,1.47 -4.10,-4.07 -8.22,-2.03 -5.27,2.03 -1.16,9.94 -8.78,9.06 1.16,7.05 -11.70,11.73 -2.91,17.88 1.16,1.16 0.56,3.51 0.56,5.27 -5.27,4.70 -14.62,2.94 -20.48,1.19 -4.70,-1.19 -1.75,-7.05 -3.51,-10.25 -1.75,-2.94 -7.02,-4.98 -7.02,-9.09 -3.51,-1.44 -6.46,-2.35 -8.81,-5.27 -8.18,7.90 -18.16,15.53 -29.86,15.81 -5.27,2.63 -8.21,13.20 -16.40,8.81 -3.21,5.27 -12.89,0 -13.47,7.59 -3.81,1.47 -2.05,6.46 -4.39,8.78 -0.87,5.86 0,10.85 4.97,14.37 2.05,4.39 -4.39,4.39 -1.75,8.50 0.59,1.44 0,3.51 -0.87,4.10 -1.75,0.87 -2.33,1.75 -1.75,3.51 -1.45,0 -2.05,0.87 -3.21,2.03 -1.47,2.91 -6.14,4.39 -9.38,6.43 -3.21,0.87 -5.56,-1.44 -7.60,-3.51 -0.59,3.23 -3.23,4.98 -6.44,4.98 -4.69,0 -3.81,-4.11 -7.32,-5.86 1.45,-5.27 -3.23,-7.59 -1.75,-12.29 3.81,-2.91 10.24,-4.98 8.48,-11.13 -4.09,-4.95 -2.63,-12.29 -6.72,-18.16 -2.63,-2.32 -7.02,-5.83 -5.56,-11.42 3.81,-4.39 0,-9.66 -2.05,-14.33 -0.87,-3.82 -3.21,-7.34 -3.21,-11.73 -6.44,-3.79 -6.74,-13.77 -15.82,-14.65 -6.44,0 -7.60,-8.18 -14.05,-7.62 -0.59,-1.16 -2.05,-2.03 -3.23,-3.2 -4.67,3.2 -10.54,-0.87 -16.39,0.56 -3.81,-6.43 3.21,-15.21 -7.04,-19.04 v -4.07 c 1.17,0.56 1.75,-0.59 2.05,-1.19 0.58,-4.39 -7.32,-4.95 -4.09,-9.94 -1.75,-1.47 -3.81,-2.07 -2.63,-4.98 -4.40,-9.06 -17.58,-8.18 -20.51,-17.28 2.35,-2.03 2.35,-4.11 3.23,-5.86 -2.05,-3.51 -2.63,-7.31 -2.05,-11.10 2.05,-0.59 3.21,-3.23 4.39,-5.30 -2.63,-1.75 -5.85,-4.39 -8.78,-3.51 -5.27,-0.87 -9.08,-4.95 -13.77,-7.31 -1.17,-1.16 -0.57,-3.23 -0.57,-4.67 6.44,-2.07 -0.87,-11.15 7.02,-9.97 2.05,-2.63 6.44,-3.51 9.66,-5.56 3.23,-0.57 5.86,0.59 9.08,1.47 2.63,3.49 7.32,2.03 9.96,4.97 2.63,-0.59 5.86,-2.05 9.08,-0.59 0,-4.97 2.33,-7.90 5.86,-11.42 0.58,-2.03 3.79,-3.51 6.43,-4.67 4.98,1.16 10.84,1.16 14.37,-2.35 2.33,1.47 4.39,-1.45 7.02,-1.45 3.21,-0.59 5.85,0.28 8.20,1.75 0.28,-5.86 10.54,-0.87 12.59,-7.90 2.33,-4.69 -6.44,-6.44 -5.86,-10.55 -1.45,-4.69 2.05,-7.02 3.81,-10.24 2.05,-0.87 4.39,-2.05 7.02,-1.47 6.74,-2.33 1.47,-16.11 12.31,-11.12 0,1.45 -0.59,3.21 0.28,3.51 3.81,0 4.39,-4.39 7.04,-5.86 1.16,-4.09 -1.47,-9.08 2.03,-12.29 1.75,-0.29 3.23,-0.87 4.39,-2.35 0,-3.21 -1.75,-4.97 -4.39,-7.02 -0.87,1.46 -3.21,0.29 -4.68,0.87 0,-3.51 -2.04,-5.85 -2.63,-9.08 -1.75,-0.87 -2.63,-2.33 -2.03,-4.39 2.63,-2.63 0,-9.08 6.14,-7.62 2.33,-2.04 6.44,-0.58 8.78,-4.09 6.14,-3.51 14.35,-3.51 19.04,-9.96 2.05,0.29 4.39,-1.75 6.44,0 0.58,3.81 6.15,2.33 6.15,5"
src/Main.hs view
@@ -17,8 +17,8 @@ import Icons.Religion (svgReligion)
 import Icons.Textarea (svgTextarea)
 import Icons.Tools    (svgTools)
-import Images.Flags   (flags)
-import Images.Mosaics (mosaicSample)
+import Images.CountryFlags (countryFlags)
+import Images.Mosaics      (mosaicSample)
 
 
 
@@ -37,7 +37,7 @@   createDirectory                svgFolder
   renderIcons   (svgFolder ++ "/icons/")
   createDirectory (svgFolder ++ "/images")
-  renderFlags   (svgFolder ++ "/images/flags/")
+  renderCountryFlags (svgFolder ++ "/images/countryFlags/")
   renderMosaics (svgFolder ++ "/images/mosaics/")
   renderTest    (svgFolder ++ "/test/") (starRegular 7 0.9 (0,0))
   putStrLn "Svg files compiled correctly"
@@ -101,10 +101,10 @@     
 
 
-renderFlags :: FilePath -> IO ()
-renderFlags path = do
+renderCountryFlags :: FilePath -> IO ()
+renderCountryFlags path = do
   createDirectory path
-  renderSvgFiles path flags
+  renderSvgFiles path countryFlags
 
 
 
svg-icons.cabal view
@@ -1,6 +1,6 @@ cabal-version:      2.4
 name:               svg-icons
-version:            0.1.0.2
+version:            0.1.0.3
 homepage:           https://github.com/RamiroPastor/SvgIcons
 license:            BSD-3-Clause
 license-file:       LICENSE
@@ -39,8 +39,8 @@     Icons.Religion,
     Icons.Textarea,
     Icons.Tools,
-    Images.Flags,
-    Images.FlagsCoA,
+    Images.CountryFlags,
+    Images.CountryFlagsCoAs,
     Images.Mosaics,
     Main
 
@@ -58,7 +58,7 @@   hs-source-dirs:   src
   default-language: Haskell2010
 
-executable SvgIcons-exe
+executable svg-icons-exe
   default-language: Haskell2010
   hs-source-dirs: src
   main-is: Main.hs
@@ -82,8 +82,8 @@     Icons.Religion,
     Icons.Textarea,
     Icons.Tools,
-    Images.Flags,
-    Images.FlagsCoA,
+    Images.CountryFlags,
+    Images.CountryFlagsCoAs,
     Images.Mosaics