From 031746bd8c349b485b4914d1788ec944b1e534a2 Mon Sep 17 00:00:00 2001 From: Akshay Date: Fri, 4 Dec 2020 14:21:24 +0530 Subject: add initial solution to day 4 --- aoc.cabal | 6 + execs/Day02.hs | 4 +- execs/Day04.hs | 82 +++++ input/04 | 1056 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 1146 insertions(+), 2 deletions(-) create mode 100644 execs/Day04.hs create mode 100644 input/04 diff --git a/aoc.cabal b/aoc.cabal index e88e933..dda4a43 100644 --- a/aoc.cabal +++ b/aoc.cabal @@ -30,6 +30,12 @@ executable Day02 executable Day03 main-is: Day03.hs + build-depends: base + default-language: Haskell2010 + hs-source-dirs: execs + +executable Day04 + main-is: Day04.hs build-depends: base, parsec default-language: Haskell2010 hs-source-dirs: execs diff --git a/execs/Day02.hs b/execs/Day02.hs index f67778b..b06b44d 100644 --- a/execs/Day02.hs +++ b/execs/Day02.hs @@ -37,5 +37,5 @@ parseLine parser line = right $ parse parser "input" line main :: IO () main = do - n <- map (fromEnum . doCheck2 . parseLine parseProp) . lines <$> readFile "input/02" - print $ sum n + n <- map (doCheck2 . parseLine parseProp) . lines <$> readFile "input/02" + print $ countElem True n diff --git a/execs/Day04.hs b/execs/Day04.hs new file mode 100644 index 0000000..04aacbb --- /dev/null +++ b/execs/Day04.hs @@ -0,0 +1,82 @@ +module Main where + +import Text.ParserCombinators.Parsec +import Text.Parsec.Char +import Data.Either +import Data.Maybe +import Control.Monad +import Data.List (sortOn) + +right (Right a) = a +fields = [ "byr" , "iyr" , "eyr" , "hgt" , "hcl" , "ecl" , "pid" ] + +block = cell `sepBy` oneOf " \n" +cell = do + tag <- many lower + char ':' + rest <- many (alphaNum <|> char '#') + return (tag, rest) + +parseInput :: String -> Either ParseError [(String, String)] +parseInput = parse block "input" + +assocGet s (l:ls) = if fst l == s + then snd l + else assocGet s ls + +doCheck :: [(String, String)] -> Bool +doCheck ls = all (isJust . flip lookup ls) fields + +checkNum lower up s = p >= lower && p <= up + where p = read s :: Int +byr = checkNum 1920 2002 +iyr = checkNum 2010 2020 +eyr = checkNum 2020 2030 + +parseHeight :: Parser (Int, String) +parseHeight = do + v <- many1 digit + unit <- choice $ map string ["cm", "in"] + return (read v, unit) +hgt s = case parse parseHeight "hgt" s of + Right (v, "cm") -> v >= 150 && v <= 193 + Right (v, "in") -> v >= 59 && v <= 76 + _ -> False + +parseColor = char '#' >> many hexDigit +hcl :: String -> Bool +hcl s = case parse parseColor "hcl" s of + Right c -> length c == 6 + Left _ -> False + + +ecl :: String -> Bool +ecl = flip elem ["amb", "blu", "brn", "gry", "grn", "hzl", "oth"] + +parsePid = replicateM 9 digit +pid :: String -> Bool +pid s = isRight $ parse parsePid "pid" s + +doValidity :: [(String, String)] -> Bool +doValidity ls = all ((== True) . ($ ls)) [ byr . assocGet "byr" + , iyr . assocGet "iyr" + , eyr . assocGet "eyr" + , hgt . assocGet "hgt" + , hcl . assocGet "hcl" + , ecl . assocGet "ecl" + , pid . assocGet "pid" + ] + +parseLines :: [String] -> [String] +parseLines allLines = unwords first : next + where (first, rest) = break null allLines + next = if null rest then [] else parseLines (tail rest) + +main :: IO () +main = do + n <- parseLines . lines <$> readFile "input/04" + let blocks = map (right . parseInput) n + print $ length $ filter (\p -> doCheck p && doValidity p) blocks + -- mapM_ print $ filter (\p -> doCheck p && doValidity p) $ map (sortOn fst) blocks + -- print $ length $ filter doCheck blocks + -- print $ length $ filter (\p -> doCheck p && doValidity p) $ map (sortOn fst) blocks diff --git a/input/04 b/input/04 new file mode 100644 index 0000000..cecabe2 --- /dev/null +++ b/input/04 @@ -0,0 +1,1056 @@ +iyr:2013 hcl:#ceb3a1 +hgt:151cm eyr:2030 +byr:1943 ecl:grn + +eyr:1988 +iyr:2015 ecl:gry +hgt:153in pid:173cm +hcl:0c6261 byr:1966 + +hcl:#733820 +hgt:166cm eyr:2025 pid:79215921 byr:1952 iyr:2014 ecl:blu + +eyr:2022 +hgt:165cm hcl:#733820 +iyr:2013 pid:073015801 ecl:oth +cid:101 + +iyr:2013 +ecl:brn hcl:#623a2f +cid:246 byr:1948 pid:122719649 +hgt:160cm +eyr:2026 + +eyr:2028 +pid:229371724 hgt:154cm hcl:#ceb3a1 byr:2000 ecl:hzl iyr:2017 + +eyr:2029 ecl:amb +byr:1980 +hgt:177cm pid:914628384 hcl:#623a2f iyr:2013 + +iyr:2019 +eyr:2026 hcl:#efcc98 pid:475316185 byr:1945 +hgt:76in +ecl:amb + +pid:371759305 iyr:2018 hcl:#623a2f eyr:2026 byr:1984 hgt:174cm + +iyr:2010 pid:184800910 ecl:amb cid:108 eyr:2028 +hcl:#cfa07d + +iyr:2012 hcl:#b6652a hgt:160cm pid:223041037 +eyr:2029 byr:1920 ecl:oth cid:212 + +pid:775975903 +hgt:163cm byr:1966 +eyr:2023 ecl:amb iyr:2010 + +pid:465404256 hcl:#7a54af ecl:blu hgt:180cm iyr:2018 +eyr:2024 byr:1933 + +hcl:#18171d +iyr:2018 hgt:185cm +byr:1929 eyr:2024 +ecl:oth +pid:#b0990a + +byr:2017 +hcl:#cfa07d pid:184cm hgt:187in ecl:#e97c0d iyr:2022 eyr:2013 + +hgt:176cm iyr:2019 eyr:2024 ecl:brn byr:1943 +pid:532967054 hcl:007b47 + +pid:171225044 hcl:#888785 byr:1992 ecl:amb iyr:2012 eyr:2030 +hgt:180cm + +byr:1969 +pid:689216275 iyr:1934 eyr:2031 ecl:#e5bc14 hcl:#fffffd + +pid:166619054 cid:125 hcl:#cfa07d hgt:164cm byr:1946 +ecl:brn iyr:2014 eyr:2023 + +ecl:#c1ae72 pid:458692331 hcl:#b6652a eyr:1966 byr:1951 iyr:2023 + +cid:253 pid:9096156879 hcl:9911e5 +byr:2007 +iyr:2019 eyr:2033 hgt:181cm +ecl:blu + +ecl:oth pid:180428876 iyr:2019 byr:2001 eyr:2024 hgt:172cm hcl:#7d3b0c +cid:81 + +hgt:167cm +byr:2007 eyr:2030 +iyr:1961 ecl:lzr hcl:#cfa07d +pid:#e254d8 + +pid:377737133 hgt:160cm byr:1958 hcl:#866857 ecl:oth iyr:2015 eyr:2022 cid:350 + +hgt:188cm +eyr:2025 ecl:brn hcl:#efcc98 +iyr:2015 pid:321192707 +byr:1996 + +byr:1956 iyr:2018 hcl:#b6652a +eyr:2024 +ecl:blu cid:343 +hgt:152cm pid:192659885 + +hgt:163cm +iyr:2012 byr:1952 eyr:2022 hcl:#efcc98 ecl:grn pid:337866006 + +cid:134 +byr:1941 eyr:2027 ecl:oth +iyr:2012 pid:303690324 hcl:#7d3b0c + +ecl:grn byr:1945 eyr:2028 hcl:#cfa07d iyr:2012 cid:108 pid:388941584 hgt:171cm + +pid:962215061 ecl:brn iyr:2019 eyr:2025 cid:163 hcl:#cfa07d byr:1958 hgt:187in + +ecl:amb +byr:1989 pid:118257086 iyr:2019 cid:320 hgt:158cm eyr:2027 hcl:#733820 + +pid:813286578 +iyr:2019 eyr:2031 hcl:#341e13 hgt:161cm byr:1950 +ecl:oth + +byr:1976 ecl:blu +eyr:2024 +hcl:#fffffd +hgt:153cm pid:552154655 iyr:2019 + +eyr:2025 pid:109518209 iyr:2013 byr:1923 +hgt:162cm +ecl:oth + +hgt:178cm byr:2007 hcl:#7f431f pid:7365694093 eyr:2037 +ecl:blu iyr:2018 + +eyr:2021 +cid:105 iyr:2013 byr:1995 ecl:grn hgt:181cm +pid:733189859 hcl:#b6652a + +hcl:#6b5442 eyr:2028 iyr:2013 byr:1958 hgt:169cm +ecl:gry pid:651263830 +cid:51 + +iyr:2018 cid:59 eyr:2027 ecl:blu +hgt:174cm pid:269821917 byr:1971 + +byr:1936 eyr:2025 ecl:hzl hcl:#b6652a +iyr:2019 +pid:670202082 +hgt:186cm + +byr:1958 +ecl:gry hcl:#7d3b0c pid:000522430 eyr:2020 +hgt:168cm + +iyr:2015 eyr:2022 +pid:630105579 hcl:#7d3b0c byr:1935 +ecl:gry hgt:153cm + +ecl:gry hcl:#fffffd hgt:172cm byr:1944 +eyr:2021 +iyr:2013 cid:58 pid:554670072 + +byr:1983 +eyr:2022 +iyr:2012 hgt:176cm +ecl:brn pid:201965494 hcl:#dd8296 + +cid:124 byr:1935 eyr:2020 ecl:blu +hcl:#a97842 pid:666776663 iyr:2010 +hgt:68in + +byr:1943 pid:139343878 hgt:181cm hcl:#733820 cid:206 iyr:2018 ecl:brn +eyr:2029 + +pid:114742677 +ecl:amb hgt:160cm +byr:1975 eyr:2030 +hcl:#866857 + +iyr:2012 ecl:amb hgt:170cm pid:221200950 eyr:2028 +hcl:#733820 cid:274 + +eyr:2020 +pid:167438086 iyr:2020 hcl:#fffffd hgt:178cm byr:1996 +ecl:blu + +iyr:2015 hcl:#b6652a +pid:905439259 +byr:1962 cid:209 ecl:brn hgt:150cm eyr:2024 + +iyr:2016 ecl:amb +pid:855119486 +cid:77 +hgt:192cm byr:1947 eyr:2021 hcl:#888785 + +hcl:#341e13 +iyr:2011 hgt:157cm eyr:2030 +pid:103806645 cid:90 ecl:grn byr:1976 + +hcl:#fffffd byr:1957 +cid:284 eyr:2026 +pid:031705251 iyr:2019 +hgt:166cm + +eyr:2019 byr:2019 hgt:167in +iyr:2014 ecl:gmt + +hcl:#18171d cid:93 +eyr:2027 +iyr:2013 +pid:821161144 ecl:brn byr:2002 hgt:170cm + +hgt:181cm +byr:1972 iyr:2018 hcl:#fffffd +pid:745667222 eyr:2023 +ecl:hzl + +hcl:#602927 byr:1996 ecl:blu pid:503245375 +hgt:166cm eyr:2028 iyr:2018 + +hgt:59in byr:1966 +ecl:oth iyr:2016 eyr:2029 hcl:#866857 + +cid:179 iyr:2012 hgt:182cm eyr:2024 pid:451186596 hcl:#6b5442 ecl:blu + +eyr:2023 iyr:2016 +hcl:#18171d hgt:173cm cid:182 pid:979409688 ecl:brn byr:1972 + +iyr:2014 eyr:2027 byr:1977 ecl:brn hgt:171cm hcl:#b6652a pid:124307431 + +byr:1929 pid:048990845 ecl:hzl hgt:193cm cid:159 hcl:#b6652a eyr:2028 + +ecl:gry hgt:181cm iyr:1934 byr:1970 +eyr:2015 pid:5818817055 cid:98 + +hgt:179cm +iyr:2014 +eyr:2030 +pid:397317466 byr:1967 +hcl:#a97842 +ecl:grn + +pid:138485312 ecl:hzl +hgt:151cm +iyr:2010 hcl:#866857 byr:1936 cid:345 eyr:2021 + +ecl:oth +pid:687490850 eyr:2028 hcl:#9bd268 hgt:157cm iyr:2012 byr:1994 + +byr:1933 pid:575158994 hgt:192cm iyr:2017 eyr:2022 hcl:#602927 +ecl:gry + +iyr:2012 +hcl:#7d3b0c +ecl:oth +eyr:2023 pid:615952261 byr:1959 +hgt:152cm + +byr:2010 +iyr:2011 hcl:z ecl:grn hgt:152cm pid:6079261766 + +hcl:#18171d iyr:2012 +byr:1986 ecl:blu +pid:836367740 hgt:191cm eyr:2024 cid:200 + +ecl:blu pid:909247319 iyr:2019 eyr:2026 byr:1958 +hgt:170cm +hcl:#b6652a cid:256 + +eyr:2027 hcl:#efcc98 iyr:2010 hgt:191cm ecl:brn byr:1933 + +byr:1921 +pid:414637667 hcl:#8d840f cid:291 iyr:2013 ecl:amb eyr:2029 hgt:172cm + +byr:1961 iyr:2020 eyr:2025 pid:675731511 hgt:71in +ecl:blu hcl:#623a2f + +byr:1959 iyr:2002 +hcl:#ceb3a1 eyr:2027 ecl:#633ff4 +pid:815877728 + +ecl:gry pid:812104470 byr:1938 +hgt:70cm +eyr:2028 cid:285 iyr:2016 hcl:#b6652a + +cid:99 hgt:152cm byr:1971 +eyr:2020 hcl:#733820 +ecl:gry +iyr:2012 pid:020521112 + +pid:803066169 hgt:157cm iyr:2014 hcl:#b6652a eyr:2025 ecl:brn byr:1981 + +hcl:fafcd9 eyr:2021 +hgt:76in +pid:359286290 cid:207 iyr:2018 ecl:grt + +pid:179471060 byr:1966 ecl:amb hcl:#18171d eyr:2029 iyr:2015 hgt:190cm + +hcl:#efcc98 ecl:gry +byr:1942 +eyr:2026 iyr:2011 +hgt:158cm pid:721512314 + +ecl:oth eyr:2024 hcl:#8bc738 +hgt:167cm iyr:2014 pid:729168992 + +hcl:#b6652a +pid:179977662 +iyr:2018 +ecl:gry +byr:1973 +hgt:155cm +cid:126 eyr:2030 + +byr:2012 eyr:1955 hcl:z iyr:1981 pid:#66167e hgt:175in ecl:grt + +hgt:154cm cid:301 iyr:2010 hcl:#7d3b0c pid:573851812 ecl:grn eyr:2030 + +pid:601712917 ecl:hzl eyr:2001 cid:70 hgt:162cm hcl:#6b5442 iyr:2018 +byr:1959 + +hgt:183cm byr:1996 eyr:2023 hcl:#866857 iyr:2018 pid:259910953 ecl:brn + +pid:751991211 hcl:z iyr:2015 eyr:2024 byr:1939 ecl:oth hgt:161cm + +eyr:2026 byr:1947 +ecl:grn iyr:2018 cid:248 hcl:#ef5900 hgt:66in + +iyr:2028 eyr:1994 pid:9211015765 +ecl:amb +hcl:cd429d +byr:2013 +hgt:176cm + +hgt:193cm ecl:amb eyr:2023 +iyr:2020 byr:1933 +cid:50 +hcl:#efcc98 pid:482745318 + +byr:2014 pid:619629999 +ecl:oth hgt:159cm eyr:2027 iyr:2018 hcl:#b6652a + +hcl:#b6652a eyr:2028 byr:1921 +ecl:blu +pid:866536313 hgt:185cm iyr:2020 + +eyr:2027 pid:904225608 iyr:2010 cid:57 hgt:161cm hcl:#83ee3c ecl:gry byr:2001 + +byr:1968 pid:120450875 iyr:2018 hgt:165cm ecl:grn eyr:2022 hcl:#7d3b0c + +hcl:#a97842 byr:1964 +eyr:2027 ecl:oth hgt:186cm iyr:2010 +cid:226 pid:632344779 + +pid:135449714 +cid:348 iyr:2019 +hcl:#602927 +ecl:oth eyr:2029 +hgt:184cm byr:1992 + +eyr:2027 +byr:1929 hgt:181cm hcl:#fffffd iyr:2019 pid:369478657 +ecl:blu + +hgt:177cm eyr:2021 iyr:2016 ecl:gry byr:1938 hcl:#602927 pid:034365656 + +iyr:2020 hcl:#866857 +eyr:2028 +pid:183612456 ecl:#9e25d3 hgt:159cm byr:1934 + +pid:664990234 hcl:#efcc98 cid:185 iyr:2018 +ecl:brn +hgt:192cm +byr:1942 +eyr:2029 + +eyr:2027 +hgt:163cm pid:760854338 cid:228 +byr:1958 iyr:2014 +hcl:#efcc98 ecl:gry + +iyr:2014 +hcl:#18171d hgt:157cm ecl:amb eyr:2025 byr:1957 pid:347369874 + +pid:013801431 byr:1999 +hgt:181cm eyr:2029 +ecl:amb iyr:2010 +hcl:#b6652a + +hgt:153 eyr:2030 byr:2022 +hcl:z cid:84 ecl:hzl iyr:2020 + +cid:315 iyr:2011 +hgt:151cm hcl:#ffb5f9 +pid:427813663 byr:1999 ecl:brn eyr:2025 + +eyr:2024 +cid:205 byr:2000 iyr:2020 hgt:173cm ecl:gry + +eyr:2026 byr:1996 iyr:2018 ecl:grn hgt:158cm pid:026432567 hcl:#602927 + +iyr:2014 +ecl:hzl +byr:1964 eyr:2020 hgt:184cm pid:031793197 hcl:#fffffd + +ecl:oth hgt:165cm byr:1982 pid:172329608 hcl:#733820 +iyr:2019 +eyr:2020 cid:347 + +byr:2014 iyr:2011 hgt:179cm +hcl:z eyr:2020 ecl:grt +cid:134 + +ecl:gry +iyr:2011 hcl:#a97842 +byr:1942 pid:789953865 cid:172 hgt:180cm eyr:2027 + +hgt:179cm pid:975853536 +iyr:2018 byr:1989 hcl:#602927 +eyr:2021 ecl:amb + +byr:2011 +iyr:2015 +ecl:oth +hcl:85d233 cid:207 eyr:2020 hgt:138 pid:6169876 + +ecl:hzl eyr:2029 hcl:#efcc98 +hgt:188cm iyr:2018 cid:143 byr:1973 + +hcl:#ceb3a1 pid:762609805 +byr:1962 +hgt:150cm +iyr:2016 eyr:2024 ecl:oth + +iyr:2012 +pid:181821528 byr:1922 ecl:gry hcl:#a97842 hgt:169cm eyr:2028 + +eyr:2029 pid:776605704 byr:1964 hgt:175cm hcl:#623a2f ecl:grn +iyr:2011 + +byr:1989 iyr:2019 +ecl:gry pid:397990288 +hcl:#602927 hgt:67in eyr:2030 +cid:259 + +hcl:#866857 iyr:2018 ecl:blu byr:1938 cid:227 eyr:2028 hgt:171cm +pid:779192850 + +byr:1974 hcl:#cfa07d eyr:2026 hgt:59in cid:51 iyr:2019 +ecl:oth pid:091591737 + +byr:1952 cid:301 pid:804465935 hgt:152cm eyr:2025 hcl:#888785 +iyr:2013 ecl:hzl + +hcl:6a32f0 eyr:2027 +iyr:2014 +ecl:amb byr:1933 cid:185 +hgt:75cm + +byr:1945 hcl:#b6652a +hgt:163cm ecl:brn eyr:2025 iyr:2015 pid:829875350 + +byr:1940 hgt:174cm iyr:2014 pid:9989523268 ecl:gry eyr:2026 +hcl:#efcc98 + +iyr:2011 ecl:lzr +byr:1998 hgt:182cm +eyr:2029 hcl:z + +pid:091142801 +hcl:#c0946f byr:1983 ecl:blu iyr:2017 hgt:183cm eyr:2027 + +ecl:oth iyr:2011 hgt:158cm byr:1950 pid:902512428 hcl:#623a2f eyr:2028 + +eyr:2020 +iyr:2020 +ecl:oth byr:1938 hcl:#d5eb7e +pid:829945241 hgt:171cm + +byr:1971 +pid:998912876 eyr:2022 +iyr:2012 hcl:#cfa07d cid:338 ecl:brn +hgt:183cm + +ecl:amb hcl:#7d3b0c pid:331124964 iyr:2013 byr:1945 hgt:189cm eyr:2028 + +pid:012740434 iyr:2019 +byr:1998 +hgt:172cm eyr:2028 +cid:102 hcl:#866857 +ecl:amb + +hcl:#866857 +eyr:2027 hgt:181cm byr:1954 ecl:blu +iyr:2010 +pid:211721858 + +byr:1984 pid:876360762 hgt:72cm +eyr:2040 hcl:a60c15 iyr:1948 ecl:lzr + +hgt:167cm byr:1930 ecl:oth pid:740024142 eyr:2024 hcl:#341e13 +iyr:2018 + +byr:1968 hcl:#623a2f ecl:brn +cid:210 hgt:155cm +iyr:2017 pid:216618180 eyr:2024 + +byr:1966 pid:131332466 hgt:174cm ecl:amb +hcl:#733820 +iyr:2013 eyr:2023 + +eyr:1985 +pid:#fde6c1 +hcl:z byr:2017 iyr:2027 hgt:163cm + +iyr:2016 ecl:hzl hgt:171cm +hcl:#888785 pid:390140479 byr:1976 + +cid:327 eyr:2023 byr:1954 +hgt:192cm iyr:2012 +pid:413357852 ecl:blu + +iyr:2014 ecl:hzl hgt:154cm byr:1962 pid:904474869 hcl:#6b5442 eyr:2023 + +ecl:hzl iyr:2012 eyr:2027 pid:663644982 hgt:175cm cid:56 +byr:1980 hcl:#ceb3a1 + +eyr:2020 iyr:2012 hgt:190cm byr:1993 hcl:#a97842 +ecl:amb pid:418635216 + +pid:845398140 +byr:1933 iyr:2016 ecl:oth eyr:2024 hcl:#cfa07d hgt:169cm + +eyr:2040 hgt:161cm +byr:2018 ecl:blu +iyr:2022 hcl:#866857 cid:252 +pid:286344655 + +hcl:#6b5442 +eyr:2027 +hgt:191cm iyr:2012 +pid:642929864 ecl:amb byr:1934 + +iyr:2015 hcl:#cfa07d ecl:grn +eyr:2029 pid:163012663 hgt:150cm + +eyr:2030 byr:1938 hgt:188cm iyr:2018 +pid:652645847 hcl:#b6652a ecl:grn + +pid:157056211 iyr:2010 hcl:#cfa07d ecl:gry +eyr:2024 byr:1961 hgt:177cm + +eyr:2020 hcl:#60945e ecl:brn iyr:2011 pid:688090869 hgt:171cm +byr:1941 + +eyr:2023 hgt:188cm byr:1964 hcl:#7d3b0c ecl:gry iyr:2017 + +byr:1996 +hcl:#733820 pid:142902538 +eyr:2023 iyr:2012 ecl:oth +hgt:166cm + +hgt:62in cid:125 eyr:2022 hcl:#b6652a iyr:2011 +ecl:amb pid:220826562 + +ecl:grn hgt:72in byr:1991 eyr:2020 pid:281076310 hcl:#6b5442 + +iyr:2030 hgt:78 eyr:1966 byr:2008 cid:260 ecl:grt hcl:5d2e21 + +iyr:2017 pid:388674097 byr:1950 ecl:grn cid:338 +hgt:159cm +hcl:#6b5442 +eyr:2025 + +hgt:92 eyr:2031 cid:52 pid:169cm hcl:2695be +iyr:1987 +byr:2011 + +pid:396358436 hcl:#ceb3a1 +byr:1976 eyr:2025 +iyr:2012 ecl:brn +hgt:174cm + +pid:389292752 +eyr:2027 cid:335 hgt:65in byr:1974 hcl:#6b5442 ecl:oth iyr:2019 + +ecl:amb iyr:2010 hcl:#602927 hgt:164cm byr:1966 pid:749383114 eyr:2026 + +pid:656206688 +hgt:175cm +hcl:#6b5442 byr:1961 eyr:2028 +ecl:amb iyr:2010 + +hgt:179cm eyr:2028 byr:1958 +pid:095076581 ecl:gry +hcl:#733820 +iyr:2017 + +byr:1960 +cid:309 ecl:utc iyr:2012 +hgt:172cm pid:395100903 +eyr:2030 hcl:#cfa07d + +eyr:2021 cid:98 pid:387957353 byr:1941 +hgt:192cm +hcl:#efcc98 ecl:brn + +pid:143359781 +hcl:#a97842 +byr:1996 +hgt:184cm eyr:2020 cid:319 ecl:blu iyr:2020 + +eyr:2025 iyr:2013 hgt:154cm hcl:#b6652a ecl:oth byr:1979 pid:976151938 + +iyr:2017 +hgt:118 ecl:#f0f31e +eyr:2028 +hcl:z + +iyr:2016 hgt:153cm hcl:#6d55cd eyr:2026 ecl:hzl byr:1943 pid:257485710 cid:165 + +hcl:#ceb3a1 ecl:blu byr:1937 hgt:152cm iyr:2020 eyr:2026 pid:032844291 + +hcl:#fffffd byr:1937 pid:122104515 ecl:hzl +iyr:2018 +eyr:2027 hgt:163cm + +byr:1987 pid:052848077 hcl:#341e13 +iyr:2015 hgt:172cm eyr:2022 + +pid:897642631 iyr:2015 byr:1941 hcl:#733820 ecl:brn eyr:2020 hgt:179cm + +hcl:#7d3b0c ecl:grn eyr:2029 pid:232785519 cid:258 iyr:2013 byr:1999 + +hgt:152cm ecl:gry hcl:#18171d eyr:2020 byr:1971 iyr:2020 pid:211826434 + +hcl:#866857 +eyr:2022 pid:979633771 ecl:hzl iyr:2014 byr:1963 + +cid:124 +ecl:utc hgt:77 hcl:#866857 +byr:1979 iyr:2013 +pid:92518200 eyr:1968 + +hcl:#888785 eyr:2022 pid:233642738 byr:1959 hgt:191cm +ecl:blu iyr:2010 + +pid:#adbcd3 ecl:zzz eyr:2025 cid:129 byr:2028 hcl:z hgt:166cm iyr:2011 + +cid:131 hgt:169cm +iyr:2020 +byr:1994 +eyr:2021 +ecl:amb hcl:#c0946f +pid:243158461 + +hcl:#18171d byr:1980 ecl:oth hgt:153cm eyr:2028 iyr:2020 pid:629055498 + +hcl:#b6652a +hgt:152 ecl:blu pid:175cm iyr:2015 byr:1941 eyr:1961 + +eyr:2025 hcl:#7d6ede byr:1988 +hgt:150cm +ecl:hzl cid:267 +pid:794369607 +iyr:2012 + +pid:538963835 +ecl:oth byr:1958 +hgt:173cm +eyr:2027 cid:63 +iyr:2018 hcl:#602927 + +hcl:#866857 +hgt:163cm byr:1925 iyr:2011 +ecl:oth +eyr:2023 cid:163 + +ecl:grn pid:411555227 byr:1974 eyr:2020 hgt:153cm iyr:2015 hcl:#a97842 + +cid:111 pid:473064654 byr:1948 +ecl:brn iyr:2013 +hcl:#16fa7a +eyr:2024 hgt:184cm + +iyr:2016 hgt:170cm byr:1993 pid:487807940 hcl:#efcc98 eyr:2024 ecl:gry + +hcl:#a97842 pid:891517350 iyr:2012 +byr:1937 +ecl:amb +eyr:2030 +hgt:171cm + +cid:330 ecl:gry +hgt:163cm eyr:2021 +hcl:#733820 byr:1991 pid:109734880 + +ecl:brn iyr:1934 eyr:2021 +hgt:62 +hcl:z pid:720470429 + +ecl:blu +pid:669045673 iyr:2015 +hgt:164cm +hcl:#866857 + +hgt:158cm hcl:#623a2f byr:1950 +eyr:2020 ecl:gry pid:708073090 +iyr:2018 + +hgt:158cm iyr:2017 eyr:2027 +ecl:brn pid:840573419 hcl:#18171d byr:1968 + +ecl:oth cid:81 hcl:#ceb3a1 eyr:2021 +iyr:2020 byr:1959 +hgt:62in +pid:634019849 + +hgt:180cm pid:651174767 iyr:2013 byr:1948 eyr:2022 hcl:#efcc98 ecl:grn + +eyr:2021 ecl:grn +cid:95 hcl:#733820 iyr:2016 hgt:174cm byr:1931 + +hcl:90e96c eyr:1948 ecl:zzz +byr:1984 pid:8325286529 +hgt:59in +cid:180 + +cid:293 hgt:193cm ecl:oth hcl:#602927 +eyr:2021 byr:1959 iyr:2016 + +pid:425216058 +hcl:#7d3b0c hgt:67in ecl:blu eyr:2022 +iyr:2016 byr:1936 cid:182 + +ecl:#c93c79 byr:2021 iyr:2021 +hgt:69cm pid:#fa092e eyr:2040 + +hcl:#733820 iyr:1964 +hgt:190cm +pid:121828083 byr:2028 ecl:blu eyr:2030 + +byr:1986 +eyr:2023 ecl:hzl hcl:#c0946f hgt:152cm pid:750393977 cid:308 iyr:2015 + +hgt:152cm byr:2004 hcl:z eyr:2038 ecl:#e92725 iyr:2023 pid:55783937 + +ecl:grn eyr:2023 hcl:#7d3b0c byr:1940 iyr:2017 pid:312213917 hgt:166cm + +ecl:grn pid:293691668 +byr:1949 hgt:60in +eyr:2021 +hcl:#efcc98 iyr:2017 + +iyr:2018 hgt:156cm ecl:oth +hcl:#ceb3a1 +pid:622764582 eyr:2020 cid:124 + +eyr:2021 +pid:146888876 byr:1962 iyr:2010 cid:63 ecl:amb hgt:188cm hcl:#a97842 + +pid:861542171 hcl:#866857 +ecl:brn +iyr:2010 byr:1975 +eyr:2020 + +hgt:157cm hcl:#18171d eyr:2022 byr:1936 iyr:2014 pid:478341738 ecl:amb + +ecl:brn +eyr:2026 +pid:553753060 hgt:186cm +iyr:2019 +hcl:#623a2f +byr:1991 + +iyr:2018 ecl:blu hcl:#cfa07d hgt:162cm byr:1924 pid:721804049 eyr:2023 + +byr:1970 hgt:181cm eyr:2027 ecl:hzl pid:171cm iyr:2012 hcl:#5f4282 + +cid:52 +ecl:blu iyr:2011 +pid:027908077 hcl:#b6652a hgt:158cm +byr:1986 + +pid:160cm hcl:91324c eyr:2034 iyr:2015 +byr:2021 +hgt:175in ecl:brn + +cid:164 iyr:2014 byr:1948 hgt:163cm pid:701930596 ecl:gry +eyr:2020 hcl:#733820 + +byr:1951 hcl:#fffffd pid:456803587 hgt:157cm ecl:blu iyr:2010 eyr:2020 + +ecl:#663e48 +pid:9157891148 hgt:66cm iyr:1989 +byr:1932 + +byr:1993 +hgt:167cm +ecl:amb iyr:2010 hcl:#3da943 pid:340209998 eyr:2021 + +byr:1968 +eyr:2021 pid:915482982 hcl:#84a907 iyr:2020 hgt:176cm ecl:grn + +hgt:190 ecl:oth hcl:#6b5442 +byr:2023 +pid:5211866539 +iyr:2028 cid:276 + +hcl:#ceb3a1 hgt:177cm byr:1966 +pid:#9f5b93 +iyr:2002 eyr:1958 +ecl:oth + +hcl:#888785 eyr:2025 iyr:2017 +hgt:187cm pid:856993600 ecl:oth + +hgt:186 +hcl:z +eyr:2025 +byr:2013 pid:6869591443 ecl:oth + +iyr:2015 pid:317156655 cid:144 +hgt:151cm hcl:#623a2f ecl:brn +byr:1966 eyr:2021 + +ecl:hzl pid:161653223 eyr:2026 iyr:2017 byr:1980 +hcl:#18171d + +iyr:2009 +pid:618443261 +byr:1989 hcl:#23ef8c eyr:2026 hgt:167cm ecl:grn + +ecl:oth +hcl:#fffffd iyr:2018 eyr:2022 pid:953490888 + +eyr:2026 hcl:#c0946f hgt:165cm iyr:2016 byr:1921 +ecl:blu pid:490419824 + +hgt:150cm hcl:#b6652a ecl:brn byr:1937 iyr:2013 pid:824096447 eyr:2027 + +ecl:amb +hcl:#733820 byr:1997 iyr:2015 cid:269 hgt:96 eyr:2022 pid:475968048 + +byr:1985 hgt:186cm eyr:2022 ecl:gry +pid:050842095 iyr:2014 + +ecl:hzl byr:1942 cid:294 hgt:191cm pid:768437232 +eyr:2024 hcl:#623a2f + +byr:1974 eyr:2022 hcl:#afb1a8 ecl:oth +hgt:159cm +cid:252 +pid:619988658 iyr:2018 + +ecl:oth eyr:2029 hgt:175cm +pid:548668762 byr:1982 iyr:2020 hcl:#c0946f + +ecl:gry hcl:#18171d +hgt:166 pid:#3f6172 iyr:1978 +eyr:2031 byr:2021 + +byr:1933 hcl:#c0946f ecl:gry eyr:2028 +pid:594772420 +hgt:167cm +iyr:2020 + +cid:332 hcl:#623a2f iyr:2018 pid:706055429 byr:1971 eyr:2022 ecl:gry + +hgt:187cm hcl:#888785 +pid:224041851 eyr:2029 +ecl:blu iyr:2012 byr:1991 + +ecl:#9c38d0 +hgt:161in +hcl:099d45 byr:2015 eyr:1994 +pid:2730108307 +iyr:2024 cid:229 + +hgt:184cm ecl:grn byr:1938 pid:996091727 +cid:115 +hcl:#866857 iyr:2020 eyr:2020 + +pid:883396674 iyr:2019 +eyr:2023 ecl:blu +byr:1979 hcl:#733820 cid:125 +hgt:181cm + +hgt:190cm cid:325 hcl:#866857 eyr:2027 ecl:gry +iyr:2013 pid:317703100 byr:1968 + +hcl:#866857 +ecl:gry pid:652638412 +eyr:2025 iyr:2015 hgt:158cm byr:1953 + +byr:1956 +hcl:#cfa07d eyr:2025 +pid:728272575 hgt:162cm +cid:291 ecl:blu iyr:2020 + +hgt:189cm byr:1980 hcl:#97fd64 ecl:grn iyr:2013 +pid:181599378 eyr:2029 + +iyr:2018 +hcl:#007101 ecl:brn byr:1947 cid:265 hgt:159cm pid:288707610 eyr:2024 + +hgt:62cm pid:2407695078 +eyr:2039 byr:2014 +iyr:1930 hcl:z +ecl:grt + +hgt:65cm +ecl:hzl +byr:1994 eyr:2004 hcl:z cid:130 pid:863191800 + +pid:125685599 byr:1995 +ecl:blu cid:57 hgt:172cm +iyr:2020 +hcl:#b6652a +eyr:2024 + +ecl:gry byr:1961 +iyr:2010 eyr:2022 pid:591409441 +cid:314 +hcl:#341e13 + +iyr:2020 +ecl:hzl hcl:#efcc98 byr:1983 hgt:174cm +eyr:2028 + +eyr:2029 byr:1924 iyr:2013 pid:662719101 +ecl:amb cid:77 + +ecl:oth +iyr:2013 byr:1947 pid:532607157 hcl:#7d3b0c eyr:2030 hgt:191cm + +pid:528940525 hcl:#18171d +iyr:2014 eyr:2029 cid:181 +byr:1967 +ecl:gry hgt:64in + +hgt:71in iyr:2019 hcl:#cfa07d eyr:2029 +pid:785691813 +byr:1996 ecl:hzl cid:335 + +byr:2015 +pid:174cm hgt:79 hcl:z iyr:1970 cid:66 eyr:1993 ecl:lzr + +hgt:188cm +eyr:2025 cid:107 ecl:grn +pid:286480470 hcl:#623a2f byr:1967 +iyr:2015 + +eyr:2027 hcl:#7d3b0c cid:287 +pid:319840760 iyr:2017 hgt:179cm ecl:gry + +byr:1976 ecl:brn iyr:2020 eyr:2023 hgt:154cm pid:964286153 + +iyr:2015 eyr:2027 hgt:173cm byr:1983 pid:500176757 ecl:amb hcl:#7d3b0c + +cid:282 pid:697942299 hgt:185cm +eyr:2026 hcl:#7d3b0c iyr:2017 byr:2002 ecl:amb + +iyr:2014 hcl:#18171d pid:044482202 +ecl:oth +hgt:163cm eyr:2021 byr:1982 + +ecl:gry hcl:#7d3b0c +iyr:2019 eyr:2020 hgt:187cm +pid:617117265 + +eyr:2035 +ecl:#5525a9 cid:123 byr:2009 pid:15381071 iyr:2028 +hcl:#b6652a + +eyr:2021 hgt:165cm cid:207 +iyr:2010 ecl:gry +byr:1929 hcl:#733820 pid:442632632 + +pid:69132960 cid:84 hgt:107 eyr:2023 +ecl:gmt iyr:2016 +hcl:z +byr:2020 + +eyr:2027 pid:281765118 hcl:#ceb3a1 hgt:193cm +byr:1955 ecl:gry cid:321 iyr:2010 + +ecl:brn hgt:71in +cid:189 byr:1962 eyr:2023 iyr:2018 pid:780797141 hcl:#866857 + +pid:984503466 ecl:amb hgt:192cm byr:1942 hcl:#dcc50d iyr:2020 eyr:2030 cid:250 + +hcl:#7d3b0c eyr:2028 +hgt:178cm +ecl:gry +iyr:2011 +byr:1923 +pid:960277768 + +byr:2000 ecl:amb cid:199 eyr:2027 iyr:2020 pid:785585164 hcl:#888785 +hgt:164cm + +iyr:2015 pid:619005249 +ecl:brn byr:1955 eyr:2028 +hgt:183cm +hcl:#a97842 + +ecl:grn +byr:1970 cid:339 +iyr:2011 hcl:#a97842 pid:952307953 eyr:2027 hgt:159cm + +hcl:ff4451 iyr:2022 +byr:1972 ecl:#86cbc5 pid:29044223 eyr:1985 +hgt:62cm + +hcl:#623a2f iyr:2013 eyr:2023 hgt:164cm byr:1956 +ecl:oth + +eyr:2028 hcl:#733820 pid:767003752 byr:1935 hgt:167cm iyr:2016 +ecl:oth +cid:215 + +cid:125 ecl:amb +iyr:2019 hcl:#18171d eyr:2022 hgt:163cm +pid:239764055 +byr:1954 + +ecl:gry +iyr:2019 hcl:#cfa07d byr:1929 pid:221011852 +cid:274 eyr:2026 hgt:158cm + +hcl:#a97842 iyr:2016 hgt:159cm +byr:1998 ecl:hzl eyr:2020 cid:207 + +pid:051242790 +iyr:2024 +byr:1975 hcl:#602927 +ecl:grn hgt:160cm eyr:2014 + +ecl:#0b3ea5 hcl:z pid:#122ff0 +byr:2007 +hgt:178 iyr:2013 +eyr:1950 + +hgt:171cm hcl:#cfa07d pid:674448249 +ecl:hzl eyr:2026 +cid:297 byr:1928 + +ecl:hzl eyr:2021 hcl:#b6652a pid:856617617 +byr:1949 +hgt:153cm iyr:2015 + +hgt:164cm ecl:gry +eyr:2025 +pid:147932207 iyr:2011 byr:1984 hcl:#fffffd + +eyr:2027 hcl:#7d3b0c +pid:377701492 ecl:gry byr:1971 hgt:174cm +iyr:2023 + +byr:2001 hcl:#4784a2 hgt:161cm iyr:2014 eyr:2025 pid:955262336 +ecl:amb -- cgit v1.2.3