Compare commits

..

85 Commits

Author SHA1 Message Date
Matthew Butterick 1d42f9963d fix deps 9 years ago
Matthew Butterick db8bc2e355 day25 9 years ago
Matthew Butterick 379b3d5d4b typo 9 years ago
Matthew Butterick 37cd3db58f day24 9 years ago
Matthew Butterick a58fdd8148 name change 9 years ago
Matthew Butterick c6c3bcf0c6 day23 9 years ago
Matthew Butterick 33d50b16c4 colonize 9 years ago
Matthew Butterick a9c41325d2 fix day22 9 years ago
Matthew Butterick 1825071a1b continue day23 9 years ago
Matthew Butterick 6232b6f21c start day23 9 years ago
Matthew Butterick 1307d8358b day22 9 years ago
Matthew Butterick 120c8c6780 day21 9 years ago
Matthew Butterick b327219fd2 more 9 years ago
Matthew Butterick d9df122ec7 typos 9 years ago
Matthew Butterick 1f0130d2e6 day20 9 years ago
Matthew Butterick 9ca361dd61 day19 9 years ago
Matthew Butterick 403355f623 zeroify 9 years ago
Matthew Butterick f45137d923 typo 9 years ago
Matthew Butterick c2150544b6 typo 9 years ago
Matthew Butterick a62113cf30 typo 9 years ago
Matthew Butterick f9a8409b2b fix deps 9 years ago
Matthew Butterick f7a69985a7 day18 9 years ago
Matthew Butterick 021ea51dc6 fix it more better 9 years ago
Matthew Butterick 1ef1d73001 fix input file linking 9 years ago
Matthew Butterick 072b061a6b Update README.md 9 years ago
Matthew Butterick 93b09dc139 Update README.md 9 years ago
Matthew Butterick d780768e48 update 9 years ago
Matthew Butterick 8cd5b28673 Update README.md 9 years ago
Matthew Butterick 7d01377caa update info 9 years ago
Matthew Butterick 45a0811230 note 9 years ago
Matthew Butterick 1289992494 rearrange 9 years ago
Matthew Butterick b72f0249bc about 9 years ago
Matthew Butterick 572d222cb1 day17 update 9 years ago
Matthew Butterick 9f7abb114c day17 9 years ago
Matthew Butterick c56738152d update index 9 years ago
Matthew Butterick 81306c3994 day16 9 years ago
Matthew Butterick bc5da102ba day15 9 years ago
Matthew Butterick 16c0b1f198 Update README.md 9 years ago
Matthew Butterick 410c7ad3bb ypo 9 years ago
Matthew Butterick ce2dbf0db3 day14 9 years ago
Matthew Butterick 75f2168e25 typo 9 years ago
Matthew Butterick d37adca51e note 9 years ago
Matthew Butterick 5d300ae8d9 typo 9 years ago
Matthew Butterick 49b169602e clarity 9 years ago
Matthew Butterick ec676b9b01 typo 9 years ago
Matthew Butterick 3569b6bccb rkt-ize 9 years ago
Matthew Butterick 9e9f30b27c tweak 9 years ago
Matthew Butterick 371aee7567 typo 9 years ago
Matthew Butterick cea582d3c6 tweak 9 years ago
Matthew Butterick efac3343b7 math tweak 9 years ago
Matthew Butterick 04df2c3653 tweak 9 years ago
Matthew Butterick 42d0edb520 typo 9 years ago
Matthew Butterick 461791f158 tweak 9 years ago
Matthew Butterick e6c0c384f1 day12 and day13 9 years ago
Matthew Butterick 755017a06c typo 9 years ago
Matthew Butterick 294acdea40 day11 9 years ago
Matthew Butterick 8975267073 typo 9 years ago
Matthew Butterick b73b988213 typo 9 years ago
Matthew Butterick e486128438 typo 9 years ago
Matthew Butterick adf41e9eaf day10 9 years ago
Matthew Butterick 31a9f73acb day9 9 years ago
Matthew Butterick 69fdd8b2f5 day8 9 years ago
Matthew Butterick d5ea650a25 adjustment 9 years ago
Matthew Butterick 43f2c69245 adjustments 9 years ago
Matthew Butterick 796ec231f5 adjustments 9 years ago
Matthew Butterick fdba08b97a day7 9 years ago
Matthew Butterick 09883ce619 rename 9 years ago
Matthew Butterick 1346f932d8 update 9 years ago
Matthew Butterick 184d6a1651 update 9 years ago
Matthew Butterick 9498021941 update 9 years ago
Matthew Butterick 6199324ebc typo 9 years ago
Matthew Butterick bc06eb4f54 typos 9 years ago
Matthew Butterick 8827154ace day6 9 years ago
Matthew Butterick e74fee0bb5 day5 9 years ago
Matthew Butterick e5bae451df typo 9 years ago
Matthew Butterick 8539c8f9af finish day4, reorg directory 9 years ago
Matthew Butterick 339b2c7d1d finish day3 9 years ago
Matthew Butterick ea9eb79e3f start day3 9 years ago
Matthew Butterick 117a1a4401 day2 9 years ago
Matthew Butterick 08d30beb03 tidy day1 9 years ago
Matthew Butterick 213bf28eab Update README.md 9 years ago
Matthew Butterick d4239d5120 typo 9 years ago
Matthew Butterick ee9c496c44 typo 9 years ago
Matthew Butterick 3bd775b014 Create README.md 9 years ago
Matthew Butterick 0d50a35923 day 1 9 years ago

1
.gitignore vendored

