{-# LANGUAGE BangPatterns #-}
module Main where

import ByteCodeLink
import CoreMonad
import Data.Array
import DataCon
import GHC
import GHC.Exts.Heap
import HscTypes
import Linker
import RtClosureInspect
import TcEnv
import Type
import TcRnMonad
import TcType
import Control.Applicative
import Name (getOccString)
import Unsafe.Coerce
import Control.Monad
import Data.Maybe
import Bag
import Outputable
import GhcMonad
import X

import System.Environment

main :: IO ()
main = do [libdir] <- getArgs
          runGhc (Just libdir) doit

doit :: Ghc ()
doit = do
  dflags' <- getSessionDynFlags
  primPackages <- setSessionDynFlags dflags'
  dflags <- getSessionDynFlags
  target <- guessTarget "X.hs" Nothing
  setTargets [target]
  load LoadAllTargets

  () <- chaseConstructor (unsafeCoerce False)
  () <- chaseConstructor (unsafeCoerce [1,2,3])
  () <- chaseConstructor (unsafeCoerce (3 :-> 2))
  () <- chaseConstructor (unsafeCoerce (4 :->. 4))
  () <- chaseConstructor (unsafeCoerce (4 :->.+ 4))
  return ()

chaseConstructor :: (GhcMonad m) => HValue -> m ()
chaseConstructor !hv = do
  dflags <- getDynFlags
  liftIO $ putStrLn "====="
  closure <- liftIO $ getClosureData hv
  case closure of
    IndClosure{indirectee=ind} ->
      (\(Box a) -> chaseConstructor (unsafeCoerce a)) ind
    ConstrClosure{} -> do
      withSession $ \hscEnv -> liftIO $ do
        eDcname <- constrClosToName hscEnv closure
        case eDcname of
          Left _       -> return ()
          Right dcName -> do
            putStrLn $ "Name: "      ++ showPpr dflags dcName
            putStrLn $ "OccString: " ++ "'" ++ getOccString dcName ++ "'"
            dc <- ioLookupDataCon hscEnv dcName
            putStrLn $ "DataCon: "   ++ showPpr dflags dc
    _ -> return ()


module X where

data X =  Int :-> Int
       |  Int :->. Int
       |  Int :->.+ Int


module Main where

import B

main :: IO ()
main = B.b >> 42


module B where

b :: IO ()
b = return ()


module Main where

main :: IO ()
main = return ()


{-# LANGUAGE NamedFieldPuns #-}
module Main (main) where

import Data.List ((\\))
import Control.Monad (void)
import System.Environment

import GHC
import qualified Config as GHC
import qualified Outputable as GHC
import GhcMonad (liftIO)
import Outputable (PprStyle, queryQual)

compileInGhc :: [FilePath]          -- ^ Targets
             -> (String -> IO ())   -- ^ handler for each SevOutput message
             -> Ghc ()
compileInGhc targets handlerOutput = do
    -- Set flags
    flags0 <- getSessionDynFlags
    let flags = flags0 {verbosity = 1, log_action = collectSrcError handlerOutput}
    setSessionDynFlags flags
    -- Set up targets.
    oldTargets <- getTargets
    let oldFiles = map fileFromTarget oldTargets
    mapM_ addSingle (targets \\ oldFiles)
    mapM_ (removeTarget . targetIdFromFile) $ oldFiles \\ targets
    -- Load modules to typecheck
    void $ load LoadAllTargets
  where
    targetIdFromFile file = TargetFile file Nothing

    addSingle filename =
      addTarget Target
        { targetId           = targetIdFromFile filename
        , targetAllowObjCode = True
        , targetContents     = Nothing
        }

    fileFromTarget Target{targetId} =
      case targetId of
        TargetFile file Nothing -> file
        _ -> error "fileFromTarget: not a known target"

    collectSrcError handlerOutput flags _ SevOutput _srcspan style msg
      = handlerOutput $ GHC.showSDocForUser flags (queryQual style) msg
    collectSrcError _ _ _ _ _ _ _
      = return ()

main :: IO ()
main = do
  [libdir] <- getArgs
  runGhc (Just libdir) $ do

  liftIO $ putStrLn "----- 0 ------"
  compileInGhc ["A.hs", "B.hs"] $ \msg -> print (0 :: Int, msg)

  liftIO $ putStrLn "----- 1 ------"
  compileInGhc ["A.hs", "B.hs"] $ \msg -> print (1 :: Int, msg)

  liftIO $ putStrLn "----- 2 ------"
  compileInGhc ["C.hs"] $ \msg -> print (2 :: Int, msg)


main :: IO ()
main = putStrLn "This is main"


import System.Environment
import System.IO

main :: IO ()
main = error "main got called"

foo :: IO ()
foo = do putStrLn "This is foo"
         getArgs >>= print
         hFlush stdout
         error "foo"


import System.IO
main = do
  hGetBuffering stdin >>= print
  hGetBuffering stdout >>= print


import MissingModule
main = print "main"


module Main (main) where

import System.Exit
import System.IO

main :: IO ()
main = do putStrLn "Q1"
          exitFailure
          putStrLn "Q2"


main = return "this should not be printed"


-- Used to present a consistent shell view for :! commands in GHCi
-- scripts.  We're assuming that sh is in the path and that it
-- is a Bourne-compatible shell.

import System.Exit
import System.Process (rawSystem)

shell :: String -> IO ExitCode
shell s = rawSystem "sh" ["-c", s]


module T15729 (main) where

import Foreign
import Foreign.C

foreign import ccall unsafe "readBss"
  readBss :: Int -> IO Int

main :: IO ()
main = do
  prefix <- mapM readBss [0 .. 10]
  print prefix
  samples <- mapM readBss [0, 19 .. bit 20 - 1]
  print $ foldr1 (.|.) samples


module WeakTest where

import Foreign.C.Types

foreign import ccall weak_test :: CInt -> IO CInt


module TestLink where

import Foreign.C

foreign import ccall "f" f :: CInt -> IO CInt

test :: IO ()
test = f 42 >>= print


foreign import ccall "foo" c_foo :: IO Int

main = c_foo >>= print


module T10458 (callSO) where

import Foreign
import Foreign.C.Types
foreign import ccall "foo" dle :: IO CInt

callSO :: IO CInt
callSO = dle


module Main where

import Foreign
import Foreign.C.Types
foreign import ccall "bar" dle :: IO CInt

main = dle >>= print


module Main where

import Foreign
import Foreign.C.Types
foreign import ccall "foo" dle :: IO CInt

main = dle >>= print


module Main where

import B

main = print ("hello world" ++ show (f 42))


module B (module B, module C) where

import C

k x = x `mod` 11


module C (f, g, h) where

import D

g x = f x + 1

h x = x `div` 2

data C = C {x :: Int}


module D where

data T = A Int | B Float deriving Eq

f x = x + x


module D where

data T = A Int | B Float deriving Eq

f x = x + 1


module A where

data T = A Int | B Float deriving Eq

f :: Double -> Double
f x = x + x


module A where

data T = A Int | B Float deriving Eq

f :: Int -> Int
f x = x + 3


module B (f, g, h) where

import A

g x = f x + 1

h x = x `div` 2


module C (module B, module C) where

import B

k x = x `mod` 11


module Main where

import C

main = print ("hello world" ++ show (f 42))


module A(main,a) where

import B
import C(c)

main = print (a 42)

a x = b x + c x


module D where

-- data types and an instance
data D a = A Int | B Float deriving Eq
newtype N a = N Double
type T a = (Int,Double)

-- a class
class C a where c :: a -> Int

-- a function
d :: Int -> Int
d x = x * 2


module D where

-- data types and an instance
data D a = A Int | B Float deriving Eq
newtype N a = N Double
type T a = (Int,Double)

-- a class
class C a where c :: a -> Int

-- a function
d :: Float -> Float
d x = x / 3


module B (y) where
import A
y = 2 :: Int
z = 3 :: Int


module A where

import {-# source #-} Boot

class Class a where
  method :: a -> Data -> a


module Boot where

import A

data Data = forall n. Class n => D n


{-# LANGUAGE ExistentialQuantification #-}
module Boot where

import A

data Data = forall n. Class n => D n


module A where

import {-# SOURCE #-} C

class Class1 a

data A = A deriving Show


module B where

import A

data B = B deriving Show

instance Class1 B


module C where

import A
import B

class Class1 a => Class2 a

instance Class2 B


{-# LANGUAGE RankNTypes, MultiParamTypeClasses #-}
{-# LANGUAGE AllowAmbiguousTypes #-} -- c3 is ambiguous!

-- Tests a bug spotted by Claus in which the type
-- of c3 was wrongly displayed in GHCi as
--      c3 :: C a b => a -> b
-- Should be
--      c3 :: C a b => a1 -> b

module A where

class C a b where
  c1 :: Num b => a -> b
  c2 :: (Num b,Show b) => a -> b
  c3 :: forall a. a -> b


module A (f) where

f x = [x]

g x = Just x


module FooBar where

import Foo
import Bar


{-# LANGUAGE GHCForeignImportPrim, MagicHash,
             UnliftedFFITypes, UnboxedTuples #-}

import GHC.Exts

foreign import prim "dummy"
   dummy :: Word# -> Word#

foreign import prim "dummy2"
   dummy2 :: Any -> State# RealWorld -> (# State# RealWorld, Word# #)


module Level1 where

l1 = undefined :: ()


module TopLevel (module Level1, module Level2.Level2) where

import Level1
import Level2.Level2


module Level2.Level2 where

l2 = undefined :: ()


module Level1 where

level1Fun1 :: ()
level1Fun1 = ()

level1Fun2 :: ()
level1Fun2 = ()


module TopLevel (module Level1, module Level2.Level2) where

import Level1
import Level2.Level2

topLevelFun :: ()
topLevelFun = ()


module Level2.Level2 where

level2Fun1 :: ()
level2Fun1 = ()

level2Fun2 :: ()
level2Fun2 = ()

level2Fun3 :: ()
level2Fun3 = ()


module Level1 where

(..--) = undefined :: ()
(..-+) = undefined :: ()
(..++) = undefined :: ()


module Level2.Level2 where

(..+=..) = undefined :: ()


{-# OPTIONS_GHC -Wincomplete-patterns -Wunused-matches #-}
module A where

incompletePattern :: Int -> Int
incompletePattern 0 = 0

unusedMatches :: Int -> Int
unusedMatches x = 0


{-# OPTIONS_GHC -Wunused-imports #-}
module B
  ( module A
  ) where

import A
import Data.List


module C where

import B

foo :: ()
foo = variableNotInScope


module Main where

a :: Int
a = 'p'

f :: Int
f = _

main :: IO ()
main = print f


import Data.List
main = print (sort [100,99..1])


module Ghci006 where

data Q = forall x . Show x => Q x
showQ (Q x) = show x

-- associated bug is that at the interpreter command line,
--   showQ (Q "foo") crashed the interpreter.


import Test.QuickCheck.Batch

prop_silly :: [()] -> Bool
prop_silly xs = head xs == head xs

do_test = runTests "test" defOpt [ run prop_silly ]


-- Code from ticket #488

module Test where

import Control.Concurrent.STM
import Control.Concurrent
import Control.Exception
import Prelude hiding (catch)

runTest loop = do
    (tc1, tc2, tmv) <- atomically (do
        tmv <- newEmptyTMVar
        tc1 <- newTChan
        tc2 <- newTChan
        return (tc1, tc2, tmv)
        )
    myTId <- myThreadId
    forkIO (forked loop (tc1, tc2, tmv, myTId))
    atomically (writeTChan tc1 "blah")
    atomically (writeTChan tc1 "blah2")
    return "done"

forked loop args@(tc1, tc2, tmv, hisTId) = catch ((loop args) >>= setTMV . Just) hndlr `finally` setTMV Nothing
        where
            setTMV x = atomically (tryPutTMVar tmv x >> return ())
            hndlr ThreadKilled = return ()
            hndlr e            = throwTo hisTId e

goodLoop args@(tc1, tc2, tmv, hisTId) = do
    x <- atomically (readTChan tc1)
    x' <- return $ reverse x
    atomically (writeTChan tc2 x')
    if x == "blah2"
        then return ()
        else goodLoop args

badLoop args@(tc1, tc2, tmv, hisTId) = do
    x <- atomically (readTChan tc1)
    x' <- return $ reverse x
    atomically (writeTChan tc2 x')
    badLoop args


-- Test for trac #552

module Test where

default (T)

data T = T
    deriving (Eq, Show)

instance Num T where
    fromInteger _ = T
    (+)    = error "urk"
    (*)    = error "urk"
    abs    = error "urk"
    signum = error "urk"
    negate = error "urk"

-- Typing 3 at the ghci prompt should print T


-- Trac #1581
-- Even though Eq is not in scope unqualified, we want to
-- see the Eq instance of Foo when we say :i Foo

module Foo where
import qualified Prelude

data Foo = Foo
instance Prelude.Eq Foo


{-# LANGUAGE RankNTypes, MultiParamTypeClasses #-}
{-# LANGUAGE AllowAmbiguousTypes #-} -- c3 is ambiguous!

module T where

import qualified Prelude as T(length,Monad,Integer)
import qualified Data.ByteString as T(length)
import Prelude(length,(+),(=<<),Monad(..),Maybe(..),Eq)
import Data.Maybe
import Control.Monad(Monad(..),MonadPlus(..))

length :: T.Integer
length = 0

class N a
class S a

class C a b where
  c1 :: N b => a -> b
  c2 :: (N b,S b) => a -> b
  c3 :: forall a. a -> b
  c4 :: a1 -> b


module Ghci025B (module Ghci025B, module Ghci025C) where

import Ghci025C

k x = x `mod` 11


module Ghci025C (f, g, h) where

import Ghci025D

g x = f x + 1

h x = x `div` 2

data C = C {x :: Int}


module Ghci025D where

data T = A Int | B Float deriving Eq

f x = x + x


-- Test for #1617
module T1617 where
import Prelude ()
import Control.Monad (mplus)
import qualified Control.Monad (mplus)


-- Test for #1617
module T1617 where
import Prelude ()
--import Control.Monad (mplus)
import qualified Control.Monad (mplus)


-- Trac #2082
-- If we :i D or C, we should see parentheses around (Int -> a)

{-# LANGUAGE ExistentialQuantification #-}

module Foo where

data D = forall a . C (Int -> a) Char


{-# LANGUAGE DatatypeContexts #-}
-- Trac #2138
-- If we :i D, we should see the Eq constraint

module Foo where

data Eq a => D a = C a


-- Test Trac #1930: display of infix constructors
module Test where

data Foo = Foo1 Int
         | Int `InfixCon` Bool


module Foo where
import Data.List
x = map


--Testing flexible and Overlapping instances
class C a where { f :: a -> String; f _ = 3 }
instance C Int where { f = id }
:set -XFlexibleInstances
instance C [Int] where f _ = "First"
f [3::Int]
-- Should override the identical one preceding
instance C [Int] where f _ = "Second"
f [3::Int]


module Test where
data T a where
  C :: T Int


two_args :: [String] -> IO String
two_args _ = return "two_args> "

three_args :: [String] -> Int -> IO String
three_args _ _ = return $ "three_args> "


{-# LANGUAGE TypeFamilies #-}
module GhciKinds where

import Data.Kind (Type)

type family F a :: Type
type instance F [a] = a -> F a
type instance F Int = Bool

-- test ":kind!" in the presence of compatible overlap
type instance F (Maybe a) = Char
type instance F (Maybe Int) = Char


{-# LANGUAGE StaticPointers #-}

module StaticPtr where

import GHC.StaticPtr

topLevelStatic :: StaticPtr String
topLevelStatic = static "this is a top-level"

nestedStatic :: (StaticPtr String, Int)
nestedStatic = (s, 42)
  where
    s = static "nested static"
    {-# NOINLINE s #-}

s1 :: StaticPtr Int
s1 = static 3

s2 :: StaticPtr String
s2 = static "hello world"


module T10110A (a) where
import Debug.Trace
{-# NOINLINE a #-}
a :: Int
a = 3


module T10110C (c) where
import T10110A (a)
import T10110B (b)
c :: Int
c = a+b


{-# LANGUAGE DataKinds      #-}
{-# LANGUAGE GADTs          #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE TypeOperators  #-}

module T10321 where

import Data.Kind (Type)
import GHC.TypeLits

data Vec :: Nat -> Type -> Type where
  Nil  :: Vec 0 a
  (:>) :: a -> Vec n a -> Vec (n + 1) a

infixr 5 :>


module T10322A (a) where
{-# NOINLINE a #-}
a :: Int
a = 3


module T10322B (b) where
import T10322A (a)
b :: Int
b = a+1


module T10322C (c) where
import T10322A (a)
import T10322B (b)
c :: Int
c = a+b


module T10576 where

(â˜€â˜€) :: () -> () -> ()
(â˜€â˜€) _ _ = ()

x1 = undefined :: ()
x2 = undefined :: ()


module T11208 where

import qualified Prelude as P

f n = n P.+ 1

g h (P.Just x) = P.Just (h x)
g _ P.Nothing  = P.Nothing


{-# LANGUAGE TypeApplications #-}

module T11456 where

a = show @Int


{-# LANGUAGE UndecidableInstances, PatternSynonyms, GADTs #-}

module T11728 where

import Data.Kind
import Data.Int
import GHC.TypeLits
import Text.Show.Functions

data Ty ty where
  I  :: Ty Int
  A  :: Ty a -> Ty [a]

class    GetTy ty  where getTy :: Ty ty
instance GetTy Int where getTy = I
instance GetTy ty => GetTy [ty] where
  getTy = A getTy

data E a where
  UnOp   :: Unary a b -> (E a -> E b)

pattern LEN :: () => (GetTy a) => E [a] -> E Int
pattern LEN xs <- UnOp (Un OpLen _) xs where
        LEN xs = UnOp (Un OpLen length) xs

data Unary a b where
  Un :: (GetTy a, GetTy b) => UnOp a b -> (a -> b) -> Unary a b

data UnOp a b where
  OpLen :: GetTy a => UnOp [a] Int


{-# LANGUAGE PatternSynonyms #-}
module T12007 where

data Foo a = Foo a a

pattern A a1 a2 = Foo a1 a2
pattern B a1 a2 = A a1 a2


{-# LANGUAGE MagicHash, UnboxedTuples #-}

module Bug ( box, wrap, proxy ) where

import GHC.Prim

box :: (# Proxy# a, b #) -> b
box (# x, y #) = y

wrap :: b -> Proxy# a -> (# Proxy# a, b #)
wrap x = \i# -> (# i#, x #)

proxy :: () -> Proxy# a
proxy () = proxy#


import Unsafe.Coerce

data D1 a = C11 a deriving Show
data D2 a b = C21 a | C22 b deriving Show
data D3 a b c = C31 a | C32 b | C33 c deriving Show
data D4 a b c d = C41 a | C42 b | C43 c | C44 d deriving Show
data D5 a b c d e = C51 a | C52 b | C53 c | C54 d | C55 e deriving Show
data D6 a b c d e f = C61 a | C62 b | C63 c | C64 d | C65 e | C66 f deriving Show
data D7 a b c d e f g = C71 a | C72 b | C73 c | C74 d | C75 e | C76 f | C77 g deriving Show
data D8 a b c d e f g h = C81 a | C82 b | C83 c | C84 d | C85 e | C86 f | C87 g | C88 h deriving Show

d1 :: (Show a) => p a -> String
d2 :: (Show a, Show b) => p a b -> String
d3 :: (Show a, Show b, Show c) => p a b c -> String
d4 :: (Show a, Show b, Show c, Show d) => p a b c d -> String
d5 :: (Show a, Show b, Show c, Show d, Show e) => p a b c d e -> String
d6 :: (Show a, Show b, Show c, Show d, Show e, Show f) => p a b c d e f -> String
d7 :: (Show a, Show b, Show c, Show d, Show e, Show f, Show g) => p a b c d e f g -> String
d8 :: (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h) => p a b c d e f g h -> String

d1 = show . (unsafeCoerce :: p a -> D1 a)
d2 = show . (unsafeCoerce :: p a b -> D2 a b)
d3 = show . (unsafeCoerce :: p a b c -> D3 a b c)
d4 = show . (unsafeCoerce :: p a b c d -> D4 a b c d)
d5 = show . (unsafeCoerce :: p a b c d e -> D5 a b c d e)
d6 = show . (unsafeCoerce :: p a b c d e f -> D6 a b c d e f)
d7 = show . (unsafeCoerce :: p a b c d e f g -> D7 a b c d e f g)
d8 = show . (unsafeCoerce :: p a b c d e f g h -> D8 a b c d e f g h)


{-# LANGUAGE TypeFamilies #-}
module T13420 where

type family F a where
  F [Int] = Bool
  F [a]   = Double
  F (a b) = Char


module T13591A where
import Second
one :: Int
one = _


module T13591B where
import {-# SOURCE #-} First
two :: Int
two = one + 1


module T13699 where

data Foo = Foo
  { foo1 :: Int
  , foo2 :: !Int
  , foo3 :: Maybe Int
  , foo4 :: !(Maybe Int)
  }

data Bar = Bar Int !Int (Maybe Int) !(Maybe Int)


{-# LANGUAGE PolyKinds, GADTs #-}

module T13988 where

import Data.Kind

data Foo (a :: k) where
  MkFoo :: (k ~ Type) => Foo (a :: k)


{-# OPTIONS_GHC -fdefer-type-errors #-}
module T15325 where

class PolyList e where
     polyList :: e -> ()

f :: PolyList e => e -> ()
f x = polyList x

plh :: ()
plh = f 0


{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeFamilies #-}
module T15341 where

type family Foo (a :: k) :: k where
  Foo a = a


{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeFamilies #-}
module T15568 where

import Data.Proxy

type family F (a :: j) :: k


{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module Foo where

import Data.Kind
import Data.Proxy

type family T1 (x :: f (a :: Type))

class C (a :: Type) where
  type T2 (x :: f a)

class C2 (a :: Type) (b :: Proxy a) (c :: Proxy b) where
  type T3 (x :: Proxy '(a, (c :: Proxy b)))
     -- NB: we have to put (c :: Proxy b) so that 'b' is Specified
     --     in the kind of T3; else 'b' is Inferred and comes
     --     first, which is ill-scoped

-- no CUSK
class C3 (a :: Type) (b :: Proxy a) (c :: Proxy b) d where
  type T4 (x :: Proxy '(a, (c :: Proxy b)))
     -- Ditto to T3

class C4 (a :: Type) b where
  type T5 (x :: f a)

class C5 a where
  type T6 (x :: f a)


{-# LANGUAGE PolyKinds, TypeFamilies #-}

module T15743b where

class C (a :: k) where
  type F a (b :: k2)


{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
module T15827 where

import Data.Kind
import Data.Proxy

type family F1 (a :: k)
type instance forall k (a :: k). F1 a = Proxy a

type family F2 (a :: k) :: Type where
  forall k (a :: k). F2 a = Proxy a

data family D (a :: k)
data instance forall k (a :: k). D a = MkD (Proxy a)


{-# LANGUAGE GADTs #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeFamilies #-}
module T16030 where

import Data.Proxy

data Foo1 (a :: k) where
  MkFoo1a :: Proxy a -> Int -> Foo1 a
  MkFoo1b :: { a :: Proxy a, b :: Int } -> Foo1 a

data family Foo2 (a :: k)
data instance Foo2 (a :: k) where
  MkFoo2a :: Proxy a -> Int -> Foo2 a
  MkFoo2b :: { c :: Proxy a, d :: Int } -> Foo2 a


module T2182ghci_A where
data T = T deriving (Show)
instance Show (a -> b) where
    show _ = "MyFunction"


module T2182ghci_B(T(..)) where
import T2182ghci_A


module T2182ghci_C(T(..)) where
import T2182ghci_B


{-# OPTIONS_GHC -Wall #-}

-- Test Trac #3263

module T3263 where

foo :: IO ()
foo = do { getChar
         ; return () }


module Test (R(..)) where

data R = R { x :: Char, y :: Int, z :: Float }
       | S { x :: Char }
       | T { y :: Int, z:: Float }
       | W


{-# LANGUAGE GADTs #-}

module T4087 where

data Equal a b where
     Equal :: Equal a a


{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE ConstraintKinds #-}
module T4175 where

import Data.Kind

type family A a b
type instance A Int Int = ()
type instance A (Maybe a) a = a
type instance A (B a) b = ()

data family B a
data instance B () = MkB

class C a where
    type D a b

instance C Int where
    type D Int () = String

instance C () where
    type D () () = Bool

type family E a where
    E ()  = Bool
    E Int = String

class Z a

class F (a :: Constraint)
instance F (Z a)

class G (a :: Type -> Type)
instance G B


{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
{-# LANGUAGE Arrows, FunctionalDependencies, FlexibleContexts,
             MultiParamTypeClasses, RecordWildCards  #-}

module T5045 where

import Control.Arrow

class (Control.Arrow.Arrow a') => ArrowAddReader r a a' | a -> a' where
  elimReader :: a (e, s) b -> a' (e, (r, s)) b

newtype ByteString = FakeByteString String

pathInfo :: Monad m => m String
pathInfo = undefined

requestMethod :: Monad m => m String
requestMethod = undefined

getInputsFPS :: Monad m => m [(String, ByteString)]
getInputsFPS = undefined

class HTTPRequest r s | r -> s where
    httpGetPath :: r -> String
    httpSetPath :: r -> String -> r
    httpGetMethod :: r -> String
    httpGetInputs :: r -> [(String, s)]

data CGIDispatch = CGIDispatch {
    dispatchPath :: String,
    dispatchMethod :: String,
    dispatchInputs :: [(String, ByteString)]  }

instance HTTPRequest CGIDispatch ByteString where
    httpGetPath = dispatchPath
    httpSetPath r s = r { dispatchPath = s }
    httpGetMethod = dispatchMethod
    httpGetInputs = dispatchInputs

runDispatch :: (Arrow a, ArrowAddReader CGIDispatch a a', Monad m) => a b  c -> m (a' b c)
runDispatch a = do
    dispatchPath <- pathInfo
    dispatchMethod <- requestMethod
    dispatchInputs <- getInputsFPS
    return $ proc b -> (| elimReader (a -< b) |) CGIDispatch { .. }


{-# LANGUAGE TypeFamilies #-}
module T5417 where
  import qualified T5417a as C

  data B1 a = B1 a

  instance C.C1 (B1 a) where
    data F (B1 a) = B2 a

  data family D a


{-# LANGUAGE TypeFamilies #-}
module T5417a where

  import Data.Kind (Type)

  class C1 a where
    data F a :: Type


{-# LANGUAGE TemplateHaskell #-}
module T5566 where

class C a where
     c :: a

$([d| instance C Int where c = 0 |] )

data D = D

$([d| instance C D where c = D |] )

$([d| instance Show D where show _ = "D" |] )


module T5820 where
data Foo = Foo
instance Eq Foo


module T6091 where

infixr 4 `foo`
foo :: Int -> Int -> Int
foo x y = x * y


{-# OPTIONS_GHC -fforce-recomp #-}
module T6105 where


import Control.Concurrent
import Data.ByteString as BS
import System.Environment

main :: IO ()
main = do args <- getArgs
          case args of
              [x, y, z] -> f x y z
              _ -> error ("Bad args: " ++ show args)

f :: String -> String -> String -> IO ()
f x y z = do bs <- BS.readFile y
             BS.writeFile z bs
             threadDelay 1000000
             Prelude.writeFile x "FAIL"


{-# LANGUAGE PolyKinds #-}

module Tim where

data Proxy (t:: k) = Proxy


module Foo where

table = [
    "MARY", "PATRICIA", "LINDA", "BARBARA", "ELIZABETH", "JENNIFER",
    "MARIA", "SUSAN", "MARGARET", "DOROTHY", "LISA", "NANCY", "KAREN",
    "BETTY", "HELEN", "SANDRA", "DONNA", "CAROL", "RUTH", "SHARON",
    "MICHELLE", "LAURA", "SARAH", "KIMBERLY", "DEBORAH", "JESSICA",
    "SHIRLEY", "CYNTHIA", "ANGELA", "MELISSA", "BRENDA", "AMY", "ANNA",
    "REBECCA", "VIRGINIA", "KATHLEEN", "PAMELA", "MARTHA", "DEBRA",
    "AMANDA", "STEPHANIE", "CAROLYN", "CHRISTINE", "MARIE", "JANET",
    "CATHERINE", "FRANCES", "ANN", "JOYCE", "DIANE", "ALICE", "JULIE",
    "HEATHER", "TERESA", "DORIS", "GLORIA", "EVELYN", "JEAN", "CHERYL",
    "MILDRED", "KATHERINE", "JOAN", "ASHLEY", "JUDITH", "ROSE",
    "JANICE", "KELLY", "NICOLE", "JUDY", "CHRISTINA", "KATHY",
    "THERESA", "BEVERLY", "DENISE", "TAMMY", "IRENE", "JANE", "LORI",
    "RACHEL", "MARILYN", "ANDREA", "KATHRYN", "LOUISE", "SARA", "ANNE",
    "JACQUELINE", "WANDA", "BONNIE", "JULIA", "RUBY", "LOIS", "TINA",
    "PHYLLIS", "NORMA", "PAULA", "DIANA", "ANNIE", "LILLIAN", "EMILY",
    "ROBIN", "PEGGY", "CRYSTAL", "GLADYS", "RITA", "DAWN", "CONNIE",
    "FLORENCE", "TRACY", "EDNA", "TIFFANY", "CARMEN", "ROSA", "CINDY",
    "GRACE", "WENDY", "VICTORIA", "EDITH", "KIM", "SHERRY", "SYLVIA",
    "JOSEPHINE", "THELMA", "SHANNON", "SHEILA", "ETHEL", "ELLEN",
    "ELAINE", "MARJORIE", "CARRIE", "CHARLOTTE", "MONICA", "ESTHER",
    "PAULINE", "EMMA", "JUANITA", "ANITA", "RHONDA", "HAZEL", "AMBER",
    "EVA", "DEBBIE", "APRIL", "LESLIE", "CLARA", "LUCILLE", "JAMIE",
    "JOANNE", "ELEANOR", "VALERIE", "DANIELLE", "MEGAN", "ALICIA",
    "SUZANNE", "MICHELE", "GAIL", "BERTHA", "DARLENE", "VERONICA",
    "JILL", "ERIN", "GERALDINE", "LAUREN", "CATHY", "JOANN", "LORRAINE",
    "LYNN", "SALLY", "REGINA", "ERICA", "BEATRICE", "DOLORES",
    "BERNICE", "AUDREY", "YVONNE", "ANNETTE", "JUNE", "SAMANTHA",
    "MARION", "DANA", "STACY", "ANA", "RENEE", "IDA", "VIVIAN",
    "ROBERTA", "HOLLY", "BRITTANY", "MELANIE", "LORETTA", "YOLANDA",
    "JEANETTE", "LAURIE", "KATIE", "KRISTEN", "VANESSA", "ALMA", "SUE",
    "ELSIE", "BETH", "JEANNE", "VICKI", "CARLA", "TARA", "ROSEMARY",
    "EILEEN", "TERRI", "GERTRUDE", "LUCY", "TONYA", "ELLA", "STACEY",
    "WILMA", "GINA", "KRISTIN", "JESSIE", "NATALIE", "AGNES", "VERA",
    "WILLIE", "CHARLENE", "BESSIE", "DELORES", "MELINDA", "PEARL",
    "ARLENE", "MAUREEN", "COLLEEN", "ALLISON", "TAMARA", "JOY",
    "GEORGIA", "CONSTANCE", "LILLIE", "CLAUDIA", "JACKIE", "MARCIA",
    "TANYA", "NELLIE", "MINNIE", "MARLENE", "HEIDI", "GLENDA", "LYDIA",
    "VIOLA", "COURTNEY", "MARIAN", "STELLA", "CAROLINE", "DORA", "JO",
    "VICKIE", "MATTIE", "TERRY", "MAXINE", "IRMA", "MABEL", "MARSHA",
    "MYRTLE", "LENA", "CHRISTY", "DEANNA", "PATSY", "HILDA",
    "GWENDOLYN", "JENNIE", "NORA", "MARGIE", "NINA", "CASSANDRA",
    "LEAH", "PENNY", "KAY", "PRISCILLA", "NAOMI", "CAROLE", "BRANDY",
    "OLGA", "BILLIE", "DIANNE", "TRACEY", "LEONA", "JENNY", "FELICIA",
    "SONIA", "MIRIAM", "VELMA", "BECKY", "BOBBIE", "VIOLET", "KRISTINA",
    "TONI", "MISTY", "MAE", "SHELLY", "DAISY", "RAMONA", "SHERRI",
    "ERIKA", "KATRINA", "CLAIRE", "LINDSEY", "LINDSAY", "GENEVA",
    "GUADALUPE", "BELINDA", "MARGARITA", "SHERYL", "CORA", "FAYE",
    "ADA", "NATASHA", "SABRINA", "ISABEL", "MARGUERITE", "HATTIE",
    "HARRIET", "MOLLY", "CECILIA", "KRISTI", "BRANDI", "BLANCHE",
    "SANDY", "ROSIE", "JOANNA", "IRIS", "EUNICE", "ANGIE", "INEZ",
    "LYNDA", "MADELINE", "AMELIA", "ALBERTA", "GENEVIEVE", "MONIQUE",
    "JODI", "JANIE", "MAGGIE", "KAYLA", "SONYA", "JAN", "LEE",
    "KRISTINE", "CANDACE", "FANNIE", "MARYANN", "OPAL", "ALISON",
    "YVETTE", "MELODY", "LUZ", "SUSIE", "OLIVIA", "FLORA", "SHELLEY",
    "KRISTY", "MAMIE", "LULA", "LOLA", "VERNA", "BEULAH", "ANTOINETTE",
    "CANDICE", "JUANA", "JEANNETTE", "PAM", "KELLI", "HANNAH",
    "WHITNEY", "BRIDGET", "KARLA", "CELIA", "LATOYA", "PATTY", "SHELIA",
    "GAYLE", "DELLA", "VICKY", "LYNNE", "SHERI", "MARIANNE", "KARA",
    "JACQUELYN", "ERMA", "BLANCA", "MYRA", "LETICIA", "PAT", "KRISTA",
    "ROXANNE", "ANGELICA", "JOHNNIE", "ROBYN", "FRANCIS", "ADRIENNE",
    "ROSALIE", "ALEXANDRA", "BROOKE", "BETHANY", "SADIE", "BERNADETTE",
    "TRACI", "JODY", "KENDRA", "JASMINE", "NICHOLE", "RACHAEL",
    "CHELSEA", "MABLE", "ERNESTINE", "MURIEL", "MARCELLA", "ELENA",
    "KRYSTAL", "ANGELINA", "NADINE", "KARI", "ESTELLE", "DIANNA",
    "PAULETTE", "LORA", "MONA", "DOREEN", "ROSEMARIE", "ANGEL",
    "DESIREE", "ANTONIA", "HOPE", "GINGER", "JANIS", "BETSY",
    "CHRISTIE", "FREDA", "MERCEDES", "MEREDITH", "LYNETTE", "TERI",
    "CRISTINA", "EULA", "LEIGH", "MEGHAN", "SOPHIA", "ELOISE",
    "ROCHELLE", "GRETCHEN", "CECELIA", "RAQUEL", "HENRIETTA", "ALYSSA",
    "JANA", "KELLEY", "GWEN", "KERRY", "JENNA", "TRICIA", "LAVERNE",
    "OLIVE", "ALEXIS", "TASHA", "SILVIA", "ELVIRA", "CASEY", "DELIA",
    "SOPHIE", "KATE", "PATTI", "LORENA", "KELLIE", "SONJA", "LILA",
    "LANA", "DARLA", "MAY", "MINDY", "ESSIE", "MANDY", "LORENE", "ELSA",
    "JOSEFINA", "JEANNIE", "MIRANDA", "DIXIE", "LUCIA", "MARTA",
    "FAITH", "LELA", "JOHANNA", "SHARI", "CAMILLE", "TAMI", "SHAWNA",
    "ELISA", "EBONY", "MELBA", "ORA", "NETTIE", "TABITHA", "OLLIE",
    "JAIME", "WINIFRED", "KRISTIE", "MARINA", "ALISHA", "AIMEE", "RENA",
    "MYRNA", "MARLA", "TAMMIE", "LATASHA", "BONITA", "PATRICE", "RONDA",
    "SHERRIE", "ADDIE", "FRANCINE", "DELORIS", "STACIE", "ADRIANA",
    "CHERI", "SHELBY", "ABIGAIL", "CELESTE", "JEWEL", "CARA", "ADELE",
    "REBEKAH", "LUCINDA", "DORTHY", "CHRIS", "EFFIE", "TRINA", "REBA",
    "SHAWN", "SALLIE", "AURORA", "LENORA", "ETTA", "LOTTIE", "KERRI",
    "TRISHA", "NIKKI", "ESTELLA", "FRANCISCA", "JOSIE", "TRACIE",
    "MARISSA", "KARIN", "BRITTNEY", "JANELLE", "LOURDES", "LAUREL",
    "HELENE", "FERN", "ELVA", "CORINNE", "KELSEY", "INA", "BETTIE",
    "ELISABETH", "AIDA", "CAITLIN", "INGRID", "IVA", "EUGENIA",
    "CHRISTA", "GOLDIE", "CASSIE", "MAUDE", "JENIFER", "THERESE",
    "FRANKIE", "DENA", "LORNA", "JANETTE", "LATONYA", "CANDY", "MORGAN",
    "CONSUELO", "TAMIKA", "ROSETTA", "DEBORA", "CHERIE", "POLLY",
    "DINA", "JEWELL", "FAY", "JILLIAN", "DOROTHEA", "NELL", "TRUDY",
    "ESPERANZA", "PATRICA", "KIMBERLEY", "SHANNA", "HELENA", "CAROLINA",
    "CLEO", "STEFANIE", "ROSARIO", "OLA", "JANINE", "MOLLIE", "LUPE",
    "ALISA", "LOU", "MARIBEL", "SUSANNE", "BETTE", "SUSANA", "ELISE",
    "CECILE", "ISABELLE", "LESLEY", "JOCELYN", "PAIGE", "JONI",
    "RACHELLE", "LEOLA", "DAPHNE", "ALTA", "ESTER", "PETRA", "GRACIELA",
    "IMOGENE", "JOLENE", "KEISHA", "LACEY", "GLENNA", "GABRIELA",
    "KERI", "URSULA", "LIZZIE", "KIRSTEN", "SHANA", "ADELINE", "MAYRA",
    "JAYNE", "JACLYN", "GRACIE", "SONDRA", "CARMELA", "MARISA",
    "ROSALIND", "CHARITY", "TONIA", "BEATRIZ", "MARISOL", "CLARICE",
    "JEANINE", "SHEENA", "ANGELINE", "FRIEDA", "LILY", "ROBBIE",
    "SHAUNA", "MILLIE", "CLAUDETTE", "CATHLEEN", "ANGELIA", "GABRIELLE",
    "AUTUMN", "KATHARINE", "SUMMER", "JODIE", "STACI", "LEA", "CHRISTI",
    "JIMMIE", "JUSTINE", "ELMA", "LUELLA", "MARGRET", "DOMINIQUE",
    "SOCORRO", "RENE", "MARTINA", "MARGO", "MAVIS", "CALLIE", "BOBBI",
    "MARITZA", "LUCILE", "LEANNE", "JEANNINE", "DEANA", "AILEEN",
    "LORIE", "LADONNA", "WILLA", "MANUELA", "GALE", "SELMA", "DOLLY",
    "SYBIL", "ABBY", "LARA", "DALE", "IVY", "DEE", "WINNIE", "MARCY",
    "LUISA", "JERI", "MAGDALENA", "OFELIA", "MEAGAN", "AUDRA",
    "MATILDA", "LEILA", "CORNELIA", "BIANCA", "SIMONE", "BETTYE",
    "RANDI", "VIRGIE", "LATISHA", "BARBRA", "GEORGINA", "ELIZA",
    "LEANN", "BRIDGETTE", "RHODA", "HALEY", "ADELA", "NOLA",
    "BERNADINE", "FLOSSIE", "ILA", "GRETA", "RUTHIE", "NELDA",
    "MINERVA", "LILLY", "TERRIE", "LETHA", "HILARY", "ESTELA",
    "VALARIE", "BRIANNA", "ROSALYN", "EARLINE", "CATALINA", "AVA",
    "MIA", "CLARISSA", "LIDIA", "CORRINE", "ALEXANDRIA", "CONCEPCION",
    "TIA", "SHARRON", "RAE", "DONA", "ERICKA", "JAMI", "ELNORA",
    "CHANDRA", "LENORE", "NEVA", "MARYLOU", "MELISA", "TABATHA",
    "SERENA", "AVIS", "ALLIE", "SOFIA", "JEANIE", "ODESSA", "NANNIE",
    "HARRIETT", "LORAINE", "PENELOPE", "MILAGROS", "EMILIA", "BENITA",
    "ALLYSON", "ASHLEE", "TANIA", "TOMMIE", "ESMERALDA", "KARINA",
    "EVE", "PEARLIE", "ZELMA", "MALINDA", "NOREEN", "TAMEKA", "SAUNDRA",
    "HILLARY", "AMIE", "ALTHEA", "ROSALINDA", "JORDAN", "LILIA",
    "ALANA", "GAY", "CLARE", "ALEJANDRA", "ELINOR", "MICHAEL", "LORRIE",
    "JERRI", "DARCY", "EARNESTINE", "CARMELLA", "TAYLOR", "NOEMI",
    "MARCIE", "LIZA", "ANNABELLE", "LOUISA", "EARLENE", "MALLORY",
    "CARLENE", "NITA", "SELENA", "TANISHA", "KATY", "JULIANNE", "JOHN",
    "LAKISHA", "EDWINA", "MARICELA", "MARGERY", "KENYA", "DOLLIE",
    "ROXIE", "ROSLYN", "KATHRINE", "NANETTE", "CHARMAINE", "LAVONNE",
    "ILENE", "KRIS", "TAMMI", "SUZETTE", "CORINE", "KAYE", "JERRY",
    "MERLE", "CHRYSTAL", "LINA", "DEANNE", "LILIAN", "JULIANA", "ALINE",
    "LUANN", "KASEY", "MARYANNE", "EVANGELINE", "COLETTE", "MELVA",
    "LAWANDA", "YESENIA", "NADIA", "MADGE", "KATHIE", "EDDIE",
    "OPHELIA", "VALERIA", "NONA", "MITZI", "MARI", "GEORGETTE",
    "CLAUDINE", "FRAN", "ALISSA", "ROSEANN", "LAKEISHA", "SUSANNA",
    "REVA", "DEIDRE", "CHASITY", "SHEREE", "CARLY", "JAMES", "ELVIA",
    "ALYCE", "DEIRDRE", "GENA", "BRIANA", "ARACELI", "KATELYN",
    "ROSANNE", "WENDI", "TESSA", "BERTA", "MARVA", "IMELDA", "MARIETTA",
    "MARCI", "LEONOR", "ARLINE", "SASHA", "MADELYN", "JANNA",
    "JULIETTE", "DEENA", "AURELIA", "JOSEFA", "AUGUSTA", "LILIANA",
    "YOUNG", "CHRISTIAN", "LESSIE", "AMALIA", "SAVANNAH", "ANASTASIA",
    "VILMA", "NATALIA", "ROSELLA", "LYNNETTE", "CORINA", "ALFREDA",
    "LEANNA", "CAREY", "AMPARO", "COLEEN", "TAMRA", "AISHA", "WILDA",
    "KARYN", "CHERRY", "QUEEN", "MAURA", "MAI", "EVANGELINA", "ROSANNA",
    "HALLIE", "ERNA", "ENID", "MARIANA", "LACY", "JULIET", "JACKLYN",
    "FREIDA", "MADELEINE", "MARA", "HESTER", "CATHRYN", "LELIA",
    "CASANDRA", "BRIDGETT", "ANGELITA", "JANNIE", "DIONNE", "ANNMARIE",
    "KATINA", "BERYL", "PHOEBE", "MILLICENT", "KATHERYN", "DIANN",
    "CARISSA", "MARYELLEN", "LIZ", "LAURI", "HELGA", "GILDA", "ADRIAN",
    "RHEA", "MARQUITA", "HOLLIE", "TISHA", "TAMERA", "ANGELIQUE",
    "FRANCESCA", "BRITNEY", "KAITLIN", "LOLITA", "FLORINE", "ROWENA",
    "REYNA", "TWILA", "FANNY", "JANELL", "INES", "CONCETTA", "BERTIE",
    "ALBA", "BRIGITTE", "ALYSON", "VONDA", "PANSY", "ELBA", "NOELLE",
    "LETITIA", "KITTY", "DEANN", "BRANDIE", "LOUELLA", "LETA",
    "FELECIA", "SHARLENE", "LESA", "BEVERLEY", "ROBERT", "ISABELLA",
    "HERMINIA", "TERRA", "CELINA", "TORI", "OCTAVIA", "JADE", "DENICE",
    "GERMAINE", "SIERRA", "MICHELL", "CORTNEY", "NELLY", "DORETHA",
    "SYDNEY", "DEIDRA", "MONIKA", "LASHONDA", "JUDI", "CHELSEY",
    "ANTIONETTE", "MARGOT", "BOBBY", "ADELAIDE", "NAN", "LEEANN",
    "ELISHA", "DESSIE", "LIBBY", "KATHI", "GAYLA", "LATANYA", "MINA",
    "MELLISA", "KIMBERLEE", "JASMIN", "RENAE", "ZELDA", "ELDA", "MA",
    "JUSTINA", "GUSSIE", "EMILIE", "CAMILLA", "ABBIE", "ROCIO",
    "KAITLYN", "JESSE", "EDYTHE", "ASHLEIGH", "SELINA", "LAKESHA",
    "GERI", "ALLENE", "PAMALA", "MICHAELA", "DAYNA", "CARYN", "ROSALIA",
    "SUN", "JACQULINE", "REBECA", "MARYBETH", "KRYSTLE", "IOLA",
    "DOTTIE", "BENNIE", "BELLE", "AUBREY", "GRISELDA", "ERNESTINA",
    "ELIDA", "ADRIANNE", "DEMETRIA", "DELMA", "CHONG", "JAQUELINE",
    "DESTINY", "ARLEEN", "VIRGINA", "RETHA", "FATIMA", "TILLIE",
    "ELEANORE", "CARI", "TREVA", "BIRDIE", "WILHELMINA", "ROSALEE",
    "MAURINE", "LATRICE", "YONG", "JENA", "TARYN", "ELIA", "DEBBY",
    "MAUDIE", "JEANNA", "DELILAH", "CATRINA", "SHONDA", "HORTENCIA",
    "THEODORA", "TERESITA", "ROBBIN", "DANETTE", "MARYJANE", "FREDDIE",
    "DELPHINE", "BRIANNE", "NILDA", "DANNA", "CINDI", "BESS", "IONA",
    "HANNA", "ARIEL", "WINONA", "VIDA", "ROSITA", "MARIANNA", "WILLIAM",
    "RACHEAL", "GUILLERMINA", "ELOISA", "CELESTINE", "CAREN", "MALISSA",
    "LONA", "CHANTEL", "SHELLIE", "MARISELA", "LEORA", "AGATHA",
    "SOLEDAD", "MIGDALIA", "IVETTE", "CHRISTEN", "ATHENA", "JANEL",
    "CHLOE", "VEDA", "PATTIE", "TESSIE", "TERA", "MARILYNN", "LUCRETIA",
    "KARRIE", "DINAH", "DANIELA", "ALECIA", "ADELINA", "VERNICE",
    "SHIELA", "PORTIA", "MERRY", "LASHAWN", "DEVON", "DARA", "TAWANA",
    "OMA", "VERDA", "CHRISTIN", "ALENE", "ZELLA", "SANDI", "RAFAELA",
    "MAYA", "KIRA", "CANDIDA", "ALVINA", "SUZAN", "SHAYLA", "LYN",
    "LETTIE", "ALVA", "SAMATHA", "ORALIA", "MATILDE", "MADONNA",
    "LARISSA", "VESTA", "RENITA", "INDIA", "DELOIS", "SHANDA",
    "PHILLIS", "LORRI", "ERLINDA", "CRUZ", "CATHRINE", "BARB", "ZOE",
    "ISABELL", "IONE", "GISELA", "CHARLIE", "VALENCIA", "ROXANNA",
    "MAYME", "KISHA", "ELLIE", "MELLISSA", "DORRIS", "DALIA", "BELLA",
    "ANNETTA", "ZOILA", "RETA", "REINA", "LAURETTA", "KYLIE",
    "CHRISTAL", "PILAR", "CHARLA", "ELISSA", "TIFFANI", "TANA",
    "PAULINA", "LEOTA", "BREANNA", "JAYME", "CARMEL", "VERNELL",
    "TOMASA", "MANDI", "DOMINGA", "SANTA", "MELODIE", "LURA", "ALEXA",
    "TAMELA", "RYAN", "MIRNA", "KERRIE", "VENUS", "NOEL", "FELICITA",
    "CRISTY", "CARMELITA", "BERNIECE", "ANNEMARIE", "TIARA", "ROSEANNE",
    "MISSY", "CORI", "ROXANA", "PRICILLA", "KRISTAL", "JUNG", "ELYSE",
    "HAYDEE", "ALETHA", "BETTINA", "MARGE", "GILLIAN", "FILOMENA",
    "CHARLES", "ZENAIDA", "HARRIETTE", "CARIDAD", "VADA", "UNA",
    "ARETHA", "PEARLINE", "MARJORY", "MARCELA", "FLOR", "EVETTE",
    "ELOUISE", "ALINA", "TRINIDAD", "DAVID", "DAMARIS", "CATHARINE",
    "CARROLL", "BELVA", "NAKIA", "MARLENA", "LUANNE", "LORINE", "KARON",
    "DORENE", "DANITA", "BRENNA", "TATIANA", "SAMMIE", "LOUANN",
    "LOREN", "JULIANNA", "ANDRIA", "PHILOMENA", "LUCILA", "LEONORA",
    "DOVIE", "ROMONA", "MIMI", "JACQUELIN", "GAYE", "TONJA", "MISTI",
    "JOE", "GENE", "CHASTITY", "STACIA", "ROXANN", "MICAELA", "NIKITA",
    "MEI", "VELDA", "MARLYS", "JOHNNA", "AURA", "LAVERN", "IVONNE",
    "HAYLEY", "NICKI", "MAJORIE", "HERLINDA", "GEORGE", "ALPHA",
    "YADIRA", "PERLA", "GREGORIA", "DANIEL", "ANTONETTE", "SHELLI",
    "MOZELLE", "MARIAH", "JOELLE", "CORDELIA", "JOSETTE", "CHIQUITA",
    "TRISTA", "LOUIS", "LAQUITA", "GEORGIANA", "CANDI", "SHANON",
    "LONNIE", "HILDEGARD", "CECIL", "VALENTINA", "STEPHANY", "MAGDA",
    "KAROL", "GERRY", "GABRIELLA", "TIANA", "ROMA", "RICHELLE", "RAY",
    "PRINCESS", "OLETA", "JACQUE", "IDELLA", "ALAINA", "SUZANNA",
    "JOVITA", "BLAIR", "TOSHA", "RAVEN", "NEREIDA", "MARLYN", "KYLA",
    "JOSEPH", "DELFINA", "TENA", "STEPHENIE", "SABINA", "NATHALIE",
    "MARCELLE", "GERTIE", "DARLEEN", "THEA", "SHARONDA", "SHANTEL",
    "BELEN", "VENESSA", "ROSALINA", "ONA", "GENOVEVA", "COREY",
    "CLEMENTINE", "ROSALBA", "RENATE", "RENATA", "MI", "IVORY",
    "GEORGIANNA", "FLOY", "DORCAS", "ARIANA", "TYRA", "THEDA", "MARIAM",
    "JULI", "JESICA", "DONNIE", "VIKKI", "VERLA", "ROSELYN", "MELVINA",
    "JANNETTE", "GINNY", "DEBRAH", "CORRIE", "ASIA", "VIOLETA",
    "MYRTIS", "LATRICIA", "COLLETTE", "CHARLEEN", "ANISSA", "VIVIANA",
    "TWYLA", "PRECIOUS", "NEDRA", "LATONIA", "LAN", "HELLEN", "FABIOLA",
    "ANNAMARIE", "ADELL", "SHARYN", "CHANTAL", "NIKI", "MAUD",
    "LIZETTE", "LINDY", "KIA", "KESHA", "JEANA", "DANELLE", "CHARLINE",
    "CHANEL", "CARROL", "VALORIE", "LIA", "DORTHA", "CRISTAL", "SUNNY",
    "LEONE", "LEILANI", "GERRI", "DEBI", "ANDRA", "KESHIA", "IMA",
    "EULALIA", "EASTER", "DULCE", "NATIVIDAD", "LINNIE", "KAMI",
    "GEORGIE", "CATINA", "BROOK", "ALDA", "WINNIFRED", "SHARLA",
    "RUTHANN", "MEAGHAN", "MAGDALENE", "LISSETTE", "ADELAIDA", "VENITA",
    "TRENA", "SHIRLENE", "SHAMEKA", "ELIZEBETH", "DIAN", "SHANTA",
    "MICKEY", "LATOSHA", "CARLOTTA", "WINDY", "SOON", "ROSINA",
    "MARIANN", "LEISA", "JONNIE", "DAWNA", "CATHIE", "BILLY", "ASTRID",
    "SIDNEY", "LAUREEN", "JANEEN", "HOLLI", "FAWN", "VICKEY", "TERESSA",
    "SHANTE", "RUBYE", "MARCELINA", "CHANDA", "CARY", "TERESE",
    "SCARLETT", "MARTY", "MARNIE", "LULU", "LISETTE", "JENIFFER",
    "ELENOR", "DORINDA", "DONITA", "CARMAN", "BERNITA", "ALTAGRACIA",
    "ALETA", "ADRIANNA", "ZORAIDA", "RONNIE", "NICOLA", "LYNDSEY",
    "KENDALL", "JANINA", "CHRISSY", "AMI", "STARLA", "PHYLIS", "PHUONG",
    "KYRA", "CHARISSE", "BLANCH", "SANJUANITA", "RONA", "NANCI",
    "MARILEE", "MARANDA", "CORY", "BRIGETTE", "SANJUANA", "MARITA",
    "KASSANDRA", "JOYCELYN", "IRA", "FELIPA", "CHELSIE", "BONNY",
    "MIREYA", "LORENZA", "KYONG", "ILEANA", "CANDELARIA", "TONY",
    "TOBY", "SHERIE", "OK", "MARK", "LUCIE", "LEATRICE", "LAKESHIA",
    "GERDA", "EDIE", "BAMBI", "MARYLIN", "LAVON", "HORTENSE", "GARNET",
    "EVIE", "TRESSA", "SHAYNA", "LAVINA", "KYUNG", "JEANETTA",
    "SHERRILL", "SHARA", "PHYLISS", "MITTIE", "ANABEL", "ALESIA",
    "THUY", "TAWANDA", "RICHARD", "JOANIE", "TIFFANIE", "LASHANDA",
    "KARISSA", "ENRIQUETA", "DARIA", "DANIELLA", "CORINNA", "ALANNA",
    "ABBEY", "ROXANE", "ROSEANNA", "MAGNOLIA", "LIDA", "KYLE",
    "JOELLEN", "ERA", "CORAL", "CARLEEN", "TRESA", "PEGGIE", "NOVELLA",
    "NILA", "MAYBELLE", "JENELLE", "CARINA", "NOVA", "MELINA",
    "MARQUERITE", "MARGARETTE", "JOSEPHINA", "EVONNE", "DEVIN",
    "CINTHIA", "ALBINA", "TOYA", "TAWNYA", "SHERITA", "SANTOS",
    "MYRIAM", "LIZABETH", "LISE", "KEELY", "JENNI", "GISELLE",
    "CHERYLE", "ARDITH", "ARDIS", "ALESHA", "ADRIANE", "SHAINA",
    "LINNEA", "KAROLYN", "HONG", "FLORIDA", "FELISHA", "DORI", "DARCI",
    "ARTIE", "ARMIDA", "ZOLA", "XIOMARA", "VERGIE", "SHAMIKA", "NENA",
    "NANNETTE", "MAXIE", "LOVIE", "JEANE", "JAIMIE", "INGE", "FARRAH",
    "ELAINA", "CAITLYN", "STARR", "FELICITAS", "CHERLY", "CARYL",
    "YOLONDA", "YASMIN", "TEENA", "PRUDENCE", "PENNIE", "NYDIA",
    "MACKENZIE", "ORPHA", "MARVEL", "LIZBETH", "LAURETTE", "JERRIE",
    "HERMELINDA", "CAROLEE", "TIERRA", "MIRIAN", "META", "MELONY",
    "KORI", "JENNETTE", "JAMILA", "ENA", "ANH", "YOSHIKO", "SUSANNAH",
    "SALINA", "RHIANNON", "JOLEEN", "CRISTINE", "ASHTON", "ARACELY",
    "TOMEKA", "SHALONDA", "MARTI", "LACIE", "KALA", "JADA", "ILSE",
    "HAILEY", "BRITTANI", "ZONA", "SYBLE", "SHERRYL", "RANDY", "NIDIA",
    "MARLO", "KANDICE", "KANDI", "DEB", "DEAN", "AMERICA", "ALYCIA",
    "TOMMY", "RONNA", "NORENE", "MERCY", "JOSE", "INGEBORG", "GIOVANNA",
    "GEMMA", "CHRISTEL", "AUDRY", "ZORA", "VITA", "VAN", "TRISH",
    "STEPHAINE", "SHIRLEE", "SHANIKA", "MELONIE", "MAZIE", "JAZMIN",
    "INGA", "HOA", "HETTIE", "GERALYN", "FONDA", "ESTRELLA", "ADELLA",
    "SU", "SARITA", "RINA", "MILISSA", "MARIBETH", "GOLDA", "EVON",
    "ETHELYN", "ENEDINA", "CHERISE", "CHANA", "VELVA", "TAWANNA",
    "SADE", "MIRTA", "LI", "KARIE", "JACINTA", "ELNA", "DAVINA",
    "CIERRA", "ASHLIE", "ALBERTHA", "TANESHA", "STEPHANI", "NELLE",
    "MINDI", "LU", "LORINDA", "LARUE", "FLORENE", "DEMETRA", "DEDRA",
    "CIARA", "CHANTELLE", "ASHLY", "SUZY", "ROSALVA", "NOELIA", "LYDA",
    "LEATHA", "KRYSTYNA", "KRISTAN", "KARRI", "DARLINE", "DARCIE",
    "CINDA", "CHEYENNE", "CHERRIE", "AWILDA", "ALMEDA", "ROLANDA",
    "LANETTE", "JERILYN", "GISELE", "EVALYN", "CYNDI", "CLETA", "CARIN",
    "ZINA", "ZENA", "VELIA", "TANIKA", "PAUL", "CHARISSA", "THOMAS",
    "TALIA", "MARGARETE", "LAVONDA", "KAYLEE", "KATHLENE", "JONNA",
    "IRENA", "ILONA", "IDALIA", "CANDIS", "CANDANCE", "BRANDEE",
    "ANITRA", "ALIDA", "SIGRID", "NICOLETTE", "MARYJO", "LINETTE",
    "HEDWIG", "CHRISTIANA", "CASSIDY", "ALEXIA", "TRESSIE", "MODESTA",
    "LUPITA", "LITA", "GLADIS", "EVELIA", "DAVIDA", "CHERRI", "CECILY",
    "ASHELY", "ANNABEL", "AGUSTINA", "WANITA", "SHIRLY", "ROSAURA",
    "HULDA", "EUN", "BAILEY", "YETTA", "VERONA", "THOMASINA", "SIBYL",
    "SHANNAN", "MECHELLE", "LUE", "LEANDRA", "LANI", "KYLEE", "KANDY",
    "JOLYNN", "FERNE", "EBONI", "CORENE", "ALYSIA", "ZULA", "NADA",
    "MOIRA", "LYNDSAY", "LORRETTA", "JUAN", "JAMMIE", "HORTENSIA",
    "GAYNELL", "CAMERON", "ADRIA", "VINA", "VICENTA", "TANGELA",
    "STEPHINE", "NORINE", "NELLA", "LIANA", "LESLEE", "KIMBERELY",
    "ILIANA", "GLORY", "FELICA", "EMOGENE", "ELFRIEDE", "EDEN",
    "EARTHA", "CARMA", "BEA", "OCIE", "MARRY", "LENNIE", "KIARA",
    "JACALYN", "CARLOTA", "ARIELLE", "YU", "STAR", "OTILIA", "KIRSTIN",
    "KACEY", "JOHNETTA", "JOEY", "JOETTA", "JERALDINE", "JAUNITA",
    "ELANA", "DORTHEA", "CAMI", "AMADA", "ADELIA", "VERNITA", "TAMAR",
    "SIOBHAN", "RENEA", "RASHIDA", "OUIDA", "ODELL", "NILSA", "MERYL",
    "KRISTYN", "JULIETA", "DANICA", "BREANNE", "AUREA", "ANGLEA",
    "SHERRON", "ODETTE", "MALIA", "LORELEI", "LIN", "LEESA", "KENNA",
    "KATHLYN", "FIONA", "CHARLETTE", "SUZIE", "SHANTELL", "SABRA",
    "RACQUEL", "MYONG", "MIRA", "MARTINE", "LUCIENNE", "LAVADA",
    "JULIANN", "JOHNIE", "ELVERA", "DELPHIA", "CLAIR", "CHRISTIANE",
    "CHAROLETTE", "CARRI", "AUGUSTINE", "ASHA", "ANGELLA", "PAOLA",
    "NINFA", "LEDA", "LAI", "EDA", "SUNSHINE", "STEFANI", "SHANELL",
    "PALMA", "MACHELLE", "LISSA", "KECIA", "KATHRYNE", "KARLENE",
    "JULISSA", "JETTIE", "JENNIFFER", "HUI", "CORRINA", "CHRISTOPHER",
    "CAROLANN", "ALENA", "TESS", "ROSARIA", "MYRTICE", "MARYLEE",
    "LIANE", "KENYATTA", "JUDIE", "JANEY", "IN", "ELMIRA", "ELDORA",
    "DENNA", "CRISTI", "CATHI", "ZAIDA", "VONNIE", "VIVA", "VERNIE",
    "ROSALINE", "MARIELA", "LUCIANA", "LESLI", "KARAN", "FELICE",
    "DENEEN", "ADINA", "WYNONA", "TARSHA", "SHERON", "SHASTA",
    "SHANITA", "SHANI", "SHANDRA", "RANDA", "PINKIE", "PARIS", "NELIDA",
    "MARILOU", "LYLA", "LAURENE", "LACI", "JOI", "JANENE", "DOROTHA",
    "DANIELE", "DANI", "CAROLYNN", "CARLYN", "BERENICE", "AYESHA",
    "ANNELIESE", "ALETHEA", "THERSA", "TAMIKO", "RUFINA", "OLIVA",
    "MOZELL", "MARYLYN", "MADISON", "KRISTIAN", "KATHYRN", "KASANDRA",
    "KANDACE", "JANAE", "GABRIEL", "DOMENICA", "DEBBRA", "DANNIELLE",
    "CHUN", "BUFFY", "BARBIE", "ARCELIA", "AJA", "ZENOBIA", "SHAREN",
    "SHAREE", "PATRICK", "PAGE", "MY", "LAVINIA", "KUM", "KACIE",
    "JACKELINE", "HUONG", "FELISA", "EMELIA", "ELEANORA", "CYTHIA",
    "CRISTIN", "CLYDE", "CLARIBEL", "CARON", "ANASTACIA", "ZULMA",
    "ZANDRA", "YOKO", "TENISHA", "SUSANN", "SHERILYN", "SHAY",
    "SHAWANDA", "SABINE", "ROMANA", "MATHILDA", "LINSEY", "KEIKO",
    "JOANA", "ISELA", "GRETTA", "GEORGETTA", "EUGENIE", "DUSTY",
    "DESIRAE", "DELORA", "CORAZON", "ANTONINA", "ANIKA", "WILLENE",
    "TRACEE", "TAMATHA", "REGAN", "NICHELLE", "MICKIE", "MAEGAN",
    "LUANA", "LANITA", "KELSIE", "EDELMIRA", "BREE", "AFTON", "TEODORA",
    "TAMIE", "SHENA", "MEG", "LINH", "KELI", "KACI", "DANYELLE",
    "BRITT", "ARLETTE", "ALBERTINE", "ADELLE", "TIFFINY", "STORMY",
    "SIMONA", "NUMBERS", "NICOLASA", "NICHOL", "NIA", "NAKISHA", "MEE",
    "MAIRA", "LOREEN", "KIZZY", "JOHNNY", "JAY", "FALLON", "CHRISTENE",
    "BOBBYE", "ANTHONY", "YING", "VINCENZA", "TANJA", "RUBIE", "RONI",
    "QUEENIE", "MARGARETT", "KIMBERLI", "IRMGARD", "IDELL", "HILMA",
    "EVELINA", "ESTA", "EMILEE", "DENNISE", "DANIA", "CARL", "CARIE",
    "ANTONIO", "WAI", "SANG", "RISA", "RIKKI", "PARTICIA", "MUI",
    "MASAKO", "MARIO", "LUVENIA", "LOREE", "LONI", "LIEN", "KEVIN",
    "GIGI", "FLORENCIA", "DORIAN", "DENITA", "DALLAS", "CHI", "BILLYE",
    "ALEXANDER", "TOMIKA", "SHARITA", "RANA", "NIKOLE", "NEOMA",
    "MARGARITE", "MADALYN", "LUCINA", "LAILA", "KALI", "JENETTE",
    "GABRIELE", "EVELYNE", "ELENORA", "CLEMENTINA", "ALEJANDRINA",
    "ZULEMA", "VIOLETTE", "VANNESSA", "THRESA", "RETTA", "PIA",
    "PATIENCE", "NOELLA", "NICKIE", "JONELL", "DELTA", "CHUNG", "CHAYA",
    "CAMELIA", "BETHEL", "ANYA", "ANDREW", "THANH", "SUZANN", "SPRING",
    "SHU", "MILA", "LILLA", "LAVERNA", "KEESHA", "KATTIE", "GIA",
    "GEORGENE", "EVELINE", "ESTELL", "ELIZBETH", "VIVIENNE", "VALLIE",
    "TRUDIE", "STEPHANE", "MICHEL", "MAGALY", "MADIE", "KENYETTA",
    "KARREN", "JANETTA", "HERMINE", "HARMONY", "DRUCILLA", "DEBBI",
    "CELESTINA", "CANDIE", "BRITNI", "BECKIE", "AMINA", "ZITA", "YUN",
    "YOLANDE", "VIVIEN", "VERNETTA", "TRUDI", "SOMMER", "PEARLE",
    "PATRINA", "OSSIE", "NICOLLE", "LOYCE", "LETTY", "LARISA",
    "KATHARINA", "JOSELYN", "JONELLE", "JENELL", "IESHA", "HEIDE",
    "FLORINDA", "FLORENTINA", "FLO", "ELODIA", "DORINE", "BRUNILDA",
    "BRIGID", "ASHLI", "ARDELLA", "TWANA", "THU", "TARAH", "SUNG",
    "SHEA", "SHAVON", "SHANE", "SERINA", "RAYNA", "RAMONITA", "NGA",
    "MARGURITE", "LUCRECIA", "KOURTNEY", "KATI", "JESUS", "JESENIA",
    "DIAMOND", "CRISTA", "AYANA", "ALICA", "ALIA", "VINNIE", "SUELLEN",
    "ROMELIA", "RACHELL", "PIPER", "OLYMPIA", "MICHIKO", "KATHALEEN",
    "JOLIE", "JESSI", "JANESSA", "HANA", "HA", "ELEASE", "CARLETTA",
    "BRITANY", "SHONA", "SALOME", "ROSAMOND", "REGENA", "RAINA", "NGOC",
    "NELIA", "LOUVENIA", "LESIA", "LATRINA", "LATICIA", "LARHONDA",
    "JINA", "JACKI", "HOLLIS", "HOLLEY", "EMMY", "DEEANN", "CORETTA",
    "ARNETTA", "VELVET", "THALIA", "SHANICE", "NETA", "MIKKI", "MICKI",
    "LONNA", "LEANA", "LASHUNDA", "KILEY", "JOYE", "JACQULYN",
    "IGNACIA", "HYUN", "HIROKO", "HENRY", "HENRIETTE", "ELAYNE",
    "DELINDA", "DARNELL", "DAHLIA", "COREEN", "CONSUELA", "CONCHITA",
    "CELINE", "BABETTE", "AYANNA", "ANETTE", "ALBERTINA", "SKYE",
    "SHAWNEE", "SHANEKA", "QUIANA", "PAMELIA", "MIN", "MERRI",
    "MERLENE", "MARGIT", "KIESHA", "KIERA", "KAYLENE", "JODEE",
    "JENISE", "ERLENE", "EMMIE", "ELSE", "DARYL", "DALILA", "DAISEY",
    "CODY", "CASIE", "BELIA", "BABARA", "VERSIE", "VANESA", "SHELBA",
    "SHAWNDA", "SAM", "NORMAN", "NIKIA", "NAOMA", "MARNA", "MARGERET",
    "MADALINE", "LAWANA", "KINDRA", "JUTTA", "JAZMINE", "JANETT",
    "HANNELORE", "GLENDORA", "GERTRUD", "GARNETT", "FREEDA",
    "FREDERICA", "FLORANCE", "FLAVIA", "DENNIS", "CARLINE", "BEVERLEE",
    "ANJANETTE", "VALDA", "TRINITY", "TAMALA", "STEVIE", "SHONNA",
    "SHA", "SARINA", "ONEIDA", "MICAH", "MERILYN", "MARLEEN", "LURLINE",
    "LENNA", "KATHERIN", "JIN", "JENI", "HAE", "GRACIA", "GLADY",
    "FARAH", "ERIC", "ENOLA", "EMA", "DOMINQUE", "DEVONA", "DELANA",
    "CECILA", "CAPRICE", "ALYSHA", "ALI", "ALETHIA", "VENA", "THERESIA",
    "TAWNY", "SONG", "SHAKIRA", "SAMARA", "SACHIKO", "RACHELE",
    "PAMELLA", "NICKY", "MARNI", "MARIEL", "MAREN", "MALISA", "LIGIA",
    "LERA", "LATORIA", "LARAE", "KIMBER", "KATHERN", "KAREY",
    "JENNEFER", "JANETH", "HALINA", "FREDIA", "DELISA", "DEBROAH",
    "CIERA", "CHIN", "ANGELIKA", "ANDREE", "ALTHA", "YEN", "VIVAN",
    "TERRESA", "TANNA", "SUK", "SUDIE", "SOO", "SIGNE", "SALENA",
    "RONNI", "REBBECCA", "MYRTIE", "MCKENZIE", "MALIKA", "MAIDA",
    "LOAN", "LEONARDA", "KAYLEIGH", "FRANCE", "ETHYL", "ELLYN", "DAYLE",
    "CAMMIE", "BRITTNI", "BIRGIT", "AVELINA", "ASUNCION", "ARIANNA",
    "AKIKO", "VENICE", "TYESHA", "TONIE", "TIESHA", "TAKISHA",
    "STEFFANIE", "SINDY", "SANTANA", "MEGHANN", "MANDA", "MACIE",
    "LADY", "KELLYE", "KELLEE", "JOSLYN", "JASON", "INGER", "INDIRA",
    "GLINDA", "GLENNIS", "FERNANDA", "FAUSTINA", "ENEIDA", "ELICIA",
    "DOT", "DIGNA", "DELL", "ARLETTA", "ANDRE", "WILLIA", "TAMMARA",
    "TABETHA", "SHERRELL", "SARI", "REFUGIO", "REBBECA", "PAULETTA",
    "NIEVES", "NATOSHA", "NAKITA", "MAMMIE", "KENISHA", "KAZUKO",
    "KASSIE", "GARY", "EARLEAN", "DAPHINE", "CORLISS", "CLOTILDE",
    "CAROLYNE", "BERNETTA", "AUGUSTINA", "AUDREA", "ANNIS", "ANNABELL",
    "YAN", "TENNILLE", "TAMICA", "SELENE", "SEAN", "ROSANA", "REGENIA",
    "QIANA", "MARKITA", "MACY", "LEEANNE", "LAURINE", "KYM", "JESSENIA",
    "JANITA", "GEORGINE", "GENIE", "EMIKO", "ELVIE", "DEANDRA",
    "DAGMAR", "CORIE", "COLLEN", "CHERISH", "ROMAINE", "PORSHA",
    "PEARLENE", "MICHELINE", "MERNA", "MARGORIE", "MARGARETTA", "LORE",
    "KENNETH", "JENINE", "HERMINA", "FREDERICKA", "ELKE", "DRUSILLA",
    "DORATHY", "DIONE", "DESIRE", "CELENA", "BRIGIDA", "ANGELES",
    "ALLEGRA", "THEO", "TAMEKIA", "SYNTHIA", "STEPHEN", "SOOK",
    "SLYVIA", "ROSANN", "REATHA", "RAYE", "MARQUETTA", "MARGART",
    "LING", "LAYLA", "KYMBERLY", "KIANA", "KAYLEEN", "KATLYN", "KARMEN",
    "JOELLA", "IRINA", "EMELDA", "ELENI", "DETRA", "CLEMMIE", "CHERYLL",
    "CHANTELL", "CATHEY", "ARNITA", "ARLA", "ANGLE", "ANGELIC", "ALYSE",
    "ZOFIA", "THOMASINE", "TENNIE", "SON", "SHERLY", "SHERLEY",
    "SHARYL", "REMEDIOS", "PETRINA", "NICKOLE", "MYUNG", "MYRLE",
    "MOZELLA", "LOUANNE", "LISHA", "LATIA", "LANE", "KRYSTA",
    "JULIENNE", "JOEL", "JEANENE", "JACQUALINE", "ISAURA", "GWENDA",
    "EARLEEN", "DONALD", "CLEOPATRA", "CARLIE", "AUDIE", "ANTONIETTA",
    "ALISE", "ALEX", "VERDELL", "VAL", "TYLER", "TOMOKO", "THAO",
    "TALISHA", "STEVEN", "SO", "SHEMIKA", "SHAUN", "SCARLET", "SAVANNA",
    "SANTINA", "ROSIA", "RAEANN", "ODILIA", "NANA", "MINNA", "MAGAN",
    "LYNELLE", "LE", "KARMA", "JOEANN", "IVANA", "INELL", "ILANA",
    "HYE", "HONEY", "HEE", "GUDRUN", "FRANK", "DREAMA", "CRISSY",
    "CHANTE", "CARMELINA", "ARVILLA", "ARTHUR", "ANNAMAE", "ALVERA",
    "ALEIDA", "AARON", "YEE", "YANIRA", "VANDA", "TIANNA", "TAM",
    "STEFANIA", "SHIRA", "PERRY", "NICOL", "NANCIE", "MONSERRATE",
    "MINH", "MELYNDA", "MELANY", "MATTHEW", "LOVELLA", "LAURE", "KIRBY",
    "KACY", "JACQUELYNN", "HYON", "GERTHA", "FRANCISCO", "ELIANA",
    "CHRISTENA", "CHRISTEEN", "CHARISE", "CATERINA", "CARLEY",
    "CANDYCE", "ARLENA", "AMMIE", "YANG", "WILLETTE", "VANITA", "TUYET",
    "TINY", "SYREETA", "SILVA", "SCOTT", "RONALD", "PENNEY", "NYLA",
    "MICHAL", "MAURICE", "MARYAM", "MARYA", "MAGEN", "LUDIE", "LOMA",
    "LIVIA", "LANELL", "KIMBERLIE", "JULEE", "DONETTA", "DIEDRA",
    "DENISHA", "DEANE", "DAWNE", "CLARINE", "CHERRYL", "BRONWYN",
    "BRANDON", "ALLA", "VALERY", "TONDA", "SUEANN", "SORAYA",
    "SHOSHANA", "SHELA", "SHARLEEN", "SHANELLE", "NERISSA", "MICHEAL",
    "MERIDITH", "MELLIE", "MAYE", "MAPLE", "MAGARET", "LUIS", "LILI",
    "LEONILA", "LEONIE", "LEEANNA", "LAVONIA", "LAVERA", "KRISTEL",
    "KATHEY", "KATHE", "JUSTIN", "JULIAN", "JIMMY", "JANN", "ILDA",
    "HILDRED", "HILDEGARDE", "GENIA", "FUMIKO", "EVELIN", "ERMELINDA",
    "ELLY", "DUNG", "DOLORIS", "DIONNA", "DANAE", "BERNEICE", "ANNICE",
    "ALIX", "VERENA", "VERDIE", "TRISTAN", "SHAWNNA", "SHAWANA",
    "SHAUNNA", "ROZELLA", "RANDEE", "RANAE", "MILAGRO", "LYNELL",
    "LUISE", "LOUIE", "LOIDA", "LISBETH", "KARLEEN", "JUNITA", "JONA",
    "ISIS", "HYACINTH", "HEDY", "GWENN", "ETHELENE", "ERLINE", "EDWARD",
    "DONYA", "DOMONIQUE", "DELICIA", "DANNETTE", "CICELY", "BRANDA",
    "BLYTHE", "BETHANN", "ASHLYN", "ANNALEE", "ALLINE", "YUKO", "VELLA",
    "TRANG", "TOWANDA", "TESHA", "SHERLYN", "NARCISA", "MIGUELINA",
    "MERI", "MAYBELL", "MARLANA", "MARGUERITA", "MADLYN", "LUNA",
    "LORY", "LORIANN", "LIBERTY", "LEONORE", "LEIGHANN", "LAURICE",
    "LATESHA", "LARONDA", "KATRICE", "KASIE", "KARL", "KALEY",
    "JADWIGA", "GLENNIE", "GEARLDINE", "FRANCINA", "EPIFANIA", "DYAN",
    "DORIE", "DIEDRE", "DENESE", "DEMETRICE", "DELENA", "DARBY",
    "CRISTIE", "CLEORA", "CATARINA", "CARISA", "BERNIE", "BARBERA",
    "ALMETA", "TRULA", "TEREASA", "SOLANGE", "SHEILAH", "SHAVONNE",
    "SANORA", "ROCHELL", "MATHILDE", "MARGARETA", "MAIA", "LYNSEY",
    "LAWANNA", "LAUNA", "KENA", "KEENA", "KATIA", "JAMEY", "GLYNDA",
    "GAYLENE", "ELVINA", "ELANOR", "DANUTA", "DANIKA", "CRISTEN",
    "CORDIE", "COLETTA", "CLARITA", "CARMON", "BRYNN", "AZUCENA",
    "AUNDREA", "ANGELE", "YI", "WALTER", "VERLIE", "VERLENE", "TAMESHA",
    "SILVANA", "SEBRINA", "SAMIRA", "REDA", "RAYLENE", "PENNI",
    "PANDORA", "NORAH", "NOMA", "MIREILLE", "MELISSIA", "MARYALICE",
    "LARAINE", "KIMBERY", "KARYL", "KARINE", "KAM", "JOLANDA", "JOHANA",
    "JESUSA", "JALEESA", "JAE", "JACQUELYNE", "IRISH", "ILUMINADA",
    "HILARIA", "HANH", "GENNIE", "FRANCIE", "FLORETTA", "EXIE", "EDDA",
    "DREMA", "DELPHA", "BEV", "BARBAR", "ASSUNTA", "ARDELL", "ANNALISA",
    "ALISIA", "YUKIKO", "YOLANDO", "WONDA", "WEI", "WALTRAUD", "VETA",
    "TEQUILA", "TEMEKA", "TAMEIKA", "SHIRLEEN", "SHENITA", "PIEDAD",
    "OZELLA", "MIRTHA", "MARILU", "KIMIKO", "JULIANE", "JENICE", "JEN",
    "JANAY", "JACQUILINE", "HILDE", "FE", "FAE", "EVAN", "EUGENE",
    "ELOIS", "ECHO", "DEVORAH", "CHAU", "BRINDA", "BETSEY", "ARMINDA",
    "ARACELIS", "APRYL", "ANNETT", "ALISHIA", "VEOLA", "USHA",
    "TOSHIKO", "THEOLA", "TASHIA", "TALITHA", "SHERY", "RUDY",
    "RENETTA", "REIKO", "RASHEEDA", "OMEGA", "OBDULIA", "MIKA",
    "MELAINE", "MEGGAN", "MARTIN", "MARLEN", "MARGET", "MARCELINE",
    "MANA", "MAGDALEN", "LIBRADA", "LEZLIE", "LEXIE", "LATASHIA",
    "LASANDRA", "KELLE", "ISIDRA", "ISA", "INOCENCIA", "GWYN",
    "FRANCOISE", "ERMINIA", "ERINN", "DIMPLE", "DEVORA", "CRISELDA",
    "ARMANDA", "ARIE", "ARIANE", "ANGELO", "ANGELENA", "ALLEN", "ALIZA",
    "ADRIENE", "ADALINE", "XOCHITL", "TWANNA", "TRAN", "TOMIKO",
    "TAMISHA", "TAISHA", "SUSY", "SIU", "RUTHA", "ROXY", "RHONA",
    "RAYMOND", "OTHA", "NORIKO", "NATASHIA", "MERRIE", "MELVIN",
    "MARINDA", "MARIKO", "MARGERT", "LORIS", "LIZZETTE", "LEISHA",
    "KAILA", "KA", "JOANNIE", "JERRICA", "JENE", "JANNET", "JANEE",
    "JACINDA", "HERTA", "ELENORE", "DORETTA", "DELAINE", "DANIELL",
    "CLAUDIE", "CHINA", "BRITTA", "APOLONIA", "AMBERLY", "ALEASE",
    "YURI", "YUK", "WEN", "WANETA", "UTE", "TOMI", "SHARRI", "SANDIE",
    "ROSELLE", "REYNALDA", "RAGUEL", "PHYLICIA", "PATRIA", "OLIMPIA",
    "ODELIA", "MITZIE", "MITCHELL", "MISS", "MINDA", "MIGNON", "MICA",
    "MENDY", "MARIVEL", "MAILE", "LYNETTA", "LAVETTE", "LAURYN",
    "LATRISHA", "LAKIESHA", "KIERSTEN", "KARY", "JOSPHINE", "JOLYN",
    "JETTA", "JANISE", "JACQUIE", "IVELISSE", "GLYNIS", "GIANNA",
    "GAYNELLE", "EMERALD", "DEMETRIUS", "DANYELL", "DANILLE", "DACIA",
    "CORALEE", "CHER", "CEOLA", "BRETT", "BELL", "ARIANNE", "ALESHIA",
    "YUNG", "WILLIEMAE", "TROY", "TRINH", "THORA", "TAI", "SVETLANA",
    "SHERIKA", "SHEMEKA", "SHAUNDA", "ROSELINE", "RICKI", "MELDA",
    "MALLIE", "LAVONNA", "LATINA", "LARRY", "LAQUANDA", "LALA",
    "LACHELLE", "KLARA", "KANDIS", "JOHNA", "JEANMARIE", "JAYE", "HANG",
    "GRAYCE", "GERTUDE", "EMERITA", "EBONIE", "CLORINDA", "CHING",
    "CHERY", "CAROLA", "BREANN", "BLOSSOM", "BERNARDINE", "BECKI",
    "ARLETHA", "ARGELIA", "ARA", "ALITA", "YULANDA", "YON", "YESSENIA",
    "TOBI", "TASIA", "SYLVIE", "SHIRL", "SHIRELY", "SHERIDAN", "SHELLA",
    "SHANTELLE", "SACHA", "ROYCE", "REBECKA", "REAGAN", "PROVIDENCIA",
    "PAULENE", "MISHA", "MIKI", "MARLINE", "MARICA", "LORITA",
    "LATOYIA", "LASONYA", "KERSTIN", "KENDA", "KEITHA", "KATHRIN",
    "JAYMIE", "JACK", "GRICELDA", "GINETTE", "ERYN", "ELINA",
    "ELFRIEDA", "DANYEL", "CHEREE", "CHANELLE", "BARRIE", "AVERY",
    "AURORE", "ANNAMARIA", "ALLEEN", "AILENE", "AIDE", "YASMINE",
    "VASHTI", "VALENTINE", "TREASA", "TORY", "TIFFANEY", "SHERYLL",
    "SHARIE", "SHANAE", "SAU", "RAISA", "PA", "NEDA", "MITSUKO",
    "MIRELLA", "MILDA", "MARYANNA", "MARAGRET", "MABELLE", "LUETTA",
    "LORINA", "LETISHA", "LATARSHA", "LANELLE", "LAJUANA", "KRISSY",
    "KARLY", "KARENA", "JON", "JESSIKA", "JERICA", "JEANELLE",
    "JANUARY", "JALISA", "JACELYN", "IZOLA", "IVEY", "GREGORY", "EUNA",
    "ETHA", "DREW", "DOMITILA", "DOMINICA", "DAINA", "CREOLA", "CARLI",
    "CAMIE", "BUNNY", "BRITTNY", "ASHANTI", "ANISHA", "ALEEN", "ADAH",
    "YASUKO", "WINTER", "VIKI", "VALRIE", "TONA", "TINISHA", "THI",
    "TERISA", "TATUM", "TANEKA", "SIMONNE", "SHALANDA", "SERITA",
    "RESSIE", "REFUGIA", "PAZ", "OLENE", "NA", "MERRILL", "MARGHERITA",
    "MANDIE", "MAN", "MAIRE", "LYNDIA", "LUCI", "LORRIANE", "LORETA",
    "LEONIA", "LAVONA", "LASHAWNDA", "LAKIA", "KYOKO", "KRYSTINA",
    "KRYSTEN", "KENIA", "KELSI", "JUDE", "JEANICE", "ISOBEL",
    "GEORGIANN", "GENNY", "FELICIDAD", "EILENE", "DEON", "DELOISE",
    "DEEDEE", "DANNIE", "CONCEPTION", "CLORA", "CHERILYN", "CHANG",
    "CALANDRA", "BERRY", "ARMANDINA", "ANISA", "ULA", "TIMOTHY",
    "TIERA", "THERESSA", "STEPHANIA", "SIMA", "SHYLA", "SHONTA",
    "SHERA", "SHAQUITA", "SHALA", "SAMMY", "ROSSANA", "NOHEMI", "NERY",
    "MORIAH", "MELITA", "MELIDA", "MELANI", "MARYLYNN", "MARISHA",
    "MARIETTE", "MALORIE", "MADELENE", "LUDIVINA", "LORIA", "LORETTE",
    "LORALEE", "LIANNE", "LEON", "LAVENIA", "LAURINDA", "LASHON", "KIT",
    "KIMI", "KEILA", "KATELYNN", "KAI", "JONE", "JOANE", "JI", "JAYNA",
    "JANELLA", "JA", "HUE", "HERTHA", "FRANCENE", "ELINORE", "DESPINA",
    "DELSIE", "DEEDRA", "CLEMENCIA", "CARRY", "CAROLIN", "CARLOS",
    "BULAH", "BRITTANIE", "BOK", "BLONDELL", "BIBI", "BEAULAH", "BEATA",
    "ANNITA", "AGRIPINA", "VIRGEN", "VALENE", "UN", "TWANDA", "TOMMYE",
    "TOI", "TARRA", "TARI", "TAMMERA", "SHAKIA", "SADYE", "RUTHANNE",
    "ROCHEL", "RIVKA", "PURA", "NENITA", "NATISHA", "MING", "MERRILEE",
    "MELODEE", "MARVIS", "LUCILLA", "LEENA", "LAVETA", "LARITA",
    "LANIE", "KEREN", "ILEEN", "GEORGEANN", "GENNA", "GENESIS", "FRIDA",
    "EWA", "EUFEMIA", "EMELY", "ELA", "EDYTH", "DEONNA", "DEADRA",
    "DARLENA", "CHANELL", "CHAN", "CATHERN", "CASSONDRA", "CASSAUNDRA",
    "BERNARDA", "BERNA", "ARLINDA", "ANAMARIA", "ALBERT", "WESLEY",
    "VERTIE", "VALERI", "TORRI", "TATYANA", "STASIA", "SHERISE",
    "SHERILL", "SEASON", "SCOTTIE", "SANDA", "RUTHE", "ROSY", "ROBERTO",
    "ROBBI", "RANEE", "QUYEN", "PEARLY", "PALMIRA", "ONITA", "NISHA",
    "NIESHA", "NIDA", "NEVADA", "NAM", "MERLYN", "MAYOLA", "MARYLOUISE",
    "MARYLAND", "MARX", "MARTH", "MARGENE", "MADELAINE", "LONDA",
    "LEONTINE", "LEOMA", "LEIA", "LAWRENCE", "LAURALEE", "LANORA",
    "LAKITA", "KIYOKO", "KETURAH", "KATELIN", "KAREEN", "JONIE",
    "JOHNETTE", "JENEE", "JEANETT", "IZETTA", "HIEDI", "HEIKE",
    "HASSIE", "HAROLD", "GIUSEPPINA", "GEORGANN", "FIDELA", "FERNANDE",
    "ELWANDA", "ELLAMAE", "ELIZ", "DUSTI", "DOTTY", "CYNDY", "CORALIE",
    "CELESTA", "ARGENTINA", "ALVERTA", "XENIA", "WAVA", "VANETTA",
    "TORRIE", "TASHINA", "TANDY", "TAMBRA", "TAMA", "STEPANIE", "SHILA",
    "SHAUNTA", "SHARAN", "SHANIQUA", "SHAE", "SETSUKO", "SERAFINA",
    "SANDEE", "ROSAMARIA", "PRISCILA", "OLINDA", "NADENE", "MUOI",
    "MICHELINA", "MERCEDEZ", "MARYROSE", "MARIN", "MARCENE", "MAO",
    "MAGALI", "MAFALDA", "LOGAN", "LINN", "LANNIE", "KAYCE", "KAROLINE",
    "KAMILAH", "KAMALA", "JUSTA", "JOLINE", "JENNINE", "JACQUETTA",
    "IRAIDA", "GERALD", "GEORGEANNA", "FRANCHESCA", "FAIRY", "EMELINE",
    "ELANE", "EHTEL", "EARLIE", "DULCIE", "DALENE", "CRIS", "CLASSIE",
    "CHERE", "CHARIS", "CAROYLN", "CARMINA", "CARITA", "BRIAN",
    "BETHANIE", "AYAKO", "ARICA", "AN", "ALYSA", "ALESSANDRA", "AKILAH",
    "ADRIEN", "ZETTA", "YOULANDA", "YELENA", "YAHAIRA", "XUAN",
    "WENDOLYN", "VICTOR", "TIJUANA", "TERRELL", "TERINA", "TERESIA",
    "SUZI", "SUNDAY", "SHERELL", "SHAVONDA", "SHAUNTE", "SHARDA",
    "SHAKITA", "SENA", "RYANN", "RUBI", "RIVA", "REGINIA", "REA",
    "RACHAL", "PARTHENIA", "PAMULA", "MONNIE", "MONET", "MICHAELE",
    "MELIA", "MARINE", "MALKA", "MAISHA", "LISANDRA", "LEO", "LEKISHA",
    "LEAN", "LAURENCE", "LAKENDRA", "KRYSTIN", "KORTNEY", "KIZZIE",
    "KITTIE", "KERA", "KENDAL", "KEMBERLY", "KANISHA", "JULENE", "JULE",
    "JOSHUA", "JOHANNE", "JEFFREY", "JAMEE", "HAN", "HALLEY", "GIDGET",
    "GALINA", "FREDRICKA", "FLETA", "FATIMAH", "EUSEBIA", "ELZA",
    "ELEONORE", "DORTHEY", "DORIA", "DONELLA", "DINORAH", "DELORSE",
    "CLARETHA", "CHRISTINIA", "CHARLYN", "BONG", "BELKIS", "AZZIE",
    "ANDERA", "AIKO", "ADENA", "YER", "YAJAIRA", "WAN", "VANIA",
    "ULRIKE", "TOSHIA", "TIFANY", "STEFANY", "SHIZUE", "SHENIKA",
    "SHAWANNA", "SHAROLYN", "SHARILYN", "SHAQUANA", "SHANTAY", "SEE",
    "ROZANNE", "ROSELEE", "RICKIE", "REMONA", "REANNA", "RAELENE",
    "QUINN", "PHUNG", "PETRONILA", "NATACHA", "NANCEY", "MYRL",
    "MIYOKO", "MIESHA", "MERIDETH", "MARVELLA", "MARQUITTA", "MARHTA",
    "MARCHELLE", "LIZETH", "LIBBIE", "LAHOMA", "LADAWN", "KINA",
    "KATHELEEN", "KATHARYN", "KARISA", "KALEIGH", "JUNIE", "JULIEANN",
    "JOHNSIE", "JANEAN", "JAIMEE", "JACKQUELINE", "HISAKO", "HERMA",
    "HELAINE", "GWYNETH", "GLENN", "GITA", "EUSTOLIA", "EMELINA",
    "ELIN", "EDRIS", "DONNETTE", "DONNETTA", "DIERDRE", "DENAE",
    "DARCEL", "CLAUDE", "CLARISA", "CINDERELLA", "CHIA", "CHARLESETTA",
    "CHARITA", "CELSA", "CASSY", "CASSI", "CARLEE", "BRUNA",
    "BRITTANEY", "BRANDE", "BILLI", "BAO", "ANTONETTA", "ANGLA",
    "ANGELYN", "ANALISA", "ALANE", "WENONA", "WENDIE", "VERONIQUE",
    "VANNESA", "TOBIE", "TEMPIE", "SUMIKO", "SULEMA", "SPARKLE",
    "SOMER", "SHEBA", "SHAYNE", "SHARICE", "SHANEL", "SHALON", "SAGE",
    "ROY", "ROSIO", "ROSELIA", "RENAY", "REMA", "REENA", "PORSCHE",
    "PING", "PEG", "OZIE", "ORETHA", "ORALEE", "ODA", "NU", "NGAN",
    "NAKESHA", "MILLY", "MARYBELLE", "MARLIN", "MARIS", "MARGRETT",
    "MARAGARET", "MANIE", "LURLENE", "LILLIA", "LIESELOTTE", "LAVELLE",
    "LASHAUNDA", "LAKEESHA", "KEITH", "KAYCEE", "KALYN", "JOYA",
    "JOETTE", "JENAE", "JANIECE", "ILLA", "GRISEL", "GLAYDS", "GENEVIE",
    "GALA", "FREDDA", "FRED", "ELMER", "ELEONOR", "DEBERA", "DEANDREA",
    "DAN", "CORRINNE", "CORDIA", "CONTESSA", "COLENE", "CLEOTILDE",
    "CHARLOTT", "CHANTAY", "CECILLE", "BEATRIS", "AZALEE", "ARLEAN",
    "ARDATH", "ANJELICA", "ANJA", "ALFREDIA", "ALEISHA", "ADAM", "ZADA",
    "YUONNE", "XIAO", "WILLODEAN", "WHITLEY", "VENNIE", "VANNA",
    "TYISHA", "TOVA", "TORIE", "TONISHA", "TILDA", "TIEN", "TEMPLE",
    "SIRENA", "SHERRIL", "SHANTI", "SHAN", "SENAIDA", "SAMELLA",
    "ROBBYN", "RENDA", "REITA", "PHEBE", "PAULITA", "NOBUKO", "NGUYET",
    "NEOMI", "MOON", "MIKAELA", "MELANIA", "MAXIMINA", "MARG", "MAISIE",
    "LYNNA", "LILLI", "LAYNE", "LASHAUN", "LAKENYA", "LAEL", "KIRSTIE",
    "KATHLINE", "KASHA", "KARLYN", "KARIMA", "JOVAN", "JOSEFINE",
    "JENNELL", "JACQUI", "JACKELYN", "HYO", "HIEN", "GRAZYNA",
    "FLORRIE", "FLORIA", "ELEONORA", "DWANA", "DORLA", "DONG", "DELMY",
    "DEJA", "DEDE", "DANN", "CRYSTA", "CLELIA", "CLARIS", "CLARENCE",
    "CHIEKO", "CHERLYN", "CHERELLE", "CHARMAIN", "CHARA", "CAMMY",
    "BEE", "ARNETTE", "ARDELLE", "ANNIKA", "AMIEE", "AMEE", "ALLENA",
    "YVONE", "YUKI", "YOSHIE", "YEVETTE", "YAEL", "WILLETTA", "VONCILE",
    "VENETTA", "TULA", "TONETTE", "TIMIKA", "TEMIKA", "TELMA", "TEISHA",
    "TAREN", "TA", "STACEE", "SHIN", "SHAWNTA", "SATURNINA", "RICARDA",
    "POK", "PASTY", "ONIE", "NUBIA", "MORA", "MIKE", "MARIELLE",
    "MARIELLA", "MARIANELA", "MARDELL", "MANY", "LUANNA", "LOISE",
    "LISABETH", "LINDSY", "LILLIANA", "LILLIAM", "LELAH", "LEIGHA",
    "LEANORA", "LANG", "KRISTEEN", "KHALILAH", "KEELEY", "KANDRA",
    "JUNKO", "JOAQUINA", "JERLENE", "JANI", "JAMIKA", "JAME", "HSIU",
    "HERMILA", "GOLDEN", "GENEVIVE", "EVIA", "EUGENA", "EMMALINE",
    "ELFREDA", "ELENE", "DONETTE", "DELCIE", "DEEANNA", "DARCEY", "CUC",
    "CLARINDA", "CIRA", "CHAE", "CELINDA", "CATHERYN", "CATHERIN",
    "CASIMIRA", "CARMELIA", "CAMELLIA", "BREANA", "BOBETTE",
    "BERNARDINA", "BEBE", "BASILIA", "ARLYNE", "AMAL", "ALAYNA",
    "ZONIA", "ZENIA", "YURIKO", "YAEKO", "WYNELL", "WILLOW", "WILLENA",
    "VERNIA", "TU", "TRAVIS", "TORA", "TERRILYN", "TERICA", "TENESHA",
    "TAWNA", "TAJUANA", "TAINA", "STEPHNIE", "SONA", "SOL", "SINA",
    "SHONDRA", "SHIZUKO", "SHERLENE", "SHERICE", "SHARIKA", "ROSSIE",
    "ROSENA", "RORY", "RIMA", "RIA", "RHEBA", "RENNA", "PETER",
    "NATALYA", "NANCEE", "MELODI", "MEDA", "MAXIMA", "MATHA",
    "MARKETTA", "MARICRUZ", "MARCELENE", "MALVINA", "LUBA", "LOUETTA",
    "LEIDA", "LECIA", "LAURAN", "LASHAWNA", "LAINE", "KHADIJAH",
    "KATERINE", "KASI", "KALLIE", "JULIETTA", "JESUSITA", "JESTINE",
    "JESSIA", "JEREMY", "JEFFIE", "JANYCE", "ISADORA", "GEORGIANNE",
    "FIDELIA", "EVITA", "EURA", "EULAH", "ESTEFANA", "ELSY", "ELIZABET",
    "ELADIA", "DODIE", "DION", "DIA", "DENISSE", "DELORAS", "DELILA",
    "DAYSI", "DAKOTA", "CURTIS", "CRYSTLE", "CONCHA", "COLBY",
    "CLARETTA", "CHU", "CHRISTIA", "CHARLSIE", "CHARLENA", "CARYLON",
    "BETTYANN", "ASLEY", "ASHLEA", "AMIRA", "AI", "AGUEDA", "AGNUS",
    "YUETTE", "VINITA", "VICTORINA", "TYNISHA", "TREENA", "TOCCARA",
    "TISH", "THOMASENA", "TEGAN", "SOILA", "SHILOH", "SHENNA",
    "SHARMAINE", "SHANTAE", "SHANDI", "SEPTEMBER", "SARAN", "SARAI",
    "SANA", "SAMUEL", "SALLEY", "ROSETTE", "ROLANDE", "REGINE",
    "OTELIA", "OSCAR", "OLEVIA", "NICHOLLE", "NECOLE", "NAIDA", "MYRTA",
    "MYESHA", "MITSUE", "MINTA", "MERTIE", "MARGY", "MAHALIA",
    "MADALENE", "LOVE", "LOURA", "LOREAN", "LEWIS", "LESHA", "LEONIDA",
    "LENITA", "LAVONE", "LASHELL", "LASHANDRA", "LAMONICA", "KIMBRA",
    "KATHERINA", "KARRY", "KANESHA", "JULIO", "JONG", "JENEVA",
    "JAQUELYN", "HWA", "GILMA", "GHISLAINE", "GERTRUDIS", "FRANSISCA",
    "FERMINA", "ETTIE", "ETSUKO", "ELLIS", "ELLAN", "ELIDIA", "EDRA",
    "DORETHEA", "DOREATHA", "DENYSE", "DENNY", "DEETTA", "DAINE",
    "CYRSTAL", "CORRIN", "CAYLA", "CARLITA", "CAMILA", "BURMA", "BULA",
    "BUENA", "BLAKE", "BARABARA", "AVRIL", "AUSTIN", "ALAINE", "ZANA",
    "WILHEMINA", "WANETTA", "VIRGIL", "VI", "VERONIKA", "VERNON",
    "VERLINE", "VASILIKI", "TONITA", "TISA", "TEOFILA", "TAYNA",
    "TAUNYA", "TANDRA", "TAKAKO", "SUNNI", "SUANNE", "SIXTA", "SHARELL",
    "SEEMA", "RUSSELL", "ROSENDA", "ROBENA", "RAYMONDE", "PEI",
    "PAMILA", "OZELL", "NEIDA", "NEELY", "MISTIE", "MICHA", "MERISSA",
    "MAURITA", "MARYLN", "MARYETTA", "MARSHALL", "MARCELL", "MALENA",
    "MAKEDA", "MADDIE", "LOVETTA", "LOURIE", "LORRINE", "LORILEE",
    "LESTER", "LAURENA", "LASHAY", "LARRAINE", "LAREE", "LACRESHA",
    "KRISTLE", "KRISHNA", "KEVA", "KEIRA", "KAROLE", "JOIE", "JINNY",
    "JEANNETTA", "JAMA", "HEIDY", "GILBERTE", "GEMA", "FAVIOLA",
    "EVELYNN", "ENDA", "ELLI", "ELLENA", "DIVINA", "DAGNY", "COLLENE",
    "CODI", "CINDIE", "CHASSIDY", "CHASIDY", "CATRICE", "CATHERINA",
    "CASSEY", "CAROLL", "CARLENA", "CANDRA", "CALISTA", "BRYANNA",
    "BRITTENY", "BEULA", "BARI", "AUDRIE", "AUDRIA", "ARDELIA",
    "ANNELLE", "ANGILA", "ALONA", "ALLYN", "DOUGLAS", "ROGER",
    "JONATHAN", "RALPH", "NICHOLAS", "BENJAMIN", "BRUCE", "HARRY",
    "WAYNE", "STEVE", "HOWARD", "ERNEST", "PHILLIP", "TODD", "CRAIG",
    "ALAN", "PHILIP", "EARL", "DANNY", "BRYAN", "STANLEY", "LEONARD",
    "NATHAN", "MANUEL", "RODNEY", "MARVIN", "VINCENT", "JEFFERY",
    "JEFF", "CHAD", "JACOB", "ALFRED", "BRADLEY", "HERBERT",
    "FREDERICK", "EDWIN", "DON", "RICKY", "RANDALL", "BARRY", "BERNARD",
    "LEROY", "MARCUS", "THEODORE", "CLIFFORD", "MIGUEL", "JIM", "TOM",
    "CALVIN", "BILL", "LLOYD", "DEREK", "WARREN", "DARRELL", "JEROME",
    "FLOYD", "ALVIN", "TIM", "GORDON", "GREG", "JORGE", "DUSTIN",
    "PEDRO", "DERRICK", "ZACHARY", "HERMAN", "GLEN", "HECTOR",
    "RICARDO", "RICK", "BRENT", "RAMON", "GILBERT", "MARC", "REGINALD",
    "RUBEN", "NATHANIEL", "RAFAEL", "EDGAR", "MILTON", "RAUL", "BEN",
    "CHESTER", "DUANE", "FRANKLIN", "BRAD", "RON", "ROLAND", "ARNOLD",
    "HARVEY", "JARED", "ERIK", "DARRYL", "NEIL", "JAVIER", "FERNANDO",
    "CLINTON", "TED", "MATHEW", "TYRONE", "DARREN", "LANCE", "KURT",
    "ALLAN", "NELSON", "GUY", "CLAYTON", "HUGH", "MAX", "DWAYNE",
    "DWIGHT", "ARMANDO", "FELIX", "EVERETT", "IAN", "WALLACE", "KEN",
    "BOB", "ALFREDO", "ALBERTO", "DAVE", "IVAN", "BYRON", "ISAAC",
    "MORRIS", "CLIFTON", "WILLARD", "ROSS", "ANDY", "SALVADOR", "KIRK",
    "SERGIO", "SETH", "KENT", "TERRANCE", "EDUARDO", "TERRENCE",
    "ENRIQUE", "WADE", "STUART", "FREDRICK", "ARTURO", "ALEJANDRO",
    "NICK", "LUTHER", "WENDELL", "JEREMIAH", "JULIUS", "OTIS", "TREVOR",
    "OLIVER", "LUKE", "HOMER", "GERARD", "DOUG", "KENNY", "HUBERT",
    "LYLE", "MATT", "ALFONSO", "ORLANDO", "REX", "CARLTON", "ERNESTO",
    "NEAL", "PABLO", "LORENZO", "OMAR", "WILBUR", "GRANT", "HORACE",
    "RODERICK", "ABRAHAM", "WILLIS", "RICKEY", "ANDRES", "CESAR",
    "JOHNATHAN", "MALCOLM", "RUDOLPH", "DAMON", "KELVIN", "PRESTON",
    "ALTON", "ARCHIE", "MARCO", "WM", "PETE", "RANDOLPH", "GARRY",
    "GEOFFREY", "JONATHON", "FELIPE", "GERARDO", "ED", "DOMINIC",
    "DELBERT", "COLIN", "GUILLERMO", "EARNEST", "LUCAS", "BENNY",
    "SPENCER", "RODOLFO", "MYRON", "EDMUND", "GARRETT", "SALVATORE",
    "CEDRIC", "LOWELL", "GREGG", "SHERMAN", "WILSON", "SYLVESTER",
    "ROOSEVELT", "ISRAEL", "JERMAINE", "FORREST", "WILBERT", "LELAND",
    "SIMON", "CLARK", "IRVING", "BRYANT", "OWEN", "RUFUS", "WOODROW",
    "KRISTOPHER", "MACK", "LEVI", "MARCOS", "GUSTAVO", "JAKE", "LIONEL",
    "GILBERTO", "CLINT", "NICOLAS", "ISMAEL", "ORVILLE", "ERVIN",
    "DEWEY", "AL", "WILFRED", "JOSH", "HUGO", "IGNACIO", "CALEB",
    "TOMAS", "SHELDON", "ERICK", "STEWART", "DOYLE", "DARREL",
    "ROGELIO", "TERENCE", "SANTIAGO", "ALONZO", "ELIAS", "BERT",
    "ELBERT", "RAMIRO", "CONRAD", "NOAH", "GRADY", "PHIL", "CORNELIUS",
    "LAMAR", "ROLANDO", "CLAY", "PERCY", "DEXTER", "BRADFORD", "DARIN",
    "AMOS", "MOSES", "IRVIN", "SAUL", "ROMAN", "RANDAL", "TIMMY",
    "DARRIN", "WINSTON", "BRENDAN", "ABEL", "DOMINICK", "BOYD",
    "EMILIO", "ELIJAH", "DOMINGO", "EMMETT", "MARLON", "EMANUEL",
    "JERALD", "EDMOND", "EMIL", "DEWAYNE", "WILL", "OTTO", "TEDDY",
    "REYNALDO", "BRET", "JESS", "TRENT", "HUMBERTO", "EMMANUEL",
    "STEPHAN", "VICENTE", "LAMONT", "GARLAND", "MILES", "EFRAIN",
    "HEATH", "RODGER", "HARLEY", "ETHAN", "ELDON", "ROCKY", "PIERRE",
    "JUNIOR", "FREDDY", "ELI", "BRYCE", "ANTOINE", "STERLING", "CHASE",
    "GROVER", "ELTON", "CLEVELAND", "DYLAN", "CHUCK", "DAMIAN",
    "REUBEN", "STAN", "AUGUST", "LEONARDO", "JASPER", "RUSSEL", "ERWIN",
    "BENITO", "HANS", "MONTE", "BLAINE", "ERNIE", "CURT", "QUENTIN",
    "AGUSTIN", "MURRAY", "JAMAL", "ADOLFO", "HARRISON", "TYSON",
    "BURTON", "BRADY", "ELLIOTT", "WILFREDO", "BART", "JARROD", "VANCE",
    "DENIS", "DAMIEN", "JOAQUIN", "HARLAN", "DESMOND", "ELLIOT",
    "DARWIN", "GREGORIO", "BUDDY", "XAVIER", "KERMIT", "ROSCOE",
    "ESTEBAN", "ANTON", "SOLOMON", "SCOTTY", "NORBERT", "ELVIN",
    "WILLIAMS", "NOLAN", "ROD", "QUINTON", "HAL", "BRAIN", "ROB",
    "ELWOOD", "KENDRICK", "DARIUS", "MOISES", "FIDEL", "THADDEUS",
    "CLIFF", "MARCEL", "JACKSON", "RAPHAEL", "BRYON", "ARMAND",
    "ALVARO", "JEFFRY", "DANE", "JOESPH", "THURMAN", "NED", "RUSTY",
    "MONTY", "FABIAN", "REGGIE", "MASON", "GRAHAM", "ISAIAH", "VAUGHN",
    "GUS", "LOYD", "DIEGO", "ADOLPH", "NORRIS", "MILLARD", "ROCCO",
    "GONZALO", "DERICK", "RODRIGO", "WILEY", "RIGOBERTO", "ALPHONSO",
    "TY", "NOE", "VERN", "REED", "JEFFERSON", "ELVIS", "BERNARDO",
    "MAURICIO", "HIRAM", "DONOVAN", "BASIL", "RILEY", "NICKOLAS",
    "MAYNARD", "SCOT", "VINCE", "QUINCY", "EDDY", "SEBASTIAN",
    "FEDERICO", "ULYSSES", "HERIBERTO", "DONNELL", "COLE", "DAVIS",
    "GAVIN", "EMERY", "WARD", "ROMEO", "JAYSON", "DANTE", "CLEMENT",
    "COY", "MAXWELL", "JARVIS", "BRUNO", "ISSAC", "DUDLEY", "BROCK",
    "SANFORD", "CARMELO", "BARNEY", "NESTOR", "STEFAN", "DONNY", "ART",
    "LINWOOD", "BEAU", "WELDON", "GALEN", "ISIDRO", "TRUMAN", "DELMAR",
    "JOHNATHON", "SILAS", "FREDERIC", "DICK", "IRWIN", "MERLIN",
    "CHARLEY", "MARCELINO", "HARRIS", "CARLO", "TRENTON", "KURTIS",
    "HUNTER", "AURELIO", "WINFRED", "VITO", "COLLIN", "DENVER",
    "CARTER", "LEONEL", "EMORY", "PASQUALE", "MOHAMMAD", "MARIANO",
    "DANIAL", "LANDON", "DIRK", "BRANDEN", "ADAN", "BUFORD", "GERMAN",
    "WILMER", "EMERSON", "ZACHERY", "FLETCHER", "JACQUES", "ERROL",
    "DALTON", "MONROE", "JOSUE", "EDWARDO", "BOOKER", "WILFORD",
    "SONNY", "SHELTON", "CARSON", "THERON", "RAYMUNDO", "DAREN",
    "HOUSTON", "ROBBY", "LINCOLN", "GENARO", "BENNETT", "OCTAVIO",
    "CORNELL", "HUNG", "ARRON", "ANTONY", "HERSCHEL", "GIOVANNI",
    "GARTH", "CYRUS", "CYRIL", "RONNY", "LON", "FREEMAN", "DUNCAN",
    "KENNITH", "CARMINE", "ERICH", "CHADWICK", "WILBURN", "RUSS",
    "REID", "MYLES", "ANDERSON", "MORTON", "JONAS", "FOREST", "MITCHEL",
    "MERVIN", "ZANE", "RICH", "JAMEL", "LAZARO", "ALPHONSE", "RANDELL",
    "MAJOR", "JARRETT", "BROOKS", "ABDUL", "LUCIANO", "SEYMOUR",
    "EUGENIO", "MOHAMMED", "VALENTIN", "CHANCE", "ARNULFO", "LUCIEN",
    "FERDINAND", "THAD", "EZRA", "ALDO", "RUBIN", "ROYAL", "MITCH",
    "EARLE", "ABE", "WYATT", "MARQUIS", "LANNY", "KAREEM", "JAMAR",
    "BORIS", "ISIAH", "EMILE", "ELMO", "ARON", "LEOPOLDO", "EVERETTE",
    "JOSEF", "ELOY", "RODRICK", "REINALDO", "LUCIO", "JERROD", "WESTON",
    "HERSHEL", "BARTON", "PARKER", "LEMUEL", "BURT", "JULES", "GIL",
    "ELISEO", "AHMAD", "NIGEL", "EFREN", "ANTWAN", "ALDEN", "MARGARITO",
    "COLEMAN", "DINO", "OSVALDO", "LES", "DEANDRE", "NORMAND", "KIETH",
    "TREY", "NORBERTO", "NAPOLEON", "JEROLD", "FRITZ", "ROSENDO",
    "MILFORD", "CHRISTOPER", "ALFONZO", "LYMAN", "JOSIAH", "BRANT",
    "WILTON", "RICO", "JAMAAL", "DEWITT", "BRENTON", "OLIN", "FOSTER",
    "FAUSTINO", "CLAUDIO", "JUDSON", "GINO", "EDGARDO", "ALEC",
    "TANNER", "JARRED", "DONN", "TAD", "PRINCE", "PORFIRIO", "ODIS",
    "LENARD", "CHAUNCEY", "TOD", "MEL", "MARCELO", "KORY", "AUGUSTUS",
    "KEVEN", "HILARIO", "BUD", "SAL", "ORVAL", "MAURO", "ZACHARIAH",
    "OLEN", "ANIBAL", "MILO", "JED", "DILLON", "AMADO", "NEWTON",
    "LENNY", "RICHIE", "HORACIO", "BRICE", "MOHAMED", "DELMER", "DARIO",
    "REYES", "MAC", "JONAH", "JERROLD", "ROBT", "HANK", "RUPERT",
    "ROLLAND", "KENTON", "DAMION", "ANTONE", "WALDO", "FREDRIC",
    "BRADLY", "KIP", "BURL", "WALKER", "TYREE", "JEFFEREY", "AHMED",
    "WILLY", "STANFORD", "OREN", "NOBLE", "MOSHE", "MIKEL", "ENOCH",
    "BRENDON", "QUINTIN", "JAMISON", "FLORENCIO", "DARRICK", "TOBIAS",
    "HASSAN", "GIUSEPPE", "DEMARCUS", "CLETUS", "TYRELL", "LYNDON",
    "KEENAN", "WERNER", "GERALDO", "COLUMBUS", "CHET", "BERTRAM",
    "MARKUS", "HUEY", "HILTON", "DWAIN", "DONTE", "TYRON", "OMER",
    "ISAIAS", "HIPOLITO", "FERMIN", "ADALBERTO", "BO", "BARRETT",
    "TEODORO", "MCKINLEY", "MAXIMO", "GARFIELD", "RALEIGH", "LAWERENCE",
    "ABRAM", "RASHAD", "KING", "EMMITT", "DARON", "SAMUAL", "MIQUEL",
    "EUSEBIO", "DOMENIC", "DARRON", "BUSTER", "WILBER", "RENATO", "JC",
    "HOYT", "HAYWOOD", "EZEKIEL", "CHAS", "FLORENTINO", "ELROY",
    "CLEMENTE", "ARDEN", "NEVILLE", "EDISON", "DESHAWN", "NATHANIAL",
    "JORDON", "DANILO", "CLAUD", "SHERWOOD", "RAYMON", "RAYFORD",
    "CRISTOBAL", "AMBROSE", "TITUS", "HYMAN", "FELTON", "EZEQUIEL",
    "ERASMO", "STANTON", "LONNY", "LEN", "IKE", "MILAN", "LINO",
    "JAROD", "HERB", "ANDREAS", "WALTON", "RHETT", "PALMER", "DOUGLASS",
    "CORDELL", "OSWALDO", "ELLSWORTH", "VIRGILIO", "TONEY", "NATHANAEL",
    "DEL", "BENEDICT", "MOSE", "JOHNSON", "ISREAL", "GARRET", "FAUSTO",
    "ASA", "ARLEN", "ZACK", "WARNER", "MODESTO", "FRANCESCO", "MANUAL",
    "GAYLORD", "GASTON", "FILIBERTO", "DEANGELO", "MICHALE",
    "GRANVILLE", "WES", "MALIK", "ZACKARY", "TUAN", "ELDRIDGE",
    "CRISTOPHER", "CORTEZ", "ANTIONE", "MALCOM", "LONG", "KOREY",
    "JOSPEH", "COLTON", "WAYLON", "VON", "HOSEA", "SHAD", "SANTO",
    "RUDOLF", "ROLF", "REY", "RENALDO", "MARCELLUS", "LUCIUS",
    "KRISTOFER", "BOYCE", "BENTON", "HAYDEN", "HARLAND", "ARNOLDO",
    "RUEBEN", "LEANDRO", "KRAIG", "JERRELL", "JEROMY", "HOBERT",
    "CEDRICK", "ARLIE", "WINFORD", "WALLY", "LUIGI", "KENETH",
    "JACINTO", "GRAIG", "FRANKLYN", "EDMUNDO", "SID", "PORTER", "LEIF",
    "JERAMY", "BUCK", "WILLIAN", "VINCENZO", "SHON", "LYNWOOD", "JERE",
    "HAI", "ELDEN", "DORSEY", "DARELL", "BRODERICK", "ALONSO"]


{-# LANGUAGE TypeFamilies, PolyKinds, DataKinds, TypeOperators #-}
module T7939 where
import Data.Kind (Type)

class Foo a where
   type Bar a b

type family F a
type instance F Int = Bool

type family G a where
  G Int = Bool

type family H a where
  H False = True

type family J a where
  J '[] = False
  J (h ': t) = True

type family K a where
  K '[] = Nothing
  K (h ': t) = Just h

type family L (a :: k) (b :: Type) :: k where
  L Int Int = Bool
  L Maybe Bool = IO


whnf :: a -> IO ()
whnf a = a `seq` (return ())

foo :: [Int]
foo = [1..]


{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE TypeOperators #-}
module T8357 where

import Data.Kind (Type)
import GHC.TypeLits

data (:::) (sy :: Symbol) ty
data Key (sy :: Symbol)
data Rec (rs :: [Type])

(*=) :: Key sy -> ty -> Rec '[sy ::: ty]
(*=) = undefined

(.*.) :: (Union xs ys ~ rs) => Rec xs -> Rec ys -> Rec rs
(.*.) = undefined

type family Union (xs :: [Type]) (ys :: [Type]) :: [Type]  where
    Union ((sy ::: t) ': xs) ys = (sy ::: t) ': Union xs ys
    Union '[] ys = ys

fFoo :: Key "foo"
fFoo = undefined

fBar :: Key "bar"
fBar = undefined

foo = fFoo *= "foo"
bar = fBar *= "bar"
both = foo .*. bar


{-# LANGUAGE MagicHash #-}
module T8383 where
import GHC.Exts
f :: Int# -> Int#
f x = x
foo = print $ (tagToEnum# (f 0#) :: Bool)
bar = print $ (tagToEnum# (f 1#) :: Bool)


{-# LANGUAGE TypeFamilies #-}

module T8469a () where

type family F a
type instance F Int = Bool


{-# LANGUAGE TypeFamilies, DataKinds, PolyKinds #-}
module T8557 where

data family Sing (a :: k)
data instance Sing (a :: [k]) = SNil
data instance Sing Bool = SBool


module T8696A (a) where
{-# NOINLINE a #-}
a :: Int
a = 3


module T8696B (b) where
import T8696A (a)
b :: Int
b = a+1


{-# LANGUAGE PatternSynonyms, GADTs #-}
data A x y = (Num x, Eq y) => B

data R = R{ rX :: Int }

pattern P = B


{-# LANGUAGE TemplateHaskell #-}
module T8831 where
foo = [| 3 |]


{-# LANGUAGE DataKinds, PolyKinds, TypeFamilies, TypeOperators #-}

module T8917 where

data Nat = Zero | Succ Nat
type family a + b where
  Zero + a = a
  (Succ n) + m = Succ (n + m)


{-# LANGUAGE UnicodeSyntax, Arrows, RankNTypes #-}
module T8959b where

foo :: Int -> Int
foo = ()

bar :: ()
bar = proc x -> do return -< x

baz = () :: (forall a. a -> a) -> a


module Test where
data T a where
  C :: T Int


x = "abc"
main = print x
-- This file has Windows line endings (CRLF) on purpose. Do not remove.
-- See #9367.


module T9762A (a) where
-- By marking a INLINE, we create a reference from B to A's tickboxes.
{-# INLINE a #-}
a :: Int
a = 3


module T9762B (b) where
import T9762A (a)
b :: Int
b = a+1


{-# LANGUAGE StaticPointers #-}
module T9878 where

import GHC.StaticPtr

f = deRefStaticPtr (static True)


{-# LANGUAGE StaticPointers #-}
module T9878b where

import GHC.StaticPtr

f = deRefStaticPtr (static True)


{-# OPTIONS_GHC -O2 #-}

-- Verify that -O2 is rejected when this module is loaded by GHCi
module T10549 where

import qualified Data.ByteString.Internal as Internal
import System.IO.Unsafe (unsafePerformIO)
import Data.Word (Word8)
import Foreign.Ptr (Ptr)
import Foreign.Storable (peek)

type S = Ptr Word8

chr :: S -> Char
chr x = Internal.w2c $ unsafePerformIO $ peek x


{-# OPTIONS_GHC -O #-}
module Main(main) where
import GHC.Exts
main = print 1
go (Ptr a) = a


{-# LANGUAGE UnboxedTuples #-}
module T14608 where

data UnboxedTupleData = MkUTD (# (),() #)

doThings :: UnboxedTupleData -> ()
doThings (MkUTD t) = ()


{-# LANGUAGE FlexibleContexts #-}
import Data.Binary.Get
import Data.Binary.Put
import Data.Array.Unboxed as AU
import Data.Array.IO (IOUArray)
import Data.Array.MArray (MArray)
import Data.Array as A
import GHCi.BinaryArray
import GHC.Word

roundtripTest :: (IArray UArray a, MArray IOUArray a IO, Eq a)
              => UArray Int a -> IO ()
roundtripTest arr =
    let ser  = Data.Binary.Put.runPut $ putArray arr
    in case Data.Binary.Get.runGetOrFail getArray ser of
         Right (_, _, arr')
           | arr == arr'  -> return ()
           | otherwise    -> putStrLn "failed to round-trip"
         Left _           -> putStrLn "deserialization failed"

main :: IO ()
main = do
    roundtripTest (AU.listArray (1,500) [1..] :: UArray Int Int)
    roundtripTest (AU.listArray (1,500) [1..] :: UArray Int Word)
    roundtripTest (AU.listArray (1,500) [1..] :: UArray Int Word8)
    roundtripTest (AU.listArray (1,500) [1..] :: UArray Int Word16)
    roundtripTest (AU.listArray (1,500) [1..] :: UArray Int Word32)
    roundtripTest (AU.listArray (1,500) [1..] :: UArray Int Word64)
    roundtripTest (AU.listArray (1,500) ['a'..] :: UArray Int Char)


module Main where

-- This test used to fail in GHC 5.04.2.  See rev. 1.22 of
-- libraries/base/GHC/Base.lhs for the fix.

data FourArrow = A | B | C | D | E | ABE | AC | BD | CDE
                 deriving (Eq)

dom E   = ABE

cod A   = AC
cod B   = BD
cod C   = CDE
cod D   = CDE
cod E   = CDE
cod ABE = ABE
cod AC  = AC
cod BD  = BD
cod CDE = CDE

----
bceFour :: FourArrow -> FourArrow -> String
bceFour f g
    | dom f == dom g && cod f == cod g
    = "it works"
    | otherwise = error ("Four.bceFour: precondition fails:"
                          ++ "arrows not parallel"
                          ++ "\n")

main = print (bceFour E E)


import Data.Maybe
import Data.List

data Dir = R | D | L | U deriving (Show, Eq, Enum)
type Spiral = ([[Int]], Int, Dir) -- (rows, current row, next direction)

rows :: Spiral -> [[Int]]
rows (rs, i, d) = rs
currentrow :: Spiral -> Int
currentrow (rs, i, d) = i
nextdir :: Spiral -> Dir
nextdir (rs, i, d) = d

getrow :: Int -> [[Int]] -> Maybe [Int]
getrow i sp = if i < 0 || i >= length sp then Nothing else Just (sp!!i)

ndir :: Dir -> Dir
ndir d = if d == U then R else succ d

newsp :: Spiral
newsp = ([[1]], 0, R)

makeSpiral :: Int -> Spiral
makeSpiral i = makeSpiral' 2 newsp
    where makeSpiral' j sp = if j > i
                             then sp
                             else makeSpiral' (j+1) (update j sp)

update :: Int -> Spiral -> Spiral
update i (sp, cr, d) = (sp', cr', d')
    where oldrow  = if (d == U && cr' == cr && cr == 0) ||
                    (d == D && cr' == length sp)
                    then []
                    else fromJust $ getrow cr' sp
          cr'    | d == L || d == R = cr
                 | d == U = if cr == 0 then 0 else cr-1
                 | otherwise = cr+1
          cr''   = if d == U && cr == 0 then -1 else cr'
          sp'    = insertrow cr'' newrow sp
          newrow = case d of
                          R -> oldrow++[i]
                          D -> oldrow++[i]
                          L -> i:oldrow
                          U -> i:oldrow
          d' | d == R || d == L = if length oldrow == maximum (map length sp)
                                  then ndir d
                                  else d
             | d == U = if cr'' == -1 then ndir d else d
             | otherwise = if cr' == length sp then ndir d else d

insertrow :: Int -> [Int] -> [[Int]] -> [[Int]]
insertrow i r rs = if i == -1 then r:rs else front++[r]++back
    where (front, rest) = splitAt i rs
          back = if null rest then [] else tail rest

printSpiral :: Spiral -> IO ()
printSpiral (sp, i, d) = putStrLn (concat $ intersperse "\n" (map show sp))

sumdiags :: Spiral -> Int
sumdiags (sp, i, d) = (sumdiags' 0 0 (+1)) + (sumdiags' 0 end (subtract 1)) - centre
    where row1 = sp!!0
          end = length row1 - 1
          halfx = (length row1 `div` 2)
          halfy = (length sp `div` 2)
          centre = (sp!!halfy)!!halfx
          sumdiags' row col f = if row == length sp
                                then 0
                                else (sp!!row)!!col + sumdiags' (row+1) (f col) f

main = print (makeSpiral 10000)


{-# LANGUAGE FunctionalDependencies #-}

class X a b | a -> b where
  to :: a -> b


{-
    This code produces an empty case statement, which
    panics the bytecode generator after trac #11155.
-}

module ShouldCompile where

import GHC.TypeLits (Symbol)
import Unsafe.Coerce

instance Read Symbol where
     readsPrec = unsafeCoerce (readsPrec :: Int -> ReadS String)

data Bar = TyCon !Symbol deriving (Read)


module T13825 where

import Data.Int
import Data.Word

data Packed =
    Packed
      {-# UNPACK #-} !Float
      {-# UNPACK #-} !Float
      {-# UNPACK #-} !Int8
      {-# UNPACK #-} !Word16
      {-# UNPACK #-} !Float
      {-# UNPACK #-} !Int
  deriving (Show)

-- Test a top-level constant
packed :: Packed
packed = Packed 1.0 2.0 3 4 5 6

packedAll :: [Packed]
packedAll =
    packed :
    [ Packed
        (fromIntegral i)
        (fromIntegral (i + 1))
        (fromIntegral (i + 2))
        (fromIntegral (i + 3))
        (fromIntegral (i + 3))
        (fromIntegral (i + 4))
    | i <- [1.. 4]
    ]

addOne :: Packed -> Packed
addOne (Packed a b c d e f) =
    Packed (a + 1.0) (b + 1.0) (c + 1) (d + 1) (e + 1.0) (f + 1)

mapAddOne :: [Packed] -> [Packed]
mapAddOne = map addOne


{-# OPTIONS_GHC -fdefer-type-errors #-}

test :: IO Bool
test = return True


{-# LANGUAGE MagicHash #-}
module Main where

import GHC.Ptr
import GHC.Exts
import Foreign.Ptr

main = print (Ptr nullAddr# == nullPtr)


import Data.Word
fib :: Word -> Word
fib 0 = 1
fib 1 = 1
fib n = l + r
  where l = fib (n-2); r = fib (n-1)

main = print (fib 20)


{-# LANGUAGE MagicHash #-}
import System.Mem
import GHC.Base

main = do
  let list = concatMap buildThunk [0..10000]
  length list `seq` performGC
  print $ last list

buildThunk :: Int -> [Int]
buildThunk (I# k) = [f k]

f :: Int# -> Int
f x = I# x


import Distribution.Simple

main = defaultMain


module TcPluginGHCi where

import TcRnMonad ( TcPlugin(..), TcPluginResult(..) )
import Plugins ( defaultPlugin, Plugin(..), CommandLineOption )
import Debug.Trace

plugin :: Plugin
plugin = defaultPlugin { tcPlugin = Just . thePlugin }

thePlugin :: [CommandLineOption] -> TcPlugin
thePlugin opts = TcPlugin
  { tcPluginInit  = trace "TcPluginGHCi" (return ())
  , tcPluginSolve = \_ _ _ _ -> return $ TcPluginOk [] []
  , tcPluginStop  = \_ -> return ()
  }


module A where

data A = A

f :: A -> Bool
f C = False


module B where

import {-# SOURCE #-} A

data B = B A

g :: B -> Bool
g (B a) = f a


module A (caf, c_two) where

import Debug.Trace (trace)

data C = C Int Int

caf :: C
caf = C 3 (trace "value forced" 4)

c_two :: C -> Int
c_two (C _ b) = b


data Empty
data NonEmpty

data SafeList x y where
     Nil :: SafeList x Empty
     Cons:: Eq x => x -> SafeList x y  -> SafeList x NonEmpty
     One :: Eq x => x -> SafeList x Empty -> SafeList x NonEmpty

safeHead :: SafeList x NonEmpty -> x
safeHead (Cons x _) = x

foo = Cons (3 :: Int) (Cons 6 (Cons 9 Nil))

data Dict x where
        DictN :: Num x => x -> Dict x
        DictE :: Eq x =>  x -> Dict x

data Exist where
        Exist :: forall a. a -> Exist


import System.Environment

main = getArgs >>= print