@ -16,7 +16,6 @@ Icon
.Trashes
# generated documentation
doc/*
*.js
*.css
*.html

@ -1 +0,0 @@
In 2016 I wrote all my solutions as DSLs.

@ -1,55 +0,0 @@
#lang br/quicklang
(define (read-syntax path port)
(define turn-strings (string-split (port->string port) ","))
(define turn-pattern #px"^([LR])(\\d+)$")
(define turn-datums
(for*/list ([tstr (in-list turn-strings)])
(define match-result (regexp-match turn-pattern (string-trim tstr)))
`(turn ,@(cdr (or match-result empty)))))
(strip-bindings
#`(module day01-mod "lang.rkt"
#,@turn-datums)))
(provide read-syntax)
(define-macro (mb . TURNS)
#'(#%module-begin
(solve . TURNS)))
(provide (rename-out [mb #%module-begin]))
(define (loc-dist loc)
(+ (abs (imag-part loc)) (abs (real-part loc))))
(struct $turn (rot dist) #:transparent)
(define rotate-left +i)
(define rotate-right -i)
(define same-dir 1)
(define (solve . turns)
(define found-twice-visited-loc #f)
(define north 0+1i)
(define starting-loc 0+0i)
(let loop ([locs (list starting-loc)] [dir north] [turns turns])
(cond
[(empty? turns)
(displayln (format "part 1 (dist of final location): ~a" (loc-dist (car locs))))]
[(zero? ($turn-dist (car turns))) (loop locs dir (cdr turns))]
[else
(define new-dir (* dir ($turn-rot (car turns))))
(define one-step 1)
(define new-loc (+ (car locs) (* new-dir one-step)))
(when (and (not found-twice-visited-loc) (member new-loc locs))
(set! found-twice-visited-loc new-loc)
(displayln (format "part 2 (dist of first twice-visited location): ~a"
(loc-dist new-loc))))
(define decremented-turn ($turn same-dir (sub1 ($turn-dist (car turns)))))
(loop (cons new-loc locs) new-dir (cons decremented-turn (cdr turns)))])))
(define-macro-cases turn
[(_ DIR DIST)
(with-pattern ([ENCODED-DIR (syntax-case #'DIR ()
["L" #'rotate-left]
["R" #'rotate-right])])
#'($turn ENCODED-DIR (string->number DIST)))]
[else #'(void)])
(provide turn)

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
R4, R5, L5, L5, L3, R2, R1, R1, L5, R5, R2, L1, L3, L4, R3, L1, L1, R2, R3, R3, R1, L3, L5, R3, R1, L1, R1, R2, L1, L4, L5, R4, R2, L192, R5, L2, R53, R1, L5, R73, R5, L5, R186, L3, L2, R1, R3, L3, L3, R1, L4, L2, R3, L5, R4, R3, R1, L1, R5, R2, R1, R1, R1, R3, R2, L1, R5, R1, L5, R2, L2, L4, R3, L1, R4, L5, R4, R3, L5, L3, R4, R2, L5, L5, R2, R3, R5, R4, R2, R1, L1, L5, L2, L3, L4, L5, L4, L5, L1, R3, R4, R5, R3, L5, L4, L3, L1, L4, R2, R5, R5, R4, L2, L4, R3, R1, L2, R5, L5, R1, R1, L1, L5, L5, L2, L1, R5, R2, L4, L1, R4, R3, L3, R1, R5, L1, L4, R2, L3, R5, R3, R1, L3

@ -1,38 +0,0 @@
#lang br/quicklang
(define (read-syntax path port)
(define moveset-strs (string-split (port->string port)))
(define moveset-datums
(for*/list ([msstr (in-list moveset-strs)])
`(moveset ,@(regexp-match* #rx"." msstr))))
(strip-bindings
#`(module day01-mod "lang-b.rkt"
#,@moveset-datums)))
(provide read-syntax)
(define-macro moveset #'list)
(provide moveset)
(define-macro (mb . MOVESETS)
#'(#%module-begin
(void (solve (list . MOVESETS)))))
(provide (rename-out [mb #%module-begin]))
(define (do-moveset button moveset)
(for/fold ([button button])
([move (in-list moveset)])
(vector-ref
(case move
[("U") '#(1 2 1 4 5 2 3 4 9 6 7 8 #xb)]
[("L") '#(1 2 2 3 5 5 6 7 8 #xa #xa #xb #xd)]
[("R") '#(1 3 4 4 6 7 8 9 9 #xb #xc #xc #xd)]
[("D") '#(3 6 7 8 5 #xa #xb #xc 9 #xa #xd #xc #xd)])
(sub1 button))))
(define starting-button 5)
(define (solve mss)
(for/fold ([button starting-button])
([ms (in-list mss)])
(define result (do-moveset button ms))
(display (string-upcase (number->string result 16)))
result))

@ -1,38 +0,0 @@
#lang br/quicklang
(define (read-syntax path port)
(define moveset-strs (string-split (port->string port)))
(define moveset-datums
(for*/list ([msstr (in-list moveset-strs)])
`(moveset ,@(regexp-match* #rx"." msstr))))
(strip-bindings
#`(module day01-mod "lang.rkt"
#,@moveset-datums)))
(provide read-syntax)
(define-macro moveset #'list)
(provide moveset)
(define-macro (mb . MOVESETS)
#'(#%module-begin
(void (solve (list . MOVESETS)))))
(provide (rename-out [mb #%module-begin]))
(define (do-moveset button moveset)
(for/fold ([button button])
([move (in-list moveset)])
(vector-ref
(case move
[("U") '#(1 2 3 1 2 3 4 5 6)]
[("L") '#(1 1 2 4 4 5 7 7 8)]
[("R") '#(2 3 3 5 6 6 8 9 9)]
[("D") '#(4 5 6 7 8 9 7 8 9)])
(sub1 button))))
(define starting-button 5)
(define (solve mss)
(for/fold ([button starting-button])
([ms (in-list mss)])
(define result (do-moveset button ms))
(display (string-upcase (number->string result 16)))
result))

@ -1,6 +0,0 @@
#lang reader "lang-b.rkt"
DLRRRRLRLDRRRURRURULRLLULUURRRDDLDULDULLUUDLURLURLLDLUUUDUUUULDRDUUDUDDRRLRDDDUDLDLLRUURDRULUULRLRDULULLRLRLRLDRLUULDLDDDDRRLRUUUDDRURRULLLRURLUURULLRLUDDLDRUULDRURULRRRLLLRDLULDRRDDUDLURURLDULDRDRLDDUURRDUDDRDUURDULDUURDUDRDRULDUDUULRRULUUURDUURUDLDURDLRLURUUDRRDLRUDRULRURLDLLDLLRRDRDRLRRRULDRRLDUURLUUDLUUDDLLRULRDUUDURURLUURDRRRUDLRDULRRRLDRDULRUUDDDLRDUULDRLLDRULUULULRDRUUUULULLRLLLRUURUULRRLDDDRULRRRUDURUR
RULRUUUDLLUDURDRDDLLRLLUDRUDDRLRRDLDLDRDULDLULURDLUDDDUULURLDRUUURURLLRRDDDUUDRLRLLDLDRDDDRDUDLRDRDLLLDDLDUDDRUDUUDLLLLLDULRLURRRLLURUUULUDRLRLRLURRDRLLLRLLULRLLLDDLRLRDLUUUUUDULULDDULLUDUURDLRUDLRUDLRLLRLDLULRLDUDRURURDLRULDLULULDLLDLDLDLLLUDUDDLRLRRDULLUDRDDLLLDUURDULUDURLLLDRUDDDLRLULDLDRRDDDRDULDDUDRDDULLULRRLRUULRDUDURUDULUDUDURLDRDUUDDRRLRURDRRLRDDDDRUDLUDLDDLRDLUUDLRRURDDLURDLRDLLRDRDLDLDUUUURULUULDDDDLDULUURRRULUDLLLDRULDRURL
RRRLRDLLDUURDRRRLURDUULUDURDRRUUDURURRLDLLDRDLRRURDDUDDURLRUUDDULULRUUDRLUUDDLLDDDLRRRDLLLLLLRRURDULDLURRURRDDLDDDUDURRDURRRLUDRRULLRULDRLULRULDDRLLRDLRDUURULURLUURLRRULDULULUULDUDLRLDRDDRRRUUULULDUURLRLLURRLURDUUDDDRUULDLLLDRUURLRRLLDDUDRDLDDDULDRDDDUDRRLLLULURDUDLLUUURRLDULURURDDLUDLLRLDRULULURDLDRLURDLRRDRRUULLULDLURRDDUDRDDDLDUDLDRRUDRULDLDULRLLRRRRDDRLUURRRRDDLLRUURRLRURULDDULRLULRURRUULDUUDURDRRLRLUDRULDRUULUUDRDURDURRLULDDDULDDLRDURRUUUUUDDRRDLRDULUUDDL
DRRLLRRLULDDULRDDLRLDRURDDUDULURRDLUUULURRRLLRLULURLLRLLDLLUDDLLRDRURRDLDDURRURDRDDUDDDLLRLDLDLDDDDRRRRUDUDLRDUDDURLLRURRDUDLRLLUDDRLDUUDDLLLUDRRRLLDDULUDDRLLUDDULLDDLRLDLRURRLUDDLULULDLUURDLLUDUDRRRRDULUDLRRLRUDDUUDRRLLRUUDRRLDDLRRRUDRRDRRDDUDLULLURRUURLLLDRDDLUDDDUDDRURURDLRUULLRDRUUDRDUDRLULLDURUUULDDLDRDRUDRUDUULDDRLRDRRDRRRRLRLRUULDDUUDDLLLLRRRDUDLRDLDUDDUURLUDURLDRRRDRUDUDRLDLRLDRDDLUDRURLRDRDLDUDDDLRLULLUULURLDDDULDUDDDLDRLDLURULLUDLLDRULDLLLDUL
LDULURUULLUDLDDRLLDURRULRLURLLURLRRLRDLDDRUURULLRUURUURRUDDDLRRLDDLULDURLLRDURDLLLURLDRULLURLRLDRDRULURDULDLLDUULLLDUDULDURLUDRULRUUUUUUDUUDDDLLURDLDLRLRDLULRDRULUUDRLULLURLRLDURDRRDUDDDURLLUUDRRURUDLDUDRLRLDRLLLLDLLLURRUDDURLDDRULLRRRRDUULDLUDLDRDUUURLDLLLDLRLRRLDDULLRURRRULDLURLURRRRULUURLLUULRURDURURLRRDULLDULLUDURDUDRLUULULDRRDLLDRDRRULLLDDDRDUDLRDLRDDURRLDUDLLRUDRRRUDRURURRRRDRDDRULRRLLDDRRRLDLULRLRRRUDUDULRDLUDRULRRRRLUULRULRLLRLLURDLUURDULRLDLRLURDUURUULUUDRLLUDRULULULLLLRLDLLLDDDLUULUDLLLDDULRDRULURDLLRRDRLUDRD

@ -1,6 +0,0 @@
#lang reader "lang.rkt"
DLRRRRLRLDRRRURRURULRLLULUURRRDDLDULDULLUUDLURLURLLDLUUUDUUUULDRDUUDUDDRRLRDDDUDLDLLRUURDRULUULRLRDULULLRLRLRLDRLUULDLDDDDRRLRUUUDDRURRULLLRURLUURULLRLUDDLDRUULDRURULRRRLLLRDLULDRRDDUDLURURLDULDRDRLDDUURRDUDDRDUURDULDUURDUDRDRULDUDUULRRULUUURDUURUDLDURDLRLURUUDRRDLRUDRULRURLDLLDLLRRDRDRLRRRULDRRLDUURLUUDLUUDDLLRULRDUUDURURLUURDRRRUDLRDULRRRLDRDULRUUDDDLRDUULDRLLDRULUULULRDRUUUULULLRLLLRUURUULRRLDDDRULRRRUDURUR
RULRUUUDLLUDURDRDDLLRLLUDRUDDRLRRDLDLDRDULDLULURDLUDDDUULURLDRUUURURLLRRDDDUUDRLRLLDLDRDDDRDUDLRDRDLLLDDLDUDDRUDUUDLLLLLDULRLURRRLLURUUULUDRLRLRLURRDRLLLRLLULRLLLDDLRLRDLUUUUUDULULDDULLUDUURDLRUDLRUDLRLLRLDLULRLDUDRURURDLRULDLULULDLLDLDLDLLLUDUDDLRLRRDULLUDRDDLLLDUURDULUDURLLLDRUDDDLRLULDLDRRDDDRDULDDUDRDDULLULRRLRUULRDUDURUDULUDUDURLDRDUUDDRRLRURDRRLRDDDDRUDLUDLDDLRDLUUDLRRURDDLURDLRDLLRDRDLDLDUUUURULUULDDDDLDULUURRRULUDLLLDRULDRURL
RRRLRDLLDUURDRRRLURDUULUDURDRRUUDURURRLDLLDRDLRRURDDUDDURLRUUDDULULRUUDRLUUDDLLDDDLRRRDLLLLLLRRURDULDLURRURRDDLDDDUDURRDURRRLUDRRULLRULDRLULRULDDRLLRDLRDUURULURLUURLRRULDULULUULDUDLRLDRDDRRRUUULULDUURLRLLURRLURDUUDDDRUULDLLLDRUURLRRLLDDUDRDLDDDULDRDDDUDRRLLLULURDUDLLUUURRLDULURURDDLUDLLRLDRULULURDLDRLURDLRRDRRUULLULDLURRDDUDRDDDLDUDLDRRUDRULDLDULRLLRRRRDDRLUURRRRDDLLRUURRLRURULDDULRLULRURRUULDUUDURDRRLRLUDRULDRUULUUDRDURDURRLULDDDULDDLRDURRUUUUUDDRRDLRDULUUDDL
DRRLLRRLULDDULRDDLRLDRURDDUDULURRDLUUULURRRLLRLULURLLRLLDLLUDDLLRDRURRDLDDURRURDRDDUDDDLLRLDLDLDDDDRRRRUDUDLRDUDDURLLRURRDUDLRLLUDDRLDUUDDLLLUDRRRLLDDULUDDRLLUDDULLDDLRLDLRURRLUDDLULULDLUURDLLUDUDRRRRDULUDLRRLRUDDUUDRRLLRUUDRRLDDLRRRUDRRDRRDDUDLULLURRUURLLLDRDDLUDDDUDDRURURDLRUULLRDRUUDRDUDRLULLDURUUULDDLDRDRUDRUDUULDDRLRDRRDRRRRLRLRUULDDUUDDLLLLRRRDUDLRDLDUDDUURLUDURLDRRRDRUDUDRLDLRLDRDDLUDRURLRDRDLDUDDDLRLULLUULURLDDDULDUDDDLDRLDLURULLUDLLDRULDLLLDUL
LDULURUULLUDLDDRLLDURRULRLURLLURLRRLRDLDDRUURULLRUURUURRUDDDLRRLDDLULDURLLRDURDLLLURLDRULLURLRLDRDRULURDULDLLDUULLLDUDULDURLUDRULRUUUUUUDUUDDDLLURDLDLRLRDLULRDRULUUDRLULLURLRLDURDRRDUDDDURLLUUDRRURUDLDUDRLRLDRLLLLDLLLURRUDDURLDDRULLRRRRDUULDLUDLDRDUUURLDLLLDLRLRRLDDULLRURRRULDLURLURRRRULUURLLUULRURDURURLRRDULLDULLUDURDUDRLUULULDRRDLLDRDRRULLLDDDRDUDLRDLRDDURRLDUDLLRUDRRRUDRURURRRRDRDDRULRRLLDDRRRLDLULRLRRRUDUDULRDLUDRULRRRRLUULRULRLLRLLURDLUURDULRLDLRLURDUURUULUUDRLLUDRULULULLLLRLDLLLDDDLUULUDLLLDDULRDRULURDLLRRDRLUDRD

@ -1,28 +0,0 @@
#lang br/quicklang
(require sugar/list)
(define (read-syntax path port)
(define triads (slice-at (map string-split (string-split (port->string port) "\n")) 3))
(define new-triples
(slice-at (flatten (for/list ([triad (in-list triads)])
(apply map list triad))) 3))
(strip-bindings
#`(module mod "lang-b.rkt"
#,@(for*/list ([triple (in-list new-triples)])
`(triangle ,@triple)))))
(provide read-syntax)
(define-macro (mb . TRIANGLES)
#'(#%module-begin
(length (filter valid-triangle? (list . TRIANGLES)))))
(provide (rename-out [mb #%module-begin]))
(define-macro (triangle A B C)
#'(map string->number (list A B C)))
(provide triangle)
(define (valid-triangle? triangle)
(match-define (list a b c) triangle)
(and (> (+ a b) c)
(> (+ b c) a)
(> (+ a c) b)))

@ -1,23 +0,0 @@
#lang br/quicklang
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,@(for*/list ([triangle-str (in-list (string-split (port->string port) "\n"))])
`(triangle ,@(string-split triangle-str))))))
(provide read-syntax)
(define-macro (mb . TRIANGLES)
#'(#%module-begin
(length (filter valid-triangle? (list . TRIANGLES)))))
(provide (rename-out [mb #%module-begin]))
(define-macro (triangle A B C)
#'(map string->number (list A B C)))
(provide triangle)
(define (valid-triangle? triangle)
(match-define (list a b c) triangle)
(and (> (+ a b) c)
(> (+ b c) a)
(> (+ a c) b)))

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,981 +0,0 @@
#lang reader "lang.rkt"
bkwzkqsxq-tovvilokx-nozvyiwoxd-172[fstek]
wifilzof-wbiwifuny-yhachyylcha-526[qrazx]
jvyyvzpcl-jhukf-shivyhavyf-487[zhtsi]
kwvacumz-ozilm-kivlg-kwvbiqvumvb-694[gknyw]
mvhkvbdib-kmjezxodgz-mvwwdo-omvdidib-837[dmvbi]
nzydfxpc-rclop-qwzhpc-lnbftdtetzy-171[cptzd]
vhehkyne-unggr-inkvatlbgz-813[gnehk]
tcorcikpi-hnqygt-octmgvkpi-570[nzewo]
xmtjbzidx-wvnfzo-jkzmvodjin-447[uyzlp]
willimcpy-mwupyhayl-bohn-mufym-734[stjoc]
sbejpbdujwf-cvooz-xpsltipq-961[azfnd]
jchipqat-qphzti-rjhidbtg-htgkxrt-271[thigj]
npmhcargjc-zsllw-pcqcypaf-158[mzwnx]
luxciuwncpy-jfumncw-alumm-qilembij-318[mucil]
bxaxipgn-vgpst-rpcsn-rdpixcv-htgkxrth-427[ywazt]
zekvierkzferc-tyftfcrkv-ivtvzmzex-295[evzfk]
enzcntvat-qlr-hfre-grfgvat-143[rtaef]
mvkccspson-bkllsd-nofovyzwoxd-224[oscdk]
enzcntvat-zvyvgnel-tenqr-pnaql-pbngvat-ratvarrevat-429[zymbs]
nwzekwypera-xwogap-pnwejejc-992[lkiwn]
ajmrxjlcren-ajkkrc-lxwcjrwvnwc-667[ezynd]
bxaxipgn-vgpst-hrpktcvtg-wjci-advxhixrh-661[lytku]
owshgfarwv-vqw-kzahhafy-190[ahwfv]
jqwpihizlwca-moo-twoqabqka-512[ncdyv]
apwmeclga-pyzzgr-rcaflmjmew-886[amceg]
tyepcyletzylw-ojp-wzrtdetnd-951[mxqsy]
dlhwvupglk-kfl-hjxbpzpapvu-773[nrotd]
fab-eqodqf-dmnnuf-bgdotmeuzs-612[dchyk]
qjopwxha-bhksan-skngodkl-940[kahno]
lsyrkjkbnyec-dyz-combod-cmkfoxqob-rexd-bomosfsxq-718[lktzs]
zixppfcfba-bdd-jxohbqfkd-939[sqtor]
vxupkizork-kmm-ktmotkkxotm-852[dsqjh]
excdklvo-mkxni-mykdsxq-nozkbdwoxd-952[zspmc]
bnqqnrhud-eknvdq-sqzhmhmf-391[qhndm]
gzefmnxq-otaoaxmfq-ogefayqd-eqdhuoq-716[zinwb]
qzoggwtwsr-qobrm-ghcfous-428[goqrs]
gpbepvxcv-ltpedcxots-qphzti-steadnbtci-193[ignjy]
hvbizodx-nxvqzibzm-cpio-hvmfzodib-265[hixfe]
wkqxodsm-lexxi-kxkvicsc-926[xkcis]
bknsykmdsfo-myxcewob-qbkno-oqq-zebmrkcsxq-380[utqrz]
lejkrscv-wcfnvi-kirzezex-711[ecikr]
htwwtxnaj-idj-btwpxmtu-255[itgmd]
zsxyfgqj-jll-ijufwyrjsy-931[wrpgt]
iuxxuyobk-yigbktmkx-natz-gtgreyoy-384[ygktx]
qjopwxha-xqjju-zalhkuiajp-628[esmxk]
lxaaxbren-ljwmh-anbnjalq-745[stjqy]
gokzyxsjon-zvkcdsm-qbkcc-dbksxsxq-380[tsyqk]
qzoggwtwsr-qobrm-qcohwbu-rsdofhasbh-168[obhqr]
pelbtravp-pnaql-fgbentr-325[pabel]
xzwrmkbqtm-akidmvomz-pcvb-mvoqvmmzqvo-122[mvoqz]
sbnqbhjoh-ezf-fohjoffsjoh-233[xskyb]
jyddc-yrwxefpi-fewoix-hiwmkr-412[pdekg]
fab-eqodqf-rxaiqd-xmnadmfadk-690[sicjl]
xcitgcpixdcpa-rpcsn-htgkxrth-427[stznv]
rflsjynh-rnqnyfwd-lwfij-jll-xytwflj-229[lfjnw]
zotts-wlsiayhcw-vumeyn-fuvilunils-500[ilsun]
odiih-yujbcrl-pajbb-dbna-cnbcrwp-147[bcadi]
udskkaxawv-tmffq-klgjsyw-996[tmnfc]
emixwvqhml-kpwkwtibm-wxmzibqwva-278[zomvn]
dfcxsqhwzs-dzoghwq-ufogg-zcuwghwqg-116[kmijn]
dwbcjkun-ouxfna-mnbrpw-745[nbuwa]
jchipqat-rwdrdapit-pcpanhxh-973[hglvu]
fkqbokxqflkxi-avb-zlkqxfkjbkq-861[wdnor]
wbhsfbohwcboz-foppwh-qighcasf-gsfjwqs-480[fhswb]
dzczkrip-xiruv-szfyrqriuflj-treup-kvtyefcfxp-451[rfipu]
fmsledevhsyw-fyrrc-eguymwmxmsr-698[yzoxu]
udskkaxawv-jsttal-wfyafwwjafy-840[nlkda]
sno-rdbqds-idkkxadzm-sqzhmhmf-287[lngzc]
crwwv-yxphbq-rpbo-qbpqfkd-341[bpqrw]
odiih-mhn-anjlzdrbrcrxw-563[xadcy]
jyddc-ikk-wlmttmrk-698[lmstk]
buzahisl-wshzapj-nyhzz-klzpnu-149[pjxor]
odkasqzuo-eomhqzsqd-tgzf-ymzmsqyqzf-560[frqmp]
gokzyxsjon-bkllsd-yzobkdsyxc-874[nbtmv]
excdklvo-pvygob-bocokbmr-952[tyzxa]
jvsvymbs-jovjvshal-aljouvsvnf-253[zgtdm]
hafgnoyr-qlr-erfrnepu-637[refna]
pelbtravp-sybjre-fnyrf-299[tjoim]
fodvvlilhg-gbh-vwrudjh-621[hvdgl]
kgjgrypw-epybc-bwc-bcnjmwkclr-678[smijy]
myxcewob-qbkno-mrymyvkdo-dbksxsxq-458[bkmox]
joufsobujpobm-fhh-dpoubjonfou-311[uvksy]
rflsjynh-ojqqdgjfs-ijajqturjsy-697[jqsfr]
vetllbybxw-vtgwr-kxtvjnblbmbhg-709[athym]
ajvyjprwp-ajmrxjlcren-kdwwh-lxwcjrwvnwc-433[qsaxt]
zbytomdsvo-mkxni-mykdsxq-myxdksxwoxd-952[xdmko]
esyfwlau-bwddqtwsf-suimakalagf-684[stvip]
jef-iushuj-fhezusjybu-fbqijys-whqii-huiuqhsx-582[uhijs]
tpspahyf-nyhkl-jovjvshal-bzly-alzapun-565[sdprn]
apwmeclga-hcjjwzcyl-umpiqfmn-132[shfrg]
kwtwznct-jcvvg-lmxizbumvb-148[vbcmt]
rmn-qcapcr-aylbw-umpiqfmn-366[juftv]
sorozgxe-mxgjk-hgyqkz-yzuxgmk-748[xuvst]
bkwzkqsxq-wsvsdkbi-qbkno-mkxni-mykdsxq-yzobkdsyxc-822[ksbqx]
ryexqpqhteki-vbemuh-skijecuh-iuhlysu-842[tszmj]
ikhcxvmbex-wrx-wxlbzg-501[zhqis]
lsyrkjkbnyec-mrymyvkdo-nozvyiwoxd-978[enkfi]
wdjcvuvmyjpn-mvhkvbdib-agjrzm-nojmvbz-395[tcxne]
uwtojhynqj-gfxpjy-fhvznxnynts-567[kqpvs]
iqmbazulqp-pkq-dqoquhuzs-534[ntpuq]
gntmfefwitzx-ojqqdgjfs-ijajqturjsy-385[jfqtg]
sebehvkb-fhezusjybu-zubboruqd-husuylydw-972[ytsim]
nzcczdtgp-nsznzwlep-hzcvdsza-405[yotgu]
joufsobujpobm-fhh-ufdiopmphz-675[tsymn]
cxy-bnlanc-snuuhknjw-anbnjalq-823[nabcj]
shoewudys-rkddo-huiuqhsx-374[dhsuo]
vagreangvbany-rtt-jbexfubc-403[ynepo]
aoubshwq-dzoghwq-ufogg-aobousasbh-714[oabgh]
njmjubsz-hsbef-dipdpmbuf-qvsdibtjoh-805[bdjsf]
zovldbkfz-gbiivybxk-lmboxqflkp-653[nyajo]
yknnkoera-xwogap-hkceopeyo-628[ybmzc]
nij-mywlyn-wbiwifuny-guleyncha-396[nyiwl]
ocipgvke-ecpfa-eqcvkpi-vgejpqnqia-258[jsiqz]
encuukhkgf-hnqygt-vgejpqnqia-882[dxzer]
odiih-ljwmh-anbnjalq-927[ahijl]
fkqbokxqflkxi-zxkav-ixyloxqlov-861[nxgja]
udskkaxawv-xmrrq-uzgugdslw-sfsdqkak-216[msfyx]
owshgfarwv-bwddqtwsf-kzahhafy-216[wafhd]
oaxadrgx-dmnnuf-ruzmzouzs-794[uqhse]
ziuxioqvo-akidmvomz-pcvb-zmikycqaqbqwv-616[iqvmo]
bqvvu-xqjju-opknwca-550[yzhum]
xgjougizobk-lruckx-gtgreyoy-670[nbfmk]
bxaxipgn-vgpst-uadltg-bpgztixcv-323[gptxa]
vcibutulxiom-jfumncw-alumm-nluchcha-448[ucmla]
irgyyolokj-xghhoz-uvkxgzouty-930[ogyhk]
kyelcrga-aylbw-amyrgle-umpiqfmn-782[almye]
jsvagsulanw-xdgowj-kzahhafy-138[dblcm]
ixccb-fkrfrodwh-uhdftxlvlwlrq-881[mblzw]
chnylhuncihuf-mwupyhayl-bohn-guleyncha-422[hnuyc]
irdgrxzex-treup-tfrkzex-uvgrikdvek-165[sjbnk]
xzwrmkbqtm-akidmvomz-pcvb-zmikycqaqbqwv-434[sanut]
ykhknbqh-zua-iwjwcaiajp-524[kjlio]
jlidywncfy-mwupyhayl-bohn-uwkocmcncih-916[cyhnw]
nuatmlmdpage-omzpk-eqdhuoqe-326[ljtsm]
xmrrq-kusnwfywj-zmfl-suimakalagf-684[afmkl]
foadouwbu-qvcqczohs-rsgwub-116[oubcq]
etyyx-bgnbnkzsd-kzanqzsnqx-391[pnmlv]
pinovwgz-wvnfzo-hvmfzodib-291[ovzfi]
qekrixmg-gsrwyqiv-kvehi-fewoix-ywiv-xiwxmrk-828[iwxek]
jqwpihizlwca-xtiabqk-oziaa-kcabwumz-amzdqkm-928[aizkm]
qekrixmg-jpsaiv-stivexmsrw-672[etmsq]
excdklvo-gokzyxsjon-mrymyvkdo-bomosfsxq-562[okmsx]
qczcftiz-pibbm-aobousasbh-532[zynvo]
wbhsfbohwcboz-suu-gsfjwqsg-506[bdhxv]
lxwbdvna-pajmn-ajkkrc-anlnrerwp-563[anrjk]
lsyrkjkbnyec-pvygob-cobfsmoc-900[uyrgf]
cqwdujys-sxesebqju-ixyffydw-374[nyjvi]
odiih-ouxfna-anlnrerwp-433[naior]
rzvkjiduzy-xviyt-xjvodib-vxlpdndodji-993[aousd]
ltpedcxots-qphzti-rjhidbtg-htgkxrt-453[rjlkn]
krxqjijamxdb-kdwwh-fxatbqxy-823[wctav]
froruixo-edvnhw-vwrudjh-829[rdhou]
jvyyvzpcl-jhukf-aljouvsvnf-201[uwkic]
nij-mywlyn-vumeyn-zchuhwcha-266[hnycm]
ydjuhdqjyedqb-zubboruqd-tufbeocudj-244[vmkln]
qlm-pbzobq-mixpqfz-doxpp-mrozexpfkd-575[zswni]
qvbmzvibqwvit-moo-tijwzibwzg-330[ibvwz]
pbeebfvir-fpniratre-uhag-freivprf-949[gvxlm]
wfummczcyx-jfumncw-alumm-uwkocmcncih-890[vturj]
dwbcjkun-npp-cajrwrwp-355[kstqo]
dpssptjwf-cbtlfu-vtfs-uftujoh-441[ftsuj]
vrurcjah-pajmn-npp-anbnjalq-303[tozvd]
wfruflnsl-ojqqdgjfs-xfqjx-775[fjqls]
pbafhzre-tenqr-qlr-qrirybczrag-897[yszub]
sehheiylu-rkddo-udwyduuhydw-322[qbyad]
upq-tfdsfu-cbtlfu-nbobhfnfou-103[vpxyh]
ajvyjprwp-npp-dbna-cnbcrwp-901[stevo]
bkzrrhehdc-bzmcx-bnzshmf-qdrdzqbg-833[msuya]
amlqskcp-epybc-aylbw-rcaflmjmew-730[arbyn]
wbhsfbohwcboz-dzoghwq-ufogg-gozsg-272[gobhw]
ksodcbwnsr-dfcxsqhwzs-gqojsbusf-vibh-obozmgwg-194[rwimn]
mfklstdw-usfvq-hmjuzskafy-424[ulgym]
wfruflnsl-ojqqdgjfs-qfgtwfytwd-177[xbofz]
sedikcuh-whqtu-isqludwuh-xkdj-jhqydydw-218[dhuqw]
ltpedcxots-raphhxuxts-qphzti-advxhixrh-765[jahpi]
zgmfyxypbmsq-djmucp-rcaflmjmew-548[aeoiv]
qspkfdujmf-ezf-nbobhfnfou-207[lnkrt]
fbebmtkr-zktwx-pxtihgbsxw-ietlmbv-zktll-kxlxtkva-943[hajmb]
apwmeclga-hcjjwzcyl-bctcjmnkclr-548[yxnzl]
rflsjynh-kqtbjw-btwpxmtu-177[tbjwf]
kfg-jvtivk-treup-uvgcfpdvek-373[vkefg]
upq-tfdsfu-kfmmzcfbo-nbobhfnfou-285[vsglz]
chnylhuncihuf-mwupyhayl-bohn-xypyfijgyhn-266[pwahm]
apwmeclga-zyqicr-dglylagle-886[lagce]
jlidywncfy-xsy-qilembij-188[uxjts]
jqwpihizlwca-lgm-lmaqov-954[laimq]
qcffcgwjs-foppwh-gozsg-246[fgcop]
bqxnfdmhb-rbzudmfdq-gtms-cdrhfm-287[dmbfh]
gifavtkzcv-wcfnvi-rthlzjzkzfe-763[tmniq]
uqtqbizg-ozilm-kivlg-kwibqvo-tijwzibwzg-720[qndzg]
sxdobxkdsyxkv-mkxni-bomosfsxq-848[zyubw]
qfmcusbwq-foppwh-kcfygvcd-662[cfpqw]
sehheiylu-fbqijys-whqii-skijecuh-iuhlysu-660[kdjyq]
sedikcuh-whqtu-uww-bqrehqjeho-660[dtawl]
veqtekmrk-wgezirkiv-lyrx-eguymwmxmsr-464[emrkg]
lqwhuqdwlrqdo-exqqb-uhdftxlvlwlrq-231[ydznk]
sno-rdbqds-bzmcx-otqbgzrhmf-183[gomah]
ujqgywfau-jsttal-hmjuzskafy-476[lghae]
yrwxefpi-jpsaiv-gsrxemrqirx-100[yazxo]
udglrdfwlyh-exqqb-sxufkdvlqj-569[dlqfu]
ugjjgkanw-uzgugdslw-esjcwlafy-736[rnxjs]
pdjqhwlf-sodvwlf-judvv-orjlvwlfv-673[vldfj]
xekdwvwnzkqo-fahhuxawj-ajcejaanejc-524[ajewc]
pwcvonofrcig-pibbm-fsqswjwbu-766[myazu]
tcrjjzwzvu-wcfnvi-glityrjzex-893[bkuyx]
lugjuacha-wbiwifuny-omyl-nymncha-448[mosph]
ckgvutofkj-inuiurgzk-jkvgxzsktz-228[kguzi]
ydjuhdqjyedqb-sqdto-ijehqwu-868[ozqsj]
sxdobxkdsyxkv-zvkcdsm-qbkcc-myxdksxwoxd-640[xdksc]
odkasqzuo-dmnnuf-dqmocgueufuaz-482[wfbke]
wpuvcdng-tcddkv-wugt-vguvkpi-414[hayjs]
lqwhuqdwlrqdo-edvnhw-uhfhlylqj-439[bjzye]
wpuvcdng-dwppa-ceswkukvkqp-674[mxnkj]
qzlozfhmf-bkzrrhehdc-okzrshb-fqzrr-zbpthrhshnm-365[hrzbf]
raphhxuxts-rpcsn-rdpixcv-rjhidbtg-htgkxrt-635[yozvr]
tfejldvi-xiruv-gcrjkzt-xirjj-tljkfdvi-jvimztv-321[veyxs]
ryexqpqhteki-sxesebqju-iqbui-868[qebar]
eqpuwogt-itcfg-hnqygt-tgegkxkpi-648[ywzjl]
uzfqdzmfuazmx-pkq-bgdotmeuzs-482[zmudf]
sbnqbhjoh-cbtlfu-bdrvjtjujpo-441[taquv]
gokzyxsjon-bkwzkqsxq-lexxi-bomosfsxq-354[xoskq]
oazegyqd-sdmpq-iqmbazulqp-dmnnuf-geqd-fqefuzs-456[qdefm]
dwbcjkun-ljwmh-lxjcrwp-anbnjalq-875[hoynm]
udskkaxawv-eadalsjq-yjsvw-xdgowj-klgjsyw-216[cnwyi]
surmhfwloh-exqqb-sxufkdvlqj-439[tspmq]
ksodcbwnsr-foppwh-zcuwghwqg-402[vopuk]
zsxyfgqj-hmthtqfyj-fhvznxnynts-697[fhnty]
yflexwxoalrp-yxphbq-bkdfkbbofkd-653[jzvpm]
ltpedcxots-tvv-rdcipxcbtci-557[ctdip]
slqryzjc-djmucp-qyjcq-756[cjqyd]
rgndvtcxr-qphzti-bpcpvtbtci-817[tcpbi]
ftzgxmbv-fbebmtkr-zktwx-vtgwr-vhtmbgz-lmhktzx-371[wzxvl]
htqtwkzq-hfsid-yjhmstqtld-463[rxszy]
rwcnawjcrxwju-yujbcrl-pajbb-mnenuxyvnwc-979[gkutb]
gokzyxsjon-tovvilokx-kmaescsdsyx-562[dwlah]
iutyaskx-mxgjk-lruckx-iayzuskx-ykxboik-826[kxiuy]
vhglnfxk-zktwx-yehpxk-hixktmbhgl-891[diznt]
sedikcuh-whqtu-kdijqrbu-sqdto-seqjydw-iuhlysui-790[lksjh]
jyfvnlupj-zjhclunly-obua-vwlyhapvuz-617[pirsw]
iuruxlar-sgmtkzoi-hgyqkz-zkinturume-670[qatsn]
wkqxodsm-mrymyvkdo-mecdywob-cobfsmo-250[hgarm]
odiih-kjbtnc-nwprwnnarwp-381[qpodn]
kfg-jvtivk-tyftfcrkv-kirzezex-373[srcvd]
gcfcnuls-aluxy-zotts-wuhxs-omyl-nymncha-552[clnsu]
xmtjbzidx-zbb-xpnojhzm-nzmqdxz-421[mnkio]
qjopwxha-acc-iwngapejc-160[jimst]
emixwvqhml-kivlg-kwibqvo-aitma-564[qspyb]
nvrgfezqvu-avccpsvre-cfxzjkztj-529[lmnsh]
emixwvqhml-ktiaaqnqml-xtiabqk-oziaa-ikycqaqbqwv-746[ozadu]
zhdsrqlchg-hjj-orjlvwlfv-751[hjlrv]
cybyjqho-whqtu-uww-qsgkyiyjyed-478[szxuo]
clxalrtyr-nsznzwlep-wzrtdetnd-405[lnrtz]
sgmtkzoi-yigbktmkx-natz-rghuxgzuxe-722[gktxz]
hjgbwuladw-tskcwl-sfsdqkak-502[txdsw]
yrwxefpi-hci-vigimzmrk-646[hdmzy]
hqcfqwydw-hqrryj-jusxdebewo-946[qwdeh]
wsvsdkbi-qbkno-cmkfoxqob-rexd-yzobkdsyxc-276[wptxs]
qfmcusbwq-qvcqczohs-zcuwghwqg-870[mnybx]
clxalrtyr-nsznzwlep-cpdplcns-743[rtycz]
fbebmtkr-zktwx-ktuubm-ybgtgvbgz-553[osmdy]
jvuzbtly-nyhkl-yhtwhnpun-jovjvshal-ylzlhyjo-773[hlyjn]
slqryzjc-aylbw-pcacgtgle-782[nxkri]
tfcfiwlc-wcfnvi-wzeretzex-971[smobe]
jef-iushuj-uww-qsgkyiyjyed-556[xzrwq]
crwwv-yxphbq-xkxivpfp-653[pxvwb]
hqcfqwydw-zubboruqd-husuylydw-244[lqeho]
oxmeeuruqp-qss-eqdhuoqe-534[equos]
qxdwpopgsdjh-rgndvtcxr-gpqqxi-gthtpgrw-687[gpdqr]
mybbycsfo-mrymyvkdo-bocokbmr-692[pymza]
myvybpev-oqq-yzobkdsyxc-250[sxytw]
fnjyxwrinm-kdwwh-uxprbcrlb-329[natqu]
aietsrmdih-nippcfier-gsrxemrqirx-958[iremp]
xmrrq-tmffq-vwhdgqewfl-138[fqmrw]
oqnidbshkd-bzmcx-sdbgmnknfx-599[nzdyx]
eqttqukxg-ecpfa-eqcvkpi-ewuvqogt-ugtxkeg-128[mytkp]
nchhg-ntwemz-amzdqkma-252[kmbop]
bjfutsneji-jll-zxjw-yjxynsl-775[ndbsw]
ktwbhtvmbox-lvtoxgzxk-angm-mxvaghehzr-319[ijqxb]
kyelcrga-afmamjyrc-pcqcypaf-210[acyfm]
myxcewob-qbkno-mkxni-oxqsxoobsxq-484[oxbqk]
esyfwlau-vqw-kzahhafy-788[jikae]
oqnidbshkd-eknvdq-btrsnldq-rdquhbd-391[njzml]
qjopwxha-bhksan-opknwca-888[ahkno]
udskkaxawv-jsttal-vwhdgqewfl-190[hqmnt]
excdklvo-lexxi-crszzsxq-458[uavnl]
frqvxphu-judgh-fdqgb-frdwlqj-wudlqlqj-179[bimaq]
iuruxlar-kmm-ykxboiky-852[tijpz]
tyepcyletzylw-mldvpe-lylwjdtd-509[lydet]
frqvxphu-judgh-gbh-whfkqrorjb-101[mhbes]
xqvwdeoh-edvnhw-zrunvkrs-699[zmudw]
irdgrxzex-treup-fgvirkzfej-893[fbsyn]
cxy-bnlanc-ljwmh-orwjwlrwp-771[ngpmz]
eqpuwogt-itcfg-gii-ucngu-388[hzgae]
ikhcxvmbex-cxeeruxtg-wxlbzg-553[mvnfs]
mrxivrexmsrep-fyrrc-asvowlst-854[codsq]
npmhcargjc-aylbw-qcptgacq-366[ditsg]
ftzgxmbv-ietlmbv-zktll-phkdlahi-241[ltbhi]
hqcfqwydw-tou-bewyijysi-270[hnvux]
emixwvqhml-kivlg-abwziom-590[imlvw]
pejji-nio-mecdywob-cobfsmo-926[wrjmp]
bknsykmdsfo-oqq-dbksxsxq-640[naysz]
gifavtkzcv-vxx-tfekrzedvek-789[cnwtp]
kmjezxodgz-diozmivodjivg-agjrzm-xjiovdihzio-915[yqktj]
shoewudys-vbemuh-qsgkyiyjyed-946[nqsjd]
htqtwkzq-ojqqdgjfs-rfwpjynsl-749[hryqo]
rmn-qcapcr-zyqicr-pcacgtgle-340[znstw]
bnqqnrhud-bzmcx-bnmszhmldms-729[yfetv]
surmhfwloh-gbh-rshudwlrqv-725[dsaym]
jchipqat-tvv-itrwcdadvn-505[povhu]
zgmfyxypbmsq-njyqrga-epyqq-rcaflmjmew-340[mqyae]
froruixo-exqqb-pdunhwlqj-283[nmuqd]
lnkfaypeha-xwogap-odellejc-784[ytrsz]
jlidywncfy-xsy-fuvilunils-864[ilyfn]
joufsobujpobm-dipdpmbuf-sftfbsdi-545[rwjnm]
tvsnigxmpi-gerhc-gsexmrk-eguymwmxmsr-932[pivem]
tfejldvi-xiruv-srjbvk-ivjvrity-815[vijrt]
zuv-ykixkz-yigbktmkx-natz-zkinturume-410[kzitu]
enzcntvat-pubpbyngr-qrcyblzrag-117[oywbs]
wsvsdkbi-qbkno-lkcuod-nofovyzwoxd-744[xnuqc]
wbhsfbohwcboz-foppwh-aobousasbh-246[nfsml]
uiovmbqk-jcvvg-abwziom-720[nbqaz]
etaqigpke-fag-fgrnqaogpv-674[gaefp]
ejpanjwpekjwh-nwxxep-hkceopeyo-238[bmscu]
qjopwxha-bhksan-wjwhuoeo-940[xenwh]
etyyx-bzmcx-bnzshmf-qdzbpthrhshnm-729[hbmzn]
uqtqbizg-ozilm-lgm-abwziom-356[tspmz]
excdklvo-mybbycsfo-tovvilokx-psxkxmsxq-874[axwon]
mvydjvxodqz-xviyt-xjvodib-pnzm-oznodib-187[nflym]
ixccb-zhdsrqlchg-edvnhw-xvhu-whvwlqj-465[hcvwd]
qspkfdujmf-votubcmf-tdbwfohfs-ivou-bdrvjtjujpo-181[esuzg]
fkqbokxqflkxi-qlm-pbzobq-bdd-jxohbqfkd-601[dcgym]
mtzslklcozfd-prr-nfdezxpc-dpcgtnp-301[tmnrk]
xekdwvwnzkqo-lhwopey-cnwoo-wymqeoepekj-290[rzsnk]
fubrjhqlf-sodvwlf-judvv-pdqdjhphqw-725[dfhjq]
shoewudys-zubboruqd-skijecuh-iuhlysu-608[ushbd]
zlkprjbo-doxab-zxkav-rpbo-qbpqfkd-679[bkopa]
nzcczdtgp-mldvpe-opawzjxpye-587[tkbms]
apuut-nxvqzibzm-cpio-yzkvmohzio-655[rsozd]
rgllk-ngzzk-ymdwqfuzs-300[yhzxu]
cvabijtm-jcvvg-uiviomumvb-538[ixajz]
oazegyqd-sdmpq-otaoaxmfq-pqbmdfyqzf-248[qadfm]
rtqlgevkng-fag-nqikuvkeu-960[nqdom]
bnknqetk-cxd-cdrhfm-183[mfpwa]
ohmnuvfy-wuhxs-wiuncha-lyuwkocmcncih-552[chunw]
hqtyeqsjylu-jef-iushuj-tou-fkhsxqiydw-296[isfmy]
kwtwznct-kwvacumz-ozilm-jiasmb-uiviomumvb-746[qmjyz]
qfmcusbwq-foppwh-twbobqwbu-298[bwqfo]
ykhknbqh-xqjju-owhao-472[hjtck]
dszphfojd-tdbwfohfs-ivou-mbcpsbupsz-103[sbdfo]
lahxpnwrl-ljwmh-nwprwnnarwp-641[srtpm]
ckgvutofkj-lruckx-jkvruesktz-878[zjlyk]
dyz-combod-zvkcdsm-qbkcc-nocsqx-926[yvute]
ktwbhtvmbox-wrx-nlxk-mxlmbgz-345[lsuwt]
nwilwcejc-nwxxep-zalhkuiajp-186[bznxr]
uzfqdzmfuazmx-otaoaxmfq-bgdotmeuzs-846[mzafo]
oxmeeuruqp-omzpk-oamfuzs-oazfmuzyqzf-352[ypdzg]
zhdsrqlchg-fdqgb-ghsduwphqw-361[hdgqs]
nchhg-jiasmb-amzdqkma-278[qklti]
tfiifjzmv-upv-wzeretzex-295[itvos]
eqttqukxg-ecpfa-ujkrrkpi-830[kepqr]
clotzlnetgp-mldvpe-nzyeltyxpye-145[xfpsy]
mbiyqoxsm-myvybpev-mkxni-mykdsxq-yzobkdsyxc-900[ymxbk]
plolwdub-judgh-vfdyhqjhu-kxqw-vhuylfhv-621[zqwmy]
atyzghrk-vxupkizork-jek-giwaoyozout-228[abrmv]
zotts-xsy-mufym-162[mstyf]
vhehkyne-ktuubm-mktbgbgz-293[qmytr]
kwvacumz-ozilm-zijjqb-ivitgaqa-616[fkoxt]
yaxsnlcrun-ajvyjprwp-snuuhknjw-anlnrerwp-771[zpyld]
raphhxuxts-bpvctixr-eaphixr-vgphh-bpcpvtbtci-115[phtxb]
nuatmlmdpage-odkasqzuo-qss-dqmocgueufuaz-768[umnqw]
yknnkoera-lhwopey-cnwoo-nawymqeoepekj-680[eonkw]
pybgmyargtc-aylbw-qyjcq-886[buzfp]
gzefmnxq-ngzzk-iadwetab-638[zaegn]
sbnqbhjoh-kfmmzcfbo-usbjojoh-129[acdkb]
lxaaxbren-lujbbrornm-ljwmh-lxjcrwp-mnyjacvnwc-355[yzsuk]
nchhg-lgm-nqvivkqvo-200[dystz]
plolwdub-judgh-udeelw-rshudwlrqv-335[sihdt]
wlsiayhcw-vumeyn-lymyulwb-292[zbrux]
ytu-xjhwjy-hfsid-htfynsl-qtlnxynhx-411[adxmu]
wkqxodsm-tovvilokx-ckvoc-822[uhgov]
chnylhuncihuf-vumeyn-nluchcha-500[rcbmn]
tfiifjzmv-lejkrscv-tyftfcrkv-jyzggzex-243[fjtvz]
eqpuwogt-itcfg-tcddkv-tgugctej-310[pyemh]
iuruxlar-xgsvgmotm-pkrrehkgt-xkykgxin-956[btwqp]
shoewudys-sxesebqju-qdqboiyi-894[seqbd]
zlkprjbo-doxab-gbiivybxk-pxibp-861[azyjx]
ckgvutofkj-inuiurgzk-lotgtiotm-982[qszly]
thnulapj-jshzzpmplk-jhukf-vwlyhapvuz-747[hpjlu]
pybgmyargtc-hcjjwzcyl-qcptgacq-782[bxsuc]
xgsvgmotm-vrgyzoi-mxgyy-iutzgotsktz-150[gtmoy]
laffe-yigbktmkx-natz-jkyomt-696[ktafm]
zvyvgnel-tenqr-pubpbyngr-znexrgvat-507[wfjhu]
pelbtravp-pnaql-znantrzrag-403[cbyja]
jqwpihizlwca-akidmvomz-pcvb-apqxxqvo-850[oxymv]
cvabijtm-ntwemz-twoqabqka-954[atbmq]
zixppfcfba-avb-zlkqxfkjbkq-809[zlmjc]
sebehvkb-zubboruqd-tufqhjcudj-556[budeh]
lqwhuqdwlrqdo-fdqgb-ghvljq-621[qdlgh]
qlm-pbzobq-crwwv-zxkav-zlxqfkd-rpbo-qbpqfkd-731[ciyxw]
pwcvonofrcig-gqojsbusf-vibh-qighcasf-gsfjwqs-740[csebm]
mvydjvxodqz-kmjezxodgz-kgvnodx-bmvnn-yzqzgjkhzio-239[zdovg]
kzgwomvqk-xtiabqk-oziaa-tijwzibwzg-564[menyj]
ksodcbwnsr-xszzmpsob-kcfygvcd-454[mbaod]
ejpanjwpekjwh-xwogap-hwxknwpknu-472[wpjkn]
mvydjvxodqz-hvbizodx-wpiit-hvivbzhzio-967[ivzdh]
mvydjvxodqz-mvwwdo-nzmqdxzn-681[jryzk]
enqvbnpgvir-rtt-freivprf-871[lgqrc]
hvbizodx-wpiit-kpmxcvndib-291[dyjmn]
molgbzqfib-mixpqfz-doxpp-xkxivpfp-965[pxfib]
fbebmtkr-zktwx-cxeeruxtg-nlxk-mxlmbgz-137[dckut]
luxciuwncpy-luvvcn-mbcjjcha-500[qsvzt]
apwmeclga-hcjjwzcyl-qyjcq-704[cjalq]
wpuvcdng-eqttqukxg-uecxgpigt-jwpv-cpcnauku-830[ucgpt]
iehepwnu-cnwza-fahhuxawj-pnwejejc-940[ewahj]
pbybeshy-pbeebfvir-pnaql-pbngvat-freivprf-715[uyzwp]
htsxzrjw-lwfij-ojqqdgjfs-zxjw-yjxynsl-957[iyonc]
sxdobxkdsyxkv-wsvsdkbi-qbkno-zvkcdsm-qbkcc-bomosfsxq-536[mbyan]
fruurvlyh-fkrfrodwh-uhdftxlvlwlrq-335[rflhu]
froruixo-hjj-orjlvwlfv-387[uyawn]
myvybpev-lexxi-vklybkdybi-978[ybvei]
chnylhuncihuf-vohhs-xymcah-240[yxnmh]
tagzsrsjvgmk-vqw-vwhsjlewfl-606[svwgj]
zbytomdsvo-lexxi-domrxyvyqi-250[oxydi]
qfkkj-clmmte-opgpwzaxpye-821[pekma]
lgh-kwujwl-udskkaxawv-jsttal-hmjuzskafy-320[axyrm]
irdgrxzex-nvrgfezqvu-avccpsvre-cfxzjkztj-191[sclzh]
mhi-lxvkxm-xzz-etuhktmhkr-319[rcomn]
lhkhszqx-fqzcd-dff-sdbgmnknfx-391[ugevx]
apwmeclga-aylbw-ylyjwqgq-314[izfye]
yflexwxoalrp-zlkprjbo-doxab-ciltbo-qbzeklildv-341[byclp]
cvabijtm-kwzzwaqdm-ntwemz-abwziom-252[rdmvn]
qfkkj-upwwjmply-epnsyzwzrj-899[okhgz]
jxdkbqfz-avb-zlkqxfkjbkq-861[wptxb]
gpsxdprixkt-qphzti-hwxeexcv-947[krgwe]
nij-mywlyn-wuhxs-wiuncha-lymyulwb-968[wylnu]
sbnqbhjoh-kfmmzcfbo-ufdiopmphz-987[bfhmo]
guahyncw-jfumncw-alumm-xyjfisgyhn-500[htamn]
ytu-xjhwjy-jll-ijxnls-879[duthg]
lgh-kwujwl-usfvq-ugslafy-esfsywewfl-944[ilszy]
tvsnigxmpi-tpewxmg-kveww-xiglrspskc-152[gipsw]
joufsobujpobm-cbtlfu-dvtupnfs-tfswjdf-129[fubjo]
rwcnawjcrxwju-bljenwpna-qdwc-mnyuxhvnwc-225[wncja]
qzchnzbshud-okzrshb-fqzrr-rzkdr-989[rzhbd]
qzoggwtwsr-pogysh-rsjszcdasbh-896[sghor]
gzefmnxq-dmnnuf-xmnadmfadk-326[tvuiw]
qzoggwtwsr-pibbm-zopcfohcfm-792[jsmfu]
mvydjvxodqz-xviyt-xjvodib-hvivbzhzio-369[iceny]
wkqxodsm-lkcuod-cdybkqo-224[dkocq]
veqtekmrk-ikk-wxsveki-542[keivm]
zlkprjbo-doxab-yxphbq-pqloxdb-419[ckdtm]
buzahisl-ibuuf-klzpnu-721[stjnm]
hwdtljsnh-kqtbjw-ijajqturjsy-515[plnqy]
luxciuwncpy-jfumncw-alumm-lyuwkocmcncih-474[lqpco]
tinnm-ibghopzs-rms-aobousasbh-506[sboah]
pbeebfvir-rtt-ratvarrevat-403[tdokj]
dmybmsuzs-pkq-efadmsq-300[msdqa]
ujqgywfau-tmffq-dgyaklauk-970[yxmid]
ovbunmneqbhf-enoovg-hfre-grfgvat-481[efgno]
hqfxxnknji-kzeed-uqfxynh-lwfxx-wjhjnansl-957[nxfhj]
plolwdub-judgh-edvnhw-pdqdjhphqw-985[dsxhg]
nwlddtqtpo-awldetn-rcldd-nfdezxpc-dpcgtnp-353[dnptc]
bwx-amkzmb-xzwrmkbqtm-ntwemz-amzdqkma-668[swmnl]
bqxnfdmhb-qzaahs-rdquhbdr-443[bdhqa]
egdytrixat-ide-htrgti-uadltg-steadnbtci-297[zampy]
gsrwyqiv-kvehi-gerhc-gsexmrk-erepcwmw-880[bkwts]
nsyjwsfyntsfq-gfxpjy-jslnsjjwnsl-749[lvzus]
dfcxsqhwzs-pibbm-gvwddwbu-246[dqbem]
mtzslklcozfd-ojp-fdpc-epdetyr-613[dpcef]
gbc-frperg-ohaal-erfrnepu-351[reafg]
gvaaz-cbtlfu-efqbsunfou-311[dvnmz]
ugdgjxmd-tskcwl-umklgewj-kwjnauw-892[wgjku]
iruzfrtkzmv-avccpsvre-nfibjyfg-243[jzoyc]
shoewudys-hqrryj-bqrehqjeho-296[heqrj]
hwdtljsnh-kqtbjw-htsyfnsrjsy-827[dntpc]
zilqwikbqdm-kivlg-uiviomumvb-902[imvbk]
rsvxltspi-sfnigx-wxsveki-984[sixve]
surmhfwloh-gbh-xvhu-whvwlqj-387[hwluv]
ubhatstkwhnl-yehpxk-wxlbzg-137[raqjb]
oknkvcta-itcfg-uecxgpigt-jwpv-ocpcigogpv-596[cgpio]
amjmpdsj-djmucp-nspafyqgle-470[ztpqn]
zixppfcfba-avb-abpfdk-471[abfpc]
owshgfarwv-jsttal-vwkayf-944[smcyx]
vjpwncrl-ljwmh-lxjcrwp-lxwcjrwvnwc-589[irbxq]
qvbmzvibqwvit-ziuxioqvo-lgm-amzdqkma-928[hgfln]
lxuxaodu-kjbtnc-jwjuhbrb-147[bjuxa]
etaqigpke-fag-yqtmujqr-440[qaegt]
zekvierkzferc-irdgrxzex-jtrmvexvi-ylek-rthlzjzkzfe-633[gkyzp]
mfklstdw-hdsklau-yjskk-kwjnauwk-762[vnfzg]
pkl-oaynap-fahhuxawj-oanreyao-706[mdfpn]
hwdtljsnh-hmthtqfyj-rfsfljrjsy-359[sxziu]
fab-eqodqf-ngzzk-bgdotmeuzs-144[kxags]
tagzsrsjvgmk-tskcwl-vwhsjlewfl-424[ejuah]
kzgwomvqk-jiasmb-uizsmbqvo-590[mbiko]
qjopwxha-xqjju-oanreyao-758[ubmon]
hvbizodx-xmtjbzidx-nxvqzibzm-cpio-yzkgjthzio-889[rmyqo]
iuruxlar-kmm-jkvruesktz-644[kruma]
ujqgywfau-jsttal-vwhdgqewfl-710[hbdlx]
jlidywncfy-wuhxs-wiuncha-yhachyylcha-630[hycaw]
lugjuacha-wlsiayhcw-dyffsvyuh-uhufsmcm-890[juefh]
hjgbwuladw-xdgowj-hmjuzskafy-398[wqigl]
yuxufmdk-sdmpq-pkq-etubbuzs-456[wldkg]
vcibutulxiom-dyffsvyuh-qilembij-110[jdnmz]
nzwzcqfw-clmmte-dpcgtnpd-509[cdmnp]
aczupnetwp-nlyoj-nzletyr-zapcletzyd-665[zelnp]
htsxzrjw-lwfij-wfintfhynaj-kqtbjw-knsfshnsl-983[kytzm]
enqvbnpgvir-onfxrg-qrirybczrag-611[rgnbi]
molgbzqfib-ciltbo-xkxivpfp-159[biflo]
plolwdub-judgh-fkrfrodwh-ghyhorsphqw-517[hdorw]
gzefmnxq-omzpk-oazfmuzyqzf-872[zkycu]
qjopwxha-lhwopey-cnwoo-naoawnyd-186[cvyno]
jyfvnlupj-ipvohghykvbz-jovjvshal-ylzlhyjo-435[xlenk]
ajmrxjlcren-kjbtnc-jwjuhbrb-329[klcuz]
wdjcvuvmyjpn-ezggtwzvi-jkzmvodjin-603[gmveh]
muqfedyput-fbqijys-whqii-bqrehqjeho-192[vdlge]
ktfitzbgz-xzz-ftgtzxfxgm-605[izfql]
bknsykmdsfo-oqq-wkbuodsxq-458[stifb]
slqryzjc-hcjjwzcyl-yaosgqgrgml-314[qymir]
gpewwmjmih-veffmx-xvemrmrk-126[itcvu]
rdadguja-gpqqxi-ldgzhwde-297[hnvso]
lxaaxbren-mhn-cnlqwxuxph-251[xvjuz]
xst-wigvix-fewoix-gsrxemrqirx-698[xireg]
iehepwnu-cnwza-zua-wymqeoepekj-108[sdnmj]
oknkvcta-itcfg-rncuvke-itcuu-hkpcpekpi-908[pgfbe]
enqvbnpgvir-ohaal-hfre-grfgvat-351[hsgdf]
ixccb-iorzhu-hqjlqhhulqj-647[hqcij]
apuut-agjrzm-jkzmvodjin-915[jamuz]
hqcfqwydw-rqiauj-ijehqwu-530[qwhij]
vhehkyne-ktwbhtvmbox-lvtoxgzxk-angm-kxvxbobgz-683[tsurp]
gntmfefwitzx-idj-knsfshnsl-723[fnsit]
ajvyjprwp-bljenwpna-qdwc-ujkxajcxah-563[yskxv]
joufsobujpobm-dboez-dpbujoh-mbcpsbupsz-259[bopuj]
xlrypetn-prr-nzyeltyxpye-847[yeprl]
zuv-ykixkz-xgsvgmotm-lruckx-jkvgxzsktz-696[ijlfz]
jqwpihizlwca-moo-lmxtwgumvb-798[nkzsr]
jsvagsulanw-kusnwfywj-zmfl-klgjsyw-736[ectrq]
ykhknbqh-nwxxep-nawymqeoepekj-758[cfvdy]
kzeed-gfxpjy-tujwfyntsx-385[aunmy]
slqryzjc-qaytclecp-fslr-dglylagle-184[lcyae]
laffe-vrgyzoi-mxgyy-iutzgotsktz-410[gtyzf]
gpbepvxcv-hrpktcvtg-wjci-stktadebtci-141[zoqhx]
yaxsnlcrun-lqxlxujcn-mnyuxhvnwc-641[nxclu]
tagzsrsjvgmk-kusnwfywj-zmfl-dstgjslgjq-294[gayon]
kwzzwaqdm-zijjqb-xczkpiaqvo-902[mkgjt]
mfklstdw-usfvq-ugslafy-xafsfuafy-684[fsaul]
zvyvgnel-tenqr-ovbunmneqbhf-sybjre-fgbentr-117[shfce]
emixwvqhml-akidmvomz-pcvb-amzdqkma-720[relbk]
rdggdhxkt-eaphixr-vgphh-hwxeexcv-973[xozyv]
bqvvu-zua-iwngapejc-992[nmdax]
bjfutsneji-kqtbjw-wjxjfwhm-203[irjmx]
bdavqofuxq-nmewqf-abqdmfuaze-976[vgzhc]
vdzonmhydc-okzrshb-fqzrr-rzkdr-313[rzdhk]
sawlkjevaz-oywrajcan-dqjp-wjwhuoeo-836[ajwoe]
fruurvlyh-gbh-sxufkdvlqj-413[kftmo]
fruurvlyh-sodvwlf-judvv-ghsorbphqw-569[tadzk]
sbejpbdujwf-tdbwfohfs-ivou-dpoubjonfou-103[rbqio]
oxmeeuruqp-otaoaxmfq-xasuefuoe-222[ozipy]
rdggdhxkt-qphzti-ejgrwphxcv-921[tusrb]
dkqjcbctfqwu-fag-yqtmujqr-882[kzvuf]
gzefmnxq-dmnnuf-mzmxkeue-248[menfu]
kgjgrypw-epybc-aylbw-kylyeckclr-314[mlvhs]
bwx-amkzmb-akidmvomz-pcvb-abwziom-148[nmtyw]
ckgvutofkj-sorozgxe-mxgjk-xghhoz-xkykgxin-670[gkxoh]
zhdsrqlchg-fkrfrodwh-ghsorbphqw-803[cjybd]
hvbizodx-wvnfzo-adivixdib-603[xwstz]
tvsnigxmpi-gerhc-hitpscqirx-204[icghp]
jrncbavmrq-cynfgvp-tenff-npdhvfvgvba-741[ybszn]
mbiyqoxsm-pvygob-psxkxmsxq-952[mjfnc]
gsrwyqiv-kvehi-veffmx-gywxsqiv-wivzmgi-282[bdrgj]
clxalrtyr-xtwtelcj-rclop-awldetn-rcldd-cpdplcns-847[lcdrt]
ahngzyzqcntr-bzmcx-sdbgmnknfx-287[fmyqt]
zgmfyxypbmsq-aylbw-amyrgle-bctcjmnkclr-340[mybcl]
fydelmwp-prr-nzyeltyxpye-717[gfjxa]
rnqnyfwd-lwfij-rflsjynh-wfggny-xfqjx-931[fnjwy]
zilqwikbqdm-xtiabqk-oziaa-twoqabqka-278[ftonr]
bjfutsneji-gzssd-uzwhmfxnsl-827[sfjnu]
ojk-nzxmzo-pinovwgz-agjrzm-jkzmvodjin-733[zjomn]
ygcrqpkbgf-dcumgv-fgukip-570[vmhxn]
dzczkrip-xiruv-srjbvk-jyzggzex-945[uzneh]
bkzrrhehdc-bzmcx-lzmzfdldms-287[eclvd]
ziuxioqvo-kpwkwtibm-lmxizbumvb-564[txsru]
kzgwomvqk-lgm-lmxizbumvb-122[mbgkl]
htsxzrjw-lwfij-idj-xjwanhjx-463[obdze]
gntmfefwitzx-kqtbjw-wjxjfwhm-749[qzutv]
htsxzrjw-lwfij-jll-tujwfyntsx-671[xugan]
ymszqfuo-rxaiqd-etubbuzs-118[ubqsz]
vdzonmhydc-azrjds-lzqjdshmf-989[dzhjm]
dyz-combod-bkllsd-oxqsxoobsxq-354[nrmkx]
pyknyegle-afmamjyrc-yaosgqgrgml-626[zdlfg]
oxmeeuruqp-vqxxknqmz-oazfmuzyqzf-352[rnsyt]
qjopwxha-xqjju-pnwejejc-654[jepqw]
wifilzof-jfumncw-alumm-xypyfijgyhn-604[fjerw]
vagreangvbany-enoovg-fuvccvat-533[gncot]
avw-zljyla-zjhclunly-obua-thuhnltlua-669[wathd]
ynssr-lvtoxgzxk-angm-mxvaghehzr-345[vopnm]
cvabijtm-uqtqbizg-ozilm-xtiabqk-oziaa-lmdmtwxumvb-928[imabt]
frqvxphu-judgh-sodvwlf-judvv-pdqdjhphqw-751[azovy]
qmpmxevc-kvehi-jyddc-fyrrc-qerekiqirx-282[ygmhv]
fodvvlilhg-udeelw-pdunhwlqj-153[sndmo]
gpsxdprixkt-ytaanqtpc-gthtpgrw-765[tpgar]
cvabijtm-kpwkwtibm-bmkpvwtwog-174[wbkmt]
vetllbybxw-yehpxk-wxlbzg-891[yekxl]
nzwzcqfw-nlyoj-dezclrp-275[zclnw]
qmpmxevc-kvehi-glsgspexi-gsrxemrqirx-828[exgim]
xtwtelcj-rclop-dnlgpyrpc-sfye-hzcvdsza-873[xmpon]
jrncbavmrq-pnaql-jbexfubc-793[bacjn]
ohmnuvfy-yaa-lymyulwb-266[yalmu]
nzwzcqfw-aczupnetwp-awldetn-rcldd-pyrtyppctyr-613[pctwd]
vqr-ugetgv-uecxgpigt-jwpv-rwtejcukpi-752[geptu]
tfcfiwlc-lejkrscv-upv-rthlzjzkzfe-607[tcfns]
hwdtljsnh-uqfxynh-lwfxx-knsfshnsl-229[xtngb]
iuruxlar-igtje-iayzuskx-ykxboik-930[kmghr]
xjgjmapg-ezggtwzvi-hvivbzhzio-421[gzivh]
gpbepvxcv-hrpktcvtg-wjci-hwxeexcv-349[xswrp]
tcorcikpi-eqttqukxg-gii-hkpcpekpi-622[ruxyk]
ygcrqpkbgf-ejqeqncvg-ucngu-440[gcqen]
etyyx-dff-qdbdhuhmf-729[wskto]
tfiifjzmv-upv-vexzevvizex-399[veizf]
houngfgxjuay-sorozgxe-mxgjk-jek-aykx-zkyzotm-566[aimhd]
hcd-gsqfsh-dzoghwq-ufogg-aobousasbh-714[ynfie]
foadouwbu-qobrm-qcohwbu-zopcfohcfm-792[obcfu]
ynukcajey-oywrajcan-dqjp-wjwhuoeo-680[jaowy]
rflsjynh-jll-rfsfljrjsy-489[jlfrs]
vkrhzxgbv-pxtihgbsxw-yehpxk-mktbgbgz-917[igtvy]
hjgbwuladw-tskcwl-dgyaklauk-294[aklwd]
cvabijtm-jcvvg-zmikycqaqbqwv-772[vcqab]
odiih-yujbcrl-pajbb-vjwjpnvnwc-849[jbcin]
tinnm-tzcksf-igsf-hsghwbu-220[bnamt]
pbeebfvir-wryylorna-jbexfubc-637[egouk]
xmtjbzidx-xviyt-yzqzgjkhzio-265[vxsry]
avw-zljyla-zjhclunly-obua-klwhyatlua-201[sjayl]
dfcxsqhwzs-qvcqczohs-fsgsofqv-246[dosrp]
rzvkjiduzy-xviyt-xjvodib-kpmxcvndib-291[cwzla]
gcfcnuls-aluxy-mwupyhayl-bohn-wihnuchgyhn-968[hnuyc]
dyz-combod-lsyrkjkbnyec-bkllsd-domrxyvyqi-328[vtxzd]
fruurvlyh-mhoobehdq-dftxlvlwlrq-907[jlves]
mrxivrexmsrep-gerhc-gsexmrk-tyvglewmrk-152[wzuly]
votubcmf-gmpxfs-pqfsbujpot-883[fpbmo]
bljenwpna-qdwc-anbnjalq-329[lcwmy]
xekdwvwnzkqo-ydkykhwpa-wjwhuoeo-550[toavy]
yhkpvhjapcl-yhiipa-jbzavtly-zlycpjl-201[lpyah]
xjinphzm-bmvyz-wvnfzo-nzmqdxzn-681[ykfxe]
pbeebfvir-rtt-ybtvfgvpf-507[bftve]
gvcskirmg-ikk-hizipstqirx-750[iyquj]
yhwooebeaz-lhwopey-cnwoo-oanreyao-108[tmuag]
wlqqp-jtrmvexvi-ylek-nfibjyfg-581[tnrhf]
tfiifjzmv-avccpsvre-jyzggzex-477[mvnjr]
xjmmjndqz-zbb-yzndbi-811[bzdjm]
qjopwxha-xwogap-nayaerejc-160[isjqz]
qzlozfhmf-azrjds-knfhrshbr-573[dfmys]
vhglnfxk-zktwx-vetllbybxw-vtgwr-vhtmbgz-ybgtgvbgz-761[gbtvl]
etaqigpke-ecpfa-eqcvkpi-cpcnauku-336[eyxtb]
lqwhuqdwlrqdo-fdqgb-frdwlqj-zrunvkrs-933[tvijl]
gvcskirmg-tvsnigxmpi-gerhc-gsexmrk-wlmttmrk-828[szawg]
irdgrxzex-kfg-jvtivk-wcfnvi-jyzggzex-269[givxz]
cqwdujys-sqdto-iqbui-270[siyeh]
bnqqnrhud-bgnbnkzsd-trdq-sdrshmf-807[dnbqr]
rgndvtcxr-hrpktcvtg-wjci-prfjxhxixdc-193[yjsht]
qekrixmg-hci-xvemrmrk-282[mreik]
xcitgcpixdcpa-snt-apqdgpidgn-349[mfywv]
wkqxodsm-pvygob-wkbuodsxq-978[ysamp]
aoubshwq-qvcqczohs-kcfygvcd-558[ytvls]
tyepcyletzylw-qwzhpc-opalcexpye-301[gamdn]
tfcfiwlc-treup-uvjzxe-607[nrthm]
ubhatstkwhnl-lvtoxgzxk-angm-inkvatlbgz-865[tagkl]
wihmogyl-aluxy-yaa-qilembij-890[emvct]
bxaxipgn-vgpst-ltpedcxots-gpqqxi-hidgpvt-245[pgtxi]
jfifqxov-doxab-mixpqfz-doxpp-obpbxoze-107[ghpyi]
gvaaz-dpssptjwf-sbccju-fohjoffsjoh-675[pfzwa]
gzefmnxq-eomhqzsqd-tgzf-efadmsq-378[qefmz]
emixwvqhml-kivlg-zmkmqdqvo-876[dcfin]
fodvvlilhg-fdqgb-frqwdlqphqw-725[qdflg]
laffe-pkrrehkgt-rumoyzoiy-670[dyjut]
egdytrixat-qphzti-tcvxcttgxcv-245[tcxgi]
htqtwkzq-wfintfhynaj-xhfajsljw-mzsy-jslnsjjwnsl-645[eynzi]
vrurcjah-pajmn-npp-mnyuxhvnwc-563[npach]
ejpanjwpekjwh-acc-klanwpekjo-576[jaekp]
kwvacumz-ozilm-kpwkwtibm-uizsmbqvo-876[mikwz]
hjgbwuladw-xdgowj-esfsywewfl-866[byzdm]
pbybeshy-wryylorna-npdhvfvgvba-351[stmxy]
qjopwxha-ywjzu-hkceopeyo-654[tysoa]
lhkhszqx-fqzcd-dff-vnqjrgno-417[fqdhn]
rgllk-otaoaxmfq-fdmuzuzs-768[vkqac]
ohmnuvfy-xsy-omyl-nymncha-214[hmtfs]
enzcntvat-cynfgvp-tenff-nanylfvf-455[cuimh]
sedikcuh-whqtu-sehheiylu-tou-bqrehqjeho-868[ydaux]
tyepcyletzylw-ojp-opalcexpye-145[wciks]
udpsdjlqj-hjj-frqwdlqphqw-309[gbpcz]
eqpuwogt-itcfg-lgnnadgcp-vtckpkpi-388[gpcti]
rkpqxyib-pzxsbkdbo-erkq-zrpqljbo-pbosfzb-133[bpkoq]
kdijqrbu-sxesebqju-tufqhjcudj-114[tdbva]
gsvvswmzi-wgezirkiv-lyrx-irkmriivmrk-412[twsrk]
ucynmlgxcb-qaytclecp-fslr-amlryglkclr-704[lcrya]
xst-wigvix-veffmx-wxsveki-100[ocvmr]
surmhfwloh-vfdyhqjhu-kxqw-frqwdlqphqw-829[hqwfd]
xmrrq-usfvq-esfsywewfl-528[alidm]
zhdsrqlchg-lqwhuqdwlrqdo-sodvwlf-judvv-ghsorbphqw-777[rtnmj]
egdytrixat-xcitgcpixdcpa-rwdrdapit-uxcpcrxcv-245[cdabn]
yrwxefpi-ikk-gywxsqiv-wivzmgi-152[iwgkv]
qcffcgwjs-foppwh-obozmgwg-558[zotsu]
veqtekmrk-gerhc-gsexmrk-hitpscqirx-568[nczdq]
gzefmnxq-pkq-pqbmdfyqzf-794[jxrmh]
eadalsjq-yjsvw-usfvq-ugslafy-ugflsafewfl-632[fsalu]
esyfwlau-usfvq-ugslafy-vwhdgqewfl-684[flsuw]
ktfitzbgz-fbebmtkr-zktwx-utldxm-wxlbzg-683[afwhg]
wihmogyl-aluxy-vohhs-uwkocmcncih-292[wzryd]
bkzrrhehdc-idkkxadzm-lzmzfdldms-677[oxwvn]
clxalrtyr-qwzhpc-lnbftdtetzy-249[zryvn]
rgllk-fab-eqodqf-vqxxknqmz-pqbxakyqzf-222[qfkxa]
xjinphzm-bmvyz-xviyt-mzxzdqdib-603[xnhfs]
htsxzrjw-lwfij-hmthtqfyj-wjfhvznxnynts-385[zreuy]
myvybpev-gokzyxsjon-oqq-nozvyiwoxd-692[iyzuj]
hcd-gsqfsh-pogysh-gvwddwbu-480[mysuk]
hcd-gsqfsh-foppwh-rsgwub-428[kvtfs]
frqvxphu-judgh-exqqb-uhvhdufk-621[wtgmn]
vhglnfxk-zktwx-vahvhetmx-vhgmtbgfxgm-345[hnamj]
tagzsrsjvgmk-usfvq-ugslafy-ugflsafewfl-892[yckbv]
joufsobujpobm-gmpxfs-vtfs-uftujoh-233[foujs]
zsxyfgqj-ojqqdgjfs-zxjw-yjxynsl-593[jqsxy]
bnknqetk-atmmx-qdzbpthrhshnm-131[ecnmt]
hmsdqmzshnmzk-dff-sqzhmhmf-859[dnxcz]
hqtyeqsjylu-tou-udwyduuhydw-348[uydhq]
ktiaaqnqml-kpwkwtibm-zmikycqaqbqwv-772[tlrsg]
nzydfxpc-rclop-mtzslklcozfd-mfyyj-nfdezxpc-dpcgtnp-951[cpdfz]
ckgvutofkj-hatte-gtgreyoy-644[tgeko]
iwcjapey-zua-paydjkhkcu-628[hntmg]
bnknqetk-okzrshb-fqzrr-trdq-sdrshmf-729[tuzoy]
qmpmxevc-kvehi-yrwxefpi-glsgspexi-wlmttmrk-828[hsyvf]
amjmpdsj-njyqrga-epyqq-qcptgacq-106[bhysd]
dwbcjkun-ljwmh-mnyuxhvnwc-641[wuyrz]
gspsvjyp-jpsaiv-hiwmkr-854[zthel]
gsrwyqiv-kvehi-gerhc-stivexmsrw-750[whgse]
xjgjmapg-wpiit-ozxcijgjbt-889[ytsop]
xgjougizobk-kmm-rghuxgzuxe-280[cwrty]
zovldbkfz-oxjmxdfkd-oxyyfq-ixyloxqlov-653[snkwb]
qczcftiz-qvcqczohs-gsfjwqsg-142[cqszf]
krxqjijamxdb-mhn-ldbcxvna-bnaerln-771[ravbt]
pybgmyargtc-bwc-bcqgel-860[bcgya]
wyvqljapsl-jovjvshal-shivyhavyf-773[vahjl]
pbafhzre-tenqr-onfxrg-bcrengvbaf-221[zyaro]
glrcplyrgmlyj-bwc-pcqcypaf-132[clpyg]
dpmpsgvm-dboez-dpbujoh-tfswjdft-545[bdmzf]
dkqjcbctfqwu-rncuvke-itcuu-cpcnauku-700[cuknq]
ajmrxjlcren-yujbcrl-pajbb-anbnjalq-459[yslvg]
oazegyqd-sdmpq-bxmefuo-sdmee-fqotzaxask-586[vfmnu]
ugdgjxmd-jsttal-ksdwk-632[hfjix]
aietsrmdih-gvcskirmg-tpewxmg-kveww-vigimzmrk-412[kfcim]
drxevkzt-jtrmvexvi-ylek-uvgcfpdvek-685[vekdr]
excdklvo-bkllsd-nozvyiwoxd-250[dlokv]
uwtojhynqj-hfsid-wjxjfwhm-281[fqsmx]
plolwdub-judgh-udeelw-uhfhlylqj-205[ludhe]
oqnidbshkd-dff-zmzkxrhr-729[cvlkx]
bknsykmdsfo-tovvilokx-bomosfsxq-328[boqly]
dpotvnfs-hsbef-qspkfdujmf-cvooz-tijqqjoh-961[zmnyi]
gspsvjyp-fyrrc-gsrxemrqirx-490[rsgpx]
gifavtkzcv-szfyrqriuflj-wcfnvi-uvmvcfgdvek-139[zadfj]
gsrwyqiv-kvehi-wgezirkiv-lyrx-wxsveki-490[alpzb]
ykhknbqh-ydkykhwpa-zalhkuiajp-862[khayp]
dmybmsuzs-yuxufmdk-sdmpq-bxmefuo-sdmee-fqotzaxask-586[nwikx]
nwzekwypera-bhksan-nayaerejc-940[xnmta]
wrs-vhfuhw-hjj-zrunvkrs-283[hrjsu]
ajyqqgdgcb-pyzzgr-amlryglkclr-782[lozts]
ohmnuvfy-jfumncw-alumm-womnigyl-mylpcwy-110[mqrgd]
foadouwbu-suu-obozmgwg-792[hgkuj]
wdjcvuvmyjpn-ytz-yzkgjthzio-109[jyztv]
ucynmlgxcb-pyzzgr-qfgnngle-210[iftry]
ymszqfuo-omzpk-oamfuzs-pqhqxabyqzf-872[qzfmo]
clotzlnetgp-ojp-opawzjxpye-769[pnhtz]
mhi-lxvkxm-yehpxk-ftgtzxfxgm-657[etajx]
surmhfwloh-fkrfrodwh-uhfhlylqj-699[rkslj]
iruzfrtkzmv-tyftfcrkv-kirzezex-841[emztq]
bdavqofuxq-nmewqf-ogefayqd-eqdhuoq-352[jpmyv]
bdavqofuxq-otaoaxmfq-xasuefuoe-326[aofqu]
gpsxdprixkt-tvv-ldgzhwde-219[dgptv]
pbeebfvir-rtt-bcrengvbaf-897[enlaq]
jchipqat-gpqqxi-bpgztixcv-375[cnqyt]
glrcplyrgmlyj-qaytclecp-fslr-pcqcypaf-574[clpyr]
pejji-oqq-vyqscdsmc-640[qcjsd]
houngfgxjuay-yigbktmkx-natz-xkykgxin-774[mszcw]
ltpedcxots-jchipqat-gpqqxi-bpcpvtbtci-219[isgfv]
gifavtkzcv-tyftfcrkv-drerxvdvek-659[vbdyz]
vjpwncrl-mhn-orwjwlrwp-641[wrjln]
vjpwncrl-ouxfna-bcxajpn-511[ydzfw]
rzvkjiduzy-xviyt-xjvodib-adivixdib-187[idvxb]
tinnm-suu-twbobqwbu-272[datjf]
apuut-xviyt-vxlpdndodji-941[zrtso]
jxdkbqfz-zixppfcfba-mixpqfz-doxpp-jxohbqfkd-705[fpxbd]
zilqwikbqdm-lgm-kwvbiqvumvb-876[bqpme]
jyddc-wgezirkiv-lyrx-wxsveki-256[sjntv]
ahngzyzqcntr-qzaahs-zbpthrhshnm-963[fzvai]
ksodcbwnsr-qfmcusbwq-suu-qighcasf-gsfjwqs-350[wyezk]
atyzghrk-igtje-iugzotm-jkyomt-462[ksuli]
dwbcjkun-ajmrxjlcren-yujbcrl-pajbb-nwprwnnarwp-563[tjsqg]
aoubshwq-dzoghwq-ufogg-aofyshwbu-896[hwcmz]
apwmeclga-npmhcargjc-njyqrga-epyqq-rpyglgle-340[dgtsc]
apwmeclga-aylbw-amyrgle-dglylagle-210[iumzy]
ydjuhdqjyedqb-rkddo-sedjqydcudj-738[ycbmx]
iuxxuyobk-xgjougizobk-pkrrehkgt-sgtgmksktz-644[pzsmw]
bnmrtldq-fqzcd-bgnbnkzsd-vnqjrgno-521[nbdqg]
wfruflnsl-gzssd-wjhjnansl-177[wtmsg]
yhwooebeaz-ywjzu-klanwpekjo-680[eowaj]
pynffvsvrq-cynfgvp-tenff-ernpdhvfvgvba-663[vbduy]
zilqwikbqdm-ntwemz-uizsmbqvo-356[yhenq]
jvsvymbs-zjhclunly-obua-jvuahputlua-721[uajlv]
fhezusjybu-rqiauj-tufbeocudj-400[ecamb]
ftzgxmbv-wrx-xgzbgxxkbgz-293[xgbzf]
chnylhuncihuf-xsy-xypyfijgyhn-578[jigcy]
vhkkhlbox-pxtihgbsxw-cxeeruxtg-wxlbzg-111[hsuty]
foadouwbu-tzcksf-gozsg-246[ofgsu]
xzwrmkbqtm-moo-nqvivkqvo-434[moqvk]
gvaaz-cvooz-dpoubjonfou-415[mcnzb]
pbafhzre-tenqr-enoovg-grpuabybtl-169[bktjl]
uwtojhynqj-gzssd-ywfnsnsl-723[phguv]
dlhwvupglk-zjhclunly-obua-klwhyatlua-227[luahk]
vhkkhlbox-vhehkyne-vahvhetmx-ybgtgvbgz-215[hvbeg]
qlm-pbzobq-gbiivybxk-lmboxqflkp-809[blqik]
forwcoqhwjs-qvcqczohs-ghcfous-792[mtuqn]
eqpuwogt-itcfg-dwppa-fgrnqaogpv-570[gpafo]
lxuxaodu-bljenwpna-qdwc-jwjuhbrb-121[rbqfd]
ykhknbqh-xqjju-oanreyao-680[ahjkn]
ugfkmewj-yjsvw-hdsklau-yjskk-kzahhafy-918[kahjs]
gbc-frperg-fpniratre-uhag-fnyrf-897[dskta]
myxcewob-qbkno-lexxi-wkxkqowoxd-770[spdoc]
cqwdujys-fbqijys-whqii-huiuqhsx-998[uhebs]
ckgvutofkj-igtje-iugzotm-rghuxgzuxe-774[gutei]
excdklvo-lexxi-psxkxmsxq-302[ypsmx]
mbiyqoxsm-dyz-combod-mkxni-mykdsxq-zebmrkcsxq-692[fnhpz]
zlkprjbo-doxab-gbiivybxk-xkxivpfp-809[ydtxn]
wdjcvuvmyjpn-ezggtwzvi-hvmfzodib-603[vzdgi]
njmjubsz-hsbef-fhh-bobmztjt-649[mxkjw]
wsvsdkbi-qbkno-oqq-ecob-docdsxq-796[rglok]
htsxzrjw-lwfij-gfxpjy-fsfqdxnx-307[uyteb]
wpuvcdng-ejqeqncvg-yqtmujqr-882[svamn]
tagzsrsjvgmk-hdsklau-yjskk-ugflsafewfl-606[tysrn]
kwtwznct-akidmvomz-pcvb-zmamizkp-200[skpom]
dpmpsgvm-dboez-dpbujoh-fohjoffsjoh-311[fknst]
rnqnyfwd-lwfij-hmthtqfyj-xytwflj-567[gzkol]
zntargvp-pnaql-hfre-grfgvat-923[yijbm]
dzczkrip-xiruv-treup-tfrkzex-drerxvdvek-347[vrmsu]
ajyqqgdgcb-afmamjyrc-sqcp-rcqrgle-522[cqagr]
pelbtravp-ohaal-erprvivat-715[jnbmz]
irdgrxzex-sleep-ivrthlzjzkzfe-113[bmsnw]
eqpuwogt-itcfg-tcddkv-fgxgnqrogpv-804[gtcdf]
cvabijtm-moo-ivitgaqa-226[darfu]
ytu-xjhwjy-xhfajsljw-mzsy-zxjw-yjxynsl-281[wzjeb]
fkqbokxqflkxi-yxphbq-obxznrfpfqflk-809[dcasb]
gokzyxsjon-sxdobxkdsyxkv-mkxni-ecob-docdsxq-276[zypso]
ibghopzs-suu-kcfygvcd-402[cgsub]
tfiifjzmv-srjbvk-uvjzxe-581[sovtj]
gntmfefwitzx-gfxpjy-xmnuunsl-619[fnxgm]
lgh-kwujwl-bwddqtwsf-vwhsjlewfl-788[tlejf]
hjgbwuladw-wyy-ghwjslagfk-164[wgahj]
nzwzcqfw-ojp-qtylyntyr-431[ynqtw]
sbejpbdujwf-sbccju-vtfs-uftujoh-909[kujit]
vhkkhlbox-wrx-ftkdxmbgz-241[uwzex]
lahxpnwrl-bljenwpna-qdwc-cajrwrwp-381[yjzno]
lugjuacha-jfumncw-alumm-jolwbumcha-838[uamcj]
gvcskirmg-glsgspexi-jmrergmrk-828[smeyi]
thnulapj-ihzrla-thyrlapun-955[ahlnp]
sno-rdbqds-bzmcx-btrsnldq-rdquhbd-937[dbqrs]
vdzonmhydc-eknvdq-dmfhmddqhmf-781[dmhfn]
iehepwnu-cnwza-xqjju-ykjpwejiajp-368[jepwa]
dfcxsqhwzs-dzoghwq-ufogg-cdsfohwcbg-974[gcdfh]
sbqiiyvyut-tou-jhqydydw-608[okbzs]
htsxzrjw-lwfij-gzssd-uzwhmfxnsl-801[nmtjq]
hvbizodx-rzvkjiduzy-xviyt-yzqzgjkhzio-213[zivyd]
ajmrxjlcren-ljwmh-lxjcrwp-bqryyrwp-745[kheat]
vkppo-shoewudys-tou-udwyduuhydw-556[udowy]
dpotvnfs-hsbef-dmbttjgjfe-gmpxfs-nbslfujoh-363[qapli]
glrcplyrgmlyj-djmucp-qrmpyec-158[clmpr]
emixwvqhml-xtiabqk-oziaa-wxmzibqwva-642[rkpba]
qczcftiz-dzoghwq-ufogg-aofyshwbu-298[lmcuy]
cvabijtm-zilqwikbqdm-akidmvomz-pcvb-nqvivkqvo-746[ynxzo]
pkl-oaynap-acc-wjwhuoeo-134[jxlai]
xjmmjndqz-kgvnodx-bmvnn-rjmfncjk-291[njmdk]
ejpanjwpekjwh-nwxxep-nayaerejc-550[lisvd]
htwwtxnaj-htsxzrjw-lwfij-hfsid-htfynsl-wjfhvznxnynts-541[hntwf]
mbiyqoxsm-mkxni-mykdsxq-crszzsxq-770[zhowm]
rmn-qcapcr-ucynmlgxcb-cee-pcqcypaf-886[cpaem]
rtqlgevkng-ejqeqncvg-fgxgnqrogpv-466[zktns]
fydelmwp-mfyyj-nfdezxpc-dpcgtnp-769[anfej]
yuxufmdk-sdmpq-otaoaxmfq-pqbxakyqzf-742[ohxti]
vxupkizork-igtje-xkgiwaoyozout-592[bmwjf]
veqtekmrk-tvsnigxmpi-gerhc-gsexmrk-gywxsqiv-wivzmgi-802[dglps]
nsyjwsfyntsfq-uqfxynh-lwfxx-ijuqtdrjsy-931[ymnhu]
gifavtkzcv-avccpsvre-fgvirkzfej-841[ypigz]
krxqjijamxdb-kdwwh-mnyjacvnwc-641[krnma]
dszphfojd-ezf-sftfbsdi-805[fdszb]
xmrrq-tmffq-lwuzfgdgyq-372[fqgmr]
tagzsrsjvgmk-xdgowj-vwhsjlewfl-788[gjswl]
lsyrkjkbnyec-mkxni-nofovyzwoxd-614[knoyx]
dwbcjkun-mhn-bjunb-173[mykra]
vhehkyne-vtgwr-nlxk-mxlmbgz-319[eghkl]
bkzrrhehdc-bnqqnrhud-bzmcx-bnzshmf-otqbgzrhmf-677[xaszn]
oxmeeuruqp-bxmefuo-sdmee-abqdmfuaze-248[udtec]
jlidywncfy-mwupyhayl-bohn-uhufsmcm-500[yhmuc]
xjmmjndqz-zbb-mzvxlpdndodji-239[djmzb]
yuxufmdk-sdmpq-omzpk-qzsuzqqduzs-534[ofrpg]
tfejldvi-xiruv-vxx-uvgrikdvek-659[cnesm]
yaxsnlcrun-ajkkrc-anbnjalq-979[nmivs]
tvsnigxmpi-ikk-wivzmgiw-880[agunv]
mrxivrexmsrep-tpewxmg-kveww-viwievgl-698[evwim]
nglmtuex-yehpxk-labiibgz-241[begil]
zuv-ykixkz-ixeumktoi-igtje-iugzotm-aykx-zkyzotm-670[pjybl]
forwcoqhwjs-dzoghwq-ufogg-difqvogwbu-272[xkwoz]
ajyqqgdgcb-qaytclecp-fslr-bcqgel-886[mkvsi]
myxcewob-qbkno-mkxni-mykdsxq-wkbuodsxq-770[zmijb]
uwtojhynqj-kqtbjw-yjhmstqtld-333[jtqhw]
wsvsdkbi-qbkno-lkcuod-dbksxsxq-406[biaoe]
gpbepvxcv-rpcsn-rdpixcv-advxhixrh-895[dcwgp]
muqfedyput-isqludwuh-xkdj-mehaixef-712[betdq]
ckgvutofkj-inuiurgzk-xkgiwaoyozout-956[sazyo]
wfruflnsl-uqfxynh-lwfxx-btwpxmtu-541[fxluw]
qfmcusbwq-rms-igsf-hsghwbu-246[sbfgh]
ynukcajey-nwxxep-qoan-paopejc-602[htmbv]
ujqgywfau-uzgugdslw-jwkwsjuz-138[newms]
yflexwxoalrp-zxkav-cfkxkzfkd-705[ctnsy]
vjpwncrl-lqxlxujcn-mnyuxhvnwc-953[nawmz]
willimcpy-wuhxs-lyuwkocmcncih-786[cilwh]
mtzslklcozfd-clmmte-cpnptgtyr-119[tjkgv]
xlrypetn-awldetn-rcldd-cplnbftdtetzy-795[tdlen]
vkppo-rqiauj-huqsgkyiyjyed-452[yijkp]
vxupkizork-lruckx-jkbkruvsktz-124[eumyz]
diozmivodjivg-agjrzm-nzmqdxzn-915[otpfl]
owshgfarwv-hdsklau-yjskk-klgjsyw-918[qcjim]
zuv-ykixkz-igtje-iugzotm-zkinturume-202[plvqf]
zlilocri-oxyyfq-bkdfkbbofkd-835[bswmn]
ziuxioqvo-lgm-amzdqkma-798[maioq]
xqvwdeoh-sodvwlf-judvv-ghyhorsphqw-517[hvdow]
ovbunmneqbhf-enqvbnpgvir-onfxrg-qrfvta-507[nvbfq]
gbc-frperg-pnaql-genvavat-351[pmzkq]
eadalsjq-yjsvw-jsttal-suimakalagf-580[zjghy]
rdadguja-rpcsn-rdpixcv-apqdgpidgn-245[dpagr]
tbxmlkfwba-pzxsbkdbo-erkq-abpfdk-523[vifrq]
ocipgvke-uecxgpigt-jwpv-ugtxkegu-544[abfsh]
ovbunmneqbhf-zvyvgnel-tenqr-wryylorna-ybtvfgvpf-481[hxymg]
pinovwgz-xjinphzm-bmvyz-agjrzm-ozxcijgjbt-681[cqlnu]
tinnm-qobrm-ghcfous-220[hyczt]
iuruxlar-yigbktmkx-natz-ykxboiky-748[kixya]
bkzrrhehdc-bzmcx-bnzshmf-cdrhfm-209[hbcmr]
gpsxdprixkt-tvv-uxcpcrxcv-973[xcpvr]
forwcoqhwjs-rms-hfowbwbu-974[stzrm]
zovldbkfz-fkqbokxqflkxi-mixpqfz-doxpp-cfkxkzfkd-705[tsmfo]
vetllbybxw-lvtoxgzxk-angm-ftgtzxfxgm-371[sbemy]
hwbba-ejqeqncvg-tgugctej-232[iyrqv]
vqr-ugetgv-lgnnadgcp-wugt-vguvkpi-596[gvunp]
xgvnndadzy-wpiit-yzndbi-343[rawyd]
jxdkbqfz-oxyyfq-qbzeklildv-107[qbdfk]
wlsiayhcw-luvvcn-mufym-656[jbvne]
surmhfwloh-fdqgb-ghvljq-621[ymnve]
mvkccspson-bkllsd-vklybkdybi-432[yscux]
dszphfojd-sbccju-dvtupnfs-tfswjdf-129[itbfs]
lsyrkjkbnyec-lexxi-crszzsxq-978[sxcek]
qlm-pbzobq-mixpqfz-doxpp-zlkqxfkjbkq-211[satyb]
bknsykmdsfo-nio-kmaescsdsyx-744[tspif]
bpvctixr-rpcsn-rjhidbtg-htgkxrt-713[rtbcg]
sebehvkb-rqiauj-udwyduuhydw-140[udbeh]
zhdsrqlchg-fdqgb-hqjlqhhulqj-387[zptrs]
qxdwpopgsdjh-rpcsn-sthxvc-635[nbixj]
pualyuhapvuhs-msvdly-klzpnu-721[ulpah]
sbqiiyvyut-shoewudys-isqludwuh-xkdj-jhqydydw-894[dysuh]
wsvsdkbi-qbkno-lexxi-dbksxsxq-614[onzwh]
ydjuhdqjyedqb-rqiauj-efuhqjyedi-894[ocdpe]
kwzzwaqdm-ntwemz-wxmzibqwva-434[nwzml]
qspkfdujmf-fhh-nbobhfnfou-571[zpyau]
bxaxipgn-vgpst-tvv-detgpixdch-583[xwiac]
qfmcusbwq-dfcxsqhwzs-xszzmpsob-fsqswjwbu-402[lstrx]
dpmpsgvm-dboez-sfdfjwjoh-337[dfjmo]
dzoghwq-ufogg-fsgsofqv-636[gfoqs]
nzwzcqfw-dnlgpyrpc-sfye-qtylyntyr-509[milhd]
xgsvgmotm-pkrrehkgt-vaxingyotm-176[jubcm]
xgsvgmotm-jek-cuxqynuv-644[soxwn]
cxy-bnlanc-lahxpnwrl-kdwwh-fxatbqxy-485[zamhj]
irgyyolokj-inuiurgzk-sgtgmksktz-982[vzkrq]
xgvnndadzy-xcjxjgvoz-xjiovdihzio-733[ozhyu]
gvcskirmg-nippcfier-xiglrspskc-334[bastq]
zlilocri-gbiivybxk-obxznrfpfqflk-367[ntyda]
pyknyegle-pyzzgr-pcqcypaf-886[nxvzy]
zhdsrqlchg-gbh-frqwdlqphqw-361[nqzts]
kyelcrga-cee-yaosgqgrgml-808[izdqr]
hplazytkpo-prr-cpnptgtyr-379[prtya]

@ -1,55 +0,0 @@
#lang br/quicklang
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,@(for*/list ([room-str (in-lines port)]
#:when (not (equal? "" room-str)))
`(room ,@(cdr (regexp-match #px"^(.*)-(\\d+)\\[(\\w+)\\]$" room-str)))))))
(provide read-syntax)
#|
Each room consists of an encrypted name (lowercase letters separated by dashes)
followed by a dash, a sector ID, and a checksum in square brackets.
|#
(struct $room (name sector checksum) #:transparent)
(define-macro (room NAME SECTOR CHECKSUM)
#'($room NAME (string->number SECTOR) CHECKSUM))
(provide room)
(define-macro (mb . ROOMS)
#'(#%module-begin
(define rooms (list . ROOMS))
(display "part a: ")
(displayln (for/sum ([room (in-list rooms)]
#:when (real-room? room))
($room-sector room)))
(display "part b: ")
(displayln
(for/first ([room (in-list rooms)]
#:when (equal? (shift-string ($room-name room) ($room-sector room))
"northpole object storage"))
($room-sector room)))))
(provide (rename-out [mb #%module-begin]))
#|
A room is real (not a decoy) if the checksum is
the five most common letters in the encrypted name, in order,
with ties broken by alphabetization.
|#
(require sugar/list)
(define (real-room? room)
(define room-chars (string->list (string-replace ($room-name room) "-" "")))
(define freqs (hash->list (frequency-hash room-chars)))
(define sorted-freqs (sort (sort freqs char<? #:key car) > #:key cdr))
(equal? ($room-checksum room) (list->string (map car (take sorted-freqs 5)))))
(define (shift-string str shift)
(list->string
(for/list ([c (in-string str)])
(cond
[(char=? c #\-) #\space]
[else
(define a-val (char->integer #\a))
(integer->char (+ (modulo (+ (char->integer c) (- a-val) shift) 26) a-val))]))))

@ -1,5 +0,0 @@
#lang reader "lang.rkt"
aaaaa-bbb-z-y-x-123[abxyz]
a-b-c-d-e-f-g-h-987[abcde]
not-a-real-room-404[oarel]
totally-real-room-200[decoy]

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
ojvtpuvg

@ -1,40 +0,0 @@
#lang br/quicklang
(require openssl/md5)
(provide read-syntax)
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
(solve #,(string-trim (port->string port))))))
(provide #%module-begin)
(define (solve key)
(define-values
(part-a-solution part-b-solution)
(for*/fold ([part-a empty]
[part-b (make-vector 8 #f)])
([idx (in-naturals 1000000)]
[this-key (in-value (format "~a~a" key idx))]
#:break (and (= 8 (length part-a))
(andmap string? (vector->list part-b))))
(define this-hash (md5 (open-input-string this-key)))
(define next-part-a
(if (and (not (= 8 (length part-a)))
(string-prefix? this-hash "00000"))
(let ([next-str (substring this-hash 5 6)])
(displayln (format "part a progress: ~a" next-str))
(cons next-str part-a))
part-a))
(define next-part-b
(let ()
(when (and (string-prefix? this-hash "00000")
(string->number (substring this-hash 5 6))
(<= 0 (string->number (substring this-hash 5 6)) 7)
(not (vector-ref part-b (string->number (substring this-hash 5 6)))))
(displayln (format "part b progress: idx ~a, hash ~a, ~a at ~a" idx this-hash (substring this-hash 6 7) (substring this-hash 5 6)))
(vector-set! part-b (string->number (substring this-hash 5 6)) (substring this-hash 6 7)))
part-b))
(values next-part-a next-part-b)))
(displayln (format "part a: ~a" (apply string-append (reverse part-a-solution))))
(displayln (format "part b: ~a" (apply string-append (vector->list part-b-solution)))))
(provide solve)

@ -1,625 +0,0 @@
#lang reader "lang.rkt"
focdealm
ggsipflx
rvibwxbm
vqrfyyrh
hsjtzpgs
ozymxpoy
jiecwags
lztseufl
dfwibwsn
skiuhnwl
kamgzqog
axeqncwa
gobivxto
nwgoryhd
tzrlitrq
uzoldxbv
zsteobha
pfcgdqkg
prcqlunp
iwivemkh
vpkilupm
ewuznabz
veaptost
cyvirffe
ejhhqfng
ibsqztgg
xzczkboh
bckhbodf
vbycgonv
esmoyyku
unccgdgj
cqwnqlzs
edoqmykb
bkvzlhyq
yzrspisn
zlzibhca
povnweaf
muyfegxe
oaojqfrl
gwesjxws
rjknfyeh
dkquvctc
cfuzhxoj
tdzzzfqc
lzjzsyni
wjfxckkf
xmhyjhop
kmtllzxs
yohearbj
ilmvyxgn
erczytzw
kuetjsba
vwkpollq
tujwluzc
jlvedjcp
acmoaoji
gqoliyen
agckavhf
ottamfdm
jxwlyotw
tdpsrapj
carwwmqc
ykaipjdj
zdfrbduu
vwiiosud
uoixglbw
yegbwxjb
wbpqqqfv
wpynmyqi
aqdkscgd
oghnbnnf
duftexbb
ttvbofay
jferymwy
hqzimpiq
sifyogml
nymxqbws
dhdlhhqp
urtuhcrj
giwcunfq
fxgretsl
maihqkpk
pdxfkcru
xixtthag
vuzxqzzi
wxxeleug
xpopxkzo
hgcsyuad
xcbydxnx
kxocfakp
erxdajeq
tliakzhh
iygbbuxs
qlgqthpp
duzzptwk
gfnqdotc
kjayxeqf
fehitfar
yemshppn
igtczmmw
gfajhxch
bslzmgwo
xpmhmirx
yhlwlupt
nymajupw
tlhgdefw
bqkudizc
lucrhmnm
svkoaqzz
luggfivf
ckawtiwy
eeivawhj
qdmmmvdl
quezzzqa
oimsfsuo
jdvcknqu
aupohqbk
llwsasnz
zlpljtjl
xfylqxlv
zqppxkul
varoizrq
yxryqwso
gsscetca
gcbdgqyo
hsdnvteo
pxtoreoc
rwjdkwzs
zdgofynf
polyntkx
jhulgrnf
ycbzpdpw
bzvdbwsy
vydjbucs
rxadwwuo
ccnvzjak
nombazjc
lbxwdasr
cbdlkiha
sdomdvow
phjnkkkp
nmtmrnyz
nxsvmcwk
hqimjvir
vmjhhuuv
zilhgqlb
gfgbibgg
imxxugfe
wtaffkbj
lyguqvjs
pejslhls
qjnefwii
oanqnnnc
kcjyfwxm
zoxjwxmw
ihmokcrm
uebsbhfr
fxvjiorr
ebjiucyt
ofutlokv
mdfnsuyr
dzviwqdk
umwyaijz
hdqwfalt
qtyrouwh
lkzcrtwa
dtqvwzke
buplmmca
xxepjuvj
omyotlar
ytndbwhi
sbntigym
mphrnsme
xiymeoxr
kcujxcih
bydnchgk
snwdjlip
yljsymtv
tyhbpoab
zlqhvzxl
akbtnzop
xnpjmysj
znhednen
vbcsocrm
ywjajour
ejngbqev
rstykfhc
cbcnoexq
mzlxvxwj
vfdqaalp
nbszzozr
dqpyojid
hfuqilbl
uoackeup
shqkcsmr
jbdasroe
fmlkvsnt
cnomxkvk
unbsfncq
bnzxltxe
bbadfyin
skmhtmhn
xkypwglb
flbfiioo
fzywneyg
srngxbut
qtodeuxg
xvawfqli
nyfmrdsn
rdjysbxj
spmezvvj
ofoivcuc
touzgqzx
mfqyzagc
dmaurbdv
gqnrlyuw
wuppusoh
qgstihuy
uldnlrpi
xaskgwim
djjrphid
qjhmctyu
osfenjdn
zvoahhkk
xiuyatyn
fepobmjh
kmugpjpw
aikpozqs
kmgmazif
gbzlodzb
hrocqadn
noekklwb
vzwhnkvx
osrspxsc
iekmqgua
xeehndee
quttqjav
htoptweo
cyicmwba
jltlwlyy
qvccdkig
bibggekq
kwfwvrfg
eycwlcup
murgcddl
lyukeubx
twbpzoyg
dkcvzele
fozhtmcz
frugeivm
qjbhpdpr
tgkkeroo
ryuvgqgc
jhixykqn
wsebmcrn
wohtjpgu
isflpxxt
xggwmamk
tfwdsrfe
cpjvcghr
fekhexdb
zcwzqofh
awnfiqzu
ihekvqby
rqaqajij
cumouwzx
ccyrflxd
rredygrk
patcpktn
mjnwuefa
tuhgyfsw
mjpxrgkx
hupfjqxo
mgkclcrf
jkmkhkci
nkcrwgqd
apmfiqpg
pxiawshv
ledhpfaz
btikmkwj
jwosopir
mgxftcte
phkbcdex
uakftnbh
fnkmdecn
swrvbjwj
hphskevf
trnpfdmy
odvmmqss
akvqgemq
zyqlkwdm
nbnaqjsa
mbnogzyt
mchaxjxu
tcqqerqz
ayylasgq
zqbrjfli
ccjjnfat
lvlpdjqu
luiabalt
qsvkepvz
dtyobsiy
jkulvrnc
thwjbzkh
vvhrwbkx
fhxejrff
bacuriaz
grmtyude
feynnckb
hfdepyjn
lvsfflyc
xfrgfgeh
vqqybtba
ntlfjqjt
zadauvmg
itukkpqf
mrnnfgmf
hpjqvppo
dshgwmgb
pzxeoymv
nlokvrio
cgcaxffl
dvimsnxu
iczcvwho
lkxumswj
satmovog
ujwknitl
halkgpaa
pnttnodc
adsvsumi
jwerfpko
yhsjqytk
vpevemez
yvjmltwj
vdoeippw
siouxait
ftrspdpx
hptwqlmz
haewgrft
watbdvqz
eiptzrvr
msvbioso
dnjeoucg
qixvmlem
mqquklfq
sszagakl
khfbexqb
uysydrlc
inawynse
whuonlhq
eshukapj
vtrepdxm
pgjjcisd
puiunlts
replddlv
emjyyhmd
aahwhond
laneyzsj
jnlkdpyb
sqxrctuo
wmmyybvl
ldyvqldz
bzbrsdjr
ekxwhzte
gnpqywzz
afsfbtte
ggkbrgds
dlawfrbp
opypolpc
cqpxcfgh
ynmtlgvl
slfmicyv
ooguwxjc
tewmtlty
wcdwansw
ktercyvw
qrgxrzne
wvbhflls
dpfjwbmm
uigmcaow
ejzhkxic
fbewvcoh
jxbtcmwn
ywiktjqn
rftnjqpp
yalixnnw
srdsiwgy
pdpdrynx
ioroheqp
vpvvnmad
tqksxfsp
snzxciua
nrhtoskm
crfvapzk
wndbcxvf
syffkzmv
nneibkaf
unuvhnli
ujhdjkvs
gmyqgvdr
jedfxwje
bcshopnu
xgiprhyv
onibkkoq
riguljez
yodzrfeu
ogbwakaa
ymrltbxa
ourmuhrx
yxwixtuv
ptnxdvdm
oskvgexz
fbigwiaw
xctckzmy
khwiyvmw
qbqbtxpr
kavzlngz
bbklqvzt
rwlzppbq
upirhhca
ezlaqdgo
ieuynchi
qmjtojzq
qrricseq
hxkrsfmw
nssfpnws
tiaziudb
rvskpahe
pplmppvi
jxpyidio
teudseap
aclyhavi
yqafhkyd
drjhcqgu
zvfcfbjc
sqfuuezn
gwtsupqk
czakgbiy
wknfzbyj
ooxwycji
wxymanlx
ewbtpqtl
jmwnxydh
ceqdllqb
jhdbejmt
mazzsanu
uypyqlvh
itnrzbie
miuegdjz
tqxeipin
kbareizb
jgjxrycy
epshhech
oicruxsz
ptxgidha
bmgnvjtr
qvwzlmgq
cvwtdffi
ibzasmru
jfenrbjd
nrkgwvcz
hlmghdgd
emhdaicl
wdwrzocv
spwjcrud
dsgilvqn
phvmafqk
iiihsfff
uvcqgtyc
doxkrzzw
hktdpsbv
evqojani
kzapomdx
ewtbrdtb
rgshzyxq
ltinzxld
cazrrlcu
irfxunbt
rmqcsbvm
gddexbsb
qladhkpd
xlvzpmab
wirftlbu
fxfqjubx
sgogtrcb
zlqxxwfy
djgtbihr
gslssgsu
wytydgje
vmovsmdh
ogyiuirh
mtfxzrrx
kcpfbemc
blreqhel
zjsjqqyh
ciqwtpvk
yjcinpaa
wxbxagui
aqbjqmig
ybaeuhew
mjzpnttv
mevjcrqp
fpmgzgco
gklesvof
jzfssvvx
aynfmwhl
euosbnhf
lcebcalt
kvsuuyyt
ltranzur
nlledtpz
vqdrgckr
yodxnjpt
uyznwnni
ckczwqkp
uxtjgoee
otdoyaxg
lbccbfgi
mhzjujrp
cekkthvf
fbvpuhog
nzfannep
rnnqusey
aiocsiyy
uvcbtfwr
bzqirxrg
qnmfgshq
inyevvbn
wswvhglx
huxqxwwb
fdutjnfq
adajhsjk
ahllesij
tcfawzgu
zfdgmtry
byznvpfp
duunxdad
kgadxmdf
ptfaovzv
uhuvlivs
xcoqrmeu
nnnlvmga
zwrbykek
lvpumidd
hieivrnt
vrwqsvci
npbplsvm
ougzcgty
rzvgzooo
iehafkto
rzspzjne
dzvvhvld
fgkmmfda
xjsnnlmd
igvjrsuk
narcempo
xrhoiugu
ghxbpomr
waxtcbcg
tmqgsejx
dobaxhel
mpzgjyww
ehyfvnaz
zxrdlajd
hfquyvok
aqxxdcqv
vjbukram
rjvttibk
pryxgzrd
hcqpxgee
qjgqvoal
wmbuvcty
zpgxmdiu
foequjps
lmdjwyfj
mhqudwzv
lrzkttsw
owyatnru
gwppbbfb
fvlkdsjk
pwhlvjtb
zgldiibp
sokjzgvq
kfourwqm
nfqoyvsz
hdiwmrhk
nnapsbht
blqjjtwy
aknoauti
uhgowkyx
uypyjorh
blfeioot
kzbukpxk
kfmbxgle
zmegahum
upjouzrg
tkedvzfy
bxwxuutn
rrwxobjp
jdujkhox
jkycewdx
ivlbibns
qjshodxf
bektjeou
wotjfgfl
rjrcfiug
aklhubjf
kwpnaezt
lsqvzdom
pxzvorct
vcxazyzs
xsszjsjq
ydgfsukl
gqxpcrla
rvsoxkhy
rschupcm
ivlpikxi
etrnyvkh
byzymjms
qagdcqww
sxnausxs
giuitchj
qgolehtg
keeskeyb

@ -1,19 +0,0 @@
#lang br/quicklang
(provide read-syntax)
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
(solve #,@(string-split (port->string port))))))
(module+ reader (provide read-syntax))
(require sugar/list)
(define (solve . ws)
(define-values (s1 s2)
(for/lists (acc acc2) ([vert-cs (in-list (apply map list (map string->list ws)))])
(define freqs (hash->list (frequency-hash vert-cs)))
(values (car (argmax cdr freqs)) (car (argmin cdr freqs)))))
(displayln (list->string s1))
(displayln (list->string s2)))
(provide solve)
(provide #%module-begin)

@ -1,17 +0,0 @@
#lang reader "lang.rkt"
eedadn
drvtee
eandsr
raavrd
atevrs
tsrnev
sdttsa
rasrtv
nssdts
ntnada
svetve
tesnvt
vntsnd
vrdear
dvrsen
enarar

File diff suppressed because it is too large Load Diff

@ -1,59 +0,0 @@
#lang br/quicklang
(provide read-syntax)
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,@(for/list ([ip (in-lines port)]
#:when (not (equal? ip "")))
ip))))
(provide (rename-out [mb #%module-begin]))
(define-macro (mb . IPS)
#'(#%module-begin
(define ips (list . IPS))
(displayln (format "part a: ~a" (length (filter supports-tls? ips))))
(displayln (format "part b: ~a" (length (filter supports-ssl? ips))))))
(define bracketed-pattern #rx"\\[.*?\\]")
(define (bracketed-parts str)
(regexp-match* bracketed-pattern str))
(define (unbracketed-parts str)
(string-split str bracketed-pattern))
(define (has-abba? str)
(for*/or ([idx (in-range (string-length str))]
[substr (in-list (regexp-match* #px"^\\w\\w\\w\\w" str idx))]
#:when substr)
(define cs (string->list substr))
(and
(char=? (first cs) (fourth cs))
(char=? (second cs) (third cs))
(not (char=? (first cs) (second cs))))))
(define (supports-tls? str)
(and
(ormap has-abba? (unbracketed-parts str))
(andmap (negate has-abba?) (bracketed-parts str))))
(define (find-abas str)
(for*/list ([idx (in-range (string-length str))]
[substr (in-list (regexp-match* #px"^\\w\\w\\w" str idx))]
[cs (in-value (string->list substr))]
#:when (and
substr
(char=? (first cs) (third cs))
(not (char=? (first cs) (second cs)))))
substr))
(define (aba->bab aba) (format "~a~a~a" (substring aba 1 2)
(substring aba 0 1)
(substring aba 1 2)))
(define (supports-ssl? str)
(define abas (append-map find-abas (unbracketed-parts str)))
(for*/or ([bab (in-list (map aba->bab abas))]
[str (in-list (bracketed-parts str))])
(regexp-match bab str)))

@ -1,5 +0,0 @@
#lang reader "lang.rkt"
abba[mnop]qrst
abcd[bddb]xyyx
aaaa[qwer]tyui
ioxxoj[asdfgh]zxcvbn

@ -1,174 +0,0 @@
#lang reader "lang.rkt"
rect 1x1
rotate row y=0 by 20
rect 1x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 3
rect 2x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 3
rect 2x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 4
rect 2x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 3
rect 2x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 5
rect 1x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 6
rect 5x1
rotate row y=0 by 2
rect 1x3
rotate row y=2 by 8
rotate row y=0 by 8
rotate column x=0 by 1
rect 7x1
rotate row y=2 by 24
rotate row y=0 by 20
rotate column x=5 by 1
rotate column x=4 by 2
rotate column x=2 by 2
rotate column x=0 by 1
rect 7x1
rotate column x=34 by 2
rotate column x=22 by 1
rotate column x=15 by 1
rotate row y=2 by 18
rotate row y=0 by 12
rotate column x=8 by 2
rotate column x=7 by 1
rotate column x=5 by 2
rotate column x=2 by 1
rotate column x=0 by 1
rect 9x1
rotate row y=3 by 28
rotate row y=1 by 28
rotate row y=0 by 20
rotate column x=18 by 1
rotate column x=15 by 1
rotate column x=14 by 1
rotate column x=13 by 1
rotate column x=12 by 2
rotate column x=10 by 3
rotate column x=8 by 1
rotate column x=7 by 2
rotate column x=6 by 1
rotate column x=5 by 1
rotate column x=3 by 1
rotate column x=2 by 2
rotate column x=0 by 1
rect 19x1
rotate column x=34 by 2
rotate column x=24 by 1
rotate column x=23 by 1
rotate column x=14 by 1
rotate column x=9 by 2
rotate column x=4 by 2
rotate row y=3 by 5
rotate row y=2 by 3
rotate row y=1 by 7
rotate row y=0 by 5
rotate column x=0 by 2
rect 3x2
rotate column x=16 by 2
rotate row y=3 by 27
rotate row y=2 by 5
rotate row y=0 by 20
rotate column x=8 by 2
rotate column x=7 by 1
rotate column x=5 by 1
rotate column x=3 by 3
rotate column x=2 by 1
rotate column x=1 by 2
rotate column x=0 by 1
rect 9x1
rotate row y=4 by 42
rotate row y=3 by 40
rotate row y=1 by 30
rotate row y=0 by 40
rotate column x=37 by 2
rotate column x=36 by 3
rotate column x=35 by 1
rotate column x=33 by 1
rotate column x=32 by 1
rotate column x=31 by 3
rotate column x=30 by 1
rotate column x=28 by 1
rotate column x=27 by 1
rotate column x=25 by 1
rotate column x=23 by 3
rotate column x=22 by 1
rotate column x=21 by 1
rotate column x=20 by 1
rotate column x=18 by 1
rotate column x=17 by 1
rotate column x=16 by 3
rotate column x=15 by 1
rotate column x=13 by 1
rotate column x=12 by 1
rotate column x=11 by 2
rotate column x=10 by 1
rotate column x=8 by 1
rotate column x=7 by 2
rotate column x=5 by 1
rotate column x=3 by 3
rotate column x=2 by 1
rotate column x=1 by 1
rotate column x=0 by 1
rect 39x1
rotate column x=44 by 2
rotate column x=42 by 2
rotate column x=35 by 5
rotate column x=34 by 2
rotate column x=32 by 2
rotate column x=29 by 2
rotate column x=25 by 5
rotate column x=24 by 2
rotate column x=19 by 2
rotate column x=15 by 4
rotate column x=14 by 2
rotate column x=12 by 3
rotate column x=9 by 2
rotate column x=5 by 5
rotate column x=4 by 2
rotate row y=5 by 5
rotate row y=4 by 38
rotate row y=3 by 10
rotate row y=2 by 46
rotate row y=1 by 10
rotate column x=48 by 4
rotate column x=47 by 3
rotate column x=46 by 3
rotate column x=45 by 1
rotate column x=43 by 1
rotate column x=37 by 5
rotate column x=36 by 5
rotate column x=35 by 4
rotate column x=33 by 1
rotate column x=32 by 5
rotate column x=31 by 5
rotate column x=28 by 5
rotate column x=27 by 5
rotate column x=26 by 3
rotate column x=25 by 4
rotate column x=23 by 1
rotate column x=17 by 5
rotate column x=16 by 5
rotate column x=13 by 1
rotate column x=12 by 5
rotate column x=11 by 5
rotate column x=3 by 1
rotate column x=0 by 1

@ -1,51 +0,0 @@
#lang br/quicklang
(provide read-syntax)
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,@(for/list ([inst (in-lines port)]
#:when (not (equal? inst "")))
(format-datum '(~a) inst)))))
(provide (rename-out [mb #%module-begin]))
(define-macro (mb INST ...)
#'(#%module-begin
(define g (for/fold ([g (grid 50 6)])
([inst (in-list (list INST ...))])
(inst g)))
(for-each displayln (map (λ (gr) (map (λ (gri) (if (= gri 1) "X" " ")) gr)) g))
(apply + (flatten g))))
(require (for-syntax racket/string))
(define-macro (rect ARG)
(with-pattern ([(COLS ROWS) (map string->number (string-split (symbol->string (syntax->datum #'ARG)) "x"))])
#'(curryr fill COLS ROWS)))
(provide rect)
(define-macro (rotate DIR WHICH-RAW by DIST)
(with-pattern ([PROC (prefix-id "shift-" #'DIR)]
[WHICH (string->number (car (string-split (symbol->string (syntax->datum #'WHICH-RAW)) #rx"[xy]=")))])
#'(curryr PROC WHICH DIST)))
(provide rotate)
(define (grid x y)
(make-list y (make-list x 0)))
(define (fill g cols rows)
(for/list ([(row ridx) (in-indexed g)])
(for/list ([(col cidx) (in-indexed (list-ref g ridx))])
(if (and (< ridx rows) (< cidx cols))
1
col))))
(require sugar/list)
(define (shift-row g which dist)
(for/list ([(row ridx) (in-indexed g)])
(if (= which ridx)
(shift row dist #f #t)
row)))
(provide shift-row)
(define (shift-column g which dist)
(apply map list (shift-row (apply map list g) which dist)))
(provide shift-column)

@ -1,5 +0,0 @@
#lang reader "lang.rkt"
rect 3x2
rotate column x=1 by 1
rotate row y=0 by 4
rotate column x=1 by 1

File diff suppressed because one or more lines are too long

@ -1,54 +0,0 @@
#lang br/quicklang
(require racket/string)
(provide read-syntax)
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,@(for/list ([str (in-lines port)]
#:when (not (equal? str "")))
`(solve ,(string-trim str))))))
(provide solve #%module-begin)
(define (solve str)
(for-each displayln
(let (#;[decomp-result (decomp str)]
[decomp2-result (decomp2 str)])
(list #;decomp-result #;(string-length decomp-result)
decomp2-result))))
(define (decomp str)
(define p (open-input-string str))
(define decompressor-pat "\\((\\d+)x(\\d+)\\)")
(let loop ([bstrs empty][decompressor #f])
(define cur-pat (if decompressor
(pregexp (format ".{~a}" (car decompressor)))
(pregexp (format "~a|." decompressor-pat))))
(define match (let ([result (regexp-try-match cur-pat p)])
(and result (car result))))
(cond
[(not match) (string-append* (map ~a (reverse (flatten bstrs))))]
[decompressor (loop (cons (make-list (cadr decompressor) match) bstrs) #f)]
[else
(define maybe-decompressor (regexp-match (pregexp decompressor-pat) match))
(if maybe-decompressor
(loop bstrs (map (compose1 string->number ~a) (cdr maybe-decompressor)))
(loop (cons match bstrs) #f))])))
(define (decomp2 str)
(define p (open-input-string str))
(define decompressor-pat "\\((\\d+)x(\\d+)\\)")
(let loop ([sum 0][decompressor #f])
(define cur-pat (if decompressor
(pregexp (format ".{~a}" (car decompressor)))
(pregexp (format "~a|." decompressor-pat))))
(define match (let ([result (regexp-try-match cur-pat p)])
(and result (car result))))
(cond
[(not match) sum]
[decompressor (loop (+ sum (* (cadr decompressor) (decomp2 (~a match)))) #f)]
[else
(define maybe-decompressor (regexp-match (pregexp decompressor-pat) match))
(if maybe-decompressor
(loop sum (map (compose1 string->number ~a) (cdr maybe-decompressor)))
(loop (+ sum (string-length (~a match))) #f))])))

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
(27x12)(20x12)(13x14)(7x10)(1x12)A

@ -1,232 +0,0 @@
#lang reader "lang.rkt"
bot 119 gives low to bot 18 and high to bot 3
bot 69 gives low to bot 47 and high to bot 172
bot 51 gives low to output 6 and high to bot 174
bot 11 gives low to bot 94 and high to bot 165
bot 42 gives low to bot 0 and high to bot 95
bot 195 gives low to bot 69 and high to bot 99
bot 96 gives low to bot 169 and high to bot 85
bot 24 gives low to bot 119 and high to bot 44
bot 114 gives low to output 5 and high to bot 43
bot 13 gives low to bot 203 and high to bot 197
bot 20 gives low to bot 146 and high to bot 164
bot 127 gives low to bot 132 and high to bot 11
bot 50 gives low to bot 80 and high to bot 148
bot 77 gives low to bot 35 and high to bot 67
bot 151 gives low to output 16 and high to bot 68
bot 72 gives low to bot 130 and high to bot 88
bot 89 gives low to bot 184 and high to bot 170
bot 158 gives low to bot 178 and high to bot 29
bot 85 gives low to bot 93 and high to bot 191
bot 6 gives low to bot 159 and high to bot 7
bot 156 gives low to bot 25 and high to bot 16
bot 177 gives low to output 8 and high to bot 157
bot 26 gives low to bot 131 and high to bot 149
value 61 goes to bot 119
bot 18 gives low to bot 161 and high to bot 118
bot 53 gives low to bot 128 and high to bot 74
bot 110 gives low to bot 126 and high to bot 90
bot 95 gives low to bot 52 and high to bot 62
bot 67 gives low to bot 121 and high to bot 156
bot 138 gives low to bot 151 and high to bot 171
bot 173 gives low to bot 137 and high to bot 15
bot 175 gives low to bot 136 and high to bot 117
bot 28 gives low to bot 120 and high to bot 92
bot 143 gives low to bot 70 and high to bot 26
bot 78 gives low to bot 90 and high to bot 63
bot 113 gives low to bot 73 and high to bot 193
bot 207 gives low to bot 23 and high to bot 125
bot 116 gives low to bot 100 and high to bot 158
bot 172 gives low to bot 10 and high to bot 61
bot 64 gives low to bot 24 and high to bot 41
bot 16 gives low to bot 147 and high to bot 106
value 11 goes to bot 2
bot 203 gives low to bot 125 and high to bot 197
value 5 goes to bot 18
bot 49 gives low to bot 160 and high to bot 83
bot 112 gives low to bot 39 and high to bot 32
bot 129 gives low to bot 186 and high to bot 112
bot 68 gives low to output 7 and high to bot 87
bot 201 gives low to bot 56 and high to bot 124
bot 56 gives low to bot 83 and high to bot 207
bot 38 gives low to bot 89 and high to bot 136
bot 194 gives low to bot 40 and high to bot 105
bot 15 gives low to bot 1 and high to bot 50
bot 47 gives low to bot 6 and high to bot 10
bot 63 gives low to bot 205 and high to bot 139
bot 176 gives low to bot 30 and high to bot 138
value 41 goes to bot 24
bot 71 gives low to bot 165 and high to bot 185
bot 84 gives low to bot 209 and high to bot 129
bot 204 gives low to bot 61 and high to bot 91
bot 152 gives low to bot 163 and high to bot 166
bot 139 gives low to bot 45 and high to bot 5
bot 100 gives low to bot 55 and high to bot 178
bot 81 gives low to bot 95 and high to bot 188
bot 163 gives low to output 12 and high to bot 114
bot 133 gives low to bot 124 and high to bot 13
bot 206 gives low to bot 37 and high to bot 21
bot 23 gives low to bot 116 and high to bot 82
bot 134 gives low to bot 195 and high to bot 202
bot 73 gives low to bot 54 and high to bot 22
bot 99 gives low to bot 172 and high to bot 204
bot 192 gives low to bot 34 and high to bot 115
bot 8 gives low to bot 171 and high to bot 60
bot 142 gives low to bot 199 and high to bot 28
bot 41 gives low to bot 44 and high to bot 140
bot 0 gives low to bot 71 and high to bot 52
bot 154 gives low to bot 148 and high to bot 33
bot 62 gives low to bot 66 and high to bot 65
bot 160 gives low to bot 175 and high to bot 153
value 73 goes to bot 111
bot 164 gives low to bot 141 and high to bot 9
bot 202 gives low to bot 99 and high to bot 19
bot 12 gives low to bot 46 and high to bot 48
bot 170 gives low to bot 190 and high to bot 194
bot 27 gives low to bot 101 and high to bot 200
bot 148 gives low to bot 127 and high to bot 182
bot 147 gives low to bot 57 and high to bot 96
bot 65 gives low to bot 78 and high to bot 46
bot 125 gives low to bot 82 and high to bot 79
bot 86 gives low to output 10 and high to output 18
bot 105 gives low to bot 108 and high to bot 98
bot 103 gives low to output 15 and high to bot 199
bot 14 gives low to bot 65 and high to bot 12
bot 132 gives low to bot 113 and high to bot 94
value 53 goes to bot 102
bot 136 gives low to bot 170 and high to bot 196
bot 55 gives low to bot 105 and high to bot 145
bot 36 gives low to bot 67 and high to bot 126
bot 92 gives low to bot 177 and high to bot 101
bot 161 gives low to output 17 and high to bot 208
bot 32 gives low to bot 180 and high to bot 123
bot 179 gives low to output 19 and high to bot 86
bot 90 gives low to bot 76 and high to bot 205
bot 21 gives low to bot 103 and high to bot 142
bot 174 gives low to output 11 and high to bot 30
bot 46 gives low to bot 63 and high to bot 48
bot 94 gives low to bot 193 and high to bot 77
bot 70 gives low to bot 21 and high to bot 131
bot 29 gives low to bot 181 and high to bot 144
bot 82 gives low to bot 158 and high to bot 135
bot 33 gives low to bot 182 and high to bot 0
bot 144 gives low to bot 192 and high to bot 141
bot 197 gives low to bot 79 and high to bot 20
value 17 goes to bot 2
bot 137 gives low to bot 41 and high to bot 1
bot 121 gives low to bot 8 and high to bot 25
bot 40 gives low to bot 15 and high to bot 108
bot 83 gives low to bot 153 and high to bot 23
value 2 goes to bot 64
value 47 goes to bot 184
bot 188 gives low to bot 62 and high to bot 14
bot 171 gives low to bot 68 and high to bot 59
bot 39 gives low to bot 143 and high to bot 180
bot 157 gives low to output 2 and high to bot 179
bot 126 gives low to bot 156 and high to bot 76
value 19 goes to bot 187
bot 60 gives low to bot 59 and high to bot 57
bot 104 gives low to bot 188 and high to bot 4
bot 74 gives low to bot 183 and high to bot 113
bot 102 gives low to bot 187 and high to bot 173
bot 120 gives low to output 9 and high to bot 177
bot 111 gives low to bot 134 and high to bot 107
bot 155 gives low to bot 109 and high to bot 34
bot 19 gives low to bot 204 and high to bot 91
bot 145 gives low to bot 98 and high to bot 155
value 3 goes to bot 150
bot 107 gives low to bot 202 and high to bot 19
value 43 goes to bot 195
bot 97 gives low to bot 129 and high to bot 168
bot 48 gives low to bot 139 and high to bot 5
bot 58 gives low to bot 17 and high to bot 27
bot 149 gives low to bot 75 and high to bot 58
bot 44 gives low to bot 3 and high to bot 53
bot 186 gives low to bot 191 and high to bot 39
bot 2 gives low to bot 111 and high to bot 107
bot 22 gives low to bot 176 and high to bot 198
bot 167 gives low to bot 43 and high to bot 206
value 59 goes to bot 6
bot 135 gives low to bot 29 and high to bot 146
bot 166 gives low to bot 114 and high to bot 167
bot 5 gives low to bot 97 and high to bot 168
bot 205 gives low to bot 31 and high to bot 45
bot 17 gives low to bot 92 and high to bot 27
bot 3 gives low to bot 118 and high to bot 128
bot 209 gives low to bot 85 and high to bot 186
bot 30 gives low to output 1 and high to bot 151
value 67 goes to bot 69
bot 193 gives low to bot 22 and high to bot 35
bot 196 gives low to bot 194 and high to bot 55
bot 4 gives low to bot 14 and high to bot 12
bot 98 gives low to bot 154 and high to bot 109
bot 184 gives low to bot 102 and high to bot 190
bot 180 gives low to bot 26 and high to bot 123
bot 200 gives low to bot 179 and high to bot 86
bot 185 gives low to bot 36 and high to bot 110
bot 52 gives low to bot 185 and high to bot 66
bot 123 gives low to bot 149 and high to bot 58
bot 88 gives low to bot 51 and high to bot 54
bot 208 gives low to output 4 and high to bot 130
bot 153 gives low to bot 117 and high to bot 116
bot 131 gives low to bot 142 and high to bot 75
bot 54 gives low to bot 174 and high to bot 176
bot 91 gives low to bot 133 and high to bot 13
bot 130 gives low to output 0 and high to bot 51
bot 140 gives low to bot 53 and high to bot 162
bot 165 gives low to bot 77 and high to bot 36
bot 61 gives low to bot 201 and high to bot 133
bot 57 gives low to bot 152 and high to bot 169
bot 182 gives low to bot 11 and high to bot 71
bot 37 gives low to output 20 and high to bot 103
bot 199 gives low to output 13 and high to bot 120
bot 59 gives low to bot 87 and high to bot 152
bot 181 gives low to bot 155 and high to bot 192
bot 178 gives low to bot 145 and high to bot 181
bot 31 gives low to bot 106 and high to bot 84
bot 122 gives low to bot 150 and high to bot 160
bot 25 gives low to bot 60 and high to bot 147
bot 189 gives low to bot 206 and high to bot 70
value 23 goes to bot 47
bot 128 gives low to bot 72 and high to bot 183
bot 34 gives low to bot 42 and high to bot 81
bot 43 gives low to output 14 and high to bot 37
bot 66 gives low to bot 110 and high to bot 78
bot 101 gives low to bot 157 and high to bot 200
value 71 goes to bot 89
bot 198 gives low to bot 138 and high to bot 8
bot 106 gives low to bot 96 and high to bot 209
value 31 goes to bot 159
bot 117 gives low to bot 196 and high to bot 100
bot 159 gives low to bot 122 and high to bot 49
bot 168 gives low to bot 112 and high to bot 32
bot 187 gives low to bot 64 and high to bot 137
bot 79 gives low to bot 135 and high to bot 20
bot 35 gives low to bot 198 and high to bot 121
bot 80 gives low to bot 162 and high to bot 127
bot 1 gives low to bot 140 and high to bot 80
bot 45 gives low to bot 84 and high to bot 97
bot 108 gives low to bot 50 and high to bot 154
bot 115 gives low to bot 81 and high to bot 104
bot 118 gives low to bot 208 and high to bot 72
bot 190 gives low to bot 173 and high to bot 40
bot 10 gives low to bot 7 and high to bot 201
bot 169 gives low to bot 166 and high to bot 93
value 29 goes to bot 38
bot 9 gives low to bot 104 and high to bot 4
value 37 goes to bot 122
bot 150 gives low to bot 38 and high to bot 175
bot 75 gives low to bot 28 and high to bot 17
value 13 goes to bot 134
bot 124 gives low to bot 207 and high to bot 203
bot 109 gives low to bot 33 and high to bot 42
value 7 goes to bot 161
bot 93 gives low to bot 167 and high to bot 189
bot 191 gives low to bot 189 and high to bot 143
bot 146 gives low to bot 144 and high to bot 164
bot 141 gives low to bot 115 and high to bot 9
bot 162 gives low to bot 74 and high to bot 132
bot 87 gives low to output 3 and high to bot 163
bot 7 gives low to bot 49 and high to bot 56
bot 183 gives low to bot 88 and high to bot 73
bot 76 gives low to bot 16 and high to bot 31

@ -1,44 +0,0 @@
#lang br/quicklang
;; http://adventofcode.com/2016/day/10
(provide read-syntax)
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,@(for/list ([str (in-lines port)]
#:when (not (equal? str "")))
`(handle ,@(string-split str))))))
(define chip-comparison-key '(17 61))
(define-macro (mb . ARGS)
#'(#%module-begin
(begin . ARGS)
(displayln
(for/first ([(k v) (in-hash gates)]
#:when (equal? (sort (apply eval-gate k) <)
(sort chip-comparison-key <)))
k))
(displayln (for/product ([i (in-range 3)])
(gate-low "output" (~a i))))))
(provide (rename-out [mb #%module-begin]))
(define gates (make-hash))
(define-macro-cases handle
[(_ "value" VAL "goes" "to" TYPE NUM)
#'(hash-update! gates (list TYPE NUM) (λ (val) (cons (λ () (let ([v VAL])
(if (string? v)
(string->number v)
v))) val)) empty)]
[(_ "bot" BOT "gives" "low" "to" LOW-TYPE LOW-NUM "and" "high" "to" HIGH-TYPE HIGH-NUM)
#'(begin
(handle "value" (gate-low "bot" BOT) "goes" "to" LOW-TYPE LOW-NUM)
(handle "value" (gate-high "bot" BOT) "goes" "to" HIGH-TYPE HIGH-NUM))])
(provide handle)
(require sugar/cache)
(define/caching (eval-gate type num)
(for/list ([proc (in-list (hash-ref gates (list type num)))])
(proc)))
(define (gate-low type num) (car (sort (eval-gate type num) <)))
(define (gate-high type num) (car (sort (eval-gate type num) >)))

@ -1,7 +0,0 @@
#lang reader "lang.rkt"
value 5 goes to bot 2
bot 2 gives low to bot 1 and high to bot 0
value 3 goes to bot 1
bot 1 gives low to output 1 and high to bot 0
bot 0 gives low to output 2 and high to output 0
value 2 goes to bot 2

@ -1,24 +0,0 @@
#lang reader "lang.rkt"
cpy 1 a
cpy 1 b
cpy 26 d
jnz c 2
jnz 1 5
cpy 7 c
inc d
dec c
jnz c -2
cpy a c
inc a
dec b
jnz b -2
cpy c b
dec d
jnz d -6
cpy 16 c
cpy 17 d
inc a
dec d
jnz d -2
dec c
jnz c -5

@ -1,41 +0,0 @@
#lang br/quicklang
;; http://adventofcode.com/2016/day/12
(provide read-syntax
(rename-out [mb #%module-begin])
cpy inc dec jnz)
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,@(for/list ([str (in-lines port)]
#:when (not (zero? (string-length str))))
(format-datum '(~a) str)))))
(define-macro (mb . INSTS)
#'(#%module-begin
(define insts (vector . INSTS))
(define regs (make-hash '((a . 0)(b . 0)(c . 0)(d . 0))))
(println (solve insts regs))
(hash-set! regs 'c 1)
(println (solve insts regs))))
(define (solve insts regs)
(let loop ([ptr 0])
(if (>= ptr (vector-length insts))
regs
(loop (+ ptr (let ([move ((vector-ref insts ptr) regs)])
(if (void? move) 1 move)))))))
(define-macro (cpy X Y)
#'(λ (regs)
(define val (if (number? 'X) 'X (hash-ref regs 'X)))
(hash-set! regs 'Y val)))
(define-macro (inc X) #'(λ (regs) (hash-update! regs 'X add1)))
(define-macro (dec X) #'(λ (regs) (hash-update! regs 'X sub1)))
(define-macro (jnz X Y)
#'(λ (regs)
(when (not (zero? (if (number? 'X) 'X (hash-ref regs 'X))))
Y)))

@ -1,7 +0,0 @@
#lang reader "lang.rkt"
cpy 41 a
inc a
inc a
dec a
jnz a 2
dec a

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
1358

@ -1,58 +0,0 @@
#lang br/quicklang
;; http://adventofcode.com/2016/day/13
(require graph)
(provide read-syntax
(rename-out [mb #%module-begin]))
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,(string->number (string-trim (port->string port))))))
(define-macro (mb NUM)
#'(#%module-begin
(solve 50 NUM) ; 50 is arbitrarily large space to search
(solve2 NUM)))
(define starting-pt 1+1i)
(define (solve dim num)
(define open? (make-open-pred num))
(define g (undirected-graph (list starting-pt)))
(for* ([row (in-range dim)]
[col (in-range dim)]
[p (in-value (+ col (* +i row)))]
#:when (open? p))
(when (open? (+ p 1)) (add-edge! g p (+ p 1)))
(when (open? (+ p +i)) (add-edge! g p (+ p +i))))
(define path (fewest-vertices-path g 1+1i 31+39i))
(displayln (and path (sub1 (length path)))))
(define (solve2 num)
(define open? (make-open-pred num))
(define (nonnegative? pt) (and (not (negative? (real-part pt)))
(not (negative? (imag-part pt)))
pt))
(let take-step ([all-visited-pts empty]
[last-visited-pts (list starting-pt)]
[count 0])
(if (= count 50)
(length (remove-duplicates (append all-visited-pts last-visited-pts)))
(take-step
(append last-visited-pts all-visited-pts)
(flatten
(for*/list ([p (in-list last-visited-pts)]
[next-p (in-list (map (curry + p) '(1 -1 +i -i)))]
#:when (and (nonnegative? next-p)
(open? next-p)
(not (member next-p all-visited-pts))))
next-p))
(add1 count)))))
(define (make-open-pred num)
(λ (pt)
(define col (real-part pt))
(define row (imag-part pt))
(define sum
(+ (* col col) (* 3 col) (* 2 col row) row (* row row) num))
(even? (length (regexp-match* "1" (format "~b" sum))))))

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
10

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
ahsbgdzn

@ -1,41 +0,0 @@
#lang br/quicklang ;; http://adventofcode.com/2016/day/14
(require openssl/md5)
(provide read-syntax
(rename-out [mb #%module-begin]))
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,(string-trim (port->string port)))))
(define-macro (mb SALT)
#'(#%module-begin
(solve SALT)
(parameterize ([key-stretch 2017])
(solve SALT))))
(define key-stretch (make-parameter 0))
(require sugar/cache)
(define/caching (get-hash salt i)
(for/fold ([str (string-downcase (format "~a~a" salt i))])
([i (in-range (key-stretch))])
(md5 (open-input-string str))))
(define (valid? hash salt i)
(let* ([triple-char-pat (pregexp "(.)\\1\\1")]
[result (regexp-match triple-char-pat hash)])
(and result
(let* ([repeated-char (cadr result)]
[penta-char-pat (pregexp (format "(~a)\\1\\1\\1\\1" repeated-char))])
(for/or ([idx (in-range (add1 i) (+ 1001 i))])
(regexp-match penta-char-pat (get-hash salt idx)))))))
(define (solve salt)
(caar
(for/fold ([keys empty])
([i (in-naturals)]
#:break (= (length keys) 64))
(define hash (get-hash salt i))
(if (valid? hash salt i)
(report* i hash (cons (cons i hash) keys))
keys))))

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
abc

@ -1,8 +0,0 @@
#lang reader "lang.rkt"
Disc #1 has 5 positions; at time=0, it is at position 2.
Disc #2 has 13 positions; at time=0, it is at position 7.
Disc #3 has 17 positions; at time=0, it is at position 10.
Disc #4 has 3 positions; at time=0, it is at position 2.
Disc #5 has 19 positions; at time=0, it is at position 9.
Disc #6 has 7 positions; at time=0, it is at position 0.
Disc #7 has 11 positions; at time=0, it is at position 0.

@ -1,7 +0,0 @@
#lang reader "lang.rkt"
Disc #1 has 5 positions; at time=0, it is at position 2.
Disc #2 has 13 positions; at time=0, it is at position 7.
Disc #3 has 17 positions; at time=0, it is at position 10.
Disc #4 has 3 positions; at time=0, it is at position 2.
Disc #5 has 19 positions; at time=0, it is at position 9.
Disc #6 has 7 positions; at time=0, it is at position 0.

@ -1,26 +0,0 @@
#lang br/quicklang ;; http://adventofcode.com/2016/day/15
(provide read-syntax
(rename-out [mb #%module-begin]))
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,@(for/list ([line (in-list (string-split (port->string port) "\n"))])
`(disc ,@(map string->number (regexp-match* #px"\\d+" line)))))))
(define-macro (mb . DISCS)
#'(#%module-begin
(solve . DISCS)))
(define-macro (solve . DISCS)
(with-pattern ([(DISC-ID ...) (generate-temporaries #'DISCS)]
[(DISC-SLOTS ...) #'DISCS])
#'(for/first ([DISC-ID (in-cycle DISC-SLOTS)] ...
[i (in-naturals)]
#:when (= 0 DISC-ID ...))
i)))
(require sugar/list)
(define-macro (disc TIME-OFFSET SIZE _ START)
#'(shift-left-cycle (range SIZE) (+ START TIME-OFFSET)))
(provide disc)

@ -1,3 +0,0 @@
#lang reader "lang.rkt"
Disc #1 has 5 positions; at time=0, it is at position 4.
Disc #2 has 2 positions; at time=0, it is at position 1.

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
35651584, 10010000000110000

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
272, 10010000000110000

@ -1,39 +0,0 @@
#lang br/quicklang ;; http://adventofcode.com/2016/day/16
(require openssl/md5)
(provide read-syntax
(rename-out [mb #%module-begin]))
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,@(string-split (string-trim (port->string port)) ", "))))
(define-macro (mb SIZE INIT)
#'(#%module-begin
(time (display (list->string (checksum (fill-disk (string->list INIT) (string->number SIZE))))))))
(define (dragonize cs)
(append cs '(#\0)
(for/list ([c (in-list (reverse cs))])
(if (eqv? c #\1)
#\0
#\1))))
(define (fill-disk init size)
(let loop ([cs init])
(if (>= (length cs) size)
(take cs size)
(loop (dragonize cs)))))
(define (checksum cs)
(define cvec (list->vector cs))
(let loop ([cvec cvec])
(match (vector-length cvec)
[(? odd?) (vector->list cvec)]
[len
(define newvec (make-vector (/ len 2) #\0))
(for ([idx (in-range 0 (vector-length cvec) 2)]
#:when (char=? (vector-ref cvec idx) (vector-ref cvec (add1 idx))))
(vector-set! newvec (/ idx 2) #\1))
(loop newvec)])))

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
20, 10000

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
12, 110010110100

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
hhhxzeay

@ -1,76 +0,0 @@
#lang br/quicklang ;; http://adventofcode.com/2016/day/17
(require openssl/md5 sugar/cache)
(provide read-syntax
(rename-out [mb #%module-begin]))
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,(string-trim (port->string port)))))
(define-macro (mb STR)
#'(#%module-begin
(displayln (solve-shortest STR))
(displayln (solve-longest STR))))
(define (path->dirs path)
(regexp-match* #rx"[UDLR]" path))
(define (on-grid? pos)
(and (<= 0 (real-part pos) 3)
(<= 0 (imag-part pos) 3)))
(define/caching (follow-path path)
(define result (regexp-match #rx"^(.*)([UDLR])$" path))
(define end
(cond
[result
(match-define (list _ prefix suffix) result)
(+ (follow-path prefix) (case suffix
[("D") +i]
[("U") -i]
[("L") -1]
[("R") 1]))]
[else 0]))
(and (on-grid? end) end))
(define/caching (get-hash str)
(md5 (open-input-string str)))
(define (take-step path)
(define hash (get-hash path))
(define prefix (car (regexp-match #rx"^...." hash)))
(define possible-dirs
(for/list ([dir (in-list (list "U" "D" "L" "R"))]
[c (in-string prefix)]
#:when (member c '(#\b #\c #\d #\e #\f)))
dir))
(for*/list ([dir (in-list possible-dirs)]
[path+dir (in-value (string-append path dir))]
#:when (follow-path path+dir))
path+dir))
(define vault 3+3i)
(define (solve-shortest str)
(let loop ([paths (list str)])
(define stepped-paths (append-map take-step paths))
(if (empty? stepped-paths)
'no-solution
(or (for/first ([sp (in-list stepped-paths)]
#:when (= vault (follow-path sp)))
(apply string-append (path->dirs sp)))
(loop stepped-paths)))))
(define (solve-longest str)
(length
(path->dirs
(argmax string-length
(let loop ([paths (list str)][vault-paths empty][i 0])
(cond
[(empty? paths) vault-paths]
[else
(define stepped-paths (append-map take-step paths))
(define-values (new-vault-paths other-paths)
(partition (λ (sp) (= vault (follow-path sp))) stepped-paths))
(loop other-paths (if (pair? new-vault-paths) new-vault-paths vault-paths) (add1 i))]))))))

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
hijkl

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
.^^^.^.^^^.^.......^^.^^^^.^^^^..^^^^^.^.^^^..^^.^.^^..^.^..^^...^.^^.^^^...^^.^.^^^..^^^^.....^....

@ -1,30 +0,0 @@
#lang br/quicklang ;; http://adventofcode.com/2016/day/18
(provide read-syntax
(rename-out [mb #%module-begin]))
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,(string-trim (port->string port)))))
(define-macro (mb STR)
#'(#%module-begin
(define (traps cs)
(length (filter (λ (c) (char=? #\. c)) cs)))
(let loop ([cs (string->list STR)]
[count (traps (string->list STR))]
[i 0])
(if (= i 399999) ; number of rows
count
(let* ([result (next-cs cs)]
[this-count (traps result)])
(loop result (+ this-count count) (add1 i)))))))
(define (next-cs cs)
(define adj-cs (append (list #\.) cs (list #\.)))
(for/list ([c1 (in-list adj-cs)]
[c2 (in-list (cdr adj-cs))]
[c3 (in-list (cddr adj-cs))])
(case (list c1 c2 c3)
[((#\^ #\^ #\.) (#\. #\^ #\^) (#\^ #\. #\.) (#\. #\. #\^)) #\^]
[else #\.])))

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
.^^.^.^^^^

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
3017957

@ -1,33 +0,0 @@
#lang br/quicklang ;; http://adventofcode.com/2016/day/19
(provide read-syntax
(rename-out [mb #%module-begin]))
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,(string-trim (port->string port)))))
(define-macro (mb NUM-STR)
#'(#%module-begin
#;(displayln (solve (string->number NUM-STR) #f))
(displayln (solve (string->number NUM-STR) #t))))
(define (idx-after vec x)
(or
(for/first ([idx (in-range (modulo (add1 x) (vector-length vec)) (vector-length vec))]
#:when (vector-ref vec idx))
idx)
(idx-after vec -1)))
(define (solve num [circle? #f])
(define elves (make-vector num #t))
(let loop ([taker 0][elves-left num])
(cond
[(= elves-left 2) (add1 taker)]
[else
(define giver (for/fold ([elf taker])
([i (in-range (if circle? (floor (/ elves-left 2)) 1))])
(idx-after elves elf)))
(vector-set! elves giver #f)
(loop (idx-after elves taker) (sub1 elves-left))])))

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
5

@ -1,959 +0,0 @@
#lang reader "lang.rkt"
420604416-480421096
172102328-195230700
613677102-639635955
1689844284-1724152701
3358865073-3365629764
1333423844-1344930397
2519115700-2535290065
698684483-723211151
979757052-1003200781
4165068842-4190472815
2020267004-2045214369
2979897715-3004836346
2110213890-2115506975
2970017340-2973461626
2236378365-2258142409
3423992974-3426380317
1462489107-1490036931
2189940955-2198476022
2417413696-2430182746
3624276792-3633790184
1005063612-1009015074
1061038892-1061410454
2276099915-2310172070
1202572862-1215598809
1783724555-1785267178
1262810964-1264200367
592924330-594021870
1981502514-2001291898
3639371125-3691832997
751455858-758389721
575870144-588215938
2707934395-2711294609
2271125072-2271532092
723211153-745881341
291750706-293834948
3846273818-3846421786
1798292566-1840652756
907920869-908496244
2979008391-2984333350
3120502195-3140695376
1316734884-1323407408
4013388816-4015102290
4211041074-4243535195
3264591092-3270165984
1356324132-1369836240
3500337320-3511856741
2675082203-2680516758
269092398-286582232
9214023-16864642
3496293771-3507984426
789173169-790658193
1589657426-1592447273
3018889533-3040428852
3190582871-3209497449
2582019510-2592221443
452701865-462658183
581072273-585497818
2885687081-2887027444
405199391-406037773
1926405498-1961345770
1591447330-1595803034
2075061753-2117082859
2738757089-2739984421
1758742902-1766649306
1598451138-1603784829
904873440-933144524
743128701-751089192
2946510215-2953128493
4258067806-4258357961
2162946809-2194271963
2502065462-2529412983
1794208357-1812728725
2399604728-2399751734
2675639614-2686964361
1243509131-1261449357
1334629713-1360716911
490307573-506198210
3865783894-3882438935
1355288427-1356825096
4080632471-4085694027
1069989320-1079328173
1261530547-1263095027
1864453415-1864536898
500660752-513276733
859810764-865812062
4054243009-4055337105
795048590-839560602
2708730392-2712322515
3642043390-3653718654
2350724230-2355301182
663974525-698684482
734062708-734919764
2004656983-2006812551
987361385-989501665
3621608802-3622545302
1133546243-1135802698
147516310-150573031
2271038167-2271338460
3912004191-3947848898
2301820906-2338108229
2361989797-2363651982
3867365-5819500
3702314080-3703559974
4134127328-4135370466
756306610-770493891
2079529322-2090642509
3981814383-3992802961
4031189022-4042698219
1560502437-1565573103
408025952-414757361
137808459-150920914
3393581407-3411447948
2151896844-2162946807
4201010521-4201471695
3713302577-3725874062
142387170-154849830
2166232094-2205567227
3291340751-3298984606
938375497-943547413
4055961596-4110367884
136677359-137609692
3037464396-3044180771
2691576247-2691980924
1009015076-1045645521
789113477-790592023
899519940-911794289
2137437783-2155776766
1399083500-1402900021
1469947218-1479256900
2944855925-2953686693
2910064491-2920533014
144173340-148094230
2360899146-2362380838
2013535209-2049558890
1109489564-1124585673
2756379565-2767828753
1060568096-1073644115
1691100485-1728041197
1592871439-1600233767
1516639981-1518466748
2098130915-2098541161
3704291842-3706581331
962586078-1003763244
527697837-533713889
1856931843-1873776214
2399693233-2399917980
2055406323-2063623078
240041628-275447727
1513843540-1521844727
1648487379-1649719916
2087056931-2102042862
3717079814-3719847466
1500211877-1510297315
407413483-415066321
3596458788-3618072868
218197655-228951780
643659026-656047997
1603704290-1614650204
2358880422-2366638177
3004836348-3015765511
3046845638-3046851095
3305333257-3307471995
2401731427-2405370552
4017360677-4027723482
557056664-575870142
609440078-615655979
1139493162-1151170381
428962141-483384245
2293357845-2334971307
3091700546-3119568633
1864347502-1864482912
1749751448-1750782554
420140812-420604414
1317387394-1324899402
3623998911-3629315327
4150451309-4152623876
434323808-454005042
1858560120-1864845209
2009686203-2018214121
605094405-611343970
4256094197-4258455116
1177692263-1227426205
4011096895-4014427778
39304785-47673299
498903368-524596608
605553131-610691072
3048424158-3066041482
153238649-154812518
1317950434-1324244958
3355309684-3360596455
2409598473-2428168849
2946469763-2949510201
543235050-544883779
1079837788-1081762723
3600722024-3622452566
4257178957-4258853576
1922845451-1979527610
1162924278-1217904821
1854156984-1867582222
2573163840-2578960281
1159211723-1163517189
1490036932-1500211875
482764386-488744315
235990048-265498430
1714315712-1724421861
958737616-962586076
790658195-851798647
2019736814-2021017547
2162802-8327007
787368380-789171975
3467221232-3469771790
3416813106-3439834312
906735025-908389759
64489226-70116603
1908532718-1922845449
1234754192-1245016567
3287320754-3296095689
3031537491-3039742613
3769892977-3785548652
1645238060-1655418015
612066331-620597775
2905104738-2920311121
2014785668-2022435799
3844301667-3844798343
2828382380-2863199622
2676931732-2682206642
171451625-218197654
2153052343-2156659109
610691073-636761246
2604642896-2615712599
1589965559-1603704289
2935029177-2942217574
186697135-187447861
1986224726-1986550701
770493893-789113476
3557491384-3562596711
2898302199-2920593201
934606912-955515749
1855368372-1872942514
2570443173-2571696675
186869593-188420012
1029668904-1048703657
3284676192-3295161434
3955266215-3977053319
2476141495-2479329360
4276025347-4283606977
534415917-569504381
2263536298-2268109489
1200129331-1210019228
3971350693-3990304290
489813454-495749644
1743364359-1768398619
3924729773-3931294732
105847925-111482255
794582284-818505469
1811415389-1838855885
1890243027-1898852651
1986067335-1986471617
104143552-106052965
772703103-776359533
3911720342-3933921905
395790945-398705617
2258142410-2267980008
613561861-616915116
3310135636-3330660281
2061419260-2061539636
2624281089-2626673183
1877477043-1884442706
2933979446-2949991401
543661669-563658372
197557686-226037744
613176712-618285697
4265278830-4278950571
3556799964-3560580457
1116126837-1122976017
1187703503-1205238834
983871724-1001238917
3887842382-3903790188
2641349279-2643172883
3583057749-3587680646
2601030398-2608486868
4157885743-4168988833
1162830362-1167726097
2514929623-2525222702
3291107480-3295972867
2151518630-2154613192
3046851552-3046878017
325969068-334085941
189084100-189886055
3650880042-3683085757
2453733029-2471942669
1662489961-1666626344
44287139-49449042
1400982930-1421830420
2546953607-2554587873
2639634659-2672001824
641036962-646629131
1236906461-1244507638
1331784152-1367083336
506198211-527697835
255997224-260755488
2588563930-2611385666
3599734818-3614926593
2285367719-2289556931
1088850011-1109811497
3586236383-3589929173
2399595142-2399763869
1385676603-1390665612
3513146704-3513797148
2738224131-2740166097
2869889938-2880215300
2005865698-2011251487
3046872422-3055338791
2940602932-2944294443
3711823219-3713306331
327670367-327738352
2793738-2841656
3807120966-3836270308
3711433856-3712911001
592896405-592954516
688452447-718340962
2063048458-2068052789
4162162406-4167839641
2049558892-2064994876
20968691-38549168
2497497428-2510517683
1583336096-1589657424
1143974607-1155771407
2381952303-2397368087
2009571163-2013286329
942853383-944865487
951722030-952400166
200197723-215328622
3106021045-3120502193
4140023055-4149617577
1668895062-1671431568
2626673185-2653038422
1841289175-1846422485
335754679-386244011
4062044458-4068497802
331356502-332799273
3307471997-3371549847
2018475560-2021933871
150920915-171451623
2194931559-2195514567
4089933248-4090707368
4157463945-4165762209
4100746531-4104107984
3411013858-3416813104
3374946441-3393581406
2552376718-2552429766
725947111-751643934
2473774976-2490564633
3566405121-3581497459
2683823262-2693090640
2734605142-2742827358
3441986164-3442398493
1524044927-1541206072
4254311927-4257287997
2411062371-2425081809
3666577856-3698298724
440803690-480698287
1614650206-1663590083
4257850447-4258201271
2637194180-2658593345
1269282838-1312761281
2522666665-2525818042
141503475-143914340
364934589-385277316
24026223-27879741
3557755338-3564098914
2943664323-2954588780
1571687539-1572996177
957113399-959367378
3585168986-3592657057
1356305980-1369637926
3630349604-3639371123
2570730499-2575580881
2459213065-2486172460
814620199-829988953
1983439516-1984861942
3800496806-3833569562
2841657-3867364
1706481656-1713944571
454683370-473903295
2697862561-2701781892
1451637419-1454646761
501104716-523461517
3304490686-3306418502
3846192081-3846304020
4191662000-4235899383
4096574372-4111227622
480421097-485653417
3762938052-3790582378
701786054-705861635
1214808315-1215006746
364434099-382831881
3713276399-3714579266
1336679025-1347883722
1979527611-1979886571
2090642510-2129888576
3624144511-3633098213
2097515227-2098217363
1851357581-1859249610
3021641379-3030459043
860720178-867061373
4053454232-4055923518
591971809-592927822
899570088-914232296
3171743426-3178833535
1767780850-1769461322
1648285748-1664437761
2756023351-2772357724
1841385621-1851357579
1764427585-1768013247
3968976986-3979761882
204898529-205069325
1192059065-1225447718
204967480-205140904
3191614963-3205521380
2687221525-2690406018
3713502419-3714707176
859460566-860824071
2761514667-2765543032
3357906031-3364349724
3275219921-3282195064
3391484605-3394594750
406732797-420140811
4273899514-4281205511
3083762422-3113295478
2193854781-2195333482
4203706684-4251257733
384194709-397192696
3591265505-3596458786
1102914397-1124045826
2310172071-2344149963
3066041483-3069828748
2635666365-2641585945
1060740916-1061127459
3774707512-3782147573
1743737707-1779166247
246638755-280110373
851798648-859460564
605075197-611133696
2293962494-2298136342
3460740393-3471166317
3280182044-3284676190
14791161-17348573
2691399120-2691637915
1728558700-1733098513
3461545676-3473725502
3751769544-3774673277
772066259-780246746
3356968359-3362991077
1605924820-1613022664
4015102292-4053454231
4206207007-4214797098
1335854520-1363709511
823795603-854558918
3290449369-3304490685
2540570240-2570730498
749722515-756306609
3442398495-3465001104
4229168442-4235745839
150802546-151838496
1380772851-1392292807
4190472817-4203706683
1466784263-1498319230
50105778-54260393
0-2793737
2956453641-2979008390
2552426525-2553141195
3069828750-3083762421
2800389226-2809306363
2275201948-2301909928
670647362-674039479
2639146472-2642836023
3846421788-3895249037
326561664-329333434
188182835-189612566
4253790781-4254533752
1804500603-1806558363
2405370554-2428432104
3608464545-3623946707
2353553540-2360491647
1325917396-1352060617
3577002908-3585168985
1864487525-1877898802
2535505356-2540570238
2012841949-2013535208
4122773972-4147066021
2221253241-2227916854
3996989806-4013388815
1118808237-1118876034
406730726-412027046
2830200680-2841462745
4009639150-4012108169
3387543681-3395550318
2412794571-2444576238
1022924735-1024398890
643270862-663974523
907974347-909753482
4148481231-4151899399
2061333796-2061422413
3844115908-3844704314
296503398-319176563
2743436711-2744991704
1024231444-1050533093
2976066221-2982350583
3913440938-3921340086
2546064716-2552639130
647510635-649788184
1861939256-1878905542
1119182827-1127962138
4176776277-4185432506
1728041199-1736154206
1905044208-1915920572
1860265438-1881626361
2934389290-2943526097
1068791968-1074539223
3124236778-3149982255
286582234-304243327
2100258789-2123748546
3432475911-3432766967
82082661-88073370
2327755908-2338617065
734803505-734970787
4225862764-4241303856
1352060618-1372691007
2552301217-2552408303
3873980245-3908789488
734733934-734933525
913241510-934606910
1746136669-1783130039
3478455269-3482503593
2300261034-2307782855
3248901770-3254155181
651662856-660523209
1118827933-1118873914
3495324533-3508390070
3614090639-3630342601
4152623878-4165068841
4251257735-4252768738
740064940-744628705
2663526-7317845
3173018368-3173033650
840243299-850630387
874982768-893955653
4195369814-4215042523
3712999015-3713605711
3167305950-3179505229
68345070-74894937
3467499056-3471357060
623795984-626879791
533357402-536413407
3551720149-3555281211
3933921906-3941710756
1732833292-1736931431
1172618521-1194746246
2011668991-2019214712
4173423213-4185833738
4129967821-4130008117
2025432624-2029847095
1663590084-1670239922
1677571493-1698026005
1167726098-1232818725
3785872097-3790663631
3140695377-3166258968
2971784945-2974988576
538998996-562454834
4225819511-4229474556
610567638-613651106
2462186480-2480650826
75973934-91434042
2688408664-2707934393
228951782-267685402
1783130040-1784614561
1872942515-1880846327
1262147457-1263932136
4024512115-4053495116
579938959-585172735
602874206-610295015
403990885-414323983
1730191207-1736990500
3623946708-3627097897
1350246834-1362835856
232836175-284581763
1569378906-1570007725
3026358814-3033526682
1636906011-1655244443
1346904336-1351608843
363534678-372420875
3465001105-3471897467
3934746154-3952361164
7208229-13983082
3469317144-3474090343
4280938719-4290730270
2020957337-2022484776
1692136283-1719643620
4032740692-4053771021
2972345930-2975812534
140067848-159037627
3630086418-3634626029
3252572678-3274451634
77141551-85341019
692066237-700847528
3552713357-3558885449
3075915215-3085817045
4162664504-4169419288
124626946-135046727
1884442708-1905044207
3703243550-3704832207
2220909545-2224015721
2692074751-2692885915
1069864185-1073578735
2691786564-2692864691
1737853571-1745347739
95461456-115187423
143224398-144838969
2138286928-2151694571
867061374-882471488
983262449-1001173152
4129969371-4130354697
3470641201-3487201657
2051110734-2064915382
747750272-758258548
3333190532-3365085965
3015765512-3029456808
3265304770-3277560812
546123550-551416184
3622334530-3628645995
1927820889-1967493838
3871603105-3889565720
529055056-557056663
2061323456-2061416792
614047849-615723475
1421830422-1438217488
893955655-899822408
2836598019-2847622397
3513797149-3566405119
2073594551-2086857816
3848735454-3851859716
2350779348-2362218008
1157368724-1159211721
1472023233-1491740523
409000134-412025522
973866742-991888713
1668403284-1669772137
499560567-510329898
267685403-276025076
1214847765-1215067953
2969721904-2972007967
585291343-591565800
1232818727-1248762127
2829953392-2835562942
3581151256-3592382743
3138701074-3144007132
1411308101-1412230389
2005544666-2044382522
3588499596-3590044644
409649298-412147889
2729008724-2746584170
2271068854-2273711594
3908832580-3914932215
335104351-395790944
1473266198-1475735364
91434044-136650095
2061500256-2061621366
3046851992-3046857394
1045645522-1053843281
3062437124-3066285848
2953128494-2956453639
2287457295-2292066307
670003013-672161332
999493075-1005063611
2468468433-2475614015
1784620864-1794208355
1840652757-1842609020
2736112937-2745142809
445972682-455985981
1400181442-1408982387
2727005736-2744339492
1372691009-1399083499
1258925192-1259447558
3572543625-3573210768
2855143621-2872648483
3524287180-3550477388
2401321114-2401936589
188464419-190820937
873632167-889945153
6333787-9214022
866108152-883525080
588215939-596870293
6123882-6333786
1945222555-1965326766
1450943271-1455273678
1071513900-1075274877
4066257746-4107013454
3743897533-3750360675
2210516312-2243489046
739672099-743664201
1190706188-1231785159
1541206073-1552994486
3512385624-3513610248
4004909328-4014105124
1552994488-1583336095
2691601784-2692559045
2959924467-2960061300
2065049768-2073594549
2928347959-2948232651
2737697310-2739140372
3440216783-3442065814
137081234-137703805
1455284245-1455810565
1261449358-1261530545
3839728048-3846372390
4054367050-4055961594
3439834313-3441586831
608984617-613222255
499254004-518922214
2175403815-2205135632
1454597594-1455393440
693379909-700041190
1736154207-1737853569
4010049861-4012151447
3836393111-3838773709
1506443565-1527056312
334384992-335104349
3432143787-3438801061
600863019-608705787
136650096-136849627
3836270310-3838516660
3746890560-3764006100
791648716-794185505
987754526-999694763
2099169385-2119583372
641698158-648180068
3460880474-3481616563
3813294403-3818142124
1317229673-1321947166
2017066792-2036619196
1169805608-1194307388
702695743-722588266
19217566-33973125
32718247-42062630
210053297-217544318
3911504558-3933321555
3975617006-3984996156
551283440-558238333
1127962140-1141935253
1136611230-1157368723
2379700479-2401127625
54260395-75973933
1952020827-1967209978
1264200368-1316734882
1397096904-1403128933
1258173114-1259068731
989260243-995310756
1799866888-1833669063
137517987-137808457
3730940245-3762938051
2963015846-2980970857
600863799-603995952
338151951-378904722
3027117516-3030869045
2785828139-2786645836
1079328174-1079992013
1053843283-1069416181
1060967066-1061236944
3487201659-3496293770
3347750745-3362523105
1338305534-1352171648
1438217489-1462489105
4197364536-4222741711
3189733030-3234111514
451903598-461106580
2097704515-2099471338
304243328-325969066
2086846158-2113069670
2545746395-2547066650
3895249038-3906283534
895659434-904873439
1856927180-1866112900
2775894269-2810724921
1324244959-1325601021
846667177-848199595
3505699661-3506197363
871734319-878294262
4258853578-4294967295
3880214909-3895480719
1986216334-1986348856
742290938-753736254
3234111516-3258189066
3383899774-3396452612
3501809450-3512385622
3378934393-3392160599
3079010157-3098817100
1803429736-1805049104
2166530895-2176167104
1317292508-1322866502
1832462772-1847638033
333679750-334384991
72032218-76605612
17348575-50105777
484459786-489813452
3046849434-3046856389
3467134484-3473562579
2803678490-2810293665
3794709054-3822236055
3186979605-3189733029
2695314106-2700550784
1699535593-1705619603
2237090616-2240620274
1448226508-1452768177
2397634923-2402113900
3900871909-3908832578
4277179118-4284467979
869824885-875039223
3193444038-3195088604
2098172269-2099552847
3166258970-3174350156
3713306332-3730940243
3790663633-3807120965
3193807148-3198905625
2686964362-2695658937
3046846149-3046946514
605656762-611150528
3489750890-3497886462
397630917-403990883
3074826378-3080783127
492235894-493663068
642025801-643219257
788627002-789236451
3084604998-3115741036
3371549848-3374946439
3874793389-3876408934
1139585817-1143207799
3174350157-3186979603
639635957-642849593
1597646197-1612855132
1382702163-1398831616
684158166-713176675
1894143091-1917115741
2089306322-2114752226
2578960283-2621599896
1532015022-1546127235
1324354899-1325917394
2416646543-2437368922
2269877523-2275201946
1992225975-2000270993
640306549-643270861
3044180773-3051507071
2775774779-2793333778
1691451382-1692811369
939103383-944332736
1888996559-1920171303
2268109491-2269877522
2215835480-2260579751
602969274-607505129
1604071710-1613863780
3050099422-3052240627
3628771809-3629905363
3875733031-3886920632
1079554232-1083825209
4121927827-4137657636
1185125973-1212455950
3691832998-3711433854
3128913327-3142493871
4136061085-4148481230
183514025-223274420
1692066643-1696528120
666994178-678090088
2754770797-2759197512
3628299759-3628932735
596038993-600863017
2166543044-2179778402
787127754-788139041
2552150503-2552363008
3258189067-3269060433
2282238677-2289889500
2833059982-2837278958
2887027445-2928347957
2012405876-2032624685
787098717-787195228
1468456416-1495861617
1677947927-1720886831
2345295255-2357276476
3982867112-3996989804
3952361166-3982867111
2822115640-2865481783
748108837-753342957
3838773710-3843041501
2129888578-2151896843
859599485-871063826
3258061263-3260134830
3333184176-3370719083
4252768739-4258730892
2621599897-2626383698
3691176288-3710040996
3294271054-3294614974
1297573835-1313952886
1689064095-1727538616
4111227623-4121927825
3377701672-3394223952
3457691408-3475080606
1439643724-1454465680
2050656519-2065049767
3915610103-3945886566
451360431-486638413
1979886573-1992225974
1081566438-1088850009
2656393854-2668773976
3294056463-3294326494
3242916477-3253418464
1341083507-1344391028
2110664130-2123875999
2049746107-2050500846
3841089640-3844211293
3837279464-3842572520
2865481784-2885687079
2271061510-2272621997
2269988720-2270241311
1202018544-1229602920
2712322516-2753492383
1257333433-1258706059
2653038423-2675082201
955515750-959548963
1285036550-1301703071
2769057410-2775774777
2428432105-2446718114
2446718116-2468468432
2344149965-2353553539
1427316534-1430111473
2205135633-2210516310
2753492385-2769057409
1886236958-1909206855
465545077-470595473
4270417833-4279802697
1516656167-1519514351
2810724922-2822115638
1992340399-2004656981
1109811498-1124752055
1390540334-1390759638
3377856394-3382045950
2366638179-2397634922
1118808079-1118848239
5926527-6123881
1671674170-1691100484
5819501-6106336
2490564635-2514000009
311106391-314727280
314059640-315255926
4010827162-4011730305
4010139590-4011598075
1803265906-1803834597
2497969870-2535505355
1671431570-1689108789
151189360-154214893

@ -1,47 +0,0 @@
#lang br/quicklang ;; http://adventofcode.com/2016/day/20
(provide read-syntax
cons
(rename-out [mb #%module-begin]))
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,@(for/list ([line (in-list (string-split (port->string port) "\n"))])
`(cons ,@(map string->number (string-split line "-")))))))
(define-macro (mb . RANGE-PAIRS)
#'(#%module-begin
(define range-pairs (sort (list . RANGE-PAIRS) < #:key car))
(solve-a range-pairs)
(solve-b range-pairs)))
(define (solve-a range-pairs)
(for/first ([left (in-list range-pairs)]
[right (in-list (cdr range-pairs))]
#:when (> (- (car right) (cdr left)) 1))
(add1 (cdr left))))
(define (find-overlap n ranges)
(and (pair? ranges)
(for/first ([r (in-list ranges)]
#:when (<= (car r) n (cdr r)))
r)))
(define (solve-b range-pairs)
(define rps (for/fold ([rps empty])
([rp (in-list (append range-pairs '((4294967295 . 4294967295))))])
(define next-rps rps)
(define left (or
(let ([result (find-overlap (car rp) rps)])
(and result (set! next-rps (remove result next-rps)) (car result)))
(car rp)))
(define right (or
(let ([result (find-overlap (cdr rp) rps)])
(and result (set! next-rps (remove result next-rps)) (cdr result)))
(cdr rp)))
(cons (cons left right) next-rps)))
(define sorted-rps (sort rps < #:key car))
(for/sum ([left (in-list sorted-rps)]
[right (in-list (cdr sorted-rps))]
#:when (> (- (car right) (cdr left)) 1))
(- (car right) (cdr left) 1)))

@ -1,4 +0,0 @@
#lang reader "lang.rkt"
5-8
0-2
4-7

@ -1,102 +0,0 @@
#lang reader "lang.rkt"
abcdefgh
swap position 5 with position 6
reverse positions 1 through 6
rotate right 7 steps
rotate based on position of letter c
rotate right 7 steps
reverse positions 0 through 4
swap letter f with letter h
reverse positions 1 through 2
move position 1 to position 0
rotate based on position of letter f
move position 6 to position 3
reverse positions 3 through 6
rotate based on position of letter c
rotate based on position of letter b
move position 2 to position 4
swap letter b with letter d
move position 1 to position 6
move position 7 to position 1
swap letter f with letter c
move position 2 to position 3
swap position 1 with position 7
reverse positions 3 through 5
swap position 1 with position 4
move position 4 to position 7
rotate right 4 steps
reverse positions 3 through 6
move position 0 to position 6
swap position 3 with position 5
swap letter e with letter h
rotate based on position of letter c
swap position 4 with position 7
reverse positions 0 through 5
rotate right 5 steps
rotate left 0 steps
rotate based on position of letter f
swap letter e with letter b
rotate right 2 steps
rotate based on position of letter c
swap letter a with letter e
rotate left 4 steps
rotate left 0 steps
move position 6 to position 7
rotate right 2 steps
rotate left 6 steps
rotate based on position of letter d
swap letter a with letter b
move position 5 to position 4
reverse positions 0 through 7
rotate left 3 steps
rotate based on position of letter e
rotate based on position of letter h
swap position 4 with position 6
reverse positions 4 through 5
reverse positions 5 through 7
rotate left 3 steps
move position 7 to position 2
move position 3 to position 4
swap letter b with letter d
reverse positions 3 through 4
swap letter e with letter a
rotate left 4 steps
swap position 3 with position 4
swap position 7 with position 5
rotate right 1 step
rotate based on position of letter g
reverse positions 0 through 3
swap letter g with letter b
rotate based on position of letter b
swap letter a with letter c
swap position 0 with position 2
reverse positions 1 through 3
rotate left 7 steps
swap letter f with letter a
move position 5 to position 0
reverse positions 1 through 5
rotate based on position of letter d
rotate based on position of letter c
rotate left 2 steps
swap letter b with letter a
swap letter f with letter c
swap letter h with letter f
rotate based on position of letter b
rotate left 3 steps
swap letter b with letter h
reverse positions 1 through 7
rotate based on position of letter h
swap position 1 with position 5
rotate left 1 step
rotate based on position of letter h
reverse positions 0 through 1
swap position 5 with position 7
reverse positions 0 through 2
reverse positions 1 through 3
move position 1 to position 4
reverse positions 1 through 3
rotate left 1 step
swap position 4 with position 1
move position 1 to position 3
rotate right 2 steps
move position 0 to position 5

@ -1,80 +0,0 @@
#lang br/quicklang ;; http://adventofcode.com/2016/day/21
(provide read-syntax
(rename-out [mb #%module-begin]))
(define (read-syntax path port)
(strip-bindings
(let ([lines (string-split (port->string port) "\n")])
#`(module mod "lang.rkt"
#,(car lines)
#,@(for/list ([args (in-list (map string-split (cdr lines)))])
`(inst ,@(map (λ (arg) (or (string->number arg) arg)) args)))))))
(define-macro (mb CODE . INSTS)
#'(#%module-begin
(define (explode str) (regexp-match* #rx"." str))
(define (scramble code)
(apply string-append
(vector->list
(for/fold ([code (apply vector (explode code))])
([proc (in-list (list . INSTS))])
(proc code)))))
(scramble CODE)
(for*/first ([uplist (in-permutations (explode "fbgdceah"))]
[up (in-value (string-join uplist ""))]
#:when (equal? (scramble up) "fbgdceah"))
up)))
(define-macro-cases inst
[(_ "swap" "position" X "with" "position" Y) #'(swap-position X Y)]
[(_ "swap" "letter" X "with" "letter" Y) #'(swap-letter X Y)]
[(_ "reverse" "positions" X "through" Y) #'(reverse-letters X Y)]
[(_ "rotate" DIR NUM _) #'(rotate DIR NUM)]
[(_ "move" "position" X "to" "position" Y) #'(move X Y)]
[(_ "rotate" "based" "on" "position" "of" "letter" X) #'(rotate-letter X)])
(provide inst)
(define (swap-position xidx yidx)
(λ (v)
(define tmp (vector-ref v xidx))
(vector-set*! v xidx (vector-ref v yidx) yidx tmp)
v))
(define (swap-letter x y)
(λ (v) ((swap-position (vector-member x v) (vector-member y v)) v)))
(define (reverse-letters xidx yidx)
(λ (v)
(define letter-idxs (range xidx (add1 yidx)))
(define letters
(for/list ([idx (in-list letter-idxs)])
(vector-ref v idx)))
(for ([idx (in-list (reverse letter-idxs))]
[letter (in-list letters)])
(vector-set! v idx letter))
v))
(require sugar/list)
(define (rotate dir num)
(λ (v)
(list->vector
((if (equal? "left" dir)
shift-left-cycle
shift-cycle) (vector->list v) num))))
(define (rotate-letter x)
(λ (v)
(define xidx (vector-member x v))
(define rotval (+ 1 xidx (if (>= xidx 4) 1 0)))
((rotate "right" rotval) v)))
(define (move xidx yidx)
(λ (v)
(define xs (vector->list v))
(define-values (head tail) (split-at xs xidx))
(define x (car tail))
(define new-xs (append head (cdr tail)))
(define-values (newhead newtail) (split-at new-xs yidx))
(list->vector (append newhead (list x) newtail))))

@ -1,10 +0,0 @@
#lang reader "lang.rkt"
abcde
swap position 4 with position 0
swap letter d with letter b
reverse positions 0 through 4
rotate left 1 step
move position 1 to position 4
move position 3 to position 0
rotate based on position of letter b
rotate based on position of letter d

File diff suppressed because it is too large Load Diff

@ -1,33 +0,0 @@
#lang br/quicklang ;; http://adventofcode.com/2016/day/22
(provide read-syntax
(rename-out [mb #%module-begin]))
(define (read-syntax path port)
(strip-bindings
(let ([lines (string-split (port->string port) "\n")])
#`(module mod "lang.rkt"
#,@(for/list ([args (in-list (map string-split (cddr lines)))])
`(node ,@args))))))
(define-macro (mb . NODES)
#'(#%module-begin
(define nodes (list . NODES))
(count-viable-pairs nodes)))
(struct $node (pos used avail) #:transparent)
(define-macro (node NAME _ USED AVAIL _)
#'($node
(apply (λ (r i) (+ (string->number r)
(* (string->number i) +i))) (regexp-match* #px"\\d+" NAME))
(string->number (string-trim USED "T"))
(string->number (string-trim AVAIL "T"))))
(provide node)
(define (count-viable-pairs nodes)
(for*/sum ([a (in-list nodes)]
[b (in-list nodes)]
#:when (and (not (zero? ($node-used a)))
(not (equal? ($node-pos a) ($node-pos b)))
(<= ($node-used a) ($node-avail b))))
1))

@ -1,3 +0,0 @@
#lang reader "lang.rkt"
root@ebhq-gridcenter# df -h
Filesystem Size Used Avail Use%

@ -1,2 +0,0 @@
#lang info
(define compile-omit-paths 'all)

@ -1,27 +0,0 @@
#lang reader "lang.rkt"
cpy a b
dec b
cpy a d
cpy 0 a
cpy b c
inc a
dec c
jnz c -2
dec d
jnz d -5
dec b
cpy b c
cpy c d
dec d
inc c
jnz d -2
tgl c
cpy -16 c
jnz 1 c
cpy 70 c
jnz 87 d
inc a
inc d
jnz d -2
inc c
jnz c -5

@ -1,82 +0,0 @@
#lang br/quicklang ;; http://adventofcode.com/2016/day/23
(provide read-syntax
(rename-out [mb #%module-begin])
cpy inc dec jnz tgl)
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,@(for/list ([str (in-lines port)]
#:when (not (zero? (string-length str))))
(format-datum '(~a) str)))))
(define-macro (mb INST ...)
#'(#%module-begin
(report 'INST) ...
(define insts (vector INST ...))
(define regs (make-hash '((a . 0)(b . 0)(c . 0)(d . 0))))
(println (solve insts regs))
(hash-set! regs 'c 1)
(println (solve insts regs))))
(define current-toggles (make-parameter empty))
(define current-ptr (make-parameter #f))
(define (toggled?) (member (current-ptr) (current-toggles)))
(define (solve insts regs)
(let loop ([ptr 0])
(current-ptr ptr)
(if (>= ptr (vector-length insts))
regs
(loop (+ ptr (let ([move ((vector-ref insts ptr) regs)])
(if (void? move) 1 move)))))))
(define-macro (make-tgl-base X)
#'(λ (regs)
(current-toggles
((if (member X (current-toggles))
remove
cons) X (current-toggles)))))
(define-macro (tgl X)
#'(λ (regs)
((if (toggled?)
(make-inc-base X)
(make-tgl-base X)) regs)))
(define-macro (make-cpy-base X Y)
#'(λ (regs)
(define val (if (number? 'X) 'X (hash-ref regs 'X)))
(hash-set! regs 'Y val)))
(define-macro (cpy X Y)
#'(λ (regs)
((if (toggled?)
(make-jnz-base X Y)
(make-cpy-base X Y)) regs)))
(define-macro (make-dec-base X) #'(λ (regs) (hash-update! regs 'X sub1)))
(define-macro (make-inc-base X) #'(λ (regs) (hash-update! regs 'X add1)))
(define-macro (inc X) #'(λ (regs)
((if (toggled?)
(make-dec-base X)
(make-inc-base X)) regs)))
(define-macro (dec X) #'(λ (regs)
((if (toggled?)
(make-inc-base X)
(make-dec-base X)) regs)))
(define-macro (make-jnz-base X Y)
#'(λ (regs)
(when (not (zero? (if (number? 'X) 'X (hash-ref regs 'X))))
Y)))
(define-macro (jnz X Y)
#'(λ (regs)
((if (toggled?)
(make-copy-base X Y)
(make-jnz-base X Y)) regs)))

@ -1,2 +0,0 @@
#lang reader "lang.rkt"
cpy 2 a

@ -1,38 +0,0 @@
#lang reader "lang.rkt"
#######################################################################################################################################################################################
#.....................#.....#.#.......#.......#...#.....#.#...#.........#...........#...#.........#...#...#...#...#.........#.#.....#.........#.#.#.....#.....#.....#.#.#.............#
#.#.###.#.###.#.###.#.#.###.#.###.#########.#.#####.#####.#.###.#.#.#.#.###.#.###.#.#.#.#.###.#.#.#.#.###.#.#.#.#.###.#.#.#.#.#.#.#.#.###.#.#.#.#.#.#####.###.#.#.#.#.#.###.#.#.#.#.#.#
#.........#.......#...#.....#.#.#.#.......#.#.....#...#.....#.....#.....#...............#.#.#...#...#.#.....#.......#.#...#.....#.......#...#.#.#...#2#...#.................#...#.....#
#.###.#.###.#.#.#.#.#.#.#.#.#.#.#.#####.#.#.#.###.#.###.#.#.#.###.#.#.#.###.#.#.###.#.#####.#.#.#####.#.#.#.#######.#.#####.###.###.###.#.#.#.#.#.#.#.#.###.###.###.###.#.#.#.#.#######
#.#....1#.....#...#.......#...#.#.#.....#.....#.....................#.#...........#...#.....#.....#.....#.......#.....#.#.......#...........#...#.#...#...#...............#.#.#.#.....#
#.#.#######.#.#.#.#.#############.#.###.###.###.#.#.#########.#.###.#.#.#.#.#.#.#.#####.#.#.#.###.#.#.#.#.#.#.#.#.#.###.#########.#.#.#############.#######.#.#.#.###.###.###.#####.###
#.#.#...#.........#.....#.........#.....#.#.#...#...........#...#.........#...#.#.....#.#...............#...#.....#.#.#.............#.....#...#.....#...........#.#.#.....#...#.......#
#.###.#.#.#.#.#######.#.#.#.#.###.###.#.#.#.#.#.#.#.#####.###.#.#.#.#.#.#######.#.###.#.#.#.###.#.###.#.#.###.#.#.#.#.#.#.#.#.#.#######.#.###.#.###.#.###.#.#.###.#.###.#.#.#.#.#.#.###
#...#.#.........#.#...#.....#...#.......#.#.#.......#.#.#...#.........#.....#.#...#.#.#...#...#...#.....#.........#.#.....#.......#.....#.......#.#...#...#.....#.....#.......#.#.#...#
#.#.#.#.#.#.###.#.#.#.#.###.#####.#####.#######.#.###.#.#.#.#####.#.#####.###.#.#.#.#.#.#.###.#.#.#.#####.#.#####.#.###.#####.#.#.#.###.###.###.#.#.#.#####.#.#.#####.#.#######.#.#.###
#.....#.#.....#.........#.#...#.......#...#.......#.........#...#.#.#.#.......#...#...............#.#...................#.#.#.......#.#.........#....0#...#.#.......#.#.#.#...#.....#.#
#######.#.#.#.#######.###.#.###.#.#.#.#.#.#.#.#.###.###.#####.#.#.###.#.#.###.#####.#.#.#.#.#####.#.###.###.#.#.#######.#.#.#.#######.#.#.#.#.#.#.#.#.#.###.#.###.#.###.#.#####.#.#.#.#
#.........#...#...#.....#.........#.......#...#...........#.#.#.#...#...#.#...#.#...#.#.#.......#.......#...#.....#.....#.#...#.#.#.#.........#...............#...#.#...........#.....#
#.#.#.#.#.#####.###.#####.#.#######.#.#.#.#.#.#.#.#####.###.#.#.#.#.#.###.#.#.#.#.#.#.#.#.#.#.#.###.#.###.#.###.#.#.#.#.#.###.#.#.#.#.#.#.#.#.#.#####.###.###.#.#######.#.###.#.#######
#.#...#...#...#.....#.#.#.#...#.................#...#...#.#...#...#...#.#.#.#.....#.#.#.....#.#...#.#.......#.#.#...#...#.#...#.....#...#.#...#...#.....#.....#...#.....#.....#.#...#.#
#.###.###.###.###.#.#.#.#.#.#.#.#.#.###.#.###.#####.#.###.#.###.###.#.#.#.#.#.###.#.###.#####.###.###.#.#.#.#.#.#.#.#.#.#.#.###.#.#.#.###.#####.#.###########.#.#.#.###.#.#######.#.#.#
#..3#.#.......#...#.............#.....#.....#...#...#.#.....#.......#.....#...#.....#.#.#.........#...#.#.........#.....#...............#.........#...#...........#.#.#...#7#.#.....#.#
###.#.#.###.#.#.###.#############.###.#.#######.#.#####.#######.#####.#.###.#.#.#.#.#.#.#.#.#.#.#.###.#.#########.#.#.#.#.#.#.###.#.###.#####.#####.###.#.###.#.#.#.#.#.#.#.#.#.###.#.#
#.#...#.....#.#.#.#.#.#...........................#.......#...#.#.....#.#...#...#.#...#.........#...........#.#.....#.....#...#...#.#.......#.#.#...#...#.#.......#.......#...#.....#.#
#.#########.#.#.#.#.#.#.#.#####.###.#######.#.#####.#.#.#.#.###.#.#.#.#.#####.#######.#.#####.#.#.#.#####.#.#.#.###.#####.#.#######.#######.###.###.#.#.#.###.###.#.#########.#.#.###.#
#.#.......#...#.....#.#.......#.#...#.....#...........#.#...........#...#.....#.........#.......#...#.........#.#.....#.#...#.............#.............#...........#.....#...#.#.#.#.#
#.#.###.#.#.#.#.#.###.###.#####.#.#.#.#.#.###.#.#####.#.#.#.#.###.#####.#######.#.#.#.#.#.#.#.#.#.#.###.#.###.#.#.#.#.#.#.###.#.###.#.###.#######.###.#.#.#.#.###.###.#.#.#.#.#.#.#.###
#.#.......................#.......#.......#.#.#.......#...........#...#...#.....#.#.#...#...#...#.......#.......#.#.#...#.....#.....#...#...#.....#.#...#...#...........#.....#...#...#
#.#.###.#####.#.###.#.#.###.#.#.#.#######.#.#####.#.#.###.#.#######.#.#.#.#.#.#.###.#.#.#.#.#.#.#.###.#.###.#.###.###.#######.#.###.###.#.#.#.###.#.###.###.###.#.#.#.#.#.#.#.#.###.#.#
#...#.....#.........#...#.#.....#...#...#.#.#...#.....#.#.#...#.......#.....#.......#.....#.....#.#.....#...#.#.#.......#...#.#...#.........#...#...........#...#...#...#.....#.#.#.#.#
#########.###.#####.#.#.#.#.#.###.#.#.###.#.#.#.#.###.#.#.#.#.#.#.###.#.###.#.#####.#######.#.###.#.###.#.#.###.#.#.#####.#######.#.###.#.###.###.#.###.#.#.#.###.#.#######.#.###.#.#.#
#.#...#...#...#.....#...#.#6......#.#.....#.....#.....#.#...#...#...#.#.....#...#...#...#...#.............#.#...#.......#.#...#...........#.#..5#...#.#.....#...#.....#...#...#.......#
#.###.#.#.###.###.#.#.#.#.#####.#.#.#####.#.#.###.#.#.#.#.#.#.###.#.#.###.#.#########.###.###.#######.#.#.#.#.#.#.#####.#.#.#.#.#.###.#.###.#####.#.#.#.#.#.#.#.###.#.###.#.###.#.#.#.#
#.#...#...#...#.........#...#.................#.....#.....#...............#.....#.#...#.....#.......#...#.....#.#.#.......#.............#.#.#.#...#.#...#.#.#...#.....#.......#.......#
#.###.#.###.###.###.#.#.#.#.#.###.###.#.#.###.###.###############.#####.#.#######.#.#.#.###########.###.#.#.#.#.#.#.#.###.#.#####.#######.###.#.#.#.#.###.#.#.#.#.###.###.###.#.#.###.#
#...................#...........#.#.#.........#.....#...#...#...#.#.....#.........#...#.#.......#...#...............#.#.................#.....#.....#.#.....#...#...#.#.....#...#.....#
#.#.#.#.#.###.###.#.###.#.#####.#.#.#########.#.#.###.#.###.#####.#.#.#.#.#.#.#######.#####.#.#.#.###.#.#.###.#####.#.#.#.###.###.###.###.#######.#.#.#.###.#.#.#.#.#.#.#.###.#.#.###.#
#.#...#.#.#.#.......#.#...#.#.....#.......#.#.#.....#.#.#.......#...#.#.....#.#...#...#.........#.......#.....#.#...#...#.......#.#...#...#.#.........#...#.........#.........#.#.#...#
###.#####.#.#.###.#.#.#.###.#.#.#.#.#.#.#.#.#.#####.###.#.###.#.#.#.#.#.#.#.#######.#.###.#.#####.###.#####.###.#.#.###.#.#.#.###.#.###.#.#.#.#.#####.#.#####.###.#.#.#.###.#####.#.#.#
#...........#...................#.....#.....#...............#...#.#.....#.......#...#...#...#...#.......#...#...#.....#...#...#...#.....#4#...#...#...#.....#.............#.#...#.....#
#######################################################################################################################################################################################

@ -1,51 +0,0 @@
#lang br/quicklang ; http://adventofcode.com/2016/day/24
(require graph)
(provide read-syntax
(rename-out [mb #%module-begin]))
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,(string-trim (port->string port)))))
(define-macro (mb STR)
#'(#%module-begin
(solve STR)))
(define (open? c) (not (equal? c "#")))
(define (solve str)
(define g (undirected-graph empty))
(define ptcols
(for*/list ([(row ridx) (in-indexed (string-split str))]
[(col cidx) (in-indexed (regexp-match* #rx"." row))]
[pt (in-value (+ cidx (* +i ridx)))]
#:when (open? col))
(list pt col)))
(for ([p (in-list ptcols)])
(let ([right (assoc (+ (car p) 1) ptcols)])
(when right (add-edge! g (car p) (car right))))
(let ([down (assoc (+ (car p) +i) ptcols)])
(when down (add-edge! g (car p) (car down)))))
(define colpts (apply hash (flatten (map reverse ptcols))))
(define highest-num (apply max (filter number? (map (compose1 string->number cadr) ptcols))))
(displayln
(argmin cdr
(for/list ([path-digits (in-permutations (range 1 (add1 highest-num)))])
(cons path-digits
(for/sum ([start-num (in-list (cons 0 path-digits))]
[end-num (in-list path-digits)])
(define start (hash-ref colpts (~a start-num)))
(define stop (hash-ref colpts (~a end-num)))
(define spath (fewest-vertices-path g start stop))
(sub1 (length spath)))))))
(displayln
(argmin cdr
(for/list ([path-digits (in-permutations (range 1 (add1 highest-num)))])
(cons path-digits
(for/sum ([start-num (in-list (append '(0) path-digits '(0)))]
[end-num (in-list (append path-digits '(0)))])
(define start (hash-ref colpts (~a start-num)))
(define stop (hash-ref colpts (~a end-num)))
(define spath (fewest-vertices-path g start stop))
(sub1 (length spath))))))))

@ -1,6 +0,0 @@
#lang reader "lang.rkt"
###########
#0.1.....2#
#.#######.#
#4.......3#
###########

@ -1,31 +0,0 @@
#lang reader "lang.rkt"
cpy a d
cpy 14 c
cpy 182 b
inc d
dec b
jnz b -2
dec c
jnz c -5
cpy d a
jnz 0 0
cpy a b
cpy 0 a
cpy 2 c
jnz b 2
jnz 1 6
dec b
dec c
jnz c -4
inc a
jnz 1 -7
cpy 2 b
jnz c 2
jnz 1 4
dec b
dec c
jnz 1 -4
jnz 0 0
out b
jnz a -19
jnz 1 -21

@ -1,48 +0,0 @@
#lang br/quicklang ;; http://adventofcode.com/2016/day/25
(provide read-syntax
(rename-out [mb #%module-begin])
cpy inc dec jnz out)
(define (read-syntax path port)
(strip-bindings
#`(module mod "lang.rkt"
#,@(for/list ([str (in-lines port)]
#:when (not (zero? (string-length str))))
(format-datum '(~a) str)))))
(define-macro (mb . INSTS)
#'(#%module-begin
(define insts (vector . INSTS))
(define regs (make-hash '((a . 0)(b . 0)(c . 0)(d . 0))))
(for*/first ([i (in-naturals)]
#:when
(begin
(hash-set! regs 'a i)
(regexp-match "010101010101" (with-output-to-string (λ () (solve insts regs 50000))))))
i)))
(define (solve insts regs max-count)
(let loop ([ptr 0][count 0])
(if (or (>= ptr (vector-length insts)) (> count max-count))
regs
(loop (+ ptr (let ([move ((vector-ref insts ptr) regs)])
(if (void? move) 1 move)))
(add1 count)))))
(define-macro (cpy X Y)
#'(λ (regs)
(define val (if (number? 'X) 'X (hash-ref regs 'X)))
(hash-set! regs 'Y val)))
(define-macro (inc X) #'(λ (regs) (hash-update! regs 'X add1)))
(define-macro (dec X) #'(λ (regs) (hash-update! regs 'X sub1)))
(define-macro (jnz X Y)
#'(λ (regs)
(when (not (zero? (if (number? 'X) 'X (hash-ref regs 'X))))
Y)))
(define-macro (out X)
#'(λ (regs)
(print (hash-ref regs 'X))))

@ -1 +0,0 @@
In 2017 I wrote all the solutions as DSLs.

@ -1,36 +0,0 @@
#|
#lang s-exp syntax/module-reader
#:read read
#:read-syntax read-syntax
#:language `(submod ,aoc-lang expander)
(require racket/runtime-path)
(define-runtime-path aoc-lang "aoc-lang.rkt")
|#
#lang br/quicklang
(require "helper.rkt")
(provide (except-out (all-from-out br/quicklang "helper.rkt") read-syntax #%module-begin)
(rename-out [my-rs read-syntax] [my-mb #%module-begin]))
(define (my-rs path port)
(define datums (for/list ([datum (in-port (curry read-syntax path) port)])
datum))
(strip-context (with-pattern ([THIS-FILE (syntax-source #'here)]
[DATUMS datums])
(syntax/loc (car datums) (module puzzle-lang THIS-FILE
. DATUMS)))))
(define (blank? line) (regexp-match #px"^\\s*$" line))
(define-macro (my-mb . ARGS)
(with-pattern ([MOD-PATH (syntax-source caller-stx)])
#'(#%module-begin
(provide read-syntax)
(define (read-syntax path port)
(strip-context #`(module mod MOD-PATH
#,@(for/list ([line (in-lines port)]
#:unless (blank? line))
(for/list ([datums (in-port read (open-input-string (string-replace line "," " ")))])
datums)))))
. ARGS)))

@ -1,13 +0,0 @@
#lang reader "../aoc-lang.rkt"
(provide (rename-out [#%mb #%module-begin]))
(define-macro (#%mb (STARS) (NUMBER) ...)
#'(#%module-begin (time (captcha-sum 'STARS NUMBER) ...)))
(define (captcha-sum stars num)
(define digits (number->digits num))
(define offset (if (eq? stars ') -1 (quotient (length digits) 2)))
(for/sum ([digit (in-list digits)]
[other-digit (in-list (shift-cycle digits offset))]
#:when (= digit other-digit))
digit))

@ -1,2 +0,0 @@
#lang reader "main.rkt" ; 1343
9513446799636685297929646689682997114316733445451534532351778534251427172168183621874641711534917291674333857423799375512628489423332297538215855176592633692631974822259161766238385922277893623911332569448978771948316155868781496698895492971356383996932885518732997624253678694279666572149831616312497994856288871586777793459926952491318336997159553714584541897294117487641872629796825583725975692264125865827534677223541484795877371955124463989228886498682421539667224963783616245646832154384756663251487668681425754536722827563651327524674183443696227523828832466473538347472991998913211857749878157579176457395375632995576569388455888156465451723693767887681392547189273391948632726499868313747261828186732986628365773728583387184112323696592536446536231376615949825166773536471531487969852535699774113163667286537193767515119362865141925612849443983484245268194842563154567638354645735331855896155142741664246715666899824364722914296492444672653852387389477634257768229772399416521198625393426443499223611843766134883441223328256883497423324753229392393974622181429913535973327323952241674979677481518733692544535323219895684629719868384266425386835539719237716339198485163916562434854579365958111931354576991558771236977242668756782139961638347251644828724786827751748399123668854393894787851872256667336215726674348886747128237416273154988619267824361227888751562445622387695218161341884756795223464751862965655559143779425283154533252573949165492138175581615176611845489857169132936848668646319955661492488428427435269169173654812114842568381636982389224236455633316898178163297452453296667661849622174541778669494388167451186352488555379581934999276412919598411422973399319799937518713422398874326665375216437246445791623283898584648278989674418242112957668397484671119761553847275799873495363759266296477844157237423239163559391553961176475377151369399646747881452252547741718734949967752564774161341784833521492494243662658471121369649641815562327698395293573991648351369767162642763475561544795982183714447737149239846151871434656618825566387329765118727515699213962477996399781652131918996434125559698427945714572488376342126989157872118279163127742349

@ -1,2 +0,0 @@
#lang reader "main.rkt" ★★ ; 1274
9513446799636685297929646689682997114316733445451534532351778534251427172168183621874641711534917291674333857423799375512628489423332297538215855176592633692631974822259161766238385922277893623911332569448978771948316155868781496698895492971356383996932885518732997624253678694279666572149831616312497994856288871586777793459926952491318336997159553714584541897294117487641872629796825583725975692264125865827534677223541484795877371955124463989228886498682421539667224963783616245646832154384756663251487668681425754536722827563651327524674183443696227523828832466473538347472991998913211857749878157579176457395375632995576569388455888156465451723693767887681392547189273391948632726499868313747261828186732986628365773728583387184112323696592536446536231376615949825166773536471531487969852535699774113163667286537193767515119362865141925612849443983484245268194842563154567638354645735331855896155142741664246715666899824364722914296492444672653852387389477634257768229772399416521198625393426443499223611843766134883441223328256883497423324753229392393974622181429913535973327323952241674979677481518733692544535323219895684629719868384266425386835539719237716339198485163916562434854579365958111931354576991558771236977242668756782139961638347251644828724786827751748399123668854393894787851872256667336215726674348886747128237416273154988619267824361227888751562445622387695218161341884756795223464751862965655559143779425283154533252573949165492138175581615176611845489857169132936848668646319955661492488428427435269169173654812114842568381636982389224236455633316898178163297452453296667661849622174541778669494388167451186352488555379581934999276412919598411422973399319799937518713422398874326665375216437246445791623283898584648278989674418242112957668397484671119761553847275799873495363759266296477844157237423239163559391553961176475377151369399646747881452252547741718734949967752564774161341784833521492494243662658471121369649641815562327698395293573991648351369767162642763475561544795982183714447737149239846151871434656618825566387329765118727515699213962477996399781652131918996434125559698427945714572488376342126989157872118279163127742349

@ -1,5 +0,0 @@
#lang reader "main.rkt"
1122
1111
1234
91212129

@ -1,6 +0,0 @@
#lang reader "main.rkt" ★★
1212
1221
123425
123123
12131415

@ -1,15 +0,0 @@
#lang reader "../aoc-lang.rkt"
(provide (rename-out [#%mb #%module-begin]))
(define-macro (#%mb (STARS) (NUMBER ...) ...)
#'(#%module-begin (time (checksum 'STARS '((NUMBER ...) ...)))))
(define (checksum stars intss)
(define (max-min-diff ints) (- (apply max ints) (apply min ints)))
(define (no-remainder ints)
(for*/first ([duo (in-combinations ints 2)]
[result (in-value (apply / (sort duo >)))]
#:when (integer? result))
result))
(define row-proc (if (eq? stars ') max-min-diff no-remainder))
(apply + (map row-proc intss)))

@ -1,17 +0,0 @@
#lang reader "main.rkt" ; 53978
1919 2959 82 507 3219 239 3494 1440 3107 259 3544 683 207 562 276 2963
587 878 229 2465 2575 1367 2017 154 152 157 2420 2480 138 2512 2605 876
744 6916 1853 1044 2831 4797 213 4874 187 6051 6086 7768 5571 6203 247 285
1210 1207 1130 116 1141 563 1056 155 227 1085 697 735 192 1236 1065 156
682 883 187 307 269 673 290 693 199 132 505 206 231 200 760 612
1520 95 1664 1256 685 1446 253 88 92 313 754 1402 734 716 342 107
146 1169 159 3045 163 3192 1543 312 161 3504 3346 3231 771 3430 3355 3537
177 2129 3507 3635 2588 3735 3130 980 324 266 1130 3753 175 229 517 3893
4532 164 191 5169 4960 3349 3784 3130 5348 5036 2110 151 5356 193 1380 3580
2544 3199 3284 3009 3400 953 3344 3513 102 1532 161 143 2172 2845 136 2092
194 5189 3610 4019 210 256 5178 4485 5815 5329 5457 248 5204 4863 5880 3754
3140 4431 4534 4782 3043 209 216 5209 174 161 3313 5046 1160 160 4036 111
2533 140 4383 1581 139 141 2151 2104 2753 4524 4712 866 3338 2189 116 4677
1240 45 254 1008 1186 306 633 1232 1457 808 248 1166 775 1418 1175 287
851 132 939 1563 539 1351 1147 117 1484 100 123 490 152 798 1476 543
1158 2832 697 113 121 397 1508 118 2181 2122 809 2917 134 2824 3154 2791

@ -1,17 +0,0 @@
#lang reader "main.rkt" ★★ ; 314
1919 2959 82 507 3219 239 3494 1440 3107 259 3544 683 207 562 276 2963
587 878 229 2465 2575 1367 2017 154 152 157 2420 2480 138 2512 2605 876
744 6916 1853 1044 2831 4797 213 4874 187 6051 6086 7768 5571 6203 247 285
1210 1207 1130 116 1141 563 1056 155 227 1085 697 735 192 1236 1065 156
682 883 187 307 269 673 290 693 199 132 505 206 231 200 760 612
1520 95 1664 1256 685 1446 253 88 92 313 754 1402 734 716 342 107
146 1169 159 3045 163 3192 1543 312 161 3504 3346 3231 771 3430 3355 3537
177 2129 3507 3635 2588 3735 3130 980 324 266 1130 3753 175 229 517 3893
4532 164 191 5169 4960 3349 3784 3130 5348 5036 2110 151 5356 193 1380 3580
2544 3199 3284 3009 3400 953 3344 3513 102 1532 161 143 2172 2845 136 2092
194 5189 3610 4019 210 256 5178 4485 5815 5329 5457 248 5204 4863 5880 3754
3140 4431 4534 4782 3043 209 216 5209 174 161 3313 5046 1160 160 4036 111
2533 140 4383 1581 139 141 2151 2104 2753 4524 4712 866 3338 2189 116 4677
1240 45 254 1008 1186 306 633 1232 1457 808 248 1166 775 1418 1175 287
851 132 939 1563 539 1351 1147 117 1484 100 123 490 152 798 1476 543
1158 2832 697 113 121 397 1508 118 2181 2122 809 2917 134 2824 3154 2791

@ -1,4 +0,0 @@
#lang reader "main.rkt"
5 1 9 5
7 5 3
2 4 6 8

@ -1,4 +0,0 @@
#lang reader "main.rkt" ★★
5 9 2 8
9 4 7 3
3 8 6 5

@ -1,43 +0,0 @@
#lang reader "../aoc-lang.rkt"
(provide (rename-out [#%mb #%module-begin]))
(define-macro (#%mb (STARS) (NUMBER) ...)
#'(#%module-begin (time ((if (eq? 'STARS ') dist larger-sum) NUMBER) ...)))
(define (ring-side r) (* 2 r))
(define (ring-last r) (expt (add1 (ring-side r)) 2))
(define (ring-first r) (if (zero? r) 1 (add1 (ring-last (sub1 r)))))
(define (ring int)
(for/first ([i (in-naturals)]
#:when (<= int (ring-last i)))
i))
(define (nth-coordinate n)
(cond
[(= n 1) 0]
[else
(define ring-idx (ring n))
(define offset (- n (ring-first ring-idx)))
(define-values (quadrant pos)
(quotient/remainder offset (ring-side ring-idx)))
(* (+ ring-idx (* +i (- pos (sub1 ring-idx)))) (expt +i quadrant))]))
(define (dist n)
(define c (nth-coordinate n))
(+ (abs (real-part c)) (abs (imag-part c))))
(define vals (make-hash))
(define (neighbor-sum n)
(define c (nth-coordinate n))
(hash-ref! vals c (λ () (if (= c 0)
1
(for*/sum ([h (in-list '(-1 0 1))]
[v (in-list '(-1 0 1))])
(define neighbor (+ h (* +i v)))
(hash-ref vals (+ c neighbor) 0))))))
(define (larger-sum x)
(for*/first ([n (in-naturals 1)]
#:when (> (neighbor-sum n) x))
(neighbor-sum n)))

@ -1,2 +0,0 @@
#lang reader "main.rkt" ; 480
347991

@ -1,2 +0,0 @@
#lang reader "main.rkt" ★★ ; 349975
347991

@ -1,5 +0,0 @@
#lang reader "main.rkt"
1
12
23
1024

@ -1,5 +0,0 @@
#lang reader "main.rkt" ★★
1
12
23
1024

@ -1,15 +0,0 @@
#lang reader "../aoc-lang.rkt"
(provide (rename-out [#%mb #%module-begin]))
(define-macro (#%mb (STARS) (WORD ...) ...)
#'(#%module-begin
(time (for/sum ([ws (in-list '((WORD ...) ...))]
#:when (no-duplicates? ws #:anagrams? (eq? 'STARS '★★)))
1))))
(define (sort-chars word)
(sort (string->list (symbol->string word)) char<?))
(define (no-duplicates? ws #:anagrams? [anagrams #f])
(let ([ws (if anagrams (map sort-chars ws) ws)])
(= (length ws) (length (remove-duplicates ws)))))

@ -1,513 +0,0 @@
#lang reader "main.rkt" ; 337
kvvfl kvvfl olud wjqsqa olud frc
slhm rdfm yxb rsobyt rdfm
pib wzfr xyoakcu zoapeze rtdxt rikc jyeps wdyo hawr xyoakcu hawr
ismtq qwoi kzt ktgzoc gnxblp dzfayil ftfx asscba ionxi dzfayil qwoi
dzuhys kfekxe nvdhdtj hzusdy xzhehgc dhtvdnj oxwlvef
gxg qahl aaipx tkmckn hcsuhy jsudcmy kcefhpn kiasaj tkmckn
roan kqnztj edc zpjwb
yzc roc qrygby rsvts nyijgwr xnpqz
jqgj hhgtw tmychia whkm vvxoq tfbzpe ska ldjmvmo
nyeeg omn geyen ngyee rcjt rjuxh
qpq udci tnp fdfk kffd eyzvmg ufppf wfuodj toamfn tkze jzsb
rrcgxyp rbufd tfjmok vpyhej hcnz ftkojm
jnmomfc jnmomfc bkluz izn ovvm flsch bkluz
odisl hzwv hiasrhi hez ihihsra qpbmi ltwjj iknkwxf nbdtq gbo
gjtszl gjtszl fruo fruo
rdapv gaik cqboix sxnizhh uxmpali jdd usqnz advrp dze
flooz flooz qad tcrq yze bnoijff qpqu vup hyagwll
lnazok dze foi tqwjsk hpx qcql euzpj mwfrk
ilb fmviby ivybmf gtx xtg
rpauuu timere gyg wcolt ireetm safi
croe szwmq bbhd lciird vhcci pdax
hnc ykswt qqqmei goe bri wmyai hnc qpgqc pberqf bzs
hsnrb wdvh iezzrq iezzrq rdbmpta iezzrq kemnptg alkjnp wymmz
ngw don ddvyds nlhkoa aaf gptumum ugtpmmu
vmccke qbpag kvf kvf tgrfghb kvf bhpd sglgx
obomgk bkcgo yso ttft vbw ckl wjgk
fli qvw zhin dfpgfjb udsin nihz ovr tiewo
tgmzmph hauzieo jmg tdbtl lvfr qpaayq qapaqy ausioeu jun piygx
jkp guqrnx asdqmxf vmfvtqb tloqgyo ioix gajowri tmek ilc puhipb
uycn zxqm znft ayal znacus kvcyd ekv qqfpnh
fqghur xtbtdd ztjrylr bpuikb ziyk
rvakn uqbl ozitpdh uqbl dsej xehj
laxp haz jyd xnkrb ijldth woy xapl iqgg alpx gnupa ukptmmh
dyiy dyiy ihb qcyxr
wbwkd hdwu zvgkn hdwu wjc sakwhn zxujdo npllzp uyr uyr
fxczpmn cininu akcxs ggslxr riyxe ojisxe
ppbch sampq dnct afikor dnct edsqy pnzyzmc afikor
jnvygtn hijqjxl vsd jnvygtn nqcqv zns odq gkboxrv kolnq wrvd
mroq mroq flsbu flsbu
fyshor xvpaunj qmktlo xoce wkiyfu ukcl srndc ugwylwm ozcwdw mtqcste kpokr
cfh cxjvx cfh cfh uewshh
bpspbap bpspbap fquj mxmn bwls iirhvuk dmpkyt exrn mxmn
tvyvzk ezszod ntxr xtnr och
knfxhy kbnyl knfxhy xhkssx lxru uprh nkxpbx oodolxr tpvyf
nblmysu iwoffs upgof tyagwf aan vovji ajk ywzq oyfi sfulz
aushzkm lcaeki mkuzsah ynxvte rsntd refk pcm
mgguob gobmug dzenpty gmogbu
yvq eepof rgnree nerger fpb stfrln ernger
hrgkbl mzwvswk rsrsbk ieru holco pajvvn ztgsr qkyp fyeg owpcmoj
fowda gmsqdca yugj mcrroxv mqcbojd fjnqfji qdfsc jqs
qnc rvjfz vvxk sjd xrma ucdjvq sbw zydyt dfzww
ocajazv cozaajv tqunkla udwf ecnnmbz lsakqg bki njnda zsdu ccfqw rxpc
qqm qdfya qxyx qmq qfday uqnfttt
rnbirb iapor qet iapor hxkhz dfvzig pedl ybyb
mkgamxg xkniv meb hbzmxjn dhbj zhbxjmn hdjb
ilteux pyutyfx mau lrr bacak
sjjonmn dbbbgs crxyuu jztstgd ezb uiabyaa
tra fle ufzlvf nnaw kec hiwnnlj tei wld iyt syk hjdczb
qmd jtlud dgh dbanock fzp dsjgqru wwvo jwvxwgv xlemfij jcacd
rpkx oxesil snazcgx fly miiyc ikmtmp oefyyn egbw
ypfpeu wldnyd acchppb yqwcaw wldnyd turbz megci nbgxq xkc ypfpeu
iqqv iqqv neui iqqv
ypsxm icqyup zyetrwq nbisrv
viommi toszx dpueq eyy cunjou ffcjc jaeez djefra pxvkj liudlig yye
fhnacbg jghchh ghjhhc iue hwqmo
vbjw lpn cizba ltnsfpz tzoweml irewlc uzckhpd mszal obd
yeos utxkft hflxkfe fxczge qpgigkc ksgr vuumql vhlvv
xzmkv xzmkv krecdi klpem jsbu nwcmik emfzxf cjmpgnj
vtkjo pmiv zou gxo qdiyxsf hwyinjk jhkgf rjq
dyuoc ywiyvch irfgl ywiyvch fxb fxb
tuz onhr syu rqya abkaf bcfx mbknex juwoor zmksl
oheg spjorx ksdy vwtq fxz phvtazk tcze lrxg
hew lbup botaj ltr jpd
dxgc tzinkej gnz hxvvub adsqmc dxgc asgpp rqbdcra goy pmamdua bhiacva
xqv ygb kihxqz vyv pjcny vmyvsdv cgsi nfyx
tqga ssshrw ndq qlbvwh huyd pxbgj qbxk dkkbf jxy chsobw pph
hxl iwph iwph xnr otifm ljhre
zlgvpd kapxpoc dve rklk ogh hgnp rbrmc zzkz hhmcx aklmo
sar gfor nkf hek nkf aql shc aql
dtcrw kfjzcjx qyhi bldson whwdayo mqtgt xhqzp ttqmg
omspdml isze jdl nvwo qrkm wztfg ssfgyh dryj jhp unsmty
jxt cszylng ifht ixtuna azoi xutqlv jtx tjx
usgm azuayp fgkby ezpyq jqwl ezofj
tnhvil nrvg moyrpqs sldx qymoff megflxh pyhqwms xmdw
zomy zcquwnv lzx bvcna yods mjp dgsez
blklyf xokd gpit tiysj yrwfhm tofx
dtig vhdp omuj vhpd
fogwxim qvdwig emdiv jvhl euwbzkg xvxb hwmqo ujdmlp epmykj
sjxll sjxll pedvgb sjxll
drvay gtzhgtx yrt okz nqf
haxfazn pvkovwb pgu tgshw mxcjf pbe nwoymzc mxcjf pbe hydwy jradcr
prjsloa ahylvj okbsj qbdcdjt pmfo pagyoeg vkmhjzt khzmjvt opfm xfrji gyjqyel
lzypt jdbtrad ogr jdbtrad heink
rcoucuq gdxewa rcoucuq whlw zhhm rcoucuq azaqohe mzyli rdvaf
yuag ebcf yuag nsotg qqzuxr jfmao vyucw wmoye
qwvk xemm hgqrr wyxkpp tojndm xlvzypw jus bgnu bgnu nklfwhs
daqi knenmku ccm xkiuy vkexsbc kvvdagx umopitw yaocnx yoakqql mllmsp
mrxgl gywit mfopia ncnsvw vdxek axuiot rsejua nei prndudz mnu
egqn gaa qgen urs mix zbn rhn
ewharq aihy udkdaob kgrdd kgrdd kugbjtj fcef llqb pduxaq wcexmm
dwtiw nelq hppad algxgf gcc upou akm efnb mxmhrud
yxqaa ups okbhgt iet qns tqn rnjqxgp
npmhdm cgds ldexvr typi jyivoqk zkgq vfyxu xgfo
dkwnmr umm dkwnmr okpjw wqx jpztebl eqsib dkwnmr
dxbild wpbup evscivq dxbild dxbild geqp ojfbpl jshvqej
cxdntxs csfocjd pyy tuhws teb boyloz xfw scxh pxhonky
lteucke xrgwy hszgzu hnyrcvb
pfgsgwg dxzh fworek qbstod
usemcrf psczxu gcjtr brls
hjol efxczux bqdn gvrnpey yyoqse gbam ndzyj lbwb bhzn unsezg
bapw xifz blupk qqdk bofvqpp wnbuwyt rnwocu lzwgtt zucag pov
xkre lqvd juf lqvd xio xyg xyg
tzdao ztheib aymcf aorg iyawrch hetcxa iyawrch czdymc ccv
ucgl azlppu jvxqlj pest
dvwlw fuuy mnhmm okrp ualnqlm uyuznba fzyejk yaq crl ctprp
odfq knox mkbcku pxucmuf lpjpol phl
ixongh hfs ruorbd auy qyssl kykwcix aytsm rlj aytsm duq segpqhk
izufsk wedpzh podjkor eamo vqvev ifnz podjkor xrnuqe
twyfps bmdbgtu qye qkwjms
wlav htym vhsnu cocphsj mdsuq vhsnu jflgmrp
opajag itwjhfu purnnvk opajag
hpkopqp vnj aialpt lzrkzfs nwucez nwuezc
mcx hzcjxq zbxr dsx tpknx fva
rlvgm xrejsvn ghawxb efyos xty wdzdgh olahbtn rga efyos vhtm nsr
cni mbab qtgeiow ulttn rckc kmiaju jvbq emyvpew cdlxldn ulttn brhkprx
eykpffp rapik qki fhjgdyu tome ehjuy bibjk htxd vexvag
wrk dpxt gwkuiov gbkif ike gbkif pcd wpj toywyf qzsa aol
yqwzh uujn ujun ujnu
srs ralwxrz yxvvmgp sjhbhk waasid cqtxoxf whcladv jkmaq khjbsh dlavcwh
mdvsjh xaj etvxlsy fxgiy rgjesel rlegesj ptriz ebdyhkp kugxm dxv egljser
lhehwrs mqevb ygmv gri izop qgb ivm
loqqam alojlwg hgen hbyw qlwpun loqqam worgnwk kope
phozre todsknr todsknr ibj mvllsar
wuripy ruwlfbh wukbkey qhq iishw tvtvci xawvxc vxacwx hsiwi ogq
xryq vxwupqa zhqex aquxpwv bnvxrba dtbxki
yvvwh zvsm vqskhp vqskhp ggqqlw bpn wbuv
kqz tdy goqwge ygn jgd
szjjhdk zkpoo nxexz ebicc
wzuemcj oyd qupulju iaakzmt vzkvz
nppahov umm wpzev wxkgfxd owgekp bhhb bbhh dgviiw kdfgxwx wryb
bnc rhes lmbuhhy kwbefga bnc rtxnvz bnc
ani mggxf mcoixh zdd nai hbhzl mes bdpqr
mjn uinoty jjegvze bjgqg yhqsxbt coj obylb hddude xqi rhfbhha alood
cbjzj drmihy tfkrhsd nuhav hihzx bvblqpl tdd szmp gjgfv box
uumhdxd cmwgyf vepr rwqdkj exwk
hwvr ydvw bqefu kghes gvbhp awms iqsqes khgse
mrey jqfw fwvzhps komj dayvs fbui zmtd cofn mrey
dsjds fdpx irjj usndok qcctsvf fgk wvg txwxcl dxs llp zyilwtq
xmkelgk fdukc cye legkxkm wwly
enlny eynln cccku brkz dpof mwfoxcd yftmnqh wpebvyc
ggdn jnysl dsacffw ukj hdae cmzxku
uqhm gcachmn kxndfrl htmfis jfnajz fiqiypr kekho kekho ndcw ckrndub dejfna
keazuq ertql rauwl keazuq obmh rauwl ksrotm
jppp poigqhv repfsje grjk xwkyuh pkx ayzcj hoxzv
yhjw pcuyad icie icie icie hwcsuy wcd yihjh jnrxs
gaug ivvx ceb xujonak hbtfkeb ttciml cctoz
dggyyi dggyyi gqlyumf yasu fwdfa cbb nncn verhq
rhgcw gpcyct kiuhbg kiuhbg gpcyct jlmleo nhumm
wulxxu jyjek hclcp ogob viex wiqcupq
tthu nxgzpid kcnj mss ukapgkp nnc bxjocv qwxs oejwsif aywqtu brahkb
dtde bgvb smu vbbg zhlu
lyo nwjjmep ldbok wgxhto wwuh qfgjknk wnsl
lleyr onha hkwulbm jfg
bybjwd uoxvbh mvj iqfpnxs bybjwd zqtszp wvc lbazjr zkzenja cev
rbuyyr divtslq yuqmyt ajyveb smxsjb nlk tzqhq ims fewg wpjhr gqh
kpewfd beq klilis klisli eeezut
euqh hueq ldoo crqurv lvrwh tmaewp oodl
bqi lzrf jyhvxfh bqi jyhvxfh nbztd lwpdn cuzi
srjylou phavzjd wost uxkaq byh sluryoj
ihrdk bcegkpq nygrs qbcq wyjg dvzme pgzhjl vibg kvv
ijsx iedemek ktlz gtga tbal lbki gtga
vmiaxn kefig kefig vngxz
vrdmfvi qts vlvhq vlvhq dihmq
cfz dyrz zlw qnt vok fwvahg skshbqf hbwozdc ntana jdb uflp
rimbj bxemw sfps krtk umta vnk ewmbx nrlje ymrtqrz mxewb kjxunbt
egnuti ozat eltl ngueti
qtcwoxq rmaf qtcwoxq qtcwoxq
zws gcoa pydruw qsrk lrkybdf ugr wkrxoj nyvf vitwn
tmr hhd dojid zwrj bhsim righ keqlep flzunou
lwoquvy acjowxk tqudk oenvioh nyavyl
rgh dfhgyke iff cpxhuz hui koe iff hui dmukrei
bjiumig lcbmbgh vleipx sfawua rnf
gftfh qwb tfdroe xbno qhgofm vqfoe mux
ljdrr gyfggai iun nju xrucbis mhrcrh fukr obvuqc whlalfe xrucbis nju
nxjmjr egqwg arllu xqaahri lzc ivt uhsti
sqiepba rcmts kvesv nvp
tiksw tiksw rjni gbhvzm ctbq zuqfyvz
ibsnm kfka aoqigwo sqouih rxz
jmymq lxio adtmk umyu sxvzquq bporqnb heol fow
mepa eckq rqviawv dkqoei ifmngpp jiava rtklseu
yuycd jiufjci yuycd uowg yuycd udq izkicbr csxobh
nwu tfsjavb rruoxbn oepcov elxf rruoxbn rruoxbn azglwth jcjm ksqiqpv
dthfwip zqnwa zqnwa zqnwa
gso wruece ufl crgnlxv vllsm dpyfm wpa ctxko
wvpze seodz lpq lpq pmtp wsxs ffppx
yfxquj phvjn rtwieq rtwieq kgxztyu vbjvkc prqqd lyzmdo ojbrt ojbrt qiqjz
esaezr rpggiy jey kbzrhu uthus osr xxaiijd qfxlf auhzbx gkigoqw
yfhcj uvgck cds gjhhrg cmempgj yfhcj cjb
yxi voxvtuw unwg jqqm
igvjr ljz rus sru gbjtjt qfeg ztu zjl
leof ocxns hbkoysh hbkoysh leof
hab lyxmf yhh qeks fwhfxki xmbcak okqjii nfgzyg bhtfgdj lpmjn
mgognh tad herere lvwnzx ixwqs zphmuuc etdjz kczsf
mtej rlolsnn zbl uykek dpkan gmz etxtgj
mihuieo emjgbp jgks mihuieo iexrfw mjdnr bvp mcuzea xkbusvi
jvqpj bwt jvqpj bwt gxr
qpnd fpt tpor bibbpcg hmvguez wqc afl ckviua gpi
dntmcg jglm sxtnu sxtnu sxtnu
fzkbptw cbfwo ozvwov wbv gcdd izqo ovwzov lolewo xikqpw
nkxyxzd kpn datf fki werq mwidqx oiibor zizcjph
xvgyxym zor ijoy lvwsf fjuara idvvq rreit mqyyy ctio tzwqqhj rnpee
maqkfpk maqkfpk xukg sfdmnlg xjopvr xjopvr irf
liujcd vnlkouy dxkwc gto vhjvtw
swhqhj cas aupsd swhqhj cas bvbooii jquck dtdm
igh iqicicf ghi pcxt srcrjx gmf gyscphv
drplj drplj wopgpnk wytag wopgpnk
zexe ilcqoh qiefb txkuv lirfzv
ovvpn ovvpn uqeurqx uwzn hgmucj ovvpn sjxulms
rox silka irhsvym kutus otasof tdneav pcagds
mkja omu tyshbfq onp trxs lxa tftbv bnpl djhnc zdqfs muo
tjj rmmqas cbbkxs qio pikk ykyew gxlxt nhsyl ykyew
frcprg njrz oaxcmhc qben pedm ecvtga nzxwpb ior gaklot dpem
zyt kncau spoe qlchg sqys wkpbng yflju qlchg vkve bzadbpa
qtq pkaicl qtq mfkfqvr dnleiq brrjxsx uoyxh pkaicl yvmlug
firwy imtlp ywl qfa dqrbazz ztzb pcsbwhn zesmlag
ivey ivey mtvc mtvc
lhize acwf moa cdeoazd voktshy qmvqq jvmuvk ljfmq tsanygc
xreiqkc aawrovl pofcsg xreiqkc xreiqkc
cjbzvn ozds iniqu sdoz gqmki bablvll krs vjzcbn
izsod htkeqz entxn qtns prpcwu omfnmoy
kwfb tctzda aztctd tadtcz gyt wunbcub ydiwdin xxk
epnl ijcp giq ltfk zjcabve zfksmz epnl giq xxxbsom
ulyukpa mdjsbn dydko uhkdt qms aaaj hustlwu
zlsbu ohx jcwovf egf zlvpqgx qhejm wrywdmw
uhxqrzr mmu kjxcalj unuohiq rri yzngnb ikvlxry mfiym qbksdx
khqciz som yklmm jceb khqciz jspy jceb
ncwggv njvi nqox krtsn lnm
bgtqme xaxcoq qbtgme obqual vorfk baoqul lgrb
jli tsbb nlxjc pkwzmz dlxrj hmho gzguko ilj iyaasm
wlmw grkumg dynwtyo emxhhqr huluk slpqu uhqcmd absmr ufirmwr
pbs pcammxv dplfr tzvmav nccyy blvyq ffhnz bccutq
hgge ghge vxmvz hqxgjdg zab guo gheg
ylj bucoyoq udndc wpgyrbx ueh udndc gxdsdh hdoz wwgqlg
cjdeh gttyqe kdkm ltzd lfeozse quvjq mnwhokm kdv oojxm nxt
mfkzus knqxt saxkqww njx zumsfk sbmcyad cpt agvbuv
tukn vyco yobvsn bzgnn klrnzy kea thzk pxpwq ryfff nxzm
ylbm lxlz lybm lzxl
wgtxoij zad slgsi cvnxfg iomswwl vmx
hkm yinhnkj kmh kwkw kayknck chur styjif yknakck
rtfwhkq rtfwhkq zsf zsf
sldq zlntr ueegiw kajivqc ozcbm ceft snvugom pdyc elppeed nnqrp prwwf
lhk xjonc muc tudag tsafx mmivb dvrjbp qgrew
hnzer fbgqp aazta aazta lxaz lmgv aazta
victgxu victgxu mlpd ummrnbx cazjgnw isxcyp efy zfa cyusj
gyojxo onzq gyojxo uxufp awi ilhl wefwfxr gcjlt tmliynw uxufp pdcnxah
wjwachn xkuhfbp oky oky ybaeqkr rbuix yreoaw wepmye brvon aasb
kiidorw vxtxiqx wtqvbrv efdth isel qbom vcssyc vxtxiqx wtqvbrv riafzsw mqzsj
eurpjd vkhdamt tmfx czeoot hiz ykz lmixzq tfur jhzr
ipuftpj qbll sqkkdw fwncmiv bri oeeh lehd ioh wag
suima nanngc imrmc krq atxdo woy atxdo akev qlr aezco qlr
cfc efwbzck ozkmcxv moczkvx ccf
bnekky iakrk sask uwgnjp iyi rynev bdnas ldh kass
sicmw vvjbvv cap nsumc xgvrlm wsoo uoqdu psykckm
ugg mtr wnzhmmh tjxc ehwnji lwhu mdsckk yvmk enubrqo
grb oxmxz ohu ytetedv ssx apzlppg fdkamm sxofc jdt ynmu wyejok
umoep rbyqm eqfk twqnog cptbbi dragna ngqs ffb cexxnc rbyqm
utizi ormkel wvwur bdx ecelqbv xiccama aag glfvmj
znb rsuqoa uxo svc
obs lbifa cffi catpd
qkxwian ajlzjz wewduzp bbyv qmt fsr qgiu epinp ghmf
hatg bfgmb aght ghat
kuq inp dun cknbun wmwsu drlmmg kyxc bdl
bddybth swdbf jhi fva qpobio bjwm wjaztp jywi
mgckz vhveu zkemhp zdf xtiqqew mlx wazgd
umbjq pya lvvxf jeavij rhrxvew bwjqgpr piz
xaycpwo vjcuc qksc yuixhni sfbfb dydyaq gdfvb tggg xidphvf bpjdrl goskxym
agxfoip gguif wvo agxfoip ntkbaw fbyggy ooft zxih
nzvsu ffwq uxvfbl qrql olhmhom qhdltg ymwz krtndtx olhmhom nfsv krtndtx
qdp jqk ustz xjripzv mnk grnodk pjwdsj uug zqxjqj
mufrcox zunisfs ocvcge acamm xua vor bsde kxr vor kxr orccxx
ncycbp anvcxay bmm wndmeaw oso knmk mmb wamenwd kmkv ppdd
motdcn xzagzwu vuzt utffrn yuqxzrh uvzt ujttq
tauoqy coiy ybesz tauoqy wpmr trquyne ahxbj jzhems dsdy
aczq ypw pgmzz srfn quatjgf
cih ypapk bfxvr euvhkk gugru auhqui
vyf pssgfvy dnhvbfl xpacme dnhvbfl mzdv iynq hcqu
lbzvbu hhxiq hdfyiiz iyzihfd xhqih uzdqyxr
iapbdll vdr cprmrkk vdr dfjqse mlry flpqk vdr
grrfkq xcpxd grrfkq dxc bjpr prvwh swoc swoc
bopo chvwuhf qhd ieesl xey ieesl fnjcbe
kic fyq hsucnu agwyl pzzmd hqksh psw
mxf uau iti lcoz lpg zbu ocre wqlocmh mxf nidqj lcoz
bypmix ptzxgmf xmtzgpf hrvzzq
lbfw zwusma lbfw tuyyy
lrf uej unswvh obgsb npbl zajr kenea uej qnyjcu wzufim qpzkgya
qcrxj llyu kligt hlm ehwtbx dda lgsvhdt xewfcv uikn
nfzjx izqdbq mfbxs imiuc yqxb xlmvix izqdbq eflqfq wku omgtuu izqdbq
lasdwg hiy btzt eefd eyoep icn nnmhg otml rek luixac nyzgn
vekteds utsuxdx utsuxdx vekteds
feyov qrij zbebwg ijrq seplram wttkwm zewbgb kzuhuh
dmkgtv wohgqo ddtqmv zatahx mym hqowog tkmvdg
vhha wjrmuyx kqh vyyrj xzchbi ejsdq orlxg vyyrj dlrc
yetngqn zdtuqox hkarjei fqpsgh eaqwbg zsssog ghb gddqqzr hbg
obldb zsrhz zxp uxphnev mwnbc pfjft fms xwslk vjm fxy
nfij dbfykv ttq gyjgac igxuyqi gtiioqx ilhdex dbfykv uyp bdiwya gqf
pffzruz vogfosh dcs wje
pohhf fhpoh oon yyz
xxuam afwm qxl lnt syyr bwxhhf sozauq shlhfmz kwnn milav ochq
wefcqrt gejw cwerqtf fttf gjew
jfsvnmr osca epwtle pgfif sxom
exlfzmq nakp rgdnx rrcvth vhrrct aajjdrt ryyg dsozd jdqlqj pakn iruv
rmcvo txszcs xxhyxz hbsozk wshkocf rmcvo rcbnt
kitz yjgney yvkymef nauj hmllsgl kyhm kqr pzsu rcf pzsu qpte
cdinpx bfur mkj naz ihkheyr nohhoe
ylris xeqcgup wap bbfih tgfoj
ina gnlnm zyeqhij cudfuf ipufae bvkdzni aat teqsg cudfuf bjokrbl teqsg
aedx edax dnfwq qndwf
rdngdy jde wvgkhto bdvngf mdup eskuvg ezli opibo mppoc mdup zrasc
qcnc iaw grjfsxe gnf gnf
zbjm snznt zelswrk gkhlnx dqxqn qqxnd dmro
zisecvx ztezof uzbq otnrtj qsjzkwm ewvcp rlir bfghlq tgapdr qxmr
ipnqj opjf vabyoe wkwnd
wyf mfqxnrf apm snarf jqu aaghx pwecbv lvghayg
acncv jmmbwlg oiphlm ifuo cvt
pvmb egansnd zmh gcuzzci rrxpslv ubith
uoleptg xbouzn xbmg cfh cpn wpqi xbouzn xtxis sxzpns
rilybri kurbpq vfmjpck tjyogho hfyxad svfofx lfbbhxj khaerfs iqr
seaebgz wlmtkre qguv qguv wlmtkre
sgo edkxya zdqgwtt gxu nibuu rairqoq mzxli dci qsv
tsol mdhzqr rmaqnru ggvcq arbwkn hlkcnj ljkcuof
mmliphp ocup puoc eijjv
gmajqpb ijki ijki kvz
pmqss unhlpcj dlkll nuhlcjp expe tlurzmv nsy vlumtzr tgseozl
gkvaoni hsba hsba viuedv phyoclp fdq phyoclp febld nqfs
rxvdtw abn pntv qrqfzz slsvv abn lrxix mnu npot
ghlfjp woy xwkbmv bkahpkj jve cncvk jvdype fwgvoju yrkwjp gwfvln mvkv
kmluh mie bby fwer chsinb ojglqr nqk mie
yzmiu igkgca ybnsqja jpfejtp yjddy xsosxfi ingx qwuhb emrkwpx idqjmmm
btrllw mphm dkvo ewdl dchcul yah btrllw kmqi mtvgk wtb
hxsgard yuikc lykt tdee adprp gpougod klnzk mzsmlb
hdn znblw ifoblur bwzln dbv
smofpbs vjuyiro llk lfzesga tybu tybu
gffnpug xaup iqiyz fjkpnkz drrk fwyxw lwzfskz gslwpmv vjxylva tbkyo nib
evydmb nhwuiiu fkerq nkgbuyy uclrs ydjgglh xhotwbm riirgzt
bsub eavbt uvd dpzwyt rhn khrbptt xszckc djnfxju axofhat powmso nvdffrv
xtuykl fjz mbikc xpnx hmey fjz fjz
rkls nwdcsyx rkls rkls
tygml untequ ybdfumz nqffbq uipc sove hfnqj
ytecew vven koqn royynd qsn ksl qsn sdw
hknlw qwho whoq oqwh
lzmmtqu qvhyeo cnofuj utpwkjz gnirz yhhu aodbnd
zsr axw kwtzcv tydzo kwtzcv lkxsm
rbjtqe nihifd gvdxd bpxzy rxteky vgcgllv vbbua anygiup rqo
dpd wblfwp wblfwp wblfwp ygahc tqjbaq
gsw gsw pacgj xmrcz zmxhmch xmrcz
pdq rhe xqmq lgpkhg fyffrot ovnqh wle
tbjavke ypzzrj jizx gdxoh icjsat otfh fmygumv
snch nxlgjgp jeyn sxoqfj jtage jtage iuice
rtb coefuj grwg grwg rtb krhqnma vfhgbr
vhegtl btorwxg szcev kbvkx itsk nlzpbed
hiukrf ilzkm yllhh xsgwkdp zyy kjbv
rfcg tdorci zcj wzftlv rfcg rfcg
lgbc lzizat vsno pau nvv vsno bbr lzizat qhtb gwp
sfwnio tcugjk bsfsz ykyfwg ibkap fsrvy mygk kzunawx zyhyh
mpavlh qps bylh lttjkz rqabgk vewb bwev tlzkjt gzrbxga ktmso prpkj
gpf ims ynh ffrs vpa iemp gofh cgbauje
secys qks mcnfhwh drog kqs pajy zoltkw lfihnb myb ioxptu
ytq nrta ouk ajqblf yuwwcd zdy blyoxbw dakk nvgi bzrhzaa
nkoych sufiia xkdvw crtldee zycl qblab egqhr qblab
nllno muxaf vds qjnitmw zkpj wskyhft kmqct xamuzpw qcai cdjtbt kaxv
qzdytpe osr fuw osr qzdytpe whperd rydwdcl knoa
zkdznhd peh duoygr zamrgl irnvj otpe pltpq jdkecg
byzgw rece iigdug ehif tpgje
ccnn foqdran gbctca tefdjxh ntcr rjciii xip xlss crl wvvhzqm twyohf
dqyii milqqc qjgkojp qjgkojp ryde
tdkyj tbrcud tsba vqtmb cjwxnf
hqhmq wemvrce nagig pwnw nagig epg nagig vlsi
tqgvw luoplw hccti npjm rytdruq cylrsun rytdruq vjsbjl rytdruq ppti
itgt tuwc itgt rvp itgt tigns eipl ksmru
pdw wdhtkn nbdbpn wff zhuuipg rvemv qxr
qgkwdq cjilayh ymeks mrpuzai dwgs stfstgz ucvqhb yout oiq
vpxik ypfr qytimvu qms oxbmw ppyfx
fwwidn gdhd pyuexk snsz iwndfw
lfcb sllxjna lfcb hpzahfg mmvgaa svny jhuzd
unyg gicmzd fwc spkciy toyq wjupckd vzzx iuqgka ytqycb pxsufj
goj tnrcml eyizngj txa xrkiw zvu igduz
wek xrrlkna clyof rrlnxak
cjm rmyuku vjom gtf
buk cfae awstd dywgqp hxo wcxvf laihqw xdqfes wdbh qceh uzlwj
sudguo dxwplto rlebdh bkamu dxwplto
crwkyxm yuz kjtdhom crwkyxm
trhc sduorxr aizfryh rsudxor gbyc
pczkyl bptp qnn nxmpwsx udrg hhlb rubtrmx twzodlp xygnht
jmqct cden yfajtkz fevcw sxonbxz sxonbxz qkzkm hhngr fbv
sdsnm mwvicr wypfi cty ndbowr woiz mrauwzd qlno mwvicr
vteyo fng lvr lxytn txpj milg
wjx ahtmgo cgwcaj kaxae fhlvlqf
ezj eetqhzu upwda iiefwlk vyvby
imalvy yeghqe jwcu mvrod cwju
bxnmsa yhfu npsdar tsbri hfuy sirbt oofxmy
fkndt elbjtn vepqtxt elvpf fpelv bzkgag qttexpv prblwb
rmq iqs yvprnyy iezqrzm wlqsrr
yviovq lekxghj oey qwhzj lxknxw qiyovv ksnt jptz
tyrg cifxt hugqf tyrg ffuiv jmax qyw fozfosq ffuiv
nmg rsl jpzazd qbtlf yxqtsj czwmdfd bamge lbjdof uqy jssc
cbx boozjip pwgvzlq rjz kxy kxy hszacok fvsq jhnir cnsba gafz
sbcuxb wfur nnnfqjj fdwg huhe sbcuxb
icwk qelbxs uevp qped zsnhh wpuok wddxsln ftnzupr ruxol cgxjb jbhh
izcp htykj xxmndoq amnspe htykj
vverol oixwlny vqd tvfzu henc gnyrwr
ytxio etytsx choynep zqapo hfjit
lkvgr oyzfa taiqr jok djatvy ckif tmdw oyzfa zroy
jlgpyp kkqysg oqjki hjohoug hbhta muilz zft
sumfyu wftcu bwwdcy lezimwa qwvxv zwh mqyv bmfot aii torcol rnt
tpdj xrw ccsbnh fhptv fwkxjfm dmqaokd bjci
zxi vmf vmf dpyg
sfzxysw lcms bkojtv bkojtv
opywo qll ipkitr mtwp tudrr svhyp huz bxsdpn xomfy
gkod luo qrosbp orbd rpsjzyd rlh gdok tze
nusiuq nusiuq zeys ahufexc
veno jntg avtmtdn qojxru zegdcql odfcetz pgehau
uqun vigjm ykac ozlelj danmji bibugox
rpuozh ajwru rbvuevv uhzsq
iawoe tyb aewio ymf byt inijv ctu fcys micsgzl pbby alt
gktyxp ris mqpfm bkqsfl nrg idbbcxg jhcf
qibt invvv qibt luitx rnm eby hrfbmwl wnap sgkzvb qlwc hrfbmwl
jwkv qecsjbw lycgldd wjvk tjcp dycldgl pzrvr zrlcf kji
nzsrmiq nmhse ilivrk kqv
besmyzi imkgpt iekbjax abxeijk uvzs wwv
jdocl uki ltswp tjkljc ymce iuepze qygqxzs tei lkry
hhyfy gvzd mqksxlq czn afe mesnag eep frwgekg mqksxlq phpy
ehg connnza ekt ddgokw
mpbsoms uzhzl xevww ztt uzhzl
lftybr firc awsud dsxdkk ltf ipjv dtx lcymth
vkcpb gxtxq yioeq fexj xxgqt
srvca fslnnvf nfmkpvt egw wemumq jie vznf dzsjw cukf kcvyir
yxjkl lyjkx jyxlk kgc xtz
tpoe xzov csp leleoqo noyre tdhf cyib sjgtdx raehdw nmcxp
qvt uhznqe bpvos vtq ddlebtd tqv
xlw utsxs gpia rvlvnts elkxr dddihy tnrslvv ibf wlx bxg
cwqnnrt rkkqyf dye yde fzl pthanj
boc rqjenpp xjqte jteqx pvoofc pidqe ruoucy gvnro ognrv
qhalb gnazwc fhl iuti
clnbjfo nnfs nnfs heymvr oarew oarew nxu
lwtrotg hiaxwj ymzbly nvhzjhj zlsaheg nvhzjhj ymzbly
rrvi tsjp tsjp tsjp killji
rpx hiclj cmwq ibhj nfd
pvwymn iebkd xmpw vuhhkap ksw zigzy mzzyyxy rmuh iwwhea cglfq
rlwelgy sffml jin qsdzro xlsty mgqzuu etxjuo emzd jgnoyq tkjuy vfvb
tkctdj hhkuc viskmy obw
zvjkuj akeky ikj jqd hfhzbwe bkc
btev nrdo hcyiuph stf qharfg vpmel mpfz nvs ytgbbc
ieepn ndueuw svmdr tcvumw mceyrn mrjwhyl tbdj mgrgvz
uxrs ckyi xpmqm czzrkl cjp
nlliwd wrqkrkz yjmng nlliwd zirde hcjjn wco ysf mgl
dxti lcahe ommare izlwf ramsfb nzgfvo ijvm fwymrdu bndq
isxy jpvuzu tdduyhw dixp cfa fkzbteg ytoi kepk ysf yqcpi
qmeprfj soqo ncgeor cqsuuj grzy wogxy vyblnbg slvtry vdols kka
ltykfp gtzl olrp gxend vapee deq
emywfbn dbfiut rkt wvwe dbfiut bwffhea yuzcxv gogpicp wvwe
vqvmrp ofbk dlfabd jwllzxk obx vqpwjj umvng tqwis fstxy fstxy
miha zgvyux rmraszo xwf
kjaagk btm kjaagk wkewjrg kjaagk
lbmli aizs omrdr gzktnx asiz ptanzpa xlo ljre ckyb wob
svz dlk rijagg avxmg fkzwhk uro gegm
dzplum temdw jqnm tvxcww bmg tftttpp deuw comxey xfimzjx caluczi nqn
uwvhxa ztkd nlsdyt vihl julkwwv uzch dwakhs
wkhuihh ycrc cxff vzcfhpp uegfd gaok kcnvz lhzogq lwa tyrypvu
idp zmrrzp zmrrzp nktp xsnx rjsxn
eybrnib ivgntl vaxsbpi eybrnib
nzvnq xvbfa pbhwwh ylju runvsj imlx vztesn
nfdohd nfdohd gtevnky pivjyct ihvd fzcsrq lko fmqk
kwpkks ecikxu bcxswlt qvrxm sbcqmh
kdjrmj piuh kdjrmj vnaf gyedkg vptxgm xezssxx zsg qjzpo zsg
oqo sley aqx qmpqb fgmylbj egd zivj kepxizv kuakyn lunbnd
hmcf hmcf xlhgc hmcf cdlm buofnx
onjcj yluonz kzmk phqo phqo phqo
ohaafy efl bnkkjww wwjnyoj dxeaig ywnjjwo slk hrbebw ohlyju elf
msohiqz aunk njki bfktdgi htmyrj mgx
numlzrl rmnlulz glb ltt fhbajz gqxpu
gko hco oai ryq xwy sdqosft spjkiu cxfhg ycwpglh noy rah
btzpjem brpk vqr atxu rhlh rqv jmg fvyus
phmxxgj ejx xje qtk hsb kqt npwj gqt
hujyjp nwmsd ant zipuya lrkahww uwqal vzlo qmbo twkjkse ufivi
zfbnyz fwvh xrnrw usn zin daq iwjzj
yykyg iwypfy hehqnl cjvk cevdrec
gui muuto wsta glqmx gfo rdmbv mxwz gffzt eejpw gion
lpng nduid iqbpu nduid knrqd
xwxn oefpckv gjaua ugaaj gjuaa
qxk aeql trqdmqc crzlinj crzlinj trqdmqc rijcne ewyf
rfv qmbe fvr bmeq
upqyfw lowzq wpen upqyfw gfskbil sljuzh wpen
bdcara qyhx rtaez qyq gbyr
evzls qxtxq clzd svbgqi zxlzgss vtrre fko eebo qjyl
zaapeo kpwhz tygknau nyd pch trp xqe
ypzcafg rnqmbh qtteg sncu ssojhhm zonfym thir xmgheb wqj gpjg ssojhhm
wvcwyn xrf muozyya lasdp xpjgu kpqv zkiihiv ifje cbdlavg xbied hfnaa
qqqb rettz rycukl ihpkhh
dnxzxqv znb znb fbxj azxtezb xvxa
peqkd xlzqkov esgnw ucku hrwpfxd xtd vnig vlmfp ajte qswr kqoj
dpwy oavzkk dwyp ehij upqxgii pydw
amfc hfv xmqa nqvn cal rqmcq oej amqx cla ntxj
hqhhe qkbhwli wmhlcq xaczs peywuo
vcr xfv xfv kymo qpszwzo xfv
nmrbur tswo xbo ljlrzo bmhpgc pev zovkznz lok wbbhtkk
tojj lxqgr rhjavrm ndsdup gdbjwaq cqpnl wfaxivl rfry ryfr udspnd
beffod sknlph amb feobdf
mldgn jxovw yuawcvz kzgzwht rxqhzev fsdnvu vluuo eycoh cugf qjugo
tlnd qcxj ker fdir cgkpo nrqhyq raef uqadf iahy rxx
mhvisju lhmdbs tcxied xeidtc ujry cditex gvqpqm
cgc jazrp crgnna uvuokl uvuokl uoiwl sknmc sknmc
rvbu czwpdit vmlihg spz lfaxxev zslfuto oog dvoksub

@ -1,513 +0,0 @@
#lang reader "main.rkt" ★★ ; 231
kvvfl kvvfl olud wjqsqa olud frc
slhm rdfm yxb rsobyt rdfm
pib wzfr xyoakcu zoapeze rtdxt rikc jyeps wdyo hawr xyoakcu hawr
ismtq qwoi kzt ktgzoc gnxblp dzfayil ftfx asscba ionxi dzfayil qwoi
dzuhys kfekxe nvdhdtj hzusdy xzhehgc dhtvdnj oxwlvef
gxg qahl aaipx tkmckn hcsuhy jsudcmy kcefhpn kiasaj tkmckn
roan kqnztj edc zpjwb
yzc roc qrygby rsvts nyijgwr xnpqz
jqgj hhgtw tmychia whkm vvxoq tfbzpe ska ldjmvmo
nyeeg omn geyen ngyee rcjt rjuxh
qpq udci tnp fdfk kffd eyzvmg ufppf wfuodj toamfn tkze jzsb
rrcgxyp rbufd tfjmok vpyhej hcnz ftkojm
jnmomfc jnmomfc bkluz izn ovvm flsch bkluz
odisl hzwv hiasrhi hez ihihsra qpbmi ltwjj iknkwxf nbdtq gbo
gjtszl gjtszl fruo fruo
rdapv gaik cqboix sxnizhh uxmpali jdd usqnz advrp dze
flooz flooz qad tcrq yze bnoijff qpqu vup hyagwll
lnazok dze foi tqwjsk hpx qcql euzpj mwfrk
ilb fmviby ivybmf gtx xtg
rpauuu timere gyg wcolt ireetm safi
croe szwmq bbhd lciird vhcci pdax
hnc ykswt qqqmei goe bri wmyai hnc qpgqc pberqf bzs
hsnrb wdvh iezzrq iezzrq rdbmpta iezzrq kemnptg alkjnp wymmz
ngw don ddvyds nlhkoa aaf gptumum ugtpmmu
vmccke qbpag kvf kvf tgrfghb kvf bhpd sglgx
obomgk bkcgo yso ttft vbw ckl wjgk
fli qvw zhin dfpgfjb udsin nihz ovr tiewo
tgmzmph hauzieo jmg tdbtl lvfr qpaayq qapaqy ausioeu jun piygx
jkp guqrnx asdqmxf vmfvtqb tloqgyo ioix gajowri tmek ilc puhipb
uycn zxqm znft ayal znacus kvcyd ekv qqfpnh
fqghur xtbtdd ztjrylr bpuikb ziyk
rvakn uqbl ozitpdh uqbl dsej xehj
laxp haz jyd xnkrb ijldth woy xapl iqgg alpx gnupa ukptmmh
dyiy dyiy ihb qcyxr
wbwkd hdwu zvgkn hdwu wjc sakwhn zxujdo npllzp uyr uyr
fxczpmn cininu akcxs ggslxr riyxe ojisxe
ppbch sampq dnct afikor dnct edsqy pnzyzmc afikor
jnvygtn hijqjxl vsd jnvygtn nqcqv zns odq gkboxrv kolnq wrvd
mroq mroq flsbu flsbu
fyshor xvpaunj qmktlo xoce wkiyfu ukcl srndc ugwylwm ozcwdw mtqcste kpokr
cfh cxjvx cfh cfh uewshh
bpspbap bpspbap fquj mxmn bwls iirhvuk dmpkyt exrn mxmn
tvyvzk ezszod ntxr xtnr och
knfxhy kbnyl knfxhy xhkssx lxru uprh nkxpbx oodolxr tpvyf
nblmysu iwoffs upgof tyagwf aan vovji ajk ywzq oyfi sfulz
aushzkm lcaeki mkuzsah ynxvte rsntd refk pcm
mgguob gobmug dzenpty gmogbu
yvq eepof rgnree nerger fpb stfrln ernger
hrgkbl mzwvswk rsrsbk ieru holco pajvvn ztgsr qkyp fyeg owpcmoj
fowda gmsqdca yugj mcrroxv mqcbojd fjnqfji qdfsc jqs
qnc rvjfz vvxk sjd xrma ucdjvq sbw zydyt dfzww
ocajazv cozaajv tqunkla udwf ecnnmbz lsakqg bki njnda zsdu ccfqw rxpc
qqm qdfya qxyx qmq qfday uqnfttt
rnbirb iapor qet iapor hxkhz dfvzig pedl ybyb
mkgamxg xkniv meb hbzmxjn dhbj zhbxjmn hdjb
ilteux pyutyfx mau lrr bacak
sjjonmn dbbbgs crxyuu jztstgd ezb uiabyaa
tra fle ufzlvf nnaw kec hiwnnlj tei wld iyt syk hjdczb
qmd jtlud dgh dbanock fzp dsjgqru wwvo jwvxwgv xlemfij jcacd
rpkx oxesil snazcgx fly miiyc ikmtmp oefyyn egbw
ypfpeu wldnyd acchppb yqwcaw wldnyd turbz megci nbgxq xkc ypfpeu
iqqv iqqv neui iqqv
ypsxm icqyup zyetrwq nbisrv
viommi toszx dpueq eyy cunjou ffcjc jaeez djefra pxvkj liudlig yye
fhnacbg jghchh ghjhhc iue hwqmo
vbjw lpn cizba ltnsfpz tzoweml irewlc uzckhpd mszal obd
yeos utxkft hflxkfe fxczge qpgigkc ksgr vuumql vhlvv
xzmkv xzmkv krecdi klpem jsbu nwcmik emfzxf cjmpgnj
vtkjo pmiv zou gxo qdiyxsf hwyinjk jhkgf rjq
dyuoc ywiyvch irfgl ywiyvch fxb fxb
tuz onhr syu rqya abkaf bcfx mbknex juwoor zmksl
oheg spjorx ksdy vwtq fxz phvtazk tcze lrxg
hew lbup botaj ltr jpd
dxgc tzinkej gnz hxvvub adsqmc dxgc asgpp rqbdcra goy pmamdua bhiacva
xqv ygb kihxqz vyv pjcny vmyvsdv cgsi nfyx
tqga ssshrw ndq qlbvwh huyd pxbgj qbxk dkkbf jxy chsobw pph
hxl iwph iwph xnr otifm ljhre
zlgvpd kapxpoc dve rklk ogh hgnp rbrmc zzkz hhmcx aklmo
sar gfor nkf hek nkf aql shc aql
dtcrw kfjzcjx qyhi bldson whwdayo mqtgt xhqzp ttqmg
omspdml isze jdl nvwo qrkm wztfg ssfgyh dryj jhp unsmty
jxt cszylng ifht ixtuna azoi xutqlv jtx tjx
usgm azuayp fgkby ezpyq jqwl ezofj
tnhvil nrvg moyrpqs sldx qymoff megflxh pyhqwms xmdw
zomy zcquwnv lzx bvcna yods mjp dgsez
blklyf xokd gpit tiysj yrwfhm tofx
dtig vhdp omuj vhpd
fogwxim qvdwig emdiv jvhl euwbzkg xvxb hwmqo ujdmlp epmykj
sjxll sjxll pedvgb sjxll
drvay gtzhgtx yrt okz nqf
haxfazn pvkovwb pgu tgshw mxcjf pbe nwoymzc mxcjf pbe hydwy jradcr
prjsloa ahylvj okbsj qbdcdjt pmfo pagyoeg vkmhjzt khzmjvt opfm xfrji gyjqyel
lzypt jdbtrad ogr jdbtrad heink
rcoucuq gdxewa rcoucuq whlw zhhm rcoucuq azaqohe mzyli rdvaf
yuag ebcf yuag nsotg qqzuxr jfmao vyucw wmoye
qwvk xemm hgqrr wyxkpp tojndm xlvzypw jus bgnu bgnu nklfwhs
daqi knenmku ccm xkiuy vkexsbc kvvdagx umopitw yaocnx yoakqql mllmsp
mrxgl gywit mfopia ncnsvw vdxek axuiot rsejua nei prndudz mnu
egqn gaa qgen urs mix zbn rhn
ewharq aihy udkdaob kgrdd kgrdd kugbjtj fcef llqb pduxaq wcexmm
dwtiw nelq hppad algxgf gcc upou akm efnb mxmhrud
yxqaa ups okbhgt iet qns tqn rnjqxgp
npmhdm cgds ldexvr typi jyivoqk zkgq vfyxu xgfo
dkwnmr umm dkwnmr okpjw wqx jpztebl eqsib dkwnmr
dxbild wpbup evscivq dxbild dxbild geqp ojfbpl jshvqej
cxdntxs csfocjd pyy tuhws teb boyloz xfw scxh pxhonky
lteucke xrgwy hszgzu hnyrcvb
pfgsgwg dxzh fworek qbstod
usemcrf psczxu gcjtr brls
hjol efxczux bqdn gvrnpey yyoqse gbam ndzyj lbwb bhzn unsezg
bapw xifz blupk qqdk bofvqpp wnbuwyt rnwocu lzwgtt zucag pov
xkre lqvd juf lqvd xio xyg xyg
tzdao ztheib aymcf aorg iyawrch hetcxa iyawrch czdymc ccv
ucgl azlppu jvxqlj pest
dvwlw fuuy mnhmm okrp ualnqlm uyuznba fzyejk yaq crl ctprp
odfq knox mkbcku pxucmuf lpjpol phl
ixongh hfs ruorbd auy qyssl kykwcix aytsm rlj aytsm duq segpqhk
izufsk wedpzh podjkor eamo vqvev ifnz podjkor xrnuqe
twyfps bmdbgtu qye qkwjms
wlav htym vhsnu cocphsj mdsuq vhsnu jflgmrp
opajag itwjhfu purnnvk opajag
hpkopqp vnj aialpt lzrkzfs nwucez nwuezc
mcx hzcjxq zbxr dsx tpknx fva
rlvgm xrejsvn ghawxb efyos xty wdzdgh olahbtn rga efyos vhtm nsr
cni mbab qtgeiow ulttn rckc kmiaju jvbq emyvpew cdlxldn ulttn brhkprx
eykpffp rapik qki fhjgdyu tome ehjuy bibjk htxd vexvag
wrk dpxt gwkuiov gbkif ike gbkif pcd wpj toywyf qzsa aol
yqwzh uujn ujun ujnu
srs ralwxrz yxvvmgp sjhbhk waasid cqtxoxf whcladv jkmaq khjbsh dlavcwh
mdvsjh xaj etvxlsy fxgiy rgjesel rlegesj ptriz ebdyhkp kugxm dxv egljser
lhehwrs mqevb ygmv gri izop qgb ivm
loqqam alojlwg hgen hbyw qlwpun loqqam worgnwk kope
phozre todsknr todsknr ibj mvllsar
wuripy ruwlfbh wukbkey qhq iishw tvtvci xawvxc vxacwx hsiwi ogq
xryq vxwupqa zhqex aquxpwv bnvxrba dtbxki
yvvwh zvsm vqskhp vqskhp ggqqlw bpn wbuv
kqz tdy goqwge ygn jgd
szjjhdk zkpoo nxexz ebicc
wzuemcj oyd qupulju iaakzmt vzkvz
nppahov umm wpzev wxkgfxd owgekp bhhb bbhh dgviiw kdfgxwx wryb
bnc rhes lmbuhhy kwbefga bnc rtxnvz bnc
ani mggxf mcoixh zdd nai hbhzl mes bdpqr
mjn uinoty jjegvze bjgqg yhqsxbt coj obylb hddude xqi rhfbhha alood
cbjzj drmihy tfkrhsd nuhav hihzx bvblqpl tdd szmp gjgfv box
uumhdxd cmwgyf vepr rwqdkj exwk
hwvr ydvw bqefu kghes gvbhp awms iqsqes khgse
mrey jqfw fwvzhps komj dayvs fbui zmtd cofn mrey
dsjds fdpx irjj usndok qcctsvf fgk wvg txwxcl dxs llp zyilwtq
xmkelgk fdukc cye legkxkm wwly
enlny eynln cccku brkz dpof mwfoxcd yftmnqh wpebvyc
ggdn jnysl dsacffw ukj hdae cmzxku
uqhm gcachmn kxndfrl htmfis jfnajz fiqiypr kekho kekho ndcw ckrndub dejfna
keazuq ertql rauwl keazuq obmh rauwl ksrotm
jppp poigqhv repfsje grjk xwkyuh pkx ayzcj hoxzv
yhjw pcuyad icie icie icie hwcsuy wcd yihjh jnrxs
gaug ivvx ceb xujonak hbtfkeb ttciml cctoz
dggyyi dggyyi gqlyumf yasu fwdfa cbb nncn verhq
rhgcw gpcyct kiuhbg kiuhbg gpcyct jlmleo nhumm
wulxxu jyjek hclcp ogob viex wiqcupq
tthu nxgzpid kcnj mss ukapgkp nnc bxjocv qwxs oejwsif aywqtu brahkb
dtde bgvb smu vbbg zhlu
lyo nwjjmep ldbok wgxhto wwuh qfgjknk wnsl
lleyr onha hkwulbm jfg
bybjwd uoxvbh mvj iqfpnxs bybjwd zqtszp wvc lbazjr zkzenja cev
rbuyyr divtslq yuqmyt ajyveb smxsjb nlk tzqhq ims fewg wpjhr gqh
kpewfd beq klilis klisli eeezut
euqh hueq ldoo crqurv lvrwh tmaewp oodl
bqi lzrf jyhvxfh bqi jyhvxfh nbztd lwpdn cuzi
srjylou phavzjd wost uxkaq byh sluryoj
ihrdk bcegkpq nygrs qbcq wyjg dvzme pgzhjl vibg kvv
ijsx iedemek ktlz gtga tbal lbki gtga
vmiaxn kefig kefig vngxz
vrdmfvi qts vlvhq vlvhq dihmq
cfz dyrz zlw qnt vok fwvahg skshbqf hbwozdc ntana jdb uflp
rimbj bxemw sfps krtk umta vnk ewmbx nrlje ymrtqrz mxewb kjxunbt
egnuti ozat eltl ngueti
qtcwoxq rmaf qtcwoxq qtcwoxq
zws gcoa pydruw qsrk lrkybdf ugr wkrxoj nyvf vitwn
tmr hhd dojid zwrj bhsim righ keqlep flzunou
lwoquvy acjowxk tqudk oenvioh nyavyl
rgh dfhgyke iff cpxhuz hui koe iff hui dmukrei
bjiumig lcbmbgh vleipx sfawua rnf
gftfh qwb tfdroe xbno qhgofm vqfoe mux
ljdrr gyfggai iun nju xrucbis mhrcrh fukr obvuqc whlalfe xrucbis nju
nxjmjr egqwg arllu xqaahri lzc ivt uhsti
sqiepba rcmts kvesv nvp
tiksw tiksw rjni gbhvzm ctbq zuqfyvz
ibsnm kfka aoqigwo sqouih rxz
jmymq lxio adtmk umyu sxvzquq bporqnb heol fow
mepa eckq rqviawv dkqoei ifmngpp jiava rtklseu
yuycd jiufjci yuycd uowg yuycd udq izkicbr csxobh
nwu tfsjavb rruoxbn oepcov elxf rruoxbn rruoxbn azglwth jcjm ksqiqpv
dthfwip zqnwa zqnwa zqnwa
gso wruece ufl crgnlxv vllsm dpyfm wpa ctxko
wvpze seodz lpq lpq pmtp wsxs ffppx
yfxquj phvjn rtwieq rtwieq kgxztyu vbjvkc prqqd lyzmdo ojbrt ojbrt qiqjz
esaezr rpggiy jey kbzrhu uthus osr xxaiijd qfxlf auhzbx gkigoqw
yfhcj uvgck cds gjhhrg cmempgj yfhcj cjb
yxi voxvtuw unwg jqqm
igvjr ljz rus sru gbjtjt qfeg ztu zjl
leof ocxns hbkoysh hbkoysh leof
hab lyxmf yhh qeks fwhfxki xmbcak okqjii nfgzyg bhtfgdj lpmjn
mgognh tad herere lvwnzx ixwqs zphmuuc etdjz kczsf
mtej rlolsnn zbl uykek dpkan gmz etxtgj
mihuieo emjgbp jgks mihuieo iexrfw mjdnr bvp mcuzea xkbusvi
jvqpj bwt jvqpj bwt gxr
qpnd fpt tpor bibbpcg hmvguez wqc afl ckviua gpi
dntmcg jglm sxtnu sxtnu sxtnu
fzkbptw cbfwo ozvwov wbv gcdd izqo ovwzov lolewo xikqpw
nkxyxzd kpn datf fki werq mwidqx oiibor zizcjph
xvgyxym zor ijoy lvwsf fjuara idvvq rreit mqyyy ctio tzwqqhj rnpee
maqkfpk maqkfpk xukg sfdmnlg xjopvr xjopvr irf
liujcd vnlkouy dxkwc gto vhjvtw
swhqhj cas aupsd swhqhj cas bvbooii jquck dtdm
igh iqicicf ghi pcxt srcrjx gmf gyscphv
drplj drplj wopgpnk wytag wopgpnk
zexe ilcqoh qiefb txkuv lirfzv
ovvpn ovvpn uqeurqx uwzn hgmucj ovvpn sjxulms
rox silka irhsvym kutus otasof tdneav pcagds
mkja omu tyshbfq onp trxs lxa tftbv bnpl djhnc zdqfs muo
tjj rmmqas cbbkxs qio pikk ykyew gxlxt nhsyl ykyew
frcprg njrz oaxcmhc qben pedm ecvtga nzxwpb ior gaklot dpem
zyt kncau spoe qlchg sqys wkpbng yflju qlchg vkve bzadbpa
qtq pkaicl qtq mfkfqvr dnleiq brrjxsx uoyxh pkaicl yvmlug
firwy imtlp ywl qfa dqrbazz ztzb pcsbwhn zesmlag
ivey ivey mtvc mtvc
lhize acwf moa cdeoazd voktshy qmvqq jvmuvk ljfmq tsanygc
xreiqkc aawrovl pofcsg xreiqkc xreiqkc
cjbzvn ozds iniqu sdoz gqmki bablvll krs vjzcbn
izsod htkeqz entxn qtns prpcwu omfnmoy
kwfb tctzda aztctd tadtcz gyt wunbcub ydiwdin xxk
epnl ijcp giq ltfk zjcabve zfksmz epnl giq xxxbsom
ulyukpa mdjsbn dydko uhkdt qms aaaj hustlwu
zlsbu ohx jcwovf egf zlvpqgx qhejm wrywdmw
uhxqrzr mmu kjxcalj unuohiq rri yzngnb ikvlxry mfiym qbksdx
khqciz som yklmm jceb khqciz jspy jceb
ncwggv njvi nqox krtsn lnm
bgtqme xaxcoq qbtgme obqual vorfk baoqul lgrb
jli tsbb nlxjc pkwzmz dlxrj hmho gzguko ilj iyaasm
wlmw grkumg dynwtyo emxhhqr huluk slpqu uhqcmd absmr ufirmwr
pbs pcammxv dplfr tzvmav nccyy blvyq ffhnz bccutq
hgge ghge vxmvz hqxgjdg zab guo gheg
ylj bucoyoq udndc wpgyrbx ueh udndc gxdsdh hdoz wwgqlg
cjdeh gttyqe kdkm ltzd lfeozse quvjq mnwhokm kdv oojxm nxt
mfkzus knqxt saxkqww njx zumsfk sbmcyad cpt agvbuv
tukn vyco yobvsn bzgnn klrnzy kea thzk pxpwq ryfff nxzm
ylbm lxlz lybm lzxl
wgtxoij zad slgsi cvnxfg iomswwl vmx
hkm yinhnkj kmh kwkw kayknck chur styjif yknakck
rtfwhkq rtfwhkq zsf zsf
sldq zlntr ueegiw kajivqc ozcbm ceft snvugom pdyc elppeed nnqrp prwwf
lhk xjonc muc tudag tsafx mmivb dvrjbp qgrew
hnzer fbgqp aazta aazta lxaz lmgv aazta
victgxu victgxu mlpd ummrnbx cazjgnw isxcyp efy zfa cyusj
gyojxo onzq gyojxo uxufp awi ilhl wefwfxr gcjlt tmliynw uxufp pdcnxah
wjwachn xkuhfbp oky oky ybaeqkr rbuix yreoaw wepmye brvon aasb
kiidorw vxtxiqx wtqvbrv efdth isel qbom vcssyc vxtxiqx wtqvbrv riafzsw mqzsj
eurpjd vkhdamt tmfx czeoot hiz ykz lmixzq tfur jhzr
ipuftpj qbll sqkkdw fwncmiv bri oeeh lehd ioh wag
suima nanngc imrmc krq atxdo woy atxdo akev qlr aezco qlr
cfc efwbzck ozkmcxv moczkvx ccf
bnekky iakrk sask uwgnjp iyi rynev bdnas ldh kass
sicmw vvjbvv cap nsumc xgvrlm wsoo uoqdu psykckm
ugg mtr wnzhmmh tjxc ehwnji lwhu mdsckk yvmk enubrqo
grb oxmxz ohu ytetedv ssx apzlppg fdkamm sxofc jdt ynmu wyejok
umoep rbyqm eqfk twqnog cptbbi dragna ngqs ffb cexxnc rbyqm
utizi ormkel wvwur bdx ecelqbv xiccama aag glfvmj
znb rsuqoa uxo svc
obs lbifa cffi catpd
qkxwian ajlzjz wewduzp bbyv qmt fsr qgiu epinp ghmf
hatg bfgmb aght ghat
kuq inp dun cknbun wmwsu drlmmg kyxc bdl
bddybth swdbf jhi fva qpobio bjwm wjaztp jywi
mgckz vhveu zkemhp zdf xtiqqew mlx wazgd
umbjq pya lvvxf jeavij rhrxvew bwjqgpr piz
xaycpwo vjcuc qksc yuixhni sfbfb dydyaq gdfvb tggg xidphvf bpjdrl goskxym
agxfoip gguif wvo agxfoip ntkbaw fbyggy ooft zxih
nzvsu ffwq uxvfbl qrql olhmhom qhdltg ymwz krtndtx olhmhom nfsv krtndtx
qdp jqk ustz xjripzv mnk grnodk pjwdsj uug zqxjqj
mufrcox zunisfs ocvcge acamm xua vor bsde kxr vor kxr orccxx
ncycbp anvcxay bmm wndmeaw oso knmk mmb wamenwd kmkv ppdd
motdcn xzagzwu vuzt utffrn yuqxzrh uvzt ujttq
tauoqy coiy ybesz tauoqy wpmr trquyne ahxbj jzhems dsdy
aczq ypw pgmzz srfn quatjgf
cih ypapk bfxvr euvhkk gugru auhqui
vyf pssgfvy dnhvbfl xpacme dnhvbfl mzdv iynq hcqu
lbzvbu hhxiq hdfyiiz iyzihfd xhqih uzdqyxr
iapbdll vdr cprmrkk vdr dfjqse mlry flpqk vdr
grrfkq xcpxd grrfkq dxc bjpr prvwh swoc swoc
bopo chvwuhf qhd ieesl xey ieesl fnjcbe
kic fyq hsucnu agwyl pzzmd hqksh psw
mxf uau iti lcoz lpg zbu ocre wqlocmh mxf nidqj lcoz
bypmix ptzxgmf xmtzgpf hrvzzq
lbfw zwusma lbfw tuyyy
lrf uej unswvh obgsb npbl zajr kenea uej qnyjcu wzufim qpzkgya
qcrxj llyu kligt hlm ehwtbx dda lgsvhdt xewfcv uikn
nfzjx izqdbq mfbxs imiuc yqxb xlmvix izqdbq eflqfq wku omgtuu izqdbq
lasdwg hiy btzt eefd eyoep icn nnmhg otml rek luixac nyzgn
vekteds utsuxdx utsuxdx vekteds
feyov qrij zbebwg ijrq seplram wttkwm zewbgb kzuhuh
dmkgtv wohgqo ddtqmv zatahx mym hqowog tkmvdg
vhha wjrmuyx kqh vyyrj xzchbi ejsdq orlxg vyyrj dlrc
yetngqn zdtuqox hkarjei fqpsgh eaqwbg zsssog ghb gddqqzr hbg
obldb zsrhz zxp uxphnev mwnbc pfjft fms xwslk vjm fxy
nfij dbfykv ttq gyjgac igxuyqi gtiioqx ilhdex dbfykv uyp bdiwya gqf
pffzruz vogfosh dcs wje
pohhf fhpoh oon yyz
xxuam afwm qxl lnt syyr bwxhhf sozauq shlhfmz kwnn milav ochq
wefcqrt gejw cwerqtf fttf gjew
jfsvnmr osca epwtle pgfif sxom
exlfzmq nakp rgdnx rrcvth vhrrct aajjdrt ryyg dsozd jdqlqj pakn iruv
rmcvo txszcs xxhyxz hbsozk wshkocf rmcvo rcbnt
kitz yjgney yvkymef nauj hmllsgl kyhm kqr pzsu rcf pzsu qpte
cdinpx bfur mkj naz ihkheyr nohhoe
ylris xeqcgup wap bbfih tgfoj
ina gnlnm zyeqhij cudfuf ipufae bvkdzni aat teqsg cudfuf bjokrbl teqsg
aedx edax dnfwq qndwf
rdngdy jde wvgkhto bdvngf mdup eskuvg ezli opibo mppoc mdup zrasc
qcnc iaw grjfsxe gnf gnf
zbjm snznt zelswrk gkhlnx dqxqn qqxnd dmro
zisecvx ztezof uzbq otnrtj qsjzkwm ewvcp rlir bfghlq tgapdr qxmr
ipnqj opjf vabyoe wkwnd
wyf mfqxnrf apm snarf jqu aaghx pwecbv lvghayg
acncv jmmbwlg oiphlm ifuo cvt
pvmb egansnd zmh gcuzzci rrxpslv ubith
uoleptg xbouzn xbmg cfh cpn wpqi xbouzn xtxis sxzpns
rilybri kurbpq vfmjpck tjyogho hfyxad svfofx lfbbhxj khaerfs iqr
seaebgz wlmtkre qguv qguv wlmtkre
sgo edkxya zdqgwtt gxu nibuu rairqoq mzxli dci qsv
tsol mdhzqr rmaqnru ggvcq arbwkn hlkcnj ljkcuof
mmliphp ocup puoc eijjv
gmajqpb ijki ijki kvz
pmqss unhlpcj dlkll nuhlcjp expe tlurzmv nsy vlumtzr tgseozl
gkvaoni hsba hsba viuedv phyoclp fdq phyoclp febld nqfs
rxvdtw abn pntv qrqfzz slsvv abn lrxix mnu npot
ghlfjp woy xwkbmv bkahpkj jve cncvk jvdype fwgvoju yrkwjp gwfvln mvkv
kmluh mie bby fwer chsinb ojglqr nqk mie
yzmiu igkgca ybnsqja jpfejtp yjddy xsosxfi ingx qwuhb emrkwpx idqjmmm
btrllw mphm dkvo ewdl dchcul yah btrllw kmqi mtvgk wtb
hxsgard yuikc lykt tdee adprp gpougod klnzk mzsmlb
hdn znblw ifoblur bwzln dbv
smofpbs vjuyiro llk lfzesga tybu tybu
gffnpug xaup iqiyz fjkpnkz drrk fwyxw lwzfskz gslwpmv vjxylva tbkyo nib
evydmb nhwuiiu fkerq nkgbuyy uclrs ydjgglh xhotwbm riirgzt
bsub eavbt uvd dpzwyt rhn khrbptt xszckc djnfxju axofhat powmso nvdffrv
xtuykl fjz mbikc xpnx hmey fjz fjz
rkls nwdcsyx rkls rkls
tygml untequ ybdfumz nqffbq uipc sove hfnqj
ytecew vven koqn royynd qsn ksl qsn sdw
hknlw qwho whoq oqwh
lzmmtqu qvhyeo cnofuj utpwkjz gnirz yhhu aodbnd
zsr axw kwtzcv tydzo kwtzcv lkxsm
rbjtqe nihifd gvdxd bpxzy rxteky vgcgllv vbbua anygiup rqo
dpd wblfwp wblfwp wblfwp ygahc tqjbaq
gsw gsw pacgj xmrcz zmxhmch xmrcz
pdq rhe xqmq lgpkhg fyffrot ovnqh wle
tbjavke ypzzrj jizx gdxoh icjsat otfh fmygumv
snch nxlgjgp jeyn sxoqfj jtage jtage iuice
rtb coefuj grwg grwg rtb krhqnma vfhgbr
vhegtl btorwxg szcev kbvkx itsk nlzpbed
hiukrf ilzkm yllhh xsgwkdp zyy kjbv
rfcg tdorci zcj wzftlv rfcg rfcg
lgbc lzizat vsno pau nvv vsno bbr lzizat qhtb gwp
sfwnio tcugjk bsfsz ykyfwg ibkap fsrvy mygk kzunawx zyhyh
mpavlh qps bylh lttjkz rqabgk vewb bwev tlzkjt gzrbxga ktmso prpkj
gpf ims ynh ffrs vpa iemp gofh cgbauje
secys qks mcnfhwh drog kqs pajy zoltkw lfihnb myb ioxptu
ytq nrta ouk ajqblf yuwwcd zdy blyoxbw dakk nvgi bzrhzaa
nkoych sufiia xkdvw crtldee zycl qblab egqhr qblab
nllno muxaf vds qjnitmw zkpj wskyhft kmqct xamuzpw qcai cdjtbt kaxv
qzdytpe osr fuw osr qzdytpe whperd rydwdcl knoa
zkdznhd peh duoygr zamrgl irnvj otpe pltpq jdkecg
byzgw rece iigdug ehif tpgje
ccnn foqdran gbctca tefdjxh ntcr rjciii xip xlss crl wvvhzqm twyohf
dqyii milqqc qjgkojp qjgkojp ryde
tdkyj tbrcud tsba vqtmb cjwxnf
hqhmq wemvrce nagig pwnw nagig epg nagig vlsi
tqgvw luoplw hccti npjm rytdruq cylrsun rytdruq vjsbjl rytdruq ppti
itgt tuwc itgt rvp itgt tigns eipl ksmru
pdw wdhtkn nbdbpn wff zhuuipg rvemv qxr
qgkwdq cjilayh ymeks mrpuzai dwgs stfstgz ucvqhb yout oiq
vpxik ypfr qytimvu qms oxbmw ppyfx
fwwidn gdhd pyuexk snsz iwndfw
lfcb sllxjna lfcb hpzahfg mmvgaa svny jhuzd
unyg gicmzd fwc spkciy toyq wjupckd vzzx iuqgka ytqycb pxsufj
goj tnrcml eyizngj txa xrkiw zvu igduz
wek xrrlkna clyof rrlnxak
cjm rmyuku vjom gtf
buk cfae awstd dywgqp hxo wcxvf laihqw xdqfes wdbh qceh uzlwj
sudguo dxwplto rlebdh bkamu dxwplto
crwkyxm yuz kjtdhom crwkyxm
trhc sduorxr aizfryh rsudxor gbyc
pczkyl bptp qnn nxmpwsx udrg hhlb rubtrmx twzodlp xygnht
jmqct cden yfajtkz fevcw sxonbxz sxonbxz qkzkm hhngr fbv
sdsnm mwvicr wypfi cty ndbowr woiz mrauwzd qlno mwvicr
vteyo fng lvr lxytn txpj milg
wjx ahtmgo cgwcaj kaxae fhlvlqf
ezj eetqhzu upwda iiefwlk vyvby
imalvy yeghqe jwcu mvrod cwju
bxnmsa yhfu npsdar tsbri hfuy sirbt oofxmy
fkndt elbjtn vepqtxt elvpf fpelv bzkgag qttexpv prblwb
rmq iqs yvprnyy iezqrzm wlqsrr
yviovq lekxghj oey qwhzj lxknxw qiyovv ksnt jptz
tyrg cifxt hugqf tyrg ffuiv jmax qyw fozfosq ffuiv
nmg rsl jpzazd qbtlf yxqtsj czwmdfd bamge lbjdof uqy jssc
cbx boozjip pwgvzlq rjz kxy kxy hszacok fvsq jhnir cnsba gafz
sbcuxb wfur nnnfqjj fdwg huhe sbcuxb
icwk qelbxs uevp qped zsnhh wpuok wddxsln ftnzupr ruxol cgxjb jbhh
izcp htykj xxmndoq amnspe htykj
vverol oixwlny vqd tvfzu henc gnyrwr
ytxio etytsx choynep zqapo hfjit
lkvgr oyzfa taiqr jok djatvy ckif tmdw oyzfa zroy
jlgpyp kkqysg oqjki hjohoug hbhta muilz zft
sumfyu wftcu bwwdcy lezimwa qwvxv zwh mqyv bmfot aii torcol rnt
tpdj xrw ccsbnh fhptv fwkxjfm dmqaokd bjci
zxi vmf vmf dpyg
sfzxysw lcms bkojtv bkojtv
opywo qll ipkitr mtwp tudrr svhyp huz bxsdpn xomfy
gkod luo qrosbp orbd rpsjzyd rlh gdok tze
nusiuq nusiuq zeys ahufexc
veno jntg avtmtdn qojxru zegdcql odfcetz pgehau
uqun vigjm ykac ozlelj danmji bibugox
rpuozh ajwru rbvuevv uhzsq
iawoe tyb aewio ymf byt inijv ctu fcys micsgzl pbby alt
gktyxp ris mqpfm bkqsfl nrg idbbcxg jhcf
qibt invvv qibt luitx rnm eby hrfbmwl wnap sgkzvb qlwc hrfbmwl
jwkv qecsjbw lycgldd wjvk tjcp dycldgl pzrvr zrlcf kji
nzsrmiq nmhse ilivrk kqv
besmyzi imkgpt iekbjax abxeijk uvzs wwv
jdocl uki ltswp tjkljc ymce iuepze qygqxzs tei lkry
hhyfy gvzd mqksxlq czn afe mesnag eep frwgekg mqksxlq phpy
ehg connnza ekt ddgokw
mpbsoms uzhzl xevww ztt uzhzl
lftybr firc awsud dsxdkk ltf ipjv dtx lcymth
vkcpb gxtxq yioeq fexj xxgqt
srvca fslnnvf nfmkpvt egw wemumq jie vznf dzsjw cukf kcvyir
yxjkl lyjkx jyxlk kgc xtz
tpoe xzov csp leleoqo noyre tdhf cyib sjgtdx raehdw nmcxp
qvt uhznqe bpvos vtq ddlebtd tqv
xlw utsxs gpia rvlvnts elkxr dddihy tnrslvv ibf wlx bxg
cwqnnrt rkkqyf dye yde fzl pthanj
boc rqjenpp xjqte jteqx pvoofc pidqe ruoucy gvnro ognrv
qhalb gnazwc fhl iuti
clnbjfo nnfs nnfs heymvr oarew oarew nxu
lwtrotg hiaxwj ymzbly nvhzjhj zlsaheg nvhzjhj ymzbly
rrvi tsjp tsjp tsjp killji
rpx hiclj cmwq ibhj nfd
pvwymn iebkd xmpw vuhhkap ksw zigzy mzzyyxy rmuh iwwhea cglfq
rlwelgy sffml jin qsdzro xlsty mgqzuu etxjuo emzd jgnoyq tkjuy vfvb
tkctdj hhkuc viskmy obw
zvjkuj akeky ikj jqd hfhzbwe bkc
btev nrdo hcyiuph stf qharfg vpmel mpfz nvs ytgbbc
ieepn ndueuw svmdr tcvumw mceyrn mrjwhyl tbdj mgrgvz
uxrs ckyi xpmqm czzrkl cjp
nlliwd wrqkrkz yjmng nlliwd zirde hcjjn wco ysf mgl
dxti lcahe ommare izlwf ramsfb nzgfvo ijvm fwymrdu bndq
isxy jpvuzu tdduyhw dixp cfa fkzbteg ytoi kepk ysf yqcpi
qmeprfj soqo ncgeor cqsuuj grzy wogxy vyblnbg slvtry vdols kka
ltykfp gtzl olrp gxend vapee deq
emywfbn dbfiut rkt wvwe dbfiut bwffhea yuzcxv gogpicp wvwe
vqvmrp ofbk dlfabd jwllzxk obx vqpwjj umvng tqwis fstxy fstxy
miha zgvyux rmraszo xwf
kjaagk btm kjaagk wkewjrg kjaagk
lbmli aizs omrdr gzktnx asiz ptanzpa xlo ljre ckyb wob
svz dlk rijagg avxmg fkzwhk uro gegm
dzplum temdw jqnm tvxcww bmg tftttpp deuw comxey xfimzjx caluczi nqn
uwvhxa ztkd nlsdyt vihl julkwwv uzch dwakhs
wkhuihh ycrc cxff vzcfhpp uegfd gaok kcnvz lhzogq lwa tyrypvu
idp zmrrzp zmrrzp nktp xsnx rjsxn
eybrnib ivgntl vaxsbpi eybrnib
nzvnq xvbfa pbhwwh ylju runvsj imlx vztesn
nfdohd nfdohd gtevnky pivjyct ihvd fzcsrq lko fmqk
kwpkks ecikxu bcxswlt qvrxm sbcqmh
kdjrmj piuh kdjrmj vnaf gyedkg vptxgm xezssxx zsg qjzpo zsg
oqo sley aqx qmpqb fgmylbj egd zivj kepxizv kuakyn lunbnd
hmcf hmcf xlhgc hmcf cdlm buofnx
onjcj yluonz kzmk phqo phqo phqo
ohaafy efl bnkkjww wwjnyoj dxeaig ywnjjwo slk hrbebw ohlyju elf
msohiqz aunk njki bfktdgi htmyrj mgx
numlzrl rmnlulz glb ltt fhbajz gqxpu
gko hco oai ryq xwy sdqosft spjkiu cxfhg ycwpglh noy rah
btzpjem brpk vqr atxu rhlh rqv jmg fvyus
phmxxgj ejx xje qtk hsb kqt npwj gqt
hujyjp nwmsd ant zipuya lrkahww uwqal vzlo qmbo twkjkse ufivi
zfbnyz fwvh xrnrw usn zin daq iwjzj
yykyg iwypfy hehqnl cjvk cevdrec
gui muuto wsta glqmx gfo rdmbv mxwz gffzt eejpw gion
lpng nduid iqbpu nduid knrqd
xwxn oefpckv gjaua ugaaj gjuaa
qxk aeql trqdmqc crzlinj crzlinj trqdmqc rijcne ewyf
rfv qmbe fvr bmeq
upqyfw lowzq wpen upqyfw gfskbil sljuzh wpen
bdcara qyhx rtaez qyq gbyr
evzls qxtxq clzd svbgqi zxlzgss vtrre fko eebo qjyl
zaapeo kpwhz tygknau nyd pch trp xqe
ypzcafg rnqmbh qtteg sncu ssojhhm zonfym thir xmgheb wqj gpjg ssojhhm
wvcwyn xrf muozyya lasdp xpjgu kpqv zkiihiv ifje cbdlavg xbied hfnaa
qqqb rettz rycukl ihpkhh
dnxzxqv znb znb fbxj azxtezb xvxa
peqkd xlzqkov esgnw ucku hrwpfxd xtd vnig vlmfp ajte qswr kqoj
dpwy oavzkk dwyp ehij upqxgii pydw
amfc hfv xmqa nqvn cal rqmcq oej amqx cla ntxj
hqhhe qkbhwli wmhlcq xaczs peywuo
vcr xfv xfv kymo qpszwzo xfv
nmrbur tswo xbo ljlrzo bmhpgc pev zovkznz lok wbbhtkk
tojj lxqgr rhjavrm ndsdup gdbjwaq cqpnl wfaxivl rfry ryfr udspnd
beffod sknlph amb feobdf
mldgn jxovw yuawcvz kzgzwht rxqhzev fsdnvu vluuo eycoh cugf qjugo
tlnd qcxj ker fdir cgkpo nrqhyq raef uqadf iahy rxx
mhvisju lhmdbs tcxied xeidtc ujry cditex gvqpqm
cgc jazrp crgnna uvuokl uvuokl uoiwl sknmc sknmc
rvbu czwpdit vmlihg spz lfaxxev zslfuto oog dvoksub

@ -1,4 +0,0 @@
#lang reader "main.rkt"
aa bb cc dd ee
aa bb cc dd aa
aa bb cc dd aaa

@ -1,6 +0,0 @@
#lang reader "main.rkt" ★★
abcde fghij ; is a valid passphrase.
abcde xyz ecdab ; is not valid - the letters from the third word can be rearranged to form the first word.
a ab abc abd abf abj ; is a valid passphrase, because all letters need to be used when forming another word.
iiii oiii ooii oooi oooo ; is valid.
oiii ioii iioi iiio ; is not valid - any of these words can be rearranged to form any other word.

@ -1,19 +0,0 @@
#lang reader "../aoc-lang.rkt"
(provide (rename-out [#%mb #%module-begin]))
(define-macro (#%mb (STARS) (JMP) ...)
#`(#%module-begin
(time (escape (list->vector '(JMP ...)) 'STARS))))
(define (escape vec stars)
(let/ec exit
(for/fold ([pos 0])
([i (in-naturals)])
(unless (<= 0 pos (sub1 (vector-length vec)))
(exit i))
(define jmp (vector-ref vec pos))
(vector-set! vec pos ((if (and (eq? stars '★★) (>= jmp 3))
sub1
add1) jmp))
(+ pos jmp))))

Some files were not shown because too many files have changed in this diff Show